From ce8361238f90d8afff6d672bd49cd36508ed67bb Mon Sep 17 00:00:00 2001 From: itdominator <1itdominator@gmail.com> Date: Fri, 1 Mar 2024 19:21:30 -0600 Subject: [PATCH] Make master branch jus ino about the relese branches --- README.md | 13 +- images/pic5.png | Bin 0 -> 845481 bytes images/pic6.png | Bin 0 -> 528966 bytes plugins/README.txt | 2 - plugins/autopairs/__init__.py | 3 - plugins/autopairs/__main__.py | 3 - plugins/autopairs/manifest.json | 12 - plugins/autopairs/plugin.py | 140 --- plugins/colorize/__init__.py | 3 - plugins/colorize/__main__.py | 3 - plugins/colorize/color_converter_mixin.py | 107 -- plugins/colorize/manifest.json | 11 - plugins/colorize/plugin.py | 228 ---- plugins/commentzar/__init__.py | 3 - plugins/commentzar/__main__.py | 3 - plugins/commentzar/add_comment_mixin.py | 66 - plugins/commentzar/codecomment_tags.py | 30 - plugins/commentzar/manifest.json | 13 - plugins/commentzar/plugin.py | 118 -- plugins/commentzar/remove_comment_mixin.py | 49 - plugins/lsp_client/__init__.py | 3 - plugins/lsp_client/__main__.py | 3 - plugins/lsp_client/capabilities.py | 201 ---- plugins/lsp_client/lsp_controller.py | 179 --- plugins/lsp_client/manifest.json | 12 - plugins/lsp_client/plugin.py | 124 -- plugins/lsp_client/pylspclient/LICENSE | 21 - plugins/lsp_client/pylspclient/__init__.py | 6 - .../pylspclient/json_rpc_endpoint.py | 105 -- plugins/lsp_client/pylspclient/lsp_client.py | 258 ---- .../lsp_client/pylspclient/lsp_endpoint.py | 111 -- plugins/lsp_client/pylspclient/lsp_structs.py | 566 --------- plugins/markdown_preview/__init__.py | 3 - plugins/markdown_preview/__main__.py | 3 - plugins/markdown_preview/manifest.json | 13 - plugins/markdown_preview/markdown/__init__.py | 48 - plugins/markdown_preview/markdown/__main__.py | 151 --- plugins/markdown_preview/markdown/__meta__.py | 51 - .../markdown_preview/markdown/blockparser.py | 160 --- .../markdown/blockprocessors.py | 636 ---------- plugins/markdown_preview/markdown/core.py | 510 -------- .../markdown/extensions/__init__.py | 145 --- .../markdown/extensions/abbr.py | 105 -- .../markdown/extensions/admonition.py | 179 --- .../markdown/extensions/attr_list.py | 179 --- .../markdown/extensions/codehilite.py | 338 ------ .../markdown/extensions/def_list.py | 119 -- .../markdown/extensions/extra.py | 66 - .../markdown/extensions/fenced_code.py | 182 --- .../markdown/extensions/footnotes.py | 416 ------- .../markdown/extensions/legacy_attrs.py | 67 -- .../markdown/extensions/legacy_em.py | 52 - .../markdown/extensions/md_in_html.py | 372 ------ .../markdown/extensions/meta.py | 85 -- .../markdown/extensions/nl2br.py | 41 - .../markdown/extensions/sane_lists.py | 65 - .../markdown/extensions/smarty.py | 265 ----- .../markdown/extensions/tables.py | 243 ---- .../markdown/extensions/toc.py | 408 ------- .../markdown/extensions/wikilinks.py | 96 -- .../markdown_preview/markdown/htmlparser.py | 334 ------ .../markdown/inlinepatterns.py | 992 --------------- .../markdown/postprocessors.py | 143 --- .../markdown/preprocessors.py | 91 -- .../markdown_preview/markdown/serializers.py | 193 --- .../markdown_preview/markdown/test_tools.py | 224 ---- .../markdown/treeprocessors.py | 476 -------- plugins/markdown_preview/markdown/util.py | 399 ------- .../markdown_preview/markdown_preview.glade | 121 -- .../markdown_template_mixin.py | 42 - plugins/markdown_preview/plugin.py | 114 -- plugins/search_replace/__init__.py | 3 - plugins/search_replace/__main__.py | 3 - plugins/search_replace/manifest.json | 14 - plugins/search_replace/plugin.py | 221 ---- plugins/search_replace/replace_mixin.py | 94 -- plugins/search_replace/search_replace.glade | 299 ----- plugins/search_replace/styling_mixin.py | 66 - plugins/snippets/__init__.py | 3 - plugins/snippets/__main__.py | 3 - plugins/snippets/cson/__init__.py | 8 - plugins/snippets/cson/parser.py | 295 ----- plugins/snippets/cson/speg/__init__.py | 15 - plugins/snippets/cson/speg/errors.py | 66 - plugins/snippets/cson/speg/peg.py | 195 --- plugins/snippets/cson/speg/position.py | 48 - plugins/snippets/cson/speg/rules.py | 14 - plugins/snippets/cson/writer.py | 191 --- plugins/snippets/manifest.json | 12 - plugins/snippets/plugin.py | 103 -- plugins/snippets/snippets.cson | 614 ---------- plugins/template/__init__.py | 3 - plugins/template/__main__.py | 3 - plugins/template/manifest.json | 13 - plugins/template/plugin.py | 51 - src/__builtins__.py | 50 - src/__init__.py | 3 - src/__main__.py | 53 - src/app.py | 60 - src/core/__init__.py | 3 - src/core/containers/__init__.py | 3 - src/core/containers/core_widget.py | 58 - src/core/containers/editors_container.py | 79 -- src/core/controller.py | 68 -- src/core/controller_data.py | 93 -- src/core/mixins/__init__.py | 3 - src/core/mixins/signals/__init__.py | 3 - src/core/mixins/signals/ipc_signals_mixin.py | 17 - .../mixins/signals/keyboard_signals_mixin.py | 89 -- src/core/mixins/signals_mixins.py | 13 - src/core/widgets/__init__.py | 3 - src/core/widgets/base/__init__.py | 3 - src/core/widgets/base/banner_controls.py | 61 - src/core/widgets/base/general_info_widget.py | 97 -- src/core/widgets/base/notebook/__init__.py | 3 - .../base/notebook/editor_controller.py | 33 - .../widgets/base/notebook/editor_events.py | 160 --- .../widgets/base/notebook/editor_notebook.py | 142 --- .../base/notebook/key_input_controller.py | 69 -- src/core/widgets/base/sourceview/__init__.py | 3 - .../custom_completion_providers/__init__.py | 3 - .../example_completion_provider.py | 74 -- .../lsp_completion_provider.py | 91 -- .../python_completion_provider.py | 108 -- .../base/sourceview/key_input_controller.py | 145 --- .../base/sourceview/mixins/__init__.py | 3 - .../mixins/source_file_events_mixin.py | 157 --- .../mixins/source_mark_events_mixin.py | 151 --- .../mixins/source_view_dnd_mixin.py | 45 - .../widgets/base/sourceview/source_view.py | 98 -- .../base/sourceview/source_view_controller.py | 138 --- .../base/sourceview/source_view_events.py | 102 -- src/core/widgets/base/sourceview_container.py | 46 - src/core/widgets/controls/__init__.py | 3 - src/core/widgets/controls/open_file_button.py | 64 - src/core/widgets/controls/save_as_button.py | 39 - .../widgets/controls/scale_down_button.py | 39 - src/core/widgets/controls/scale_up_button.py | 39 - src/core/widgets/controls/theme_button.py | 89 -- .../widgets/controls/toggle_line_highlight.py | 39 - .../widgets/controls/transparency_scale.py | 51 - src/core/widgets/miniview_widget.py | 40 - src/core/widgets/save_file_dialog.py | 67 -- src/core/widgets/separator_widget.py | 37 - src/core/widgets/tab_header_widget.py | 76 -- src/core/window.py | 118 -- src/libs/__init__.py | 3 - src/libs/debugging.py | 52 - src/libs/endpoint_registry.py | 22 - src/libs/event_system.py | 73 -- src/libs/ipc_server.py | 126 -- src/libs/keybindings.py | 138 --- src/libs/logger.py | 61 - src/libs/settings_manager/__init__.py | 4 - src/libs/settings_manager/manager.py | 174 --- src/libs/settings_manager/options/__init__.py | 8 - src/libs/settings_manager/options/config.py | 35 - .../settings_manager/options/debugging.py | 12 - src/libs/settings_manager/options/filters.py | 90 -- src/libs/settings_manager/options/settings.py | 31 - src/libs/settings_manager/options/theming.py | 16 - .../settings_manager/start_check_mixin.py | 51 - src/libs/singleton.py | 23 - src/plugins/__init__.py | 3 - src/plugins/manifest.py | 68 -- src/plugins/plugin_base.py | 92 -- src/plugins/plugins_controller.py | 119 -- user_config/bin/newton | 24 - .../gtksourceview-4/language-specs/c.lang | 388 ------ .../gtksourceview-4/language-specs/cpp.lang | 132 -- .../language-specs/csharp.lang | 297 ----- .../gtksourceview-4/language-specs/def.lang | 315 ----- .../language-specs/gdscript.lang | 277 ----- .../gtksourceview-4/language-specs/java.lang | 259 ---- .../language-specs/javascript.lang | 1060 ----------------- .../language-specs/kotlin.lang | 398 ------- .../language-specs/python.lang | 484 -------- .../language-specs/python3.lang | 385 ------ .../language-specs/typescript.lang | 1046 ---------------- .../gtksourceview-4/language-specs/xml.lang | 219 ---- .../styles/peacocks-in-space.xml | 123 -- .../styles/penguins-in-space.xml | 119 -- user_config/usr/applications/newton.desktop | 11 - .../usr/share/newton/Main_Window.glade | 28 - .../usr/share/newton/contexct_menu.json | 1 - .../usr/share/newton/icons/archive.png | Bin 1670 -> 0 bytes user_config/usr/share/newton/icons/audio.png | Bin 1544 -> 0 bytes user_config/usr/share/newton/icons/bin.png | Bin 858 -> 0 bytes user_config/usr/share/newton/icons/brain.png | Bin 26603 -> 0 bytes user_config/usr/share/newton/icons/dir.png | Bin 850 -> 0 bytes user_config/usr/share/newton/icons/doc.png | Bin 702 -> 0 bytes user_config/usr/share/newton/icons/image.png | Bin 6591 -> 0 bytes .../usr/share/newton/icons/newton-64x64.png | Bin 18327 -> 0 bytes user_config/usr/share/newton/icons/newton.png | Bin 8966 -> 0 bytes .../share/newton/icons/only-in-selection.png | Bin 6270 -> 0 bytes user_config/usr/share/newton/icons/pdf.png | Bin 925 -> 0 bytes .../usr/share/newton/icons/presentation.png | Bin 882 -> 0 bytes .../usr/share/newton/icons/spreadsheet.png | Bin 707 -> 0 bytes user_config/usr/share/newton/icons/text.png | Bin 798 -> 0 bytes user_config/usr/share/newton/icons/trash.png | Bin 989 -> 0 bytes user_config/usr/share/newton/icons/video.png | Bin 1313 -> 0 bytes user_config/usr/share/newton/icons/web.png | Bin 1845 -> 0 bytes .../usr/share/newton/icons/whole-word.png | Bin 6651 -> 0 bytes .../usr/share/newton/key-bindings.json | 10 - .../usr/share/newton/lsp_servers_config.json | 52 - user_config/usr/share/newton/settings.json | 124 -- user_config/usr/share/newton/stylesheet.css | 371 ------ .../share/newton/ui_widgets/about_ui.glade | 390 ------ .../newton/ui_widgets/general_info_ui.glade | 67 -- .../newton/ui_widgets/save_load_ui.glade | 65 - 210 files changed, 9 insertions(+), 23728 deletions(-) create mode 100644 images/pic5.png create mode 100644 images/pic6.png delete mode 100644 plugins/README.txt delete mode 100644 plugins/autopairs/__init__.py delete mode 100644 plugins/autopairs/__main__.py delete mode 100644 plugins/autopairs/manifest.json delete mode 100644 plugins/autopairs/plugin.py delete mode 100644 plugins/colorize/__init__.py delete mode 100644 plugins/colorize/__main__.py delete mode 100644 plugins/colorize/color_converter_mixin.py delete mode 100644 plugins/colorize/manifest.json delete mode 100644 plugins/colorize/plugin.py delete mode 100644 plugins/commentzar/__init__.py delete mode 100644 plugins/commentzar/__main__.py delete mode 100755 plugins/commentzar/add_comment_mixin.py delete mode 100755 plugins/commentzar/codecomment_tags.py delete mode 100644 plugins/commentzar/manifest.json delete mode 100644 plugins/commentzar/plugin.py delete mode 100755 plugins/commentzar/remove_comment_mixin.py delete mode 100644 plugins/lsp_client/__init__.py delete mode 100644 plugins/lsp_client/__main__.py delete mode 100644 plugins/lsp_client/capabilities.py delete mode 100644 plugins/lsp_client/lsp_controller.py delete mode 100644 plugins/lsp_client/manifest.json delete mode 100644 plugins/lsp_client/plugin.py delete mode 100644 plugins/lsp_client/pylspclient/LICENSE delete mode 100644 plugins/lsp_client/pylspclient/__init__.py delete mode 100644 plugins/lsp_client/pylspclient/json_rpc_endpoint.py delete mode 100644 plugins/lsp_client/pylspclient/lsp_client.py delete mode 100644 plugins/lsp_client/pylspclient/lsp_endpoint.py delete mode 100644 plugins/lsp_client/pylspclient/lsp_structs.py delete mode 100644 plugins/markdown_preview/__init__.py delete mode 100644 plugins/markdown_preview/__main__.py delete mode 100644 plugins/markdown_preview/manifest.json delete mode 100644 plugins/markdown_preview/markdown/__init__.py delete mode 100644 plugins/markdown_preview/markdown/__main__.py delete mode 100644 plugins/markdown_preview/markdown/__meta__.py delete mode 100644 plugins/markdown_preview/markdown/blockparser.py delete mode 100644 plugins/markdown_preview/markdown/blockprocessors.py delete mode 100644 plugins/markdown_preview/markdown/core.py delete mode 100644 plugins/markdown_preview/markdown/extensions/__init__.py delete mode 100644 plugins/markdown_preview/markdown/extensions/abbr.py delete mode 100644 plugins/markdown_preview/markdown/extensions/admonition.py delete mode 100644 plugins/markdown_preview/markdown/extensions/attr_list.py delete mode 100644 plugins/markdown_preview/markdown/extensions/codehilite.py delete mode 100644 plugins/markdown_preview/markdown/extensions/def_list.py delete mode 100644 plugins/markdown_preview/markdown/extensions/extra.py delete mode 100644 plugins/markdown_preview/markdown/extensions/fenced_code.py delete mode 100644 plugins/markdown_preview/markdown/extensions/footnotes.py delete mode 100644 plugins/markdown_preview/markdown/extensions/legacy_attrs.py delete mode 100644 plugins/markdown_preview/markdown/extensions/legacy_em.py delete mode 100644 plugins/markdown_preview/markdown/extensions/md_in_html.py delete mode 100644 plugins/markdown_preview/markdown/extensions/meta.py delete mode 100644 plugins/markdown_preview/markdown/extensions/nl2br.py delete mode 100644 plugins/markdown_preview/markdown/extensions/sane_lists.py delete mode 100644 plugins/markdown_preview/markdown/extensions/smarty.py delete mode 100644 plugins/markdown_preview/markdown/extensions/tables.py delete mode 100644 plugins/markdown_preview/markdown/extensions/toc.py delete mode 100644 plugins/markdown_preview/markdown/extensions/wikilinks.py delete mode 100644 plugins/markdown_preview/markdown/htmlparser.py delete mode 100644 plugins/markdown_preview/markdown/inlinepatterns.py delete mode 100644 plugins/markdown_preview/markdown/postprocessors.py delete mode 100644 plugins/markdown_preview/markdown/preprocessors.py delete mode 100644 plugins/markdown_preview/markdown/serializers.py delete mode 100644 plugins/markdown_preview/markdown/test_tools.py delete mode 100644 plugins/markdown_preview/markdown/treeprocessors.py delete mode 100644 plugins/markdown_preview/markdown/util.py delete mode 100644 plugins/markdown_preview/markdown_preview.glade delete mode 100644 plugins/markdown_preview/markdown_template_mixin.py delete mode 100644 plugins/markdown_preview/plugin.py delete mode 100644 plugins/search_replace/__init__.py delete mode 100644 plugins/search_replace/__main__.py delete mode 100644 plugins/search_replace/manifest.json delete mode 100644 plugins/search_replace/plugin.py delete mode 100644 plugins/search_replace/replace_mixin.py delete mode 100644 plugins/search_replace/search_replace.glade delete mode 100644 plugins/search_replace/styling_mixin.py delete mode 100644 plugins/snippets/__init__.py delete mode 100644 plugins/snippets/__main__.py delete mode 100644 plugins/snippets/cson/__init__.py delete mode 100644 plugins/snippets/cson/parser.py delete mode 100644 plugins/snippets/cson/speg/__init__.py delete mode 100644 plugins/snippets/cson/speg/errors.py delete mode 100644 plugins/snippets/cson/speg/peg.py delete mode 100644 plugins/snippets/cson/speg/position.py delete mode 100644 plugins/snippets/cson/speg/rules.py delete mode 100644 plugins/snippets/cson/writer.py delete mode 100644 plugins/snippets/manifest.json delete mode 100644 plugins/snippets/plugin.py delete mode 100644 plugins/snippets/snippets.cson delete mode 100644 plugins/template/__init__.py delete mode 100644 plugins/template/__main__.py delete mode 100644 plugins/template/manifest.json delete mode 100644 plugins/template/plugin.py delete mode 100644 src/__builtins__.py delete mode 100644 src/__init__.py delete mode 100644 src/__main__.py delete mode 100644 src/app.py delete mode 100644 src/core/__init__.py delete mode 100644 src/core/containers/__init__.py delete mode 100644 src/core/containers/core_widget.py delete mode 100644 src/core/containers/editors_container.py delete mode 100644 src/core/controller.py delete mode 100644 src/core/controller_data.py delete mode 100644 src/core/mixins/__init__.py delete mode 100644 src/core/mixins/signals/__init__.py delete mode 100644 src/core/mixins/signals/ipc_signals_mixin.py delete mode 100644 src/core/mixins/signals/keyboard_signals_mixin.py delete mode 100644 src/core/mixins/signals_mixins.py delete mode 100644 src/core/widgets/__init__.py delete mode 100644 src/core/widgets/base/__init__.py delete mode 100644 src/core/widgets/base/banner_controls.py delete mode 100644 src/core/widgets/base/general_info_widget.py delete mode 100644 src/core/widgets/base/notebook/__init__.py delete mode 100644 src/core/widgets/base/notebook/editor_controller.py delete mode 100644 src/core/widgets/base/notebook/editor_events.py delete mode 100644 src/core/widgets/base/notebook/editor_notebook.py delete mode 100644 src/core/widgets/base/notebook/key_input_controller.py delete mode 100644 src/core/widgets/base/sourceview/__init__.py delete mode 100644 src/core/widgets/base/sourceview/custom_completion_providers/__init__.py delete mode 100644 src/core/widgets/base/sourceview/custom_completion_providers/example_completion_provider.py delete mode 100644 src/core/widgets/base/sourceview/custom_completion_providers/lsp_completion_provider.py delete mode 100644 src/core/widgets/base/sourceview/custom_completion_providers/python_completion_provider.py delete mode 100644 src/core/widgets/base/sourceview/key_input_controller.py delete mode 100644 src/core/widgets/base/sourceview/mixins/__init__.py delete mode 100644 src/core/widgets/base/sourceview/mixins/source_file_events_mixin.py delete mode 100644 src/core/widgets/base/sourceview/mixins/source_mark_events_mixin.py delete mode 100644 src/core/widgets/base/sourceview/mixins/source_view_dnd_mixin.py delete mode 100644 src/core/widgets/base/sourceview/source_view.py delete mode 100644 src/core/widgets/base/sourceview/source_view_controller.py delete mode 100644 src/core/widgets/base/sourceview/source_view_events.py delete mode 100644 src/core/widgets/base/sourceview_container.py delete mode 100644 src/core/widgets/controls/__init__.py delete mode 100644 src/core/widgets/controls/open_file_button.py delete mode 100644 src/core/widgets/controls/save_as_button.py delete mode 100644 src/core/widgets/controls/scale_down_button.py delete mode 100644 src/core/widgets/controls/scale_up_button.py delete mode 100644 src/core/widgets/controls/theme_button.py delete mode 100644 src/core/widgets/controls/toggle_line_highlight.py delete mode 100644 src/core/widgets/controls/transparency_scale.py delete mode 100644 src/core/widgets/miniview_widget.py delete mode 100644 src/core/widgets/save_file_dialog.py delete mode 100644 src/core/widgets/separator_widget.py delete mode 100644 src/core/widgets/tab_header_widget.py delete mode 100644 src/core/window.py delete mode 100644 src/libs/__init__.py delete mode 100644 src/libs/debugging.py delete mode 100644 src/libs/endpoint_registry.py delete mode 100644 src/libs/event_system.py delete mode 100644 src/libs/ipc_server.py delete mode 100644 src/libs/keybindings.py delete mode 100644 src/libs/logger.py delete mode 100644 src/libs/settings_manager/__init__.py delete mode 100644 src/libs/settings_manager/manager.py delete mode 100644 src/libs/settings_manager/options/__init__.py delete mode 100644 src/libs/settings_manager/options/config.py delete mode 100644 src/libs/settings_manager/options/debugging.py delete mode 100644 src/libs/settings_manager/options/filters.py delete mode 100644 src/libs/settings_manager/options/settings.py delete mode 100644 src/libs/settings_manager/options/theming.py delete mode 100644 src/libs/settings_manager/start_check_mixin.py delete mode 100644 src/libs/singleton.py delete mode 100644 src/plugins/__init__.py delete mode 100644 src/plugins/manifest.py delete mode 100644 src/plugins/plugin_base.py delete mode 100644 src/plugins/plugins_controller.py delete mode 100755 user_config/bin/newton delete mode 100644 user_config/local/share/gtksourceview-4/language-specs/c.lang delete mode 100644 user_config/local/share/gtksourceview-4/language-specs/cpp.lang delete mode 100644 user_config/local/share/gtksourceview-4/language-specs/csharp.lang delete mode 100644 user_config/local/share/gtksourceview-4/language-specs/def.lang delete mode 100644 user_config/local/share/gtksourceview-4/language-specs/gdscript.lang delete mode 100644 user_config/local/share/gtksourceview-4/language-specs/java.lang delete mode 100644 user_config/local/share/gtksourceview-4/language-specs/javascript.lang delete mode 100644 user_config/local/share/gtksourceview-4/language-specs/kotlin.lang delete mode 100644 user_config/local/share/gtksourceview-4/language-specs/python.lang delete mode 100644 user_config/local/share/gtksourceview-4/language-specs/python3.lang delete mode 100644 user_config/local/share/gtksourceview-4/language-specs/typescript.lang delete mode 100644 user_config/local/share/gtksourceview-4/language-specs/xml.lang delete mode 100644 user_config/local/share/gtksourceview-4/styles/peacocks-in-space.xml delete mode 100644 user_config/local/share/gtksourceview-4/styles/penguins-in-space.xml delete mode 100755 user_config/usr/applications/newton.desktop delete mode 100644 user_config/usr/share/newton/Main_Window.glade delete mode 100644 user_config/usr/share/newton/contexct_menu.json delete mode 100644 user_config/usr/share/newton/icons/archive.png delete mode 100644 user_config/usr/share/newton/icons/audio.png delete mode 100644 user_config/usr/share/newton/icons/bin.png delete mode 100644 user_config/usr/share/newton/icons/brain.png delete mode 100644 user_config/usr/share/newton/icons/dir.png delete mode 100644 user_config/usr/share/newton/icons/doc.png delete mode 100644 user_config/usr/share/newton/icons/image.png delete mode 100644 user_config/usr/share/newton/icons/newton-64x64.png delete mode 100644 user_config/usr/share/newton/icons/newton.png delete mode 100644 user_config/usr/share/newton/icons/only-in-selection.png delete mode 100644 user_config/usr/share/newton/icons/pdf.png delete mode 100644 user_config/usr/share/newton/icons/presentation.png delete mode 100644 user_config/usr/share/newton/icons/spreadsheet.png delete mode 100644 user_config/usr/share/newton/icons/text.png delete mode 100644 user_config/usr/share/newton/icons/trash.png delete mode 100644 user_config/usr/share/newton/icons/video.png delete mode 100644 user_config/usr/share/newton/icons/web.png delete mode 100644 user_config/usr/share/newton/icons/whole-word.png delete mode 100644 user_config/usr/share/newton/key-bindings.json delete mode 100644 user_config/usr/share/newton/lsp_servers_config.json delete mode 100644 user_config/usr/share/newton/settings.json delete mode 100644 user_config/usr/share/newton/stylesheet.css delete mode 100644 user_config/usr/share/newton/ui_widgets/about_ui.glade delete mode 100644 user_config/usr/share/newton/ui_widgets/general_info_ui.glade delete mode 100644 user_config/usr/share/newton/ui_widgets/save_load_ui.glade diff --git a/README.md b/README.md index 2702625..ca37de4 100644 --- a/README.md +++ b/README.md @@ -7,13 +7,18 @@ A Python and Gtk+ quasi-IDE. * pyxdg ### Note -Currently very much a WIP effort. +This is currently very much a WIP effort with two branches to take note of. The first uses GtkSource.View widget to handle text edits and display. The second uses the Gtk Webkit2 widget along with Ace Editor to handle text editing. The first is more traditional in visual design and editing. While the second is more like Vi, Vim, NeoVim. -* Move respetive sub folder content under user_config to the same places in Linux. Though, /user/share/newton can go to ~/.config folder if prefered. -* In additiion, place the plugins folder in the same app folder you moved to /usr/share/newton or ~/.config/newton . +* release/newton-with-gtksource +* release/newton-with-webkit2 # Images +* GtkSource.View ![1 Newton default view. ](images/pic1.png) ![2 Newton search and replace plus menu shown. ](images/pic2.png) ![3 Newton displaying inline colors. ](images/pic3.png) -![4 Newton as transparent with youtube playing below it. ](images/pic4.png) \ No newline at end of file +![4 Newton as transparent with youtube playing below it. ](images/pic4.png) + +* Gtk Webkit2 + Ace Editor +![5 Newton default view. ](images/pic5.png) +![6 Bufers list. ](images/pic6.png) diff --git a/images/pic5.png b/images/pic5.png new file mode 100644 index 0000000000000000000000000000000000000000..ef506d174daf7790394a155895bbbf598995aef3 GIT binary patch literal 845481 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

04hD)4uCXQ(qx+Y?$e6RjP}-z}0m$iTSO$QMu* zx`6m-M#nATnfVLYn zr?dqUcw_dhss}bbnwPEJr$=S1w<6AR;A9vwZv;zQXutA8?gf=cUM-n9C4$k))e^E% z;6G)S6A+8$uU*F)VHLN<4#H|e5dfEWs!mNXnn4=ilJf)MKsDbqmjlF?Y_4 zH~?r#)Viqc0!!l8)jZil>amkGBdVUeaSQSjdY>Jej(fw;lj(O^9!xLXDJ%(WaA{I37qZ+1N8NS)Uwrl3*gg*1} z_doZ=uP&6g(RYxyC~1OxXmBK&puf75P${g z6DoU8)N|usPO}zAvzm!z?%h2(dl<1P}rf z)n1z>b#FQW0cKj~goMP8f>z>lq=T8l3)j4h+~qh` zQ#M>9X6`yx1O`(bk<7Zz45FJ9BqG%y>Y!~dmDoc>9e3PuGKiVoz4X$@${I)WM&&9r z$Hp%kz5%q-nqm+W8->NpC^iC5FMuIJdMeebv?;%wOZqD7|K(}+{$_?cOwpn`RqA|z znTc87v6-KVER0laY&2)6eLYZ3F4 zmJQ=VXvQ^01uck8K}rn)UyjJF#l)z*Qd|nTsu8I(nsZ7Pr*a}vsC~;HS!gWU2`(}e zg~*7{h$VK)Kd2&WqHqNb7g)Lnfp;M4HIq!sivz6g2-p-Wt~GLQN)6^-y(!=On!b% zV6To21QD%t8@Gz7MtjvAp~=*xk-}^8&~DQ~c?nBMwX2R*z|>7h!Co51KnP-f8<%Wd zbtJkT^_y{hdWj6E{8;(W^D#;gzmw`PBaqv?#Z{fPDFo!-{ z7S`b@PGAZuTv~89VPVY#p*cp&(;pohR-hTcgY?xH8t~q(u_uT zRwg_a37z9o)8mPugYE~REDVRh=2Jf$Fn|;HqP|KbItQ`Zy>~h%>C`1Lv-BD#(yEc2 zDO1{iowuXf^v`L{D^)h99dzgiC?#$I1x$zJM{9hmMY4gMUu+p#EwKPYF|J%snHQ6> zVq&jK)j(TSlT#O-s)9+J0_qTIyqGGH4B{8K!Y*6Io_W%a2N%I62IR}4Q~Og;Gn`%W zOG!&>n4O!xX~bmAnY1_wGnnctXSpr}jyMG6eBF?b=){E;fp{xIM7=mW#Z*RxPLLxI zAWE958V6w%G3==f3t|GGH04hZX{og1+t=8d=yMMhKtYhvgG3Silga=ag0+ieL9)ad zA#F=E^hSz*%o8ig7Ns>7rV0bx%G?ah%OjDxn~tdW_*PM?^We7I2Vb zaK}$UbC~pwMf$8@wNPQIWB^1d0`2jMQ&8vwNOQTdfA5c-H8FE5+hg#5eNLR4BUqDdxv5$I7tL1X$<<5(y+L;~Y;NP4MiSWR6P+IBzcVmhse zlv(}0vWC3M(Q2IZVyB>XFg{K_^rX$x%2|ZLCfB=AL7Wb_iBJnG&B;@>U}BZE!HC44 zkXeick@pPT1a4tHSiOXk*sw>TX~9omSR$qpSAeb#AShYC%27}}^9t$(^0O;tJ(EM2jtxU*L4~x*T6IR-2L=(!&sGqnZtJSNoqF96o-5>dh@(l zyfiA_T-LXN`B<dwgOr)4B?TjyC5YEUV|r~^ z#-}$jTN0f8z|~soqvfi>OhLjVC7+b{F-?OZXGc^TW+s{#MzmWQgZT%Oq8<&#fVz@< z{RCV^5fTQ9NZpz3K1dBQq@0bV<4#xnrSHV3Hh~RMcOy1m$PO>8ZUu59hnA9*Ae|l; zOFU9W^c()PxZsc%_em*>a+B)VxRC9Xf1*>9)_1EUdx512?JP)!lv|m|{H`mi&5$NG zi=+dX^_ufEDATU z6XF=TbUuqyfFQ?Kq+4uI3>thXK%G-!s_KhbqJJ9Yv@7J{9wO?c@6C~>A?qEDi^Su2 z(;gh=UV4&jSfmd-U+PIvsUXtlnjlnU@h^>er8YCAITB>d<*ET?Oq_luM;H`NVQGqp zQ!hChr6O$78gwB>)PwiY*I9%)tVY90Ed-2$`*j0vHa^-}&E_^CBOR2x!jLT5hR!Xv z!2drLP|Bl1F?nz(I}Lc%%F-6)*Az2 z?1_sn-V4El=G1ms<1?@$z$;vUgDlO0T>el+Y=LM*2Zd(}n}!s9u|Fh_Og15C8)ae1Mf1eI~5f)5_zQ1akbXJ zLrgoBjzVoNDaeNev1_qJD=qm_^tcZ8M@%}!$$3zBA~E5p!J>vr!#R8eI`D}FB-j16 zsFKEICSMt<2Hgz2RfQ+&?${>cC=n|Q3q0LVGmPpkoq83Fg0j1 zd@$7^nC41IFesvZ3aV|>HV>*dF}99g0NEX45NNIUximhVZ zc$>RpVi27MFU<~$wB_LBxSjr(iZ!y6Y?wGl=$to<`CAG@-N|lRQqf4=eh>k*tBUtzttvP6~ z)Qi>$Cz(+Lgp6`m1)IWUN_~z=UQEBJmxUa@PP`O?8=%Y8aVi8FPNfOd!&o4kP?6+o zx&saCWhq7ysaG?TF(V8`q>hoRwO?+xjsPXMRM>m=-7X&EabP22AuQIPVtyUPu`s+C zQPnP~Kgq`-2_QD4T74?KD$5oN^Y5y!5?^LNyhB3zo@}>K0)g-#Y3_(hG~gfWUfNO9 zG51~8Z&nVQ(TJEta!bAoCvCd16)+pnFtTC~<_XMl#K$bD7pQ^Q>1L@VjWeeDRj=TXnXPh**MW6j4Mo=2}_9{@kwBkl2a{OA}_B#NBq*_DVjCe{J~;b&6kXZ zSqYoeF;!s#kE9mVmOdYE1h^ym)NTw64MAU@vO-79-cil6VEal+fawxBPj+V*WlEK; zw96HuQA^d>ZQ&-+#A@12u?_?6)v+4Bpn%ssZ^`ju)+q^Re znN=XUId`Up|5NpM=R~@S!XX2cXzEnaSEEQ*k^FFLY&hqgB?Z!RXBeZr3Zm>gcDZ4o zz@kKh(0m(6(GIX&!u4XnK{U-e2`4GGn7ch@M0)f+go}{>NN}!%2)2}EQ_@uHp~-dC zRS;+#B5OnSIqcN~<;h(}&&Oc^bdN$1t1Kf+c5jHIhV<6B7k-xc0iA)-Y6HjS6>bz6 zKXWVBw;H1Lo6UeAbOsbg~TqmAA{(ung2T7Razj706yEMAS{DBP=Z*-c9cP=$SI5a$H|`kBxz{aG@!e6Qs?Y$3Z*#QNiPqx8G+;=k-(lrvPz*h zA@t@$A?ZvbH)I8nFi=u_99dcwMu+|Tdc zcF(OFHtkq=yxO)j+sa?i$1vXm3l^ZcstGEC_>zSw@Dd!Kc*~0}ZLvw8#5Lzs)+1G> zYye@q!2og#t+lQco={cg=63odG)!PcGOuzE0@gETkFHLp}x+tj2#AVdaN(EbN1 z{oR(jRv(NXwRYJ8daLPDLuFi^zc3KiP~u zmZuP)U}syql_D+1URpIXiVfozHQfe_6*fr7J3M8~pk%1AtgRs+r0ZaycNrKDc5(6< zPbm-HcFdbZlZnDh>H@Y5@CDr?L6vsGMd)n7mI|X61mdlRLEvUittjrVQ;(lVF($h zvP{~iwbWd51-&v?ZulGKdWtGkNtuK=on;dnj@XY)ge>qjG?;a~((5#9pmRXqCneyh z(Me|On~#R>`(89=OrmOH(+$!6HV{CCe#5I36EPMc!lak-4rR^YVI|++P=|BLhfvLp zlw<84mdMxYj8ATwbhh52&Tm+Fk#$|IsK)~3YTC>~(0Gzdi|bQ_i(zW7-DlGG zUhB9A9;rGn#oRnjaUx!G@_A<;x%IlQT)%z)Xw3;{Uv%O6Jy+bkbqSH8gJ4n@)rf0v zg>*HuS&TA?NP5KsfeZnjoNS%~_82sqt)&^Kom}|hl3Dc408t>=>A=AzKMFHvP60e) zbA#h(rp+#3en74WKSFU18)|^jLkO&Sc`?ur3bp#h<& z%ngb9@&NFlb+lo%k)AC{#Vx%m#N2h1-Y}jPEKQc6L}5O}nMp*=2vJfy#3@)FtaF;O z_%Nm&o}yDJ&}hT2xJIGA0LL_4Ew3DCiUHR^!lKjT0vc0VB83B$wNRox*HGs)*w&aJ z-bY>ykHfs{ClV?Fe(a^f}AL28x+%M3{=WkRH{ zE<(j9+RVxjrk$MiPrHLppy_U0bx4uB0S7<_4qP~gxUuM(8@R-#`l0_bQBu#h*^UfK zhAbUdll`4ShZf<*_7iI7a`T0Bh{`a7WsdNeo9kzjmV78bI$|xbKSzRFMeMxH&TuR1 zf?xBjI&T1EMmMeG>&ieyb%bJw^w%Z=dr)}j;$%Uwlc;idrw0c9*~`RoZ>{?A?sG}zW;_D`-EuW z(R=TG=+rX~UBz1;S){#x9Q{2c2ys)88VwJ*lxGJn_LDTXuJb!0pDls!G=SeQ=L3|- z=U1~p5~WE6*i7#cxpK5^mTI~;GIL+1kcvN%>?$tIFy>71G9yy zZf;nbCZ(9Ajmjn?BT{fl&4jbw-=s}6AKgmzwB2{slfw0? zzqfZaWDZI26&(1^{#kEz3Con8&sDGN$p99b1hxQ8PED@*wq6=shRU#pu35XsDg-8j_y>2I}Vmh%SKsnh?>iBXG1-3?vE|DQ-D5@{?(PMG` zn;~CKRG-EkWebI!!gayJoHT+7@aeHiZ2>USM8I4XJBeypc3x_=QE9Xa47*HtfQgxT zH0p$i78d%xHxH!9pvaC|BwD=+m`;2e%>aGYu!MWyv(zz4O$W?Ku+LO&XdO15gK5a$ z7I{#e9%J~|Vy0ws*J`-pL8I`J8ZGbI$rSlwqb1*RY-@sqjzbM#1dtQi$@t0$bCG8H zVfkBf{XHAZb+af${#rCrs&x9SBCNBx#=gI1R~MfwNJKhWgU|zmnTpa4is9w08(AuS z|7ThhxNkgIvh zrygmpMz?KR=XL?>ai+lRpqHNeT%F`~!yed^#!vYu)EcQU5svy37Oe{&5glnn*v-~Jn8|FSYI)U}*%M5ATHTD{ z(yHuWqj8GmFh)ez*$FWE5QQBQ+KUC~RsaI!Y+YmcY1}BbVPvPs4MwBipG-p>wSnlEgJMN_ z?cNMDk?SZTMQYtkr>AXUt!zG=Yl&^pI~_H~#!UP&dd{{J{9Sv3b%Jb=iM-I^@Ruyy>eGLxTUBe1O-Q^9!KyPP9Q#B z6{peVNDdI=U@M!5yd>RdcD96b_)1GAb=*?gg)~WczzT;kAnm3tZoxxnBv}q@I<0G$ zSVgf$u|)4bIR!4*?(5)fEIt01a6*e&;%sx_0W^|LsO==I@55v!`x#QHz`tPFqiF&I zj+dK$5GQ--xk*Z|f=+J%;x20(&OUWI+)EA%*?g0N^byUtKYdd8btx&~p8z+=v8`{Q zYP1QmP3*o}}8tgA63omXx1*wjymfkH*N^}$HhP8r_8$~~NfGE#Cp`zc%4 zj#3#R5bkw#6w|qM+5`L=ABxt-YKEtLSiE%$GjVW0x^u`#V5rd6a;*ER?;gZ)3*kUo zbs~;QGAfKcBER5`LV-rK=)lwC6ep71ci(W!+9zN5%pxLD+Il|o5W1Q-@o^NzK`;|jX+u|r+M2U*FG)6D^~JIrLM`z5t#iUcFLV7s_pC_- zg5iJ=eTvLPQjTgduP|Fv&=neTN-MW(u{93*LMr+~;2JnRhI6b2-o`v(3U zM1P2}0a8p!O)FbTWivy9Knk(AF2Fu+wQmR{XqdoOEZtKybW%YC##-U76KtH!&bNgw za7Bd_NQ!|vk4M-OG(~%b;!KrwjnV@2f>>fJe-P)uN#pIbCLy86k6W}FxIA@Dg*jjI z2s>p}OxN*LGDii2?!F3@3lTt~;UwDaBm`PQyozQhEg?dOpKQc4lOL*7plqtYD;^6c z_#l$bHRFS6SWVfCkI0~rVKak_EDs$~Zdj0xOckQn34lAap|hHz+vo+RCF%S8u!{&B z^-@ffTTZ)LdaY$ZLOy?hBY*R4A)u730V06`(MTIUFjx>+s^rA|m{ko!ooz}s26?F% zsUrJqgD@#&VQ-A_U4{+OJE3Ng71kb z8!UTh%MQcq^5a(>cib`g?k7F6B^QUPO!`#BTJDQ>~5EMcf|J>QsOc27vOUiT$_ zAW>YwFbnU_jah4QWL-vw$m^(-Wl&@!-i>R0Gj@GZxpnNsb}S<5NHpZ%ZuG;PICj0( z21&(x82L%VS%lT%x)jGh=!eL~%H3L2Zm_PPz^xT*i-@Rmf=Pa00+~~&-XtUTpdwk! zG+j4R*qib?bN*17R2{B>HkSqbE^LpLPz}19+ATwytZ%9ZfG9Z}Ct4&AG!?szGF-xu zA(RvK=O}NHV_Ak25BDlc7Ffrv894?dxeV5cAr%0#*#+cKGQh9<$Ne-en@@E>#0v za; zxKSeAYHXruC897X5W+cMEQ<^a6{;ND!kt9Y)s>WtF5OExnvUII3j`gk}7b~z#9MQ0uI<%Za4wB9= zEM6*KSI_Zh`JK>;S?dFxtn-AKFt@LOyjHagG$FP=ImMm3MPL{w~+7fP| zD@z{@{cE*Vb&ufDN^ahTSBjLi2QjPbK)6(pggLD;TS_(vr{&q6q6_vUQdG7ib*E-R zVwy1piWDfSt)Dui*@OoR8LDQx!bAybr~*N+vXA9lM06XG5=UmueNRDbZAknki{%t4 zYCFk^sockib<8{ba`O4)?0KAm+eXrNJsjHBt-PEW7 zlWoHgA(Fl)N@%m|sI&c#20pQVpCo4kR8FN^{hsP<7n`KoU`3JCXf>IeBB8e(k?F6Z zR!MVA>kqh-BLw0 zrhcEpz?cu1&N2SpRZdKuVM|&;{>h*mOf0&cKLW>Qw|{%|-;i zFn$`{);r~4I3qxZRx9pBbZXY81&^WLDYl4M+#IjyR#ql89HiYTD$?M%b4257y3moX zCHJa9q+-WI4%Njv8%)b#V~JPP;Q9rj(2&<47K&5(#tluzN(~r=tx}SAj%#VP_L*d# zIYfrG<+=zvEImCwaiY~HoO8z9y{hCet4xXi(lorpZ zMu}*yQtVPssUA#jb!-o(olEXbEtw0G0Su`)4nO7PfYsxeSf@@mRHgjkG*~1jT_PsK zn;g*-{-v5`cP@a3RBdqW2jfX@#b8nm4diS%i_=W@}nC#z+^H1{`a~78F6)K!Q=hD##&9^j@(~t_r0i2@nYH zWmziECn-AR!^Wk=K*hGUGr`MM-dpn(3R>a0ioNY1kv3f#CaJ5&mP7Ylk6lC&xLSQ| z`4by;O^EXm^H4%VJ;4rV-h(N&&*r939MpvraB~HOK;I#w4WTW7yYmagDvB-T}BJcWT!imO&+|^V49$@AUWW^ni=z56R1k) zA}65M3|q4cPTUmHPAhE9NW?U+TKaYZLZ5uvzPNdT4 zCE^Qy~bjC9IA&_-3Pu4^yCb@>1+3wdjV-J)0o_a#KOMLPB(|4=Mv zE7e)hDp)zga?ubxid_j0+Q%G?fwRfFXHj9vck(l2)ffn=#}I;%xAKBdbg2KLPgwM^WKo@1dluoR!5Q)lEN&ML+p!gM>32q!CieV)n5}F3f zOjXuN9=@u9e03Bpyw{ajN<1gh zn{!tnp_E36^Cxy~Erh8vY3#V8XfRWSecva|HlW2!tTAy29c4r6aRCK#iHBM6LS%=0 zLQYJ63;^4Dp#`A*5jqkfthpFVl-R(K=u3yuhW4hNv_v|MZVyP>i>!c+}Z_(l@?Pf zo@vK84yu>WwL(X$YRjG$P7ua9^>(p-ok6sw6_)UkzBXe)`ebyw!D$4QS(I_G_|LvF z7;^{sFbIdpU8EHGOZ-v&6kVVYFP9fgunP^;17W7XHxG{hc_l_+_+It}2o>A3CoW1Q zAH; zq%LT3)KLk+YOPyZ?BO7L*oTbE`eQE*4-O{J&rOSz=`5`CB*-y{OLPo^M!H7jid9&& zgDlubkfsb9$gfyO^52=Q_T)5JnwwwAs3{hcU_nE^<-D0!r~5m_LTKRC{1;Gk-qQ8ec$(eFDh2tbzL_ajYi$bVk_xQ z(!H5(unMS{L4qSY0B_7jGchZa!|<}STE;v(pO^sRtF z^sCQ98p%9d*^B7oq#pBZa+8{Hid%@=_C=-KJMT?-il2u}oeBY9V!vUH0|^#DrMNJI za~vOn6379S1;v=(sg-)Xb(B0V-ZYPr%vIl0vao$G((74)>8A~7sJ>*5u_*qsvdYfh z>xwbdOqI_{1!Yu78zjMG)Zp-WFstn=0*$RJ()d*w+sEg*vwaWT{EhC^^=Cfyl$9Mx zzjx<@8?L$i{`tqH?Sq>JP>#xJ%qh`I4zJI#yR|{(B=v;;WgrP$LRc9fwC>KD*fmG@!)Py1f zwNm6D>+C2Fe_rKgqiT}>6T)RIj`*^ozlpP&qaM1?L;I1kq$QM`0Yc%g)16@h-JrF8 z9tTxScbfS4if*Y<*@rSo(A3pql~N3^_S(c5!_A89MKc*e75&K>d-PkIWevyTQe@#< z)98uHe8qAO-;C-uq@1YFvDzu&l8ROph-}7N?Z@w?KjBIyK8HfsbL2-gCF^@D0ltK; zCc$5W^-MJ#F%-kPf>K-an})1C!Nh~ zln9e|r9iL=Y%v_uGc%=)x)A+jGV0^0wP$hhg^5}EUOb`)E>rhPXpjioWca^Mj9=Ne zUxYIvhkI35ngdxwC1*~R@hfdiwWn7y>`^?I#jPM_;s_21L?a_U_cus+Y7edj5F?(y z-4HmASUy)Gq5esN*$$3H!~g?c$xk3k3mAFkvCE0sY<8<9EIi?+s3V6T>3cAEIM6<+ znb5pc@`T^RR5uKVXkMM7rmw6Ek~V&NLmz|f$32k{cT6O`^wKj?*L6%HJ&7M|WZF$x zD3sR%;L4D0o)>vECzx~!?}$J)pwm}?plp=N53|3so2`8epfNL1Z)7&6q>FZHo^qTh zA3y)trG-bfY`A*MhR3#%I@PH5U?rRIkc+)b5+cIj#q-C61B2@1uo>!XyCcJ+Cc93I zwq4VSq@}i)4P)!G5h8(`i*`(=5v3i}Hd`Bj?X&a+*-^(ki5+RfqMu`2p5}_Jgf%XT z-vhxsJY<7Tx&f`DS%B-d00N5}CM;EirrjQ9A?I5*o)%ssB0u`t+fYi9aAESV$2JFp%*tZEz zjkbSIsJ$9Cfsu6Yg5|<$na}r_+wC|Ss0;`}w9I^HRT?VcR`7GiGe;I5qsNaTI?A&fE_zc|KR_3Tf>ud1u2QIv9@Ru3SOJ#0{R1OsqetS;=`m>_hV@uT4&@3e z1FME5i^~Y7n6NnN=hV|F=d~%zvw;rIZot$MM1&1{DlD)$1OxUEGg5+{Fj447kO&b` zmse`tPYhWyf-%vbV$HNlH8mRAZg#nueU?<3xS0zsAxZdF=}c_9VokL=QHXmi!&sA?Rg8v%@LH1N!msf`e2mjK7t)&tqAPzEIpEm zKPN0uEioxTON`3RC9b&D0UQKWmEgnvRt?zyHL@yDflBT4ek#qzXrK$|OE^cQa=TS` z%qvs_H8^eojDq3ivJ|dDp+B?weK!<%DP43(a^`Qr@;qtMRyGD}+3p_-SgV6;8kc{# zhb7205r7p|tub=AnpLc9>D)D6gzz#`99Abbzch-n%MbCItjm(0rer2bZy)#9nfdgV z?ZI~hMrwZ4**k?QQN1of1vBM=9|I}KBxKj5II((nbL`l2Ylw&-++1y6fXWwdF&?M) zo&DRU#j<5$eg$T&h$-4c7cm@tSBwG=Oml)B>qdy%q;zO!1ibDqYf)Vsz)4>2u*2Nz z_YR1a7^b~IJ6yHvp&E{yDjwA=TVedlfJ1N-O&v-qJ%d9nu0~{rR4$$f%ySz~NPR|i zk(9%thDhV-cESYauSZS|5*#Ovo$<{m$^7X`khY%(!CwG`9wanY%M9jj3uJ?I$?e$> zXosUz<=}oQU_PgytE5q*JrgA}D{?9l4o<>xO!6Ou-IiAk?-WcJWZx{Q?3!Z_$}W*W ze*@!ii8?zih!~V^qX^9Edlo|ZX`~t(iPYF}p=HoI8j;#eaoHyBG;<#vV^d-0)hsKk zAq$7UFu51MPJqoyMFbQW$PCpN#q4I1s}L#*wd-yp0lbmL72|cq>12^Z*_4R?EWWUb z`vlfy?StNMZDg7SIkc2N2b`CRA6p#6Q5$Ac07f=23ZX(b%B2S}ziT_+fK&Al*M?1z z;#3cztAaHis8iFTmcPnO$^b{#lpP`D_SMmxgE?FM^hKYn!8HV5s3-!IEqB&Pg~K0C zrD|}cN_v;4U3t7xNpk3->EnS_8hRH6$g^b!;F1Vy-+9&|X=u~LiBaDh&R`;Wx@rRC zG4p6NO0y#-?lYd0@mPp@W@hfV;~ckAv6NuK$gYC0OeSh62+hj*vm0rpUdM|i&mpUb zMw+3j)yQF@Tvx}PF~_l0L22xb`eV%jMWzOfq7z@Nh)qw!%58SWnMesT>H~R7q3EQZ z6bKA1=ZF;Ju z*i1|vGK9GhtlBpOe+FOF7U-B2G>Fp&)I$Fo3+~=m7?6fH8{BJ}YbY|nPiS89tw6Lb ze)cRZtY@ZqxFi+p^^r1yzUQSQA(0-sO%|KdokSE}ezF~b1+dLXNZ$zMj3Py0D)#v| z=TqCVu`Z_A(86pUFVR~GwZh{PFp!GqEYa%!PsE89n+kA<*A+fxanu_!RKz3<^?M0s z-qEeZhelw}r^l2nq^c@sQz@i0EImRu%7@$1|NcOfYVl0n;Ofgz3KIgiWJbDA4RqC6 zT542jiS`1!YU(lMbY}&kMbwtjJY@SR<@cfnzh^mx{P7Vjg1?KoatlD9mnhoP1Js1g zQfh3xv6v16Xiwrmi!`GgwB`UXZq4Vm*awNS`+&%dc`oR;5ZT&xra4`2(3op2HU|27 zBR;-Y_%Svg0{C|DX@yy=ys2K9Gis=3DV9PRg}@P%cpqc^1G83EudN_D^Ai;_J}n`X zV~}7ECAi7>>IT>|OC`UuST?bS{f!&@3Y%60s;XM1jzcwul`B=5cgtAi&wU5GPxvrs zHrymZ*to*Xz6hC*m{w8HM`LsqO~hrs>Y=jRlG`J{FwB>r;?|ide2kjz_-B?VUTQ9H z%t2eFh~TJ#9t9sGt*}PrXsE?v!!YiN!5AFNcEs{ z$dEQ*;4ug3GC%<@jt*aU$|=ar4mRT2l#9X9f{UK&HiyjNa4H?dfUuMmxBcAYI+m8I zp)NbP1Y}pH7Qw@?Ar)ax$Fe42?0Yo`T}Oa*4tx)$$13t?nwL?R-ztzE=1A@Il25W` zn{;sz^)2X;!GV>L3=xqc~5^wxlr2;1= zKf6l^M$V? zjw`ZBWws9%)bYMsL%vxl@hMmV2Ze$KVHbow*_?5os!49$gOtdf{U{6zuXX=;BcPoj$wFv;eR3&uEN!$tr*b|#fGKyTA>PS z5PBJ1k6=uL2<&2E^w2>#puy%5cBQ;g;8X3zum?&8XW;80$2u69zy3^OpL&_Twv`+y3yo`mtbZ~80iO7!grGdlGBnW`_ zu;@~B{?L;Fw>n#DvChU;eYoQ10!oD1h$Mlp)bQ@T5R5uT|t(h19bt zTd*`l*XQMKNoQGu9S1i%&}P{I81A%K4}#-1oj_bV=_EgGhJHk>wor_m-Ap80OiK%D zmd;+0o+P^(_C0qgkPJAFC2!ww%w-`DN()1_v8X0K=H^APe(Y4I+tF`3c%$$lbnKKhrK+}G}#Es5&`fIev++=hu_;i`CVT;rv zlsj2(#I_KII=dwCg=)G-(a#|m#L&~gkU>)mHo?BYGCwynQ(itw3rrbgbwqvFkw^*# zVa$a?9og$?KYJoJ$R((gxDhdfKY>aTAv#NHPd6BGTJZf9hdh=jL9fO4e3QWUv)eVV6^t z|8Q_eA&XXK%go|VfNN!w>SwN#fm!)iP+_j=uAyDXP~OX)qtQH;Oq_!pTsCAz4XqsqHO{zTw@z}zFRE;#AV2qS-F(huh<9W07IH|En;tBoo8be4( zeN+wcB{%`S;-v~+#?w``7Xa2`qs?lub%~)ljxE=kUFdXJ69Ef~t1II55!(#kVUy)o zykigudl`O)yS2M)nv|FUtF{;^1)$Bv7zSi%b8c%9%w8d!<*q}$7)FFEej7sIvO`pW zK&Qm(1j}XWLoS@yE&P^u$NAJYbR=?Pc-9m|D&-E77>p9l=yi(fW94FxNfK}a&$mWq zV~3HEWwotTnjNT9cXDxDLC?;s!ruE?#FVSqQ~(ioly0j8C=wrSL$rHee6nW5d{_PDekYNJY25lHig$5 zI3;!&VvC&hLVf-z)Jr~E#sN!hzXZ4u%}^sr%wy8-_hTE?L(?diMG9k5m5W5sgxfQv zCIu5IT0$y(moJGx#l`Ala1FXogNV`_&&b3pZw!;*0w>TAFC_u)@(a{DkDHJMuas`p zK*PUIuv!-&7$8lPf&*e_s7E;QQ>@)|gR{LNBC>r1d9u!3Hpc#nc*hlh^TCK9{Q|sE z*_a?l0vwEL)=md8Lgc;&#lu{$qt803kRebCAlelIt`b2MlPJx9tQsdllY-9xLdu^Y za;4}LTv0)!A_}Sfjz?2WwP;vz{rVb-9TC4~%pt-f2i1BT{>p2&N_Ylr026a$SkW8W zVqE&rMat!wLIShELpTd0RdZG3t(-QDzJ7a8fN$we~Kmf7NJ!c8MYbjapN+ ziZL;vu`N{D#es-yfA%8MoQ4k$mPvlx((D8`bHc>{Wq^MJyezE|1k&sML}q^TsUnNq z`x`L3;#X1c<>F`doRR?IInIUf8To9c%<66Gph?Xr6n89-N)Hy3N zP>-`z_{tXNr2bRgiZ_`9Y3lKbiv1>Npb>2kk(gI63nt)4yzCaIk=%5o7d`|gL}wi( zl+@LkQ`3vM3n?JOqDx`iZ8Jgz4umK`2eVcxiz=g5vRI^o6||Q1h9H1<3(54Vbn6=O zr4Zc&EE*wShx*8XXvxf1>kvnirNe3bw-ZJJ!$adjXh|fC_0YlKQN4AmpHSm5i`*xd zc31DhI{^JPmJIz1*-Iqs`QU7&d`g}27Tj%Or;zlN!6Ji4OOh!>#9fzG*~B@UL{rcE z^}RDgWH-}*Jk6ByI0S(O^;4MXw>+Gvwt?BVk);`#%@-K*h|f)&NgZ_})c3up$AhRa zn^@?MmSW&252g9EppGDT?oEQovbB@Bun7DLPF;UD$7cy+GE2Md6z%FPMbREb8%f68 zRzW5v4Z`ctFlCY1&LtO zgeB1kf*Ozf?2qUJXb?EF)iZLCknOf^N1{p^<1b%f1zS;0JfdeqsG1)w2)@Mn=lq>WCI>_4JqXL&#(d!`q$P_Vi4#lR2r6Tu~Hp*+xjHdt?#%St0li6|8JH25P zU<0AH+Qn6>3f4=i)*~IHTF=FZDr2lBtT1pIjFR0-1KKC~>zP^d21sMI5h!FdSY^s1 zC6Dm<2iPEL`OTN~{vEpu09tu96AiIF#IypGIKCR1ncLSVaE;vFbuzy%l$3ISF#=9 zXsC?#Ora39IEGHw04wKlD?4c&sX(IjG;E5g@;DVvN&yQh+VO(;V^yiY$oirq!86%Y z&JB@4IgCvM4N$h`qK#j(&$=mPHeGa!5jXJL_*7JeDRa8Tz6U}~gfp4K+;w^NUu9K9 zs3-2sRb@>R5u%>@G`Y^2job|$UCA5nXp8-I*QcPdXbcNDqJskl!*mWulTwe&?WgxI zagq}zA+d$l+zvC5^nE`!HxlZ4?mc>%!VdXx1t-Y8Ry9H>@;1o$mM!a?xDgG4=e^99 zqdmPScq;Xcfh71ihBM?#As@9S81OOx0kjk~R2x}bA+A?2_I?#zF z6Jf?g-BcDmk9OKdAeHU}0uU{Q~1Y#n-@Y~Vtx%v!qU?$01WQsvr#cBZnNFdqz zkj%1(@=cRXv7K1P%5v0jfR^lb1924Ou((u)iMZnIWC>AM0(F8O4(M?SS|DUtkm+l~ za3#N$i`b&|7GJ{KufICK_P%;0DZpHhRhNe0*nsP|DZeYk7=;A@6xgtey6t5S- zHQaAgHETp${L#E1=a-r0*Vjd}!bUx>*Ncdwaq%Tus|TONzaqKJ3|(3;k(CkAk!cr zG&NHiEhz=l-DLg)Zq`OUJKz{3;!=!6EsY_>)S+NUedkJ01;q@R$}I7*delkm6sh8Q zh&%lWyJ#YNvf>rCiOLabE_x#r%IAYQ`mg*zUQgFm2QKI5{>QwT%T@YgmZs7xhYs01 zRfbdz$Yc=-(>w{hkofS4_nfTi831h_A1Fxf@m&WnVnI>2T#zCc$^mOPTcshj1wewi z%$G)qYdD-qypU?XQD~icP4n`3CEixa^t$Pvc*-?;9L5CFTH;zjn+)KR6Rms(tP3D! zg=?ve9Y*?)h4~;(Ke;zYEE+;AYMnv@_6^>dTRx*?Y9oPU?>5_JF34O!lL5}?-%^kA zCGpWI?7!EH=Yl!4c6vS%k6jAQ2JzL}Bs-Zliy@`gD@h(u&`c&G>N=2! zRGgLhOcaBOX~O`vmPcy}1gQtQKpjI;e zl!V#RII_4uJ511j1;ww>3eh9E7wm z8{urlh}Xrcl0O1rVq6Pynrp-m7&j#RsDz2BadMY}ztnZTb%=G%MBjAQl5Y;OA~wU+ zJ+%pv`OL1E945Eul<0Ve_tz?Jz}UE3FCCv4C$;Fb<*Jg16wGUMvxv?e$YIvF*7Sc( zTB4<88qsmza?!=dowR&D{Z6Abf9$1~p2^FZ(MZBN1CfoAPa;#mc#e*J#*;2Q`lMz1 z#fy1GhF-I5$GL-+(At8H)_YtP&~oghRxdwv`DzYP2$8%Un8~$5gnFq3PIUF4rEj4} zOz}H*!pIgJA=fee#|sw!q#siWr7wDJaf^{)v)8)#a` zvU?~-&?>{wTdaqX19)BI)fH6*1+c)EW)D`<*4cFRjFeSP9Rkvdk!{)#$!&WXE^fzf z&KbaSUK+cAGXRW2$MEa0jY6kvGHv}g z;VzgqSS`q#N;N2pI6pwUIn)b!FaW<;m&eqKsesw|`)CAdP*9|6T4v3hPk|jukTL>X zc3~e1W=Jv0;bO2Bjc=Z*?7s@5$w45=Bl*x@7sAl63=<(kZHo#!%7U1AMj$_+L4NvOJf zx=QXtr*47S1~7KmX=yQ{zAAB)iX6lCs^FG-=n4end}_i?^JVPSrLexH^VA{nK9N4iFxC5Sa7#N=+?kP7w`G>|b|Fn~=^ zUD!Tw^sS$*)L{RtskG`e?7JV+R4P0&R1@f7o@?r`lg-48_H-+~_^g*cy$iZw;TG4^ zj1P#=O$_H|99(WgMjY8F2{bsY15M5(1lia5k2t3{x0M**WkXSzB1cUIn3XJ1*_}uY zTDMAk%f3J6(iod}-)R1(WS7JISWBme+k$i;_Q_T|DVf$YKvdfS)^cHS7gZDCSbSQ4 zy+wx-;3cKZliZUF0eF_m!nxjt@pfp01z4?p@2YCDm|d+{yNcJfMubdFA62r&D?u8l zhWe%OO>F;9G z91k2waFA2C@`#hpJni@+R*x2T?|g96?YC{&HJ-gRpnR7o>7IDvnL8f6W#`tpGtWBt zj!n1C@6FkHSmc&1U;pe&_I~Wkn^rV)bi99l=gwW@PA@RgXw@Oh7arX`Ppe1>WK(zF z`C5D~U}H!`%=;D|+4ab{%lko8&2-yD)UNVOE1b5etM>e6xwGusyI7L&B&idY`IV=h zed5N4ZtizeC+H~+1NdAw_*BlS78@45k(i*{mTJ@PN|tv9MqW$&Qh6@4GEAhK3#*3{ zf{OTk4Jv3M$0KSz@ig7o9Ryd3**Xmz~H#+*|{5uUu#6KgfY%nszRLe^pfOYH{Ryp za1y}@rjlL$<2t<2p@-&V?R4X(wF>4%r8263VPxHQC##yQqc$B3+Ax$zX3#sjB_|3y zOTcDL9=y~pst+=q?f=%MSVIv(b2M*kpIwpz%E(qfRIbxVjy9{+9fu>8aiu0auvkK= z<;hb7u24Z25m4@fZVu6kl1XO)+a&ZII>4r|`fd(350@iM3ckUVD)2H=5XzOni(=DU z^=+}K;Y_N;ssf%*tZxx<|-G%XD+sC)sp?t8HV;yS9~kY_o-VI62Vy5nXBYn}mr>3&ZJ zrdx=g@|bj8#~pLWBGQlbal)YX;hE0~5?9mI>DE)7aXCT;W6wTvS*^eZg0QPqL!)0M zX@0fZC4L|3ji^x)`{DW>N5jH%7CA;9C_swLi#sb6bJWt~Trrh4D7&jiF^(P{G9b;e{N`cA`VCaC=G`}i?i<9Rw5H>59V$RC?w96;~G1L|2 zHRW1ExWU9Ml3#Jkk~+hjUf)gv4vbXS^-})qRiTUk$-QR=0dGg*O4=aG0=+TpQtYUm zYO+&418n#Xj!FD2oqJWWBc7NYXTr=DujI^Cmo(1MOwx8^H~H~oC-TXx-3J;XDsVC# zAc10w{%3(UnvkN0)j(t>A)kSne6lWq<7~PJ3D|L})pWTuT(dd=B6_@@I~%P#?c(zf zfB430zO-%s+@Z&xeeOjU(ATfsvUdr#&x`C|bHtI4-nLm*EF8M-kX_sN(VC$$5V$yO z&6?eNw(b{N(aPBOo3FZoh-l=^@w(NkcI|p-4D2=qOGA=pnxe1P;_PxrWK3JGxv}qs zMx<*IC29F@Lav4DGR1L~CY{_uWLgbq&@;A~LcjLVBlqmu*e}yf{CLZ8%jO3|j#{Io8OjK_j6qX8IHHNF z(zXX+V%#3A$0XQK837@6ED~W)F>cz85OIsuiQ^O^a^pwIUz0snPHfWCrkGv9O~(Hcw>zwe_jOsY7!u`!(r0 zqD2sFm20=SXn*`-Nd%f1J8IkIj6-=+$06~Ox=o=1f;(lbMkbqd>%DG$VdkzIb)%7p zjQjC;e#~7rH#g$0^HbZIvPN(*9JnGvF5j$&_0;jRFp}lvdZ}dVPRo@JRXmD)Q=a0gqh~%I_8eY z)C=|Fv6vVP=?zBJQ!q(aqz1eI%9s#YKo;0HJkx5Lq=T6Xx7qw&WL`QI;OfHlvN6Lg z*d7O;oTH`e4@acgMMuQxVME>apur#1Aw5cR$fAeiph9p94R z4yWQu@O8};Szct6)RXK-s;^1`yC!7dycUEdDH}AZ85pk2Cwb&k~Y{56*OF=($T&?i=^WaC-!7OX-AqThMO3f5W-b|pF2W2 z{mC%a4g3MwohTvFfwnPF-H^}_^c94Gbwjm{vffaiZVQFv&Nw3=%So-nB4OFzp@KBt z&9}JpxWtLNbx$~U`GYsz`q1v4Xnxz>H{5>sGfzHY?ftj!JOHcMEn7FYuw!0m&6-2^ zJbM3Vma4|1Bi1gz|Iytm3TfDP z=B*od?>cV%6W8pV-+0Z9J6F#yKj*A7?tXaVk;{)i?C3+gWqa8wN{x#4%J~#JY&G9gPUg*(y3`Q`~L#ijih-LO>BQcOS*cbTF+S{bi)$VCiQT73Kw;J>?em` z{t*%7#M7rIBxkXd2Sdi%GAQ`}vG=D>k{nl_Ao!k|dxXc4C+?E~0q`b^O;&Zybam}a zi>%D&m6hEu`v>mF-OszdBC|U^CEZocDi(_bK^89JP8^9u9&x$5>Dv#g?^0DWH;;%+ z0PI#I!rjgEc>44mKYgmEW`fpWR_TpmnRE3AkO%83^F-b}!0=Hk1JOHFY|}UaYfLCM z0|kX6KGe?LwvCuSZl_66n{89I43Z3IXa*8U6ky5-8BlYBGpmY_*oG5PI5+hk-vm%dFK5n-y7YAxIo|QKMVkS)Y9h$gQB#M2+Ky&PN zcXxLeb3}}>4_()H)P=6cIG=U9i=D0ur)MW!m*6IZ2oOS)xn44|WV+0!t(#La(2Z#& zjip9|c);|BwZ>cBA#Q9FdmBwd)r^?AavA2LO%8im+a?7y-D2i2hln7XDg=a}>Kcji zWHkgtNYi)YE6sTu&ZQ3}EWZ!{P>gv2AG19i*q6oqWI6XO`B}bgQh|&6F`62~m-RUI zec^`?MW1+HmTyxqedQI8;l?ai3_IEHp(V=_C}v0Z=~_kWqxPQ=Sa0IE7lHb3}g6taXm2 zrkV}n4kjUutp%8;P|jlr(|DkXe>!$qiiJ=9wvlA5nM{XJ);e{Fw7hy|(i+DZk%5*X z6Ekh597#<2Xqyqc)2_RY*HtP|c3G?TZP+y9+Rx$qrl+pMzVC&Q)mL{OeE*5-J9zKx zT;?uzFFgJIC!X0`#;bq*Ls;zXpDg#j^W0k>ezcs)Xg1So|M2Geomq4pZxr#+jsvp9s{fnfBb`2y>$IocfROsgu)zf3#DSWSAmk~1Gq?Mp^gb1YB{$h*tX!*&{{5Q z+Y#JmK_|wnfVx?M-y&^A2;_Mmz#VfbC(wJXLTMmd8BktN+}9eDAlq)Jepf<<%3qRBd`2Gt0P$~<6*EUL*q%!VTqOd;We zEN;1jHjSuMH2G_CMBd<}!AieB5U?cM1ln9D@%3sc8bAPIaZA#LHjSdA;pJG*nz1VL+CzhlO&1s;aTdlchDm0z zOD;CSL}81VW~Q4FuHPVoh#}>$Jj%9WCnV4wg96A})}Yk*9g8gZue)41t06aEj#~rUTtZ6xa@28@AsGVIecnlw zN~pcEonzmjrrqwHW%(96EGKa|t}0AoB8`zDrP!_;q(Lna@;OpnI*F=@47F6Jq(w>P z4q@IoA{lJNEq{-M4uP7%E{q84sAGkO`LBMH{5!5<91bx;gT=bZjV$r zN&;;)qrnQ4HA^sj0#%@@4X_tvixJyb9_n_R+`rP}p{$_m9qalM@=;ic2*~DyOpr)) zLr*8KDR(T&QbNQha$k;}2%EE9JjJ_r?siYS`267vA?zGH_1X_#yc%XZ^UWnSS!RU( zgOA=lTYvd4Z~XrCfBumATfct&_n&^W+*luW`v+H!@7*n9^C?k3zkYS+lLyBOcX@B` z`tk4o_^-D=Jwod5-u~q1-r@DfuyMFjQhb0k(m+K0?CQ1o#}7^xz$+?**A90+zVqJa zU!2VVj*dS1;MUoUpkFWh2ryeL_K*MY?mKrrI}UOE)t8?f-#fg1Gep3f*I&GH?c-nl z_LJ3dPk8#_`=54r^V+oxY`ewY?%DNczH{fly#C4R!E&`aTApOUfN_5P>ipKx=>i~$ zV%D+XQ6#|S?V}HV_xmsQ@~$@U^uthhiHW(DbJ`Ie=B*=r3jLLjAR%|(;ldo`Fc?V?tNa@(Bcb+VtTAp$BJ zFo75g4Yty1z|8_m6QL~5ZWnyJgYBUEsP9$l0NJ@4|1P>ILX;FtDe>KCHN+^v+87v~ z9C_}lZM6S1bJPB!lXnqk>5G;?2Asldi{_N^^+k|AAe4NpI>f!@w;2Rvo~n^T#E{L@BHjfg;5|pGw2_GsH--hZq3?&rX*Q?jN0=o&v(*!NJ~Q7YOF_ z*?czdy2MKi>?Q#q1=rLJqwEDpLuoclY}v=6zs?Lgxl`4eWFr2&l7(AYEUgG47(|2S zkXMmE1eY7!HCr3NAa6|;p2DG(?#jdE8)O_rcE_!>g;s1JZlq=bNP@UTdGfqjv_FIZ z`A}E_aDQ#BQ|Dc|LGYA<3p|)JR&1vqLtTnc-<{MgJ>Fr=373icjr!dQcWJO$16IA1DuB8(E0z#+TLV>~- z@s}Ldk=oc4XfG`~6`ufkWw01N*FofO#3(u`3NOSt%u-&238J@2Pm00Wl%0dKtq!S3 zXZt7KTn!P~%&5az%8u(K8H}Wr_~@D&bsclD#e!hW^bJ^-Y_mM7ek>3`p4AqVGNNWl z9~rJ0YAZHu<5ok-riYT2pZ?)DAH-*W_V51ZfB)CNc=g(Yci;Om_Ukyg)vVXAG-@9|4c;3;km#SiH zC{s&n05jNM9b9?r?B2b8mgpgX5z%H5EljGSdr?QRj8#4;%DTk|oob-e!yTy{ zj#j?GO&WR)q%S5>s1kDyuWJZtTjX|bV;GvsTF}^Nt*CBere-;9uc)YU$c|EUSEag& zjseb6ai1@_L#hyr99M{82pt-svLY+c0oiB=mNha+yVVV}-wfRdx;10my5xIwIZ%jL_lLcsTi?A?dt_}<(Wc-wD_bhuEK^#sVu2iK6dTmjK4LqnzNWQgG| zrnyHXezR4ci=<&WJvqH|=icqx_l_Q%oSm(RkO)@Gb)FCBH{Bu;bs@~>I|-6TUbbdq zOJE{I5`fI#vtDh4ab&&}naN@Y?I4w|bF__zj9@FMQ2Davzri%@gMF=|h1j==gH=0| zXf`t-uhbQ9tGPpq7_QDv^tYHgIIF$cpOulVp=ZA&PxH1ed9bf>I!fX$7!ZVJsG=s$ z^`Xv10~dW}m!vTO~t;6I%yr3P6J)zf(^dWeY83EishcS7LtQ z{D%8$f7Ze((j<`^W8g+(iltd7mlRUQ_QEoKgE0zf`w6hY?xo+tjh z7iUL3l|#(w(VSxqw7m2F@BaS%{0pzX`f@z|=ZrLYasA`oaF`>D?8eCO`zL1~F98-={`MAE zmk&OV6#|wupCnvJ0Aaqj*gZbF4?9c&#QnV+rw`tzuv%PseD(3iakgGuxr!ejo$erB z-QP>(u|n?cT|GPc6NUB8?qPp?yYCWi1HiD@U7VerU;qNb8wZOo?|poH3WtG(TC8^1 z+uJ`qz6Uck4cWx6=+=Mzm#?09?8#@JeD%fWzx=1)z7J=7XoU3*%!}ecXl?{q>7`Z5 z&qX+KH$Xu*VwmZN{UR;GaBBMEf@Cm?F`CG@J)w?__U1}R&y4f)qFS01^fp?@+@y0P z;}c*lJGzt5-$C8lTS8kQq$q_}PS9T~`v6ezY9Q;#b*;mn(j@dZa%zhfdm-4Zo?=IN zxCqSE+&i={7eqi1-va#8bdI~41;WU%AXVdole=X%v84GNER+YltLI|ccyq6Q;n4@ch}XNaM@Kz{Jy{C>at%k1={>N}l+GUVo6Drvjf%==OtRcsVu~Ufi=|9E z!>U?eRS@%82$Y{o7NM0|H9P7_-wtqk2G|GP1QZkXsgQZoeXxSzEun7ti7_H#=mHVN z7=fS*p^q^}ig6Y5b0~lq)3aKvY^WfUkMl&;LmvyuU6Mnc!9dJ0-6%T_hA-qUd#Mx( zR5|jvQaZHQ9Fhr0M3Epw?1@fkb#ih7*!4Zdz6XHSYPDMRJM$et#DME{T&-8#Y_?kW ziCjjiZ0gi0iXt)=Kv1jgOG^C=bvR0szDZ9@M?Ht9=UT z8Wk5U7u-{S>t_&t0;CqoB$c+}DhSgc!2wwy(&xSze+EQM{)@8BN6d^+>CFSd3kDM8 z=kugY+u~CN%cLm3Td*>msMNE1{h2Yh4=GupC?g{RDa>$)r!uiHb>i|x7Q}2qUAxo@ z!Hsp!f&5^bb2U;6yB_bzfcFNuR@G3afsGVX@R8qrhk1JnA9Zdx11wC1>SS5s%v*%= zN7EyU6S>q~f9i?(SMPk)cy?<-Li+5B_ijG*{J*~Yc6_k^vtK;%n>XI;de{RaJSq8O zlOcB34|i`J-HAm9`peK32#3381-M?KcYhbSkJFqoqu+Gx@$p~&@|tf!E)Wh4A=+> z>LsFZ_Sv2HKmF{ppM3vE&pz|4*U*E4|YqsbDV70j$-zf!#n{E7V!Iyg~KD5fCleW zz-ov#sY*`h9f6Z+a9gX&_6{Q}{XucUY z1jH)!`Y0<9pqdkGk^4#TNeBm|8WDh(MLo^{k+W&0|wU3zb77 zDkHRJrLaLF&rZ&#G!5{xXiOlLMi6q&GPG^h{A5|5jjc)v8PTnU(D7ZKD{sx^45ck_ zO`c(_g=I!vl9iLVt)SI1$2LEk-0VR%Z0}-zkDVG=G$!k%Dm{_1Gm0R`U#H_&h%5~R z0Fffa7-QFU0MN%C0ElAf0(M=Dv0wE`H&?4wH|yr}`K+7qYthP+g=85#cLq#9c;4jt zza=bls)mirSl!L0p9m3nYT!}|s|D-;ussNx^*aNLCBfsT5;_?*o2e&3@^eKT-me^jfA-Egtl zoM3g)fQ3pd#h5i~G=uL7l57M4?TY&Wm|R=pYuewQ;y(Zw0tYcE7ZLWDAQ2!S>Tyy| zU|46!q8d-Slit#Hw#|2g3C-ljzzw5vZK~a%)^`d05T9~IC4GtiHiT40wgow<4i``> zV<|O1t|zX;I;v8Dag*_$q^!3)iLCIlD3MV#p;0@NMo*%FSoT1eP%*SjWTk@%d?e=+ zLD+xhd#^lqV}ED9bNIx|KmF;`%RjyQ`SM&<5dg(&SN6WTw*>62?clxRK5?uGMMZBB z*LzoQ_Fq0Y-Br7sRub~>fQa4h-W$G1LSz54X?-F`saee(LN-}@2$<6B?km$I$* z4sI^*-e1qb*fr^6-&23(`i-uK?r`t=?miF^#PIwRKl<)#H^W|th_kRe-;Kv-amHQB zfugigF?|wS7(2ffF-F7bbf>U0YM~6Q^d+ld&ix^14Xnv2P(VSW@hN(X%xKj$n(GKQ zkJ@)AYU75;UP(pl?J?RnB=p_cmd6o!<0b#;Xk#gaHSSQVY}XJKlC=5Mn1x`*jpYhSvkUg4rq2KqXk@jF zpD>J;2?a@142j_wwR0M)L3UL2deMrJ+cdiAuhrawRtsF3lHiPz`Byvj#t<0$MQk;Q zEo0__(M}&9LIbcK(VuTo}?_*k{2BNO((gv$l-xI=YHtW;jM!HxHqKL@dhk{fr zzfl1`iVHdO=B^!!sjYtf5yrU^CVaUZ3N1I}fKMM(3+ z!B{1;1z;l)#lo3vW>5)C+dg$_7GFKf@Q`5&GjrL1~;*}2WXDnfaYdjV_w*mS7Z#f zQ+KN3U9wOt`ZORtG(~_BF0*8zg{A0!n?RBAbeTUOv4T{F+%IIlaQq<+J_m_F4^ODn zJ6#Uw68kSQ$%3{`{28#uzTGicHqDkAun7LIA)0H=rYa*a(^qXx<0s(F6=_RqFr*-w zJ+|`A6y|Hrb?KL4Hd^PI4L)hQn-FfY~U&3=t z)$Zs2=({lokJ`sL^AIRIh2_2oOeyD$9Wd%u9$ z`rgS`zy9N`<=q&701&&q-M!P3dk`QWFA$6p#_+|vZ(sS*b3a?Zus&JdfB%zv{V~l# z{OGgyU+SLv(MvCMyAbK@)4T6{c`MEVh`TF4| zgNg>B*;>S3WWlyl12lqzwK(uAmogLhVKi%KY=`+my&H?=-t{e-5+oXE&Lu|wHGy(z!#*2U<=)xoL3I-qm1Vo~^GoLN?c0z#A z&DMP%fiQ%#vt>8yh$u!zGFiLO3Vz--&{ik}hF=8wU^Wk$yiT#vIjLN)VxRk(RdFZ>)M~++Q=kDIuG*0s{z#Li*mPAGNV16mz{x2|?PNb8+v^e~r~Ce5 zQgmb54aU-s%)uCSZc^;L;Gep3=UX4p*9}wW0l_VYQ$}hiE&}Yf_yG*$ONI&wdJqxB zn5O@Th}j=y!<-ix+5XGpW+6CXPAm;6SR*qRN3;pfTf6P?YsHXU`H1bSxi*y9$`Yt( zl-Wh=I6lbK0w7_%*9EQYXw4QOqcrD&+ggeZiGMbQh~N3@NVh7N4Rx`K$w)~qnlE+< zba;WF4Bm6gIe%=#Q;^@fMg~X^N%a5><*Hu&<^Lsp+gtu|)q0%jn~);NG0ekI%374+ z+=T^Iu^ATpf`fj;UNY%ssWEG4VgGX+JbPHa9%GD=5Fvza{mkF|`|dyf{RfMfYYgb6 zrjLD$6asc>i#QM&6H7#W-y>odIt{>+CNwP6;eCjgj~&;i#l%MiYzCx zVz@<6Dw$<|*ws`^Ac<$!PG$GQYp~K-iKL1~hf-xrOfp8Su7r#uM91M4r`u$d*upv6 zda$`F^GEf!<^C%TLbD=B87%QQ*wHGTJlVR6k4n>=thNE3T0)gT@i0mxN$!N|K;9Sy z#eBX{ARc!r#?BL_W=Wd|Uy)@8f324kA@k2jyp4cEDIsNHrcL$9_=3z^OQ^T5ssTDO z&SiLum*8(wA&SJ*Bl6rMM@Y=`OzC&>uo%K@Hp7rmF!k#mAU`bJ_jy$)t*`39V0O77 zbm^eh5JKv~|NH;(fB#?p&;PeXnjJ@W=*Xm~6{t*wWgiun29ouvR*hv+5hFvd20L1~(GAq3jl>8@Nk2pvG^BGIbv`xuW;PC~$R)^(azvj%dA zQhFz9pnpoEyyno3`y@IQF;X)Af`Qeh?pMI zOwIP|btLM#uIsvVDvH=1F_&#vGvf7#Dju*Ll>%o$4e7I0mRtH*i+2sf`~!j zBFUz7UDsu|#Ro@New)TB+gQ3or?j@uZNIBoEL36k6gG0RtZf#_aWK}X&HrrLG*Smg zHit!C;<)|%!jOxM5X^)kiDEjDE(IwQ9B>1}AS_uqaDn^AKW=_v9+r7ykRoC%u6}3AR!#EJFmHF#)FngHe6NF`gNR7 zbeYLHa5iRG@ZZLgRT*7Cq%2aWP4~IlmiiH@AS@FnpqqfOIIjbTiJ~V5Z72p`L zV3NVdgR`>((frJxQk7+SH8oNOWsDiJpE7DDIxUE2P^849k{^?8laODrg}@(NLP~E{ zxF}L0K&IDbc6kQ6nGNfdt~KO}#>bkhy_dP1JVg(l11kPx@k`l!_5#3_0vlLINdiSO zyl4bLbvRXrjYB=le((XxBO|jpwOG}R3yc#2g(n+Ksmsi*RyUdbi860S68J04g!Q`m zoB3+9AXpwbZk0cP2g{ZtMi_RBY8vjmO^x(Y8tyhLsi_shkftTKqe4ahHW{~JOF?!& zCl93KQw3z4Lj{(8KroIZ!_({`s&z90WwPnJ?`wfV6Yk}pPdb%3hH~97$L6d;h8*9Z zKK2;VV5bc9y3qCgS{|FpK#D1ieWXYj0(2bj6G=-rp2%>6{ierQyymI9n~i90sk1&I zcbkAHoz)$%k3A60X0zSh-QC5`YPmdHo^~_bna}zdW8X)B5V}Zf0O~s2+uIGZ(9Hq? zQltRXQ=H9bvG4hii@+f;qw3j&0A(u?Fiay96hmaJv74nMd{Erz)%w55rmO?5|OF4i;1AzBg# zG0R>A96L(ku)J&$f=FD6bQ6jL0l|SkR-fF~^gv6EcrN*&XefF`&oJFjr{+ z2vKpn{M?u_4zh|#8c}ufqh<09lvs*5aP}*xd7a3)fM&k$@;m3{(G;6AF>BVwiy;TY zXb&n(7s$#l7h(U4;6OFX9GzRw-%AA`*T94{!+L+SHk@a5DYp(PXik%1b)0Fi_oa1VDXeZ!CX8IHPwHA#%!W5p{Qmb!6qAw@uYN*c<%QCmHOhmbC+uW&?iMC^veYo=igsp^JSF zNL}a>PVc%7h|)G*WM`LZ3jlo|AyQhy4g3rjFOiS{v3jsdK+<4oBMnPw1>?xL7Y<`4 zXN~!Z144kE-JSXJY`t2CfZc3Pk(R4fjIrxN*C9Z}0O?_cNU-W-PqbXGLckaia_B9l zcW!_zGK={n`xLE=G=V=;IE$*aqDGKe!}3r6Bpa11X)q|OWjks!f#*|FEugJT+dX>b zD&m*sH1h~A!OMYJ))DAtXNEbC@KRw7k$3|j-g0d#$B?57x#Klxs%>BC66 zoYvrk%UDn5rqVTl(7bOlvXsdnvgHKtnW`khXkCtLY5?2-uqcw9D{;u4J+z1|n9&@V z(t7hUipDj-G9@{e=6??nK=y5+3~rLzNYuBqg~-pDrFUE+mYJ~7BmQWf6A#vUSSw)3 z1=SwCGL#dl!BqL#F!yOVmPRJFSJ`g>8lgf#n8XYuh?t{qvV}u{Bsd6I?nh$5%MB1m zn{`LCiT1hv8XO}?RdbNt_e`QHm>jlqW?j1-WTg%EM`77WN-2gSe=zW|T$>i+H*r)TrrpBgO{ zqEZ;}48XD6P(*SM7>X00ly539LZllNxpP_2T#e?3mE2T85jr;hnVPwDc!$$~4e{m> zjPDoY)=-bkcFHH@87)#+C1V$uS>|QXu2ma_a2|q#XoDRaGP-)ZK9j#$4RMgLEWV-S zQ07LH?EYQftt3=@Hi3F>!e7WGM~EzMk>l@%G{Fk02Q*s2zvYeRb!8;{@cvO{)Tm3{ z6({(OkatBn`4D6^`9kYdd~Hn@rd!3B8w*nnSWSF=vv8Xhy>CeB(hOwD5L8VAnp@y` zV!Cb>MlM@og+LkW0U|jfj6>2Yh1Eyc?G}w1!J&PzJK4ODCv!-CIrOvEKQ(69NbRGfa#rNVX$do|y*Vtwy!+ywn5v|VT;HK~?xlKrmu9}yKAh7M0xeF2W z{W?-afSsM40gi?{Y5PpTfFWY+W8e1y&E_a!Cg%lh)f)KJQA>U~hBc2jS}9YD zAt;^joo4R<5F@Soczkl2p8!Ja`@X{vLdan-puX>C^KLeqhkyihdbW%NJw+mrrRi+c zjQ&;hQuReYbz2HM#fF(sHW>6GS@X=PMg*=V%r8)F2Q_S|rd*FI{6k5#GcL8k->YsU z#gHSP3Kzl^>h@XR6P-V({Hkorpk-rbra-#-4F(tTz8l2Qg-ApMF;dsTaG#p8(CG9~ zroysFe=}uh<&XS7&f(z}<|AE#hi?`_J9?%{MrCtH3wncE6tL#e(w^;HyT&0Yu4)-0 ztIlh1L)AUwh|-_RdC8t@hp_o(vh*dV@&Ztv_eZ{nd61&J~uEFu~Qqw+aJQ{%l4AeVjbmyDWG)iX>--qN%QEox_@T zu4h9UqHQ;_DfI2_^ z%nSEom<@rl`h;ltBc=xcuw*jHP6&+_rT6E$A;5wuN{zX0zBQHK_twVJyx(zm@*Kvr z;6@{dq;wkaKABb^ru|jkPNMZpp5i={-4y#;n{I}cs*XAqM%O5v*^gk4 zsWirpbJ+!V&j3rDY!J#)V8R&YZ9$HHVj44?Eqf*vi%Cajb-7N|3KErUwlf$@YHPKy zFaw){%{cO_kPa$y>Iv3rimAZ|S1t=|Q5SJ>S%r%+rhWBf=&;|@10yM+@Pi15Lf6H< z@460v*6URy%4d}1zr7d)kRACqMZ6dJFv1jH8D!f7->0o zuFc!w|Z@?+H7CxLU14HzNXy2^1i6AG5O| z;D;=Q0NG4yl!`>SVGxGZX%u|Powi0HfHMLPF&EZty1&R~WLg>&?#VT5s-DLh3XWpl z=9Pbnhp-q%Gh4#Uaa=Xk3G|fL#peqsP4g}Z%phPujH-afJfv2tOwa)Qm z^NK?@);Qx?02NTk3_~{VScbSarpmdE6m38*DsQqiY%r=$#Jj#)j1q&qiLA2HlA?lK z+tXUZ*_f+9R=zFEsTf_2B#)|$Y!89-0_p4&66Ud?%Utj9P9jOUQI849bS?v`swUEo zn!3unMT009-jw164_0uqK`WKeNk@Lmd){81<38zsUK!yTh+VbNz1Wr@?xi`F+)yPd zi3&*acyT~h-EPUyf>oT~{%kQvm}CMs4a7UHp~(M907WE&MEoe7wnyp`IEzH6T?;u+ zV2bO9g;BRQaXBALNiM~?BSC+~j#A3o%S0e7x9o8NZ10mRKrn18r94vv=3J$rRDs80 z2)-Tri3-PWt{TRrYkAHu8jZP#F=7h36pq+REJSIf(t3Lfnt>dPps23OV%|!`<_H6T z+0POJS0!>==!}AK+dP7onZacp64T|nWR$JE#HdiC*QON9wID|{bWon{09TYM}uSp2lFssxDAxz^bWwhVxpwpJgTrfgV%{HoEg zUv3cNlWO{SAuEnt%q$1W3XT$`URZE`RxT3jX6v-One(fajN_>3lc2Wo@x`pBRM#Tr zk$@s1bX}kr0SSR90;WTZ@_bjB5who{ z^m4S-az!(m@9boT@#?EcV73~0Nb9-4B_-?OSU-}X+S!>M9v(!Z2lpSWR_in`$R`X1 z>|;!iX9Nt0AyN;77`jMsc5<4w5%qoSV}uamx=+;y2qe)4D&P{R=OX))4;5;ymDRq; z)u<{ZhrZh$XXGqM$TP+Ruk=NNz1yc@BR-gUXtG|UiFKCQTPiGa2Znjho*5HRsyOSA zsmx9-S;MR-%i!^>3vUHktJL)Zc8b6M2o20lj{}c}^&^upe z6C*g56EGO|qAhT}NM`lnoT(`?!zj$7odIG1$~x6cwoCf9$5Tad0WAR;gczIXDJk)Q zj*Nu%lW~vf2pnAv8<1(i@#6=`A$Wi1fLr zfo~(%kii9G(HyR)bciNm>3Iwg6+ZD4h!0I5-*yuudL}s6JrJI>hG)zw z8aOtbMOj)3jTvF)l}JL)kS_oN0ue=u0QuPwju{c~i!2(tM|pEs-ZsHa6C1Y7Rf~tX z-{8%z&S~Z35iOypNrFe*LD~EX#=g~f8Q6L|R@&d0Or?@0Od%U-#?@_K^y^CnK-Ias zMQhYBqh31-Ks;(MS(u!xI(6m9qoq-EYaq*ltWv(^#2f$=@MI=Bnj7;G8A6@*f5_{| zGDMjWIIt#BTN05(KA*qJFYSuj>H;ex_Dpo@6hj%AXUS;k(H8ns8>k=r1r5m=J)vU9Y#32+><331cvTUIRc(mvU zNU3VknYaRx2JRyt+B41)a=RP4Y_m3U>QGdP*ma=q{~DAK2n=w z1gHT7NU~3SiVPY$Q>N5YA-mqN%QaT}b(0V5qXiSO>kW)p(9uQ{r1jrWi9I zDVB{qnc}b*W*Z`{Jso{|QG$nD#F`*v9OaAh+KJbsQnIDv#wBKwW#70gx}gv0vH?$C z3uEjNu}hD^5K)YMzq)bb@!j3Ua=E;B@7{Xd6Of^u05BlVX0zpLMKJ-~TNC2@9fRJ809ZkD>vZ=HA!~r1?Ir4!cC$X(gT2E~3Xv^4CGdW(x zH76>1$6}DjfKe^#7rM`viW;_q;plo+-}Qkal8bJo!FeCKWPC0$?gFUK38<5$h-8@3 zKp_C-Eq?syA0mb>P$avB0S$5DldNYNi4{!?zIjqBn@P^6aWFXjMa29jsbEW^tHDQS zs=;Z1taGM@yYz-KOLE@4(2!Om9aEC;=d>bzNbHV`9LZ09gjyrVX0yO+>|)Ifh*;S% z9kU}*BB7fXadW&+mUyM5s&k}Gb2SL2CQMJTiQ-aOf#HHkmR`Z~cDgS#lY0n2U0E~b z=vOwX3G65X5I~g3cwj34YI@5>tBIYgD4qg_r z!LGwGQOOfhShNg}AfbYc>QFPvoX&2+;V3r(07f1{|Z zF;k{rr8R%ublWfi&77MUXDL^(Y}W8LgOyD{WGheg?buHQ=%qPb!X}TKPA0L{F}j8% z#sajQ87qD%#R_o(uW%X~wN6JYuWHCk97T3hol14(kP2Kf=AxWgY6}H2t^y;L#3)di z%k6LowXy#}^_g8jqc#06l~MP{KLPliRI*Cp098^VuLfkKAS;=3Nrq=GrsIsJOlcTn z7`v=IvD=MUD&3k1LlX5$iMcXlBe1xgtg)GrxiDO{w=+2<3yu<$N7NdlVv|>y{4I3f z^HC%lYG_v4B5a6Y)1VsHk|t+g3v=DjGADFp%Osi6c;=$rQH|Xyv3+1&)n{mo(^jTurXN8(Lwv^Jf2y*5{){QAf0+1t$*s);RFO)za+JRv7kNG9pA?z;}XG=UgJKNpeJv=->#4o?R z!wYsO5od}tpUqdRb%#L?KkCy)n@l36Rb2$0s#A7{EN$ilNza7~CT5&&j-yDc^_osj zR_hf)z<{&{01Oxa1ISME{9rX9LLXyX_T4-HgcvCuWu2H60e~nkHxrmypPOrg3~|OQ z3}&01q~g={g^F8h#mHw=NJM-Ysmklj!#5%gj(Y)HHVBAO5Zglp#v@*>EkkWl)l_p9 zBiN`zLvWEFdZE0V1Nc22dF4>*$p8m*$3$}&++j)%Y()sm_=?&1%KgS zK?5=5esR}`vO-ZlvKn0ki7x?#5GnI9KUEzGAjXI?C?(xOj}5`)FL^k?3lo%r+d?AM zK(vOYTz19E2%y51)+}9@krd5Q`Cn!cWOpXBHqL$k*88jaLCTxoMA1g)^283 zidOh1guiVtv$PaV>trR{k5DsIWcR~uBE>v4@-2xImB}ygiwBccCh&SpR0(61+Tpb! z88Ti`3+&<(AH;7qT`ut=e3HxiI}L=s(9kQE@ymhHZ$vkqW_DW$d|gG-Qj zbauE<7<*-l3D*^mhKWquQYAM^5MY#laD%e7G^~y?$Kr)`d*77wR|;ho7?eptp-)_x z;hzP(u0QO|${P)%X;+P!oi!7WEi~LDi!d*mYW%cypeIp7=G&NtX`^GUpcR!ecr5Z+ zEImQ1S%y5mcBo`%kQir`s=14lDxC9$lXw*kK|*U}2pXZHfi$=<=qzkio;6CnsXNgM zeWOE+a3IVBfCkxW-eu0t5J4JArZoq~ybQL;5$mRRQaO|pbhU(GDVsawsFdW9ctq7% z@K*~ofHg6jHBoD@A}v)BwW=^CsugFnzcYGJZVq;=B9klQGT68aJQoGfmyX%(QbcKu zCA}m#FbGU#)52<`NHNZ5-R|zrd}nrgdivE@cS7i9v-xZ`TP;^y71&1S^LdQ%?CgvH z*6X!AjAn46S>g6hpQpal({Ns$Oh6fKGq#aKLX^(uE%|d!9RRkcQ5JKeV zHGsixj6gs!N{lE#Bo-5XKVowFI+-z>cR+Oq#ng!2l*rblO5SAj3A}Lna9d@i#FV2d z=B1>|vdEL_*@A4po+Soe3~(A>Yt>p5I0Z(;z)uOfLMBEL0Aijjr5Qb9#;lPjWXPIJ zB4Ucw=h-_R;kpqv9ZTzrK^x_j z_4^xJ2;Jn&iCq(b#wPS-a_R{Vg;Po{xsFo#W;idq9*g{loxH*|MhQ!gUMh7 zy@Fhv>=iA-Hw63T1tN=^B$Q;g=8%D%+PXVQz%ikkYCEAqJuufn9n&MPkP;hW{L58Z zWz#*PRuBmwzjaALoqPH0NPM+Umm4SAx$@LgkKK6ksi$tN-ub&DFYmMZScp%j7^C~(-!`#9Wf}dP#tn# z+;pw2dv#~64`aRV;mMIfzy#M+In;`?nmnHBAUlZ%T%7<@%F0Zd(?k zqg`uYtO@N7J~*cB)|?SyT0R}z=vWPub(q3Ja~8znRq2yw@7HlV8V<9t=l}h%Me!2=^WK5LHN}M+X8q#43S=@{^ z@!(nO>ESN7P#8JsQt~wx_?e6ud-*Ms?S#hODOUgnrHV{bPWF8FR5q%bi|okVLQu<6 ziiZobTVnur!fD}(y*SyD0(=JVOr zt5-q@Uww6VwOY+)^YwZi`#yVB&b(f)2_S?ZZ}^Te+Fo1Ta{Xj;LHS395>@xCbeCdW zFo`w6K4P2291&x`p3i4}>=Ahn5#Ve#@6+RFDQEsK<^#DgKb8pq1em51!JgL@8CGd; zIRYURCRQ1aG+eXmmuhay)(qJn>ycR$tlJjE?Zrw^e-nYYWKEDkj}xt7VMCjN)plyH zM~;@LzMwX0rKwiVLdK+N41y2)J*FT$gl zCS|g`_e~U2Q6~Kf>47r{Mi+F2_0oNz?R(iHta3EdL|idcc1oVY?QAHO5taB{e^Vq( zAFUTJu$r2wKU=DNTS|DEVvHFfhnjQDkmy7|C$4-NAZiEev_Y!)-^ zJBT>)vIJBnl(>P)Yn4~X!$G7!>jtJj((BXZ#)-P!-8n9g&iWgjzk&PT`N>b7IeqKb z|M~N?#gpIv@lSu&|LRvC9&gMv{*rYu_murjjTZ7%RFX%+L);YV|TIoDIU9~0ZkVi0i|&A6&LF@F-%`r z%Qfh1$II+6ZnHbgkUFp!)=DX7q$i6ayk6Jr@{iwKSdaI$MDF6(6-MC;B-UsI4zDI(raPQb&Lk9el$4L zbjrTTp*x;F%Bzc*sS=04&zo@mfFX2U!m|o16FgvAs=4bUPpYg2lx!_wwSaGGQBqp~ zIBT(@N-7CvNe|7BWP39tb}`m!BHr{ zHaYS=b;`Bu#9~r5J#xs9E0uG`?DaIDly%xVDhpX^mejTDeHkVha?8hx57tE0Z6uw? zqEsnt4Zo8OPIiGHb2H(L;h zRUIh$hUT}=JYa#5L9AU|w|J}C#^FaN&u8>e&Oz!1l;CpXL?>Uo|IQb%|DBu9J?^fD ztIxl<|K*$i^6|Yj!1ALv-nsejzx&*^kKVkyt@RTnw`*(ZN&-E+J4*seSwu3dP#ZCj z+}d}e{dOTf6O&^-E^@=Pm0F6rQ%))79L*84Hg`g@6I`^SS!%w$rBquH##*8iJ!pam z2*BbjKW+HDCa_I6Lzl!)b>4zS0IS*%)JX}Yt3@bH zvf!oHOoTpn*Y+Y+Q4aL>NI`v@EnaxF4b^Vm95huJtxa?F*V~cIn&xmIsbNX2n;_|~ z*>M2g&l8&u!|RN%6*)+_uw;~-q{!N8GpD6_Q!j>+6Uz+?<(WK-3R+M1B>_e`7g#E9 zle$R~CU<45hJl)7!G-~l)w|YO8S<7}lS@^PtIV?rBW14hg3!cCo0)}>M*Ot9??s`z z_S+C6(_{rVcp#|&t%f8z6OHIZ!~!wmWk=1&szHi{EVZ?oS)fBEr~OpEQm3~MpMec#V_c4qV0g9rCltJUsead3DrKU;Po+`s=|zO&P> zdv-G^$O0I`d_JeuDnFYAdEgZ*vSqMNDRXB`|Eq4YJF~wrKSP1(nIA+s1_ zj1hKrcKS7)oh<>N@B7tytuwYX@R&{$<|w`D5j#0Dv< z&3LV{*1hW>vt1P<%z zx8`t6ZEBO~+b#jrn`O`2%fU7#`F~%Llc#p+LJA6Zne*5U)kV;jbIX_jvz})}JT14l zRFS%$_FJ1SBh@k^6%v?sd@q?2lSB~(N4sk!K{nna?im{`uoUWyHe0s)-Zcs zS{T?8`S^~o$F&IZ{xa)#(YKKTM%k3`)LdX7UmzVdnOx|DVd~0K9)+WzH-)qkb5TVR z3ssI~XS1u6g3}dkgIy*uq09wqzlYeJY12HRzWor=-nFaqd$(_|^Uu}oFTUEjc4Kd{ zxubGqB{adqq;jGn$ogqlG=~$KzwHb|_Eo;%O#tY(Ppq5lTA3OZqkYnNGUh&1O-C%M3K`#X^5(S7f7yKsO=#RNfI%bkQ!Rn zX|Pj{W-4zFmvRJS+w|&;-`})&jb{dB1rAp5HG`PO=ycdg!iZQCXuytZh9QQj#uOhL zVF_!Fj8%h7+YSmzW`$9r54j#0IhNQA>Uee1W#Hv`GAJg0x6*=*aTEwEve+EzLNUro zy=^;Sd4= ztXJ#4@8`35*LA7sKK86y5M^70$X z&z8${qW5aOPOrYP+z)}R8Uf`8_YepnB1NDG%6T$DqLTZ>OK<=!MUW0yQ_zxgDsHKq z8LA8I1~?ZthZ5SQ1LuA((g*{kO?6Dk8WR`)M z;hsQ=7~3GN%wIi+tc&du^iY4z_Nu|v5)@Y$EmukWX;4=lDa$Ni%P+_wTMiD#sZXGy zHVYbA2E4z5#)YEsA(k17WTp?cgt4or`NasZWEsvBiAcI$Q#Um|k~k6WEOz_lS>N6G z-e3LA|M1H7u0K0n&3AUDR{&117~zt+>8-E{Myul(^MdD2EXhhwCK=J~E*P{&?X#x` z(2^g3x4<}Q#hZVzZsrSf0i{l54+SNjmYsa=<{}8K2#pk5{h;cC? zgrX0FB{hpZDZGr$2s9BKk&JX1Dk5KmR46mt@?=>F63l1hDE+lq8POZQ5y5i(W}aBI z;=(wddWRsvK_a0?dV~x~C0R$7{3~CH!k1Q@t&|NE=J8z=o-pn=-OD;^Cxiy}n1{;{ zP>?l0@SM1k!X-Hn#&xFPek!tBukPQ!9|G>|?h?iO_wKD$OQN{9*ad{ytP=!9L;;Z? zy-N)OhOV0dKwL+PQJ4tax*ZF2ay6oI=7qn{DT-{zwS>@ z&l1XreRO335g@N{sWJ*jp;dHoC z9hce_4^}%hpHE&x20i~+4W_OJl(89Wo10zHpo>A9QLatIW!c%;If(!?U>~>{9+=`& zllXFX&2D+HwOSOHjRqe&hKvP0^E5=dWzeSnHk8%Jyp+yCf?#C#V8hss%0WS1;7*} z3fUX7_*!_vca;o4k#?B|2}253p2AEa9mG|F&o=!=aUIA)Zz%X;nHXjA&%*s#SHezS zY;qHnsvD}1{pg5|+n?kqIYq-U?RvA(k%?XtRZ9OnKJvg#rP0K-H^lMGV3cloqTM=Q z0O8T>Cqe{>MO>kvpme;j-MxsoWpEka0+QN|tN==b*GRZU=?3st3Bq-Zhw87?g zml+YrI6BVRpfDR3lCSNRB2PiHrt(rT}ZQ#1YD~HszUv$Yn}NTf7c}*U)EJ!Qib*R7MzFHc%w3CsI%(V^&gID%9u#0>aqs; znmHM1=7J1dTJypxiPhbJeN!HizZIF|srKCpc3va+^kgeei`-G_<$V$g%Ag&PErb_1QBp6>4K64BAo@p`oafYY=$6@1UTi{x zTz3EjnsuS;aCb4A%>qEos*DH#tMw}Oz4bvLf*|iG<7u0WaQ-BKJlzto+Xm%|Ur5Qb z7PZn}YJN4H9cF|vjp|)(_UW=^8k}TbTq&ceR@aL>wf8(fL@NrmWr>Z5495T`O22IE z2nx{AW-UUif*EYBElz566V2Fe;=&dKSgqt$O;(fnB*-RI9yC;xs2d7{$|YmnhdV>l zCCf7Ja?*Cl(0G#xW3vH(Cg8+gO{#Q;Mi2q}3LXcjf^ilDW=zI;g>vx|+4PBH$XPbe zj>^t^^VKYYE`!k&*O+&$2KAx{nhnI7a2H!@^}i58-r)jfAW&KElSVs$fCPV_RYhRt z+ci0BWD6WW!bKYk5>^QC$U__~9>Ic#pflpCFNT2#SR6ft_G>!6)?}cv2H&R~Wh3#1 z94U%KF}*W2d3X)B`Qo;A=c9DsbWIXjFBmKo{j3DfxwrDGm$RnQOD#2T?GI}vx3xl- zdp^-XqUG6Yc6A5)PyhH|{|*3P_VjMIy1Sli={WF;CKizI0EjP3JQ8zIYObp=9c0C? zbr=HCmzHSsspU$S9tHt&%(}y2=6iCgjte*_m?CktGG~a2EB6H69@XUwot4jxBK(0CVLHgT!f+5>} zktOnBYQ`FKCj{ux^O~(SlqIa2FmNRNZ)R4FF2q8`%A1!~J;VnC`6!_F&(fM7)wX*! z1Wcq;1QghU6&{V0B$5$K*T`dD7c$VCpbQ5YihORW@0RLK`oq6Vpiy96t88NU7^11a zB-I=dajx82JaS4!{={o-0p!gN1!P8^9{9Dgp~RY|?kRzAjIo#N`5oQ~Nn@Zukzz8{ zh#<2+AP&?~VnGJdh+(;0V!&C~A%xS@(>w9b;o+72gZ(eQxJ?lNk%-dy&;W=SfFM$w z&*q7S7-L7B@GBr%Ya&Lnp?$^}7GXjYS3}`Db1M=M#XfYfx4$!=&3AToR;%^$EG$>+ zzE6C{e%%8WVKQYS8Ri>NLa}w)1s!{*2LnU5aSL?A$K5~sJ}r5 zj*JA44#{@T9}96alB!~q;U9+%%0v|+5X z4i|&GYcO$~c>N&1mK~X<>@_$-1OVc2xk7gkrH?LD^n0h$0<^}O)jbyMSIB)^M_t*9 zF>1zJ@32A~eD@;hi#3oLMag-E5JX2AcQ~VIiOrFZY%j7eCPF#jdQ2?Twt%iGfZ?qM zm#t~YAVLRI%~Jseq!Y%TZxYiYy5qZTYA*OKl#2DK$xt$RQc1Q<0(;h9>futQR;vtB zdEJYZ9s1#}d*fSSK2#)_D>8t~^uq*+lHbf7Ww_`1#|ND&VFb0HN_r%5A~?Q#Z}t3R zH@iw5jIx<1yNk;K5DlBAurd4FLR-q*k04Em9~wg; z-d|q>k!l$N0FCHx%Se~Txa3L8SZA}8JbjjAAN8_SQ3aTR#3q+*nT~n>80~X+T28d> z)9f{;enydta%@Jy7Vw$mzPEN)LY)CEEVlny#RY1#eHYnr?`~Y=^pKR~yj^=?U z`%92yYu(gMW{R40lEYI2QERfFgC|?z@QN_FPCT(b}VQPs=Yb3IP6u{%!2Li3Cc4vffFc4VK;12o(?pY-%&oz z$=e0AZ3juU!&OVeOeY>hv&R73#MLbAvNh)>NFQ650FbHJCbVo6zL`InBc5#FVAQy@ zxS{57JP}Zg{JI?GUv}J$kbNE`l$UNI0KjZETdh~8C#NBV5IRKcW9&jlgeNCw%hmeI z;Z=%+AyCX@=Cvq@q3bZR8AK$a7-Qi5*A$6Tw8(R!<-!C)n@a>O#*kzs0H8RZb&I|E z!NDSQVQ0Rxvoqh_*}Z@N=y-jWm=rJ&ISk42hPwWu`-CV%L;Ef)RY)mIAj_{-T&XOw z(KpzkZ3=-RU^{F>l?=#{q7;P$Qz@K~YIN70N}sDOqqbRvynO~6dfdQHCxBWD*4F^Q zt%gX!=qeykV!_yvGEoez`vk|lhisGBPg0MgC|g&;}JD8m6WpTGvn z*mibs&faXFnsd2nbD#4wy`X^W$$*o$DKdUy;UETFvau_hQ{qsyGbI|?DfSBLRU!8$IK4%>=gqB47JOwHC2Hp0OV)$ z(u{>TQkRn~ay#WUP(+9?92a?@nLRIa#z7y&8)C`rntQ4nWrAL+t?bp%ch+;hCgL## z^OeA?#*8Vc5d-GT9L-9g%Eal6Q8O%ph8RM9%kae97;;!{WkEzP>5`eZdQIn%7^sw& zeb8U4#$0I_sHe8+0GIvT86p4%BzAAi+4$9mADlk^z3)AJIPZ22pZUQnH;z91@T>86 zw7GhdNy-+fhF7xnD~qp;JhgqgDeGWQ@o##nF!n&Zb*0<3w3!gZDN&)pR4$Hfs0y2I z7HYgA@~1bac`XFl!iWL#wn{_@^6+_nl3D!=GF1(S>Q^;24|6VG;mD&zX~|Xs0x&jo zU98!t&D)T2^XGT+Sn_)+3}Oy#A5_JH4ff(?g=hgvgJ(^(_&CeD+RP>c%NrF38yO7E z_{xCYfc)boMD{9oGBHhA*7U(z7d>zdij_bdRA9-(5Cd&Rqr{W>XB@g)S&~1lMgPT{ z<|3aWtN{{$eB%ZKxI$c!Yf2TDSb{8u!qU=u2`5*#8yADonkLHStHFndYn~-S0J1<$ zzmG;+YD}Ff_eNf2vb8Xp$stfhi3E{P_m`hMVX)ekPZz?PVS|Zs6@2(ChR^{(q$u%w zopUhxh`^^b1My35LI`_{z4^`#hR}60BA}RF84^M_ixD0?I0Ebtx>QAiRT2i)5E=jw ztk-=^havG^29}uYH?(t9j!dhU`i0Cl4(t&ib+c}Fu{+tkV=QgCNvS_eD z+1h17w(*3@H)S_jmNcd-Y##?PsDrD{IF?NhIP22>6azFeS{8(i**}dCZ>T8At?ngC z1Dt|HY#KzlfG4hoh@#y=e^_Po-Pv5g*V-`4o6@%Vwdvw>i;|5ZWItuTBLg7(^FxwM zmi224t63E@mgiWBamm0!uStv_wUNNkAdbL1F6XoZ#>Ut+p_Z6`>SQ~2Tp%g29hOBJ zmeusDth;C}K@b6Pc9_(n$~4CTH$z*#TEctIX!yWCQ)|Y0N+8O(uQViTkxkzeaWWm7 zb?MuQPR6-=rdK*JJK+_pYsx9b=psB0EY6T4}> zoGklft62IJ(>i#*0l=m1C&H_*{mn05+|Mmv``iEU8qo5i-~8R{Uq+w@@Ba4n@V!_6 z@^60Ft&hL>@b!QB;AjhzCy19EH*_YSFUp^E*}y2Uw=B^qZ~k)u_b--FwsS!(Uo8Q^ z=GF5io{5qVTDm}`r^Hgbxqjq_FB(+a`l-B7H8*N}2XE%EF`E}-&d7nyAri6t(r(2> z`XLAY-ItV&N4r6=Aw*Uh8lAF^a41pHscEIEWQ{%omRrRfO~~1{PdKn;-M3J_xVt^z zG`6LvXtrGD&CV_@A<=+PIhEH{7Io)UD_(eu0Ajv2{BC&wbV>~KR1dsux+K-hLngscqF<@CbZasR7sY)z zKJt%2$IpFp4c9}#7d5L1H8#Pd%4p#NG!r^T+4x<42e}#@d)MD;xD*j50h`5Cp-nV9 zt{i*^1OhD36A=)hJO_vFX$2xc4C!~^rG)jm-{0Tuy4mr`i7d9oo&YdL0>l`h3tiL+ zPJa3fxSKJ?RAEGj6l27$o8@^*z`SWkdrSj{hFs*xcOMh~tuMl`mAQwWEc2=e^v+sG0!(VyyC7h z&hl(w%TV_eJsUkEdAw4Wc#$VSUd5MS80M1(*cf@vm31PBGm-%s(8Q!ZHo)Psk>QqS z6&2j`LYa|@ER!JC8@tS8$FQalv_bsmP=Vqt!(p)u#fl=andc%7Ji0bWO8909O1SBQ zSmEs@#);_OoB#X&`sU#6v)ga~_V(N7ubl(P0AN@q(ICERF;aE$%R@!Opvi5Z3mGyhU9&JDy4-toK-JDFZYr|BgEkZ@kW$6_v z*~R8LO-l2Wt6UN(#57B&Jcp>I3IM{Rlt_Ow)^_9N(S3Wh7L3v5E`(-dw@qFCkL zpb%?N96T~EtwLxv1~J$=<(y-0K5;OMB|z^q$4|1FTWuOjAEgeZ#E-c*HK`WL6ezBW z%}f+EjeA@2h$`UcwsF)ikg=kMsRhM8~}(@6mNeJwG+?h5Is==45HVnw&1TEx^6YH6yV&hQw_Gm)?BfiW_?{v`nZF6j2a6KL zE2R4wQ|K}kQh>no6dy%1JR|A2ntNdw>6C%%Or=gw&z7sxot(1>I*nks@B+`n$a-!T0kgCBriv2b52$FR_ zM95HD&!ARNHazfOeZaAbS(}OdSoiY2j*J%wv_idh(f3~3s_ z^*9SLh?muRCG)(Q7HF{bdnSv{E@fEuQ-&$1pZ?Uy>&L{~M2!PrPF%~p#X!Z?zpxDS*Ls^@K%`k{P z#8^htui8=<=3e458`_=F*1&C_uyxBu3=PHNmnF(5xMc%TW12P2xFWBSs;v}uAfsD< za#@Rof||-UqY<2@*c;o}t;Bf)3845=*N;-pv}jOVt99+epj_A%3yy1xOsVzcqS4~b z0aKun%<4LsMywJjbz9nGbQGXja2V4K-NwVOY;e91a~{+{P`zBHQztfw1zln$NOvca z?=&wYN-3^|LoL=-BX^M?z4;|=nL#8(4590~{BHP2IfT?lennbH?WN5`MAY{^04$fw zZq{Ks925W%(>w2xmj`7%kYdz@UH&3o1pz_`LXYVvDl|z`akIiG5Rb!gjx_)Z&K)s~ z4P)#PvG3#A>2kSR#~u;7{QRBxIsnFrAh_Kw_qY5I&-~poieJ96>!hYU$;nEa+*r8~ zo<9wMZ!8fMFDNK0WzikhAZnEyNtd`jhi);jon?yhkL0k!SYj7y`u6$~n(LWlL=F&{ z@!{WoUqTAQs@x8CwdIFOI$Axog`A!NOEzR9!2(-X#E*4Y%>efM*@;*KzY$|R^fYlx z(FJ2z6%=kj#B$YOlmaX=5ZKJQz`DW+0j!I%86ypdDZj-`JaD5)lwY6Vl>-+1Q+^R)5PBtQvBt#1bkqWPFlV z+Kg&#SZnr%tbWWQjjKX}0qx)iP!hTTh8SREn{*FBB_9TrDOgkz(_U$01SlYiKXi{} z3&v?K*^7_jD=UZF>fg5|P6XgQ;ZUD6Rx8VN!u>7NB%khx1WFFH+Ic4aEgJxIQt|bA zsL?b)9Bs}bsbb@h@z_vy6qb^Dl95HbV#y1QtFc|M)Ao#^KsIv9b*TZJf#w>`9_>s; zW&XAnFyE2-swJUtT22*hT~lb^#19Hf^QQ4fiKOp3I*R0ugl~U&SosI>2t$&1M||QjdAv#vu!t1{g?0`qz&r6frv{t*L0rRgN?knGhOArRcZT zQ(Z4`YvMpbk7bZ~xz)%~`WsE^ltlml5z|STx2e2IAQhj@yTkp;h(o?MY>ejgKU^@L zFPIlU3^r+kjM(y~mz~h?0W$@;eE{ICesUTb12aYp4mmg-ePV!cQfTEN+qaamh2{CIW6CLTAG!4o7mSkz#twLiST& zyCLk(zSRu}kANSeLN>_0e}ws&hz%j=FGL_!K79w`|cyix|U8i!)6l5YZmIT6}A6&yZn0zH2<5?M9Q@9PljzEcQSp-Q}%)@StZxVoqPK=nU6Z z?nSBY$~!Ein*g9d?ZSk~vJnVS1i8@2&$q2es?3S$oD2&G=N}hje_`A&C6Vw+CVR~+ zRCH^&D+AJ*FOSU4rgf_|NTZb0#RfAKm#bU0Yjru&3=;h}5U`@A?QBW@3=qf1>=H+UjND-o}*I7hFF#=$W8NIDmD`f&N;t<6ULX4ELu6eZ?^7Cl?NE*bn)hM;V z!7o{0R1UdlQK?;CD-CZmpy$QiJd6ZH^Le+ozc-t8r>AQI#Lxj@-;>OPY|4BoE(#So zVPMhK%|uALBCfKUp^534Rnkck%7dv_3P&e1HJ7mZ0$?A`#8IPz#g7Y^Rx7XPuceU; zc9-gF>tpuQ6wRCcu=%He2xCOlblDn-wM$5m_+!19CpBePp?OPLX$I>av}ZM@C+8U) zWTAHLQ5Ar&Qe;p6a!<fV`<_Jqw}UhNznMW(L%L_;rCSmkicAl zRs@uS7REb>R@rS|08rWn7i4f!OGYov@?I7<-Y#Q&Y5rf|hy`q;i+s&4qx&hgPywm4 zal`X%blX6<<8CSsylF^lvvg&e%~}tM+9obV^B7t>51bSWFhZehsno zGR19kI{t+TvK^DV2H{jhHdb?mj7CR9W?1y=#~gS$i%8c!&H64v)t#mQf1Bb&9vn?} zGDSwu^NYKGGy|HdR6$nIm2QyQEGd;h;-+1?my*s2nl_bD^Kmg$1_Qc3rOI-zAX-j~ zTC`bg!b8?_5P+^th_{eUMrnLy(VOXaj>XuYT&-I`&6zzo+YmBnv$)Z*3F1`lDfPD+ zZ5DQKq|w6Vw@S2OP-$<+Q^L@G6>zvL=4XxFP&O+y2z{`gal(dgZP&vMqzp7}AHi>l zi~u>_gU@trlA7W^ab2bbDl>qWAS`Dju7uIWbY#9hM@gmpY4427J(n3p|DEcq_I5_4 z)gegY3XHtV$pc_MsX!6DoIOOFLQ*LG1W$d~x#TII(>VVm6b$c7wv<`~VK__rNK;ED zJ@7JOmZcF}KucB5s2)KCL^*B*A*90&2mk_x5D*Yzj9?}PAs_)ChX4S8Da2!m?bp3E zQ#`>YiV+ZrDAgJJ=%yo(Zczvsq^HA?@=9sbnhkoxmWJ?G)k>iGe7?6>5K+HAi;+S) z`XPiCRAvNTPxp9pnQ?R8p37<|fxj&S*3g6+k+zcr3uGmY!x{DB$Y%Jksm+Scs(>BS zDP7>;<;K)BXqj~$-VLbUP$QMM5%TS&#zkny8Vn^vfo&+PAbBY;=Fwy6ZNbcTiI44a z*AOTI5XB_nh!Re)l(iI;)RyP`NTjijEon<$=u*-kP#tUE3hB9)$tSiWp9lc@CUT%` zrHfc~c1_k|vGf!{B7avrsXQ0L(&XT_b7QFWD#%9Q89DGF(i*_X4~!F)aMylwcf?W} zjnGXxnI-vF;o`YQ)b}J1&*A}Oj_+F+6RA6J1hC1Kw1SfO6)BzOF5D=j!N%*9utX{= zu;qqIwZ1`u2_r#{7}922$j6sQiu|@AtB?p8=-9}WK^leJ4#{clC$^F3azju#=hHka zyuhz98Zy!Y&0}-hl$uScui;*;TU1D7bF@g&DUAymneTdb)u6v=Z7}?{#ED8yy19Ad z)}%QDx$_yeqNZ6hmOt`{8EUKoY7r{#T~4})pDy4b`Rf-=O;MakQ@grC=Zbj{`ab}^ zN5IPKMf*MYeoakiW@<$n#rG|EMg!luNz|_sj*k*ZUGm)SI50S- zY%~#X!zVIg6)3h)lUw9fN0p;0o8 z7PVy@!%v)n+icvBQ8Q6b1^7VNnrc>n;tttA!j6^L(k{}#629b|7wajNzj#{1k2%`A1uV|8KD13H@4Ut=$g&H#=v_6H zwtdo7>Zxb!oZB>KlgQ93QGx)`YEqV2L;%7l17)Y}8aH_k&kC^H=`hh!5_5MfM?mE44h{iN%x5r=WpX;Gr#wCS}GR2jum z01R6y8rXaKN?e&?l}X;5XM_^&1jA_y;Y$1}EE2o|vh`REmU+NaK!htV7|Gb{?fQ|@ zwjlGf5+8U`TwxxU^tNC_*P14(zSv@@pyh#j z&&$+}RUu;?;;lLYcQj9npH0w1Qj}0#4BwRH44w3VqsOvq+<@dP<>A;MianUzXqIyi zyr}FH6mHBg8C$ev;2gn1DG7{D5j5OuW- zJoSb_%83ks-6J*^ax*Qd6MQICd3;`_Qb*d;JhL6h6s&R#$Zbo52+G58O;#K9L58A4 zA-#kwbv}eHM}J7SdjbJJe~*Hth!8MRHg6!x*xg`L(%-2j$|2?$0T5<+ zGGXBv0!E#HSi{cYCvS2rgAf3ih{T+L0U-2iSg&I2fe-2~yaQSY;k=K3_nN?N1X=cI z_$ql~j*Z)e9Cs-wL=~LXKKvOcJ8V2)K=Rox0oH;HB$U0Gl-0^(Oo4$`ri;x@y8DLA z&#EQ;e5hmPC3rLugMTaKN%;i{739jof~{X>TbCXq+L~F9UJaV~WfS4L`=i0*GAm>; z<%Km4;v<{8iWC!181p*-ycUpeSI5M#BjEFWMZEc>qMQrKqM~B@!2aK0>pbx$$X-ci z3J4UF&$66F5H|&qH9|}jlQ)c__1YD3o`M5EAU?(P#BC&(|6P!XD=GFz7?+4_P&iKr ziGh6AkX8*zVpTd%Q1bAmTPPmC7^|kfQ@|+2S)28ibZRHZz4#}dvqT#o?O|+fk8(iF zZQIdGkT6LHZ=Wi9!bDjhiyEwVD>f+7MPj{mielH|z<2}K|MnL0_Ck0|p}&=JB9m;N z8shS3mIsXXX{%XW@*Weh8h(zEbVtHN6PIK*5;9ESCCsKCtuw1yYe+G#P%B*a>qna! zaMsiAl+--BnvBM#6x{TvWq{L4R+b4gD4)agZeh?qKR)0ME^k^s=Wy&eH#1ds(HWVnoJzdZtiUj){m zHpRTihZtjYBbosyR|(8=JDLap5F;THQ6N3fffw}{dp7p^kFD10nnN)=I6GS{m;GwB zj&hKpVHtZH&vx_OE`|$x?dkO@kJ`B6&++6D?xbWDJzM9Ns~A-3VkgwO)5I+nLq*PI zKuX-+zFg#KGuWF&9y2PW-r$GnTSc0O+>h8{*A#1+T;>zVQq5DE_dit~ZII0}MfOaj zZ2SPKMw?k)%5EjqAjnGfHE(gd2t3m?=1=MgVbNw=%0_5&1q!VcrdPg)V|X&x<(~jR zk$6W8ksB2hfda*Kw!0bdYuL!|pAaurbT4l!!9sM+(gW}P$iWeP2o3|wS}{1gb|A|C~9HUlic&6pQ2 zZUK93j*@W>^U@I$OhZS2*`|iF;S*Ssd0(5E9j1d5I^z>i-?5VfzzH#fl<;>7FYO}{$+~2vf zn%!R=HwLw%r+@jgC*QpLhfm*M?Od>Dn}|wny><5wpT57GPpGU>Q}t@c76s!saew#9 zdUk(#>{sgrLT7U@9(yx(t-6Ekwd65r&CO=qt>xMY&QNRQf8{!O8|!ellRt8G+aFb< zYFnJa+t9+$9R$BXEk9V`L3^KCmMdo4l{C)t&MKAWy{3*CE$*X1wqudI<`Fu&yJe}W zVrqOdjjH?EoZ7h>uDxphBK1o>TLe-!RE-MAEkq~{9aiLL2|)jKDoxe)jNt?S~LNTyE!kv8>Q=dT9t2@9ufh_!JY$_%i)C~f697ZQZzKvEy_8kD1Q)D zI%FznDkDk|JPkuYj4Vph7n7F&(msDsRwc+yfEdi8pTo)ey)e4O$T*W?x~<0CmM?iz z;9cTvvA|fJ0ME`=>|cVBAvLNKZGpq^CLmSfpmIPSLh^VPt2_J`Yw8A8Kflg&4l}c% z17xx^v$jWE5N``;mGhnvY%)UD7&sUwc`O;*GcmuL0`g2W@Ap7{$h5FX7g~IkW??fQ zCS7aYsx9Bf=-7O-;D3P+{Z4pDhVK@bLe?yL0iBC74TM!c3Cc%2kp`dnAy_O%y zhPI7naqfo4Rb*!?Tyk6$of^q#$l8#7;>==T)&g@SJ7v?j?v>*U3_qB3!8=(tiWNmJ z<<3hlJqHW>emj!_oUI=mJ?OiO_A3!*+i%=mt{)sd=+7rVSvaa_(L9dR=bglA!0}m9fx$5Tf?rj zW>Jm4Spzi@CXD5x#<%Io_Uf#JSn>)ciV@1_yYcMub-GLiffq z)cn`M$3n!X3j28mYx~3#R0ZF$zNF3g8CMNGsviL~TRh^<2K?V-u8$~!f@;+Nv96nELjWS2^3)O*W`uxZ%%{cq%_p@z z5^s!51e&^oItCldkr;=BZ45~~Z^%$yJiXRI=|y6Z*Cz7mcv6*agW@0;YgTFdrFXht zqyP*e)COoHl!Hg=*{ITT?|mDiXfnuFmmI00?}M;V5l)r{ z831Fs6`X1j-zOAUQq$lNF6uu~YfhKDpQzj2o#XQ8tiMskDn@RdGp!D8Ja+Wv$F#e? za_#WJS7&hG@3$q6@Uh3AJ3IMuzP~%a93+BQ4i1)Qx6UH%YO`r?8T9nYuYZq_;&D{c zltF4qVF?vf_2ZQ*kDVU96X&hY^>phuZvX&vgR*z=4(Ez{xb@H6);X)VNc))^hgTjy zdGHRD+!&k4*=>ble^E>EW z&M6N#n(#m6_gR2!6Ecue+9^DlTbxM6nms+2KqybRr}+y1thB8xcloK!Qj4)iFFq>F zs?A-@9uzy0c!ZNSjXr53jgQhWdUNAAo_C-vYBAq4G;y8EyX?$s?Y#!zVd%;qMO#NN$^X-uf7EG-cazaJ-U78SFqyLbRl)}AFuA1O*y-*FBA z%&TF+82x-c5%F)#Xjk_qqz(2luRIe`j4_0eyaN%X;+bygTYIdG;T#(qIi3>19)jTI zsX4+TgoXZKmDAjDRJAF)wD&oUq*e>kjYqhd$WIj>O_Ms9qdvajxtT8v@slDMS#O$R zzU5zm}mpCED>u z;M|1W)5)lio#yCfA_G);(~M;10>m{GyM!d*1oG4N)9*IQKH6vraz}ViD93E<)PSey zLRz-P0nyfPXKNf7QyxhyiPz=0RqYGdr?qnX)pn|3+ie@Sy+S0a2vvuMq%(VgP1MIV<7dlxZ)E)}YwtNr;(qV3om0y+t2x&Y;b= z6O*IvrzPxSL`{U;O19?l^kpf?+$Xey=IhWMPFdbLKvlkF!taVRVrW#!kYEJ9k;eeU`bSHt}Hqfg%X@T1dNy7i+Ue02Nmo4e25c>HRZAAfY~ zoew`g)rYP6aP#Woll#Z|s22g8J@%J>^__l(hymsw{ilEU6Bp_WJJO zBErcRcRzanPxoetlDPBilh0jy;_Bic-Z{E;>!X{mJo~{v{NebSy;pzm>i%grU!Kt~ ze)4Y+05E=d`}d!{zn-7o_{CqoxSSzEfSr&3?!Vr;YFW`Ay!g!1S8g86_UQiEoj<+z zQ9K4r{rdi^Z-4o(duLBS|H6&g0p4AH^oQTy-qo#2Xtf}xlbgTzs~1+Ot@+1)_p4i1 z_~tCU{Fgs?@cI`wUU_!+ zKl$jh_iiN~B0#_Y;xo@&xp^?(qx+{{zWd%s{Sgn}+1^k8^2OKRdh-yU|IT-A&i3h( z+kbfX-Lt3mGdEUe^vj=K&)oRp^;_?+=Kx4oU;WN=hu3#vM@P%AKK|(Adta@+oa>w; z!KxhIu}cuLBMATkgc#zWP7zNnniB&o@;#)~KtC;9JwQX-l!*gEab^N0O`CE@3fGSe z@F%K0HD^7IbZUrWO&cu8VMC?nbL&CbMDxQ<=NF)%VXxkq!`aI~4;Ek1p%A%+>h^89 z2G7Pg>EX+8u90Ze=*?{tG1x1xJ0&csK#Z>wZITq3$ZPq84+DsV0Rd40lopvws}j9T zOLNKc^9o&7gcxJm92#SkfKSYGm5A8o5ICQnFU1KcK#0|D-`q*>Pl+H0dbiFhi&!tZ7iJmDbIta402lkQFBrB-I3S5<4TbbGG#9vY7_I;>CC z5eL~o+$nMQk=?AitQu+qB0^viUGyt+6p13myqZJRLE~kzCchmjvT`7Qnl+VLV-%el z7pErg#izNZG;~6*8F!I5GpyCdF`JnTuO+%Gh z0Ic>7_IJN~_}u#+ee~{c-@dW`%1?g&^6jtwusR}G?H$Uk-@Scf|COKq{N>ws|FAw{ z)~@%jJ{I5o?3Cj~M1Z(^`&Ylc4TR4;_Oqv+J&J5V00DY@;>P#B`~Cj6@4kEV_UR5? zd+mGA+`DoA{%ykb{5vmx|Hji_{mYxbU*E^4uD|@V?;rf}lapPbyT@<+{crH;8$WsS z`SHT4_;aCee%XT@4?ah*{5Ir#gF^{ z?N_%B2w=6hcNHG%U)q`7{@tHG-Z^>d-~8LBKe}=I>~=LDv^DO1`A@(55(uBZ@#Dvz zJ2nc3SNHbdaHs$Dy+6JC@(;fM{Oj-k>0jS^@h^UI@Eg1b%f{DW84i%;Ho=TCGrf9~n;{^G~||Mp*R?Pqn^-#c9G&A$86 zOUJ)|_xEr%58ZMBaQFDFzyD`=`sPoceD1x!d;Q)OCSnc%6kdGlB|3Qbzx?+8Za=?y z<>{ASy8f%LzF;}$2ghWAn*9(VV15d-c(lYa!Ppg-hs;T(!`Y44?f7RcC`R1-RAZDXfi>lVwCY9T#3(g11vW1RRDr0hf9p`HZJyZ?Cu!xTG zw{qY1rvX9r5=K4x4b+CkZwGnHc1Lh>v)L_DYvRq9NyS^?Dx)d}yi>=zRt9Qe<2!PBC#aay_p{+G(c)lsDg!F~jG!gJiWHKz(_1yd!0>wx~eLe?O z7~;Na?IDAwM0||VPCS$#2Wrjn+mx&#vx}oe0?XL9WM{y$6SVl$?`pLSlF)hjh9(o4 zyNc-BX`5j&qgX3xyP}I(v2z*lM`Ag*Cd<#W5en7WP~-xMd04k3s*I{qRAw2rr~?<} zxspkV=P%IU#zozC-4-U*b1=l*pSoOdQK}}*7Pm@8aScype?L?Y*Cnn{5Hk3Iq*=NH$@{E!V*+;ju>F?(I0 z0y!o`={a#-HQ|?(if11M%LXizeJ=RO^{t99F*(aZ@Qa^K*|n?l zTMteaxeY(6{ruXs`Nt2A_e^(hUVq{6#;sq!{uv#w2~R(I|Fap~xOxo%0OyOvtXt8C z|N7P)Jd4ZIqjlVTvb1aK$h1Y_`r-WJuin3X`)o#dbo9~3w@zmS{c710V7IrsfBeUH z-nskPaYy~#FF!lIcW~_{M#7udUpTma>z{uASv=_pPd|MB(;42pdX2|dT`KUVr_IJ)0pv*DB8=oAqRh z6l07r_OXvK%JaW@tw8LbxB%IHWCtI>DEOmJOPiP_ z);bu_pktJtF~mat-%y_B_s!`-a1Am4vscbr^Tvi<8~_JyS!R_y%X;BUDzYF`nR@ks zHtW2mN@(`JRl`F~Xg)KX;eVtvdkb60GppT+jY%<_yUG)w?f8I$KgQZ8-?b5)aBIYy zD^9tFrH?O`;4l9}$ji9E^9quo;Pz!*Hy?5VVxm#tEMu!2(_uo`h69BV(zOtfOCY6_ zj8G#~ks@TYMqE8O7;PVb(9gnjWhQG}j#?h9GS- z(QuwA%9G|Vx~S7I501KmRFg{GVNo`_zJQxh@oV^B5IAIBLdS?fhtbEXoa;vaPw$U% z^II7w0>E&6fp?D9(Cyub%R7@|;&Jx;^G|o&R0iAX8;w(qSe9SV`q2ot~-SZc=P(r)00nc-!pG5 zNlTG&_QDg_KDqnZ>Wuq1JJ{PjIXQx?H|xdz&E?(utCLS-OS$~ARk-ZtFG{c05< zfeH$SIC5Opu$3Hc1V7dFjjkPq|7fq7c~m(z;U#H!HXO#I=dYQnG~*I49$uNUl?I4hXS$AO@aoy=g7-&SkO z7L~ZUNYnpS9vF<9_ID7hxpuYj0#}*zj_(5j=p@`U>I+w^AeP+nk%#GtDpv5%Y7Xym z*G*;e9_5o|7faOqdX9u{dPM$}*Kudn|NG-;YpkHzb)l-6S9sk3y;1&)kL`S?%) zsH{w=a7Zp2S8|-p!*BZnslASQP3quMCT@Btmol^f19$s4O3 zA<#?>ddm!rK`!zSiu{-|l*X*^0~T#@>}D{Dr1@*9T9tk$)mDp|ge$Xava3Qh+lJG( z@3}L=r*6FV{EJu4;N-7<`0QeLZ`tqv;N|!J@b2;6Xt@ASz4ZM2LI3@K_X_}kS%*h= z<||n40$$l)oSxoU5#$yKf3`dU1iZGtcYJn7$nN&`cIf2f zlqw#!u;YAhu{b)uM|vbv+~2=>cJv{I_2TgH)rTMV-Fk6&6+b*WTL50!Tb!KUU8}_J z?p{4R{*rLLyL;Fl-!bu~u)EkhJ3GO2I_!;u#h3R#IXMO0DJE*z?d=_$9^a)|MdAuR z{nc;pK5_GjXPSs%p$S*7W{*eVqSptF6B= zjimow)35GygDlnYYe?j+Ymms#rmxH!00N@bK^_rk52|VP^k2 ziQ#nVLREK6IWP2+aRHY}!MW?2j5;#k)$eRmxNfwh7IjbuOKr3?0AOoQCXC8m4HjTZ zut)+W&RQ89u5lY#29U0x>I*`pQig1n2sBb*sJ4p)qR?5!NpmTg`B5|3%Ol%zknxlY zekn0BwczO+S_V19Vdr;_QsIj*LYfHRhm#0H$dkm)2I7aTO#nH|9EZTz1c3hJ zQ^4|WD&Tk$cbXj_%GpmOXZk^rP^xRE^2QLH8@0wda~Vd1VoUQF=Kdt};U^w;dgCpv z8&nnS7Vyr+6Al5E55B4kT}oKGS#&_4C;$>g(-y;Rqu^>$Cfl!XUz`Z((=Xn;@$~b5 zeCKU?u>Z4PJn@@1-kbF>9wdT({_@LD-+u7>e|+P?9sm$N_vFtXe`;q1%iRdq4i=vt z%R$t5<*_Fgv#-9o19O7whl@{-k9WD6tB*aon0@utR~#ataN}U{>G8=<-6Ftzu{T>D zo%VQOtkT)4zq#0naKwU;WPm6l0Cb3b3SY$Tshfvioqo}?cH_>@Jf5w4>e2+ozw%+e z*bB?!vmS(0==ylp?JdFy^ay|ik3IHSTz`50h_3YE#=*|5-dBT!z(u)pU>~zyF+`S z@6Wouy>JYD2LKTtd+hN<;UNI@^D9?ppB|qrT2sofvooXRs;>nY0f@rsXLmmM^z+Yu z^1UBD^Yq6byt~>_ODFyyX;+?45F2@&J0v?7qgZ%l4S7t4`94qeZe%f zvh5ljm?N4WHdLfaKxNK+!5xf;wM#SgHt}bD#VQH$$K}p7idL-G;a&?L00961NklXl|ErS`zTXE3c8#``e{I1C-Ls$)KI{=?d6tJU?kH?HPB>_Wz=wG05-lWYto6>t)Vk9>AkT9&gwoC{$ zM=IoO%q0Q}p#y|~A^DJyA8Ipv)u9)R<_!mTx5XH1W$M$u%%o*>BnFZ5)FC{#sVr+5 zNrMeg`~C)k#`n8jbls)ZoZrs^vF2rhi|)d?lAfb^A(Dn`&iJn| zQ6dvW01$Jmzu1hcNV1rOqlrN%Cv;>-q|v@E!7?#B0y}!Fdd3qqH7svvC4h1fH^)SH z_JAl1(I%{QVy?JqjKFGSP$wirpa+JcFpKorX9V7mWjCN`xTc<^=$Y4GKYXu&IhGqW z9W_Cs1cLH@r?j7lNG4ylu4XDoV?a|1yfL{gGp63w9*r(sXg4Ukt#a6q4}l~ep9u!D zVw?q9Bl92cJ{tZD?fQ`o`AIZVVx|dmI(Y!1ib1wFnB_-lDlt_>&_z-X`VvnLY+P;l z*48OryR!J|{t~dewuARh`pqR~vuB@s;r<)%KFHxDgpJ-aR~+UBB_dm1{GAotuZ>{fXQXS_t-ccO&3pZ?E&CjfmLo zF6PjM{l#9^`_FEFdANAt<>&U-0cYXxxu;%x@#UQ}0GgkC`DOo|$DdfwAcVsgo_qDF zXXc+Bo$blkt@}tJIm>FZOu@Bby}bc6R63;ofd)YkqX=lhtcaJ`4K+VCRXe zue|aj`p37vIEVnNy}j%4&VyBs-9)%?xcKxWy~M4l25A4Ke%ZDbdwaAzT}J2@`}6hj zat&c;Z?SW7d_=h3Jvf+Mzy9ogV(JIm=FAfj@Acp6k_|eO+-o!;00RryM zcKhSAID?kKSIu|x&SdUF$a^M{xg43-z#xdXcB*&NaW6KH4!QO1m4GhG!B44WU=ea- zjRj&W?XuQ=QS?^LAE^H6FKyo%wv;twQt<+7poRHD_+sF+?{0!%EUO%wrhV>5jwF5hk? z{m2+No7Z59r5kCJf1mcY10iDGU(d)jJ&b1NDuUPn*sQBq@uAc)N~8IfMJBT00s(<2 zZKb!EH?@GW%|370ZwvtyQAG0Cv7s>jYBBM)c^d^=iH5((uS=giwwv0jT%+iv8o5U0 zTif3DhR13)=8b5x2B&l5GZTX1Hn}S-LI&tS;hRXW6#lq$VK%$`t>m2hP*0aGL$Hjl zI26&&^5>Pr!EECbX`+>`QYC_(lF@0teq|ZSAq^fjvyrH%$ac>LQ&6mTw)aq~mjCYT zC%U<}2#7$ChQpMA78SkCGl3ZUNaSCD!0(ME_AeDhs0t)*J99=HlV4QR>4|Q@Vjtz) z3~^w{#U5mSk_ohoD*If{SX%KrjZ*0FB}W`W2na~&aM!f7&JVzWZGI@gT=&|UzM*&W z)^o62h(IBQnFg5N8Fuh!Ybjt9;cX|FA*(5tUY4npau$5%A#V(G1He_Y*vo)RIEyt) zx?3=ZH-Go~mvQ9QIT~7A zyLR{Pd%J*#*RFi=)#v*g3-r6MzV^he+i#ql^5bJbN2}F*XJ>{0{oei)_x|wu*$cMsNdUr;@%(at#{t|{PXopwXJ{u(~th*#;gB_zoL`%?ce|5 zeK^VcQvl%X_>+%sefNL-*kmHp)8WAj|L$i`A1&|Q`sBmeSKqyNs)ut&{NmlWuKehQpRd2OI$1t=|D${T zQQzgg>v(p2>((bP{|`U;`AL8D!L4^5oUG@8Zry%&XZMAF^WC4qY<=(K?mzwUlhxgH zD)#RFjkBW<_`sm`?!h(q@aS~6p~Q`8;n~TjpMLU^wsqWJ-{1S<F3-Pk`KE{LOLq80&`RoVgQIXjO14i)o`ZT67;Xu4NIG{@s-&dQ&HGk z$)>52&9n%%H=CL<;FYIQU}nYy+H3jEAkur-67-rh3vb`{6xwSGSu1>4Xwc<4DKG@E?rd3 z>ZIFAvbP3;{M@4o-UJz(o(ewrXW<5ffP}4Q+adVsDJTyk&5Q)j7>)Zn0>jZnSwFrVTEYms=Aqg2r~jQa*Tid0_2r zaycRI4K`;d}w+0~qYcr|+@eNR%rjXBS1z0>|JL=b)C6D^!5RYJr0I8Fn)-H;V+r zmFI3!+6C3eKAC#V&5}Nz>^fG^qga<$-k`{!%Mxa{VBSv)j9Jan2;~+Tq4^~a;b7WS z6DpG-7$$W^R#behJlY(l;vLR1i7_IXSQ(O6P6MJ5r8K^TttKqZ1@jV3#q^;jG4pF2 zHV&94Ycn%TZFV<|O_P-hZPl=Zid+L}W0xJp^pZG46rHhRL%dGqMHYwnRMRxk1mkOe z`F~CA?JfVfqTP)JzLpfB`C!-7G=kd^!}{5O|F_-$=kGt*O}cKg_Rs$9-**4;zwj+B zHEv{wg|%6*bfE^<)_7G4aoCg0V*kh{Eo;NcROVH4Tx#r$U~0nEGymh?hX42v9~}&b z1S?E6DOdZ(ggFv$C=b1*<}E`2h!`-4y0NW`4(y5F8ex80Tdi}ov+nWK=8_<`31!(t zlm2EQf^4lcex}3$REEgwlxrTVicQTt6Ui;GD5+)M5Tg(NE$^F>y>Fr>o)b`OF{s{Qzy>ppq|n_ z{M?xfXbsi7MVcae3~C#V3V_&_7DXN{qr&`eYCrjG%quh{OulMp>@^!Iv{jq>>jnL6 zfva9Sq1((4*QcT-~Ko@)E|BQB#!`rEbWQsDKx>p?l z;Q#yo`hWgU|I7a=5gxh#fPIYV`)ocBAtbxW-hdz-ZIoVvL(B+4^oA>{V5ZZKmC8Fe zMIPaq`(?j*m9Kn>N5-iClh5F4**=*?&IZ9{nr0H~zHChvj6$c$HMrK@((SONJ1@0R zPn?XXvrJ-=^ZeRA3o3OVWNkjMXu7 znHB;w8dXuYtt@OD#ES}7qrz#(uTFmRJYO_JRW@Xuy0a;qx$eCP4x7BZHplyMags7};#G z*Ddd_TDOMNmUyFPy?{$}@{0aA54Up38V*K~CbYC|I!_JVViA`2S6l5HD=pAAX~M1z z<6sEPvC|6mi6~;sQE^2@Az3;QuK_$IYH>U(Fw}>6SVW0@pemiW-xK9+UlXcA3Nse?t;gUpAM} zqcDahtoC`IV#Wl;+NaJ!&+mA!br8>l71qhsPfo1;g>1VC)VT;4EIbejuW*|l7|}e) zq&YDg>UcxY+uUwx1iGUuCM84=gvoF^Et#@4;+^=BD8I5kgtVKmBP0yz1@?@DqK!u* z>dYrWKndhn-|1nK&NWgyA!wKfnXq(d1?Uq3Bm<=jJ77-%9^MlMZO<}hat1sR@EY(W zdu6g&q*=_;w%rqJ`Z=NCsOC)U#MhjL#^UlSFL^`*jA_s2@=q`>obna9#YN0`6z(uR zjj8v2I8iqv6|7)Ky@fZb&08x=ksg)Pee^B!o<)Pr+~k_mM4yO_ZDEYNtW&Sbl|3yZ z!3I1gTrH^5+(9T0y@otV)?`Tnj>{uLA(>=nPsD6Us3qM^k){Af7Io8{z@hBL< z)&0Grq{R z@|#xW)xE`oi z#S!RRtWN0lkv=x&-vgDm%eSl5nMQfZP%pNXnhl^I*5bBfLX)=PUb{(%kMx7SVWBE- zo7^1AsW~$w88mvgk^fNv+AWe}n(j7EiMQgB`A-~ATYb@eEvE@pLXe~QSZ{0-b@i2+ z`bQ=VRRlTbxco5H&9Hb^wWnR4+n zHwyB=mt@N;Y_ebpl-5NhM?lPv%w#By1W}6v06++spBJFAuaPJ}&t@Gsd)6FU%Kakw znF))OUpSIhdU<-m1qh5FE9@;;IRJ3aO$!f>a2&% z?_#**)Lt%zLc_*zg3N*VH`>BZTq?hvr1#^Z{5q0fCyUKV5)OQ~sXzt(GH{GQtRWH4bX*2N(mj%FY=5!!~0HpVncvqLr+K@XQJ(D85smC7#F(N&{BpJ2l&jCCmwHI{(aL0!66&Uy*e>8LKhCDxsf=36 z)Tp6l>_#&H6hFdSt|AeP_;)d21ypvtvwidcL#VP9wmc7c6Isr!G=hq)6ST?o(u{oL z1-?UoNAETkIQgQ+=ge8uz6L=rNpy1P9*r;Z)l-Ja@?B7K4Gj(LfByT4##4yze)1~- zIp5kOjPHK(D}vTTXCqMC8_AS!)ParzGCw2Jli^rNjVa6;pMa`_y{SBuvzZFKP)#-p zR53YW|L$l144=W?l)Sc$E$5J1BtLPndo|@6<8%$~sNtaGkC;OQZ2%<`SI~llmkvtO znEP7C!77#*s)C9>JJ*?C4^-c^R>fGqeBW$$D`tzrSTcrfqMS7mk~MV`i|D<9>w}cE z13lBE_VON&8g60pcYm!#c|)!VtU`bw2wsu1U9*@fsY%Pw6;>u&R&+vAlTR*pYPZ!9 zk-ZVgC{tSxOi!k!?agJ~Eb}@2@b}7JL+xdxW%RF^EOyXbf`u%=wdgYiN2sU&fa9rYAh|Qnvs`5{~53f>^z1?7nOU-qFR+=J+UOFZks5;v;1HPG{Ei7c& zB--;@H?_1?gh-*n2mpkZuek(MFwm5>3_5qcIA)%)0s6f~ zB!4ziGDdA9`d<*DlO<_+0>j7nGY*O#aoXU!&Pk$~HDrb=kR`q{v3e&?YS@uq5>G_w zDd3!&Ei~~mY<|Qhmuuj23ci z4}0N{#I{7B6iex$nFkrcsY|^C}{_S};~0!DxLU#RI5b!PJmtV1vAFSyVQGs|K2F zd8EjIHu3magM6N(27D7$Be=sD)B^C5%d?5hD#|A?J_EseIeMJ;W46sM1n0IvUT1=k z{F`Da&PB;4M}bg80I*)K1<kN)f@AOeCJI*muz^vpuyE~ER3C5AM(4XNC z12-E~C1*iZ=10eUlhN4TS=Vk%s~RaoV*=FFkm}0CoPAkZ2YFiSRV4#>e{+_tQ`4B+ zai3tpwi;-QRuCI5b7-4$VLOmN*}yR7FnMg*i;OUWzWxa=DlGpECmsgDTvl=n>}F#& z*&nhIV9cED0SE8xmXu`r5R;L|{5ureB|s~Yk3mu}pV*>8slc5eLQJ+ign;_Y6|m*c zgl1=kK#>=}QeMQ7jsH9k&&5ext$~7mX9pGw3Py}GNTd`2eyz%a|*nS z<4fK)0%4>WAh2K%#c2GisyG!D=1M4gTt4q9?@mI=f?R`n;-!&Vi<6C!ADAh$x0EXY zrQ%YnUcPIbn%^)f+l%u)%XUYKhMbEup`uiMVe;z}t(bQy=32^`sRsZ9gwXYUK6yL@ zOlv2`+LNOK0OXy$1|UJskCfs>quu=PX^SLVet00p13FU7zY33K%Zc)U%|@^)AhJkl zkp1i@4>=YHbDQbRqm-4Bu93DkQeI%3r27aK;ir7aqemvc-L&QOmhyRV4FXY%^6m(P z^I&)1j~1%jE^P$!H2l+gVq1<>-qWPrS4u_kX8V&5Ms1t=@o6V|vM)7lB6~VUp0Z_N z5|$=-xy@nw6yX@DNha57l%ognQ2+#LXc=A4fwEc zYtsERlX6c$tc6w4@g$q%H3B(E1j+YHKmqj}B2A9Q5gKxk$n3_qP~$Wu>vWMyo^U7Z((vx$AJ}TM1I+EP=2U^fRO59yeZ1PJq>_Wtb*{` zPy1FK-jG84urv@a`4BI{fDQE+3b}(Bd1coln~QisN2o~*L;y(7bVG&aMzp(?$~lN- zOgnqy;Qzc{Ltw+uCD^6%TDoCRYD(iXZcZny1*61fG8VDiAV%Djp0W=^tip`1RV-EC z%swv{D3V58sEE^l>(8BCVrs`R^^@!dmLh|dptb@?L6WwTB@m85r=rBdOv;HRC_t8#3N4$ zAQzCU**n#7Hn1C1O2tiqOjR3X=;Q+G4YN0ns9KPVcLW(MC~MFNNC7ZnAjmJIFFh?O zWCz|!!MkpC@2%U1%c7s{4G{nZOs}4eT}bbW?EwKXgb*lFjFI%sFxCQESSB*3B$5o= z^t6rp!0PA3lIOB9WdR(#bG~$`sO4dW7%n4?4{`gJ0iEaPwlxKAYAFq)HNwuF$?m^N zjhI@;^A-pEnIGTe5xkt#9?0z!Qy)LB*fpk4!@BH~E~NrUkSJ2j>o-iW2I6JA37X)% zb0hYW?3!rM$}ohqMj)APk({MX6sa$}gM7v{5t--YI6UBdfp<%7uAyevj-aUvb>gLd zjJpWDR1M;I2DPJ!XY(qFtWJo-G^3;Xock!Ndjk2G?n2MX!x?3=fXI(yyNOTko%Q%> z5ObKza#H8LdD+kKB-f`;7aEQTpibt7`sI&aWM?G;i1N<-Fs! z+z?^{N6LK1rEdvgr7P(ti>ck?VHr}ULaF#6PnSgiwd-`j1Hk_tC%Vk!k)I9<${$im z1;3eA%c&)iV)+I*nJ9q(s%0{3xD16=%WSD{sE55&AXwEsw1qVrJcY&y3-Md!c)KcC z%`#ZWR+@Jb@yO?SZq@8~KS%bvN`~SKw9!M|_6RO8rbmsI&}(UKb<5Aq)g5I%8n-D8 zI`rZuxNX`kvGt`Ew5G92&X=~6&z7D)O5NMCE%k93V2Rd<|nyRbqyxY~RqYPA88y95ZE8|8C0C-`} z)MdWA*kTR}iR0w$@tl`opFy|4Yp?paz9p4R>z-pF2oFODX%R2RNIhW)vF{O~>pBcT z1d)gU0^&OMU@BtZiq;}p`zLOMir=IB8ofO|Jxo7q+NgdFXyX>NToUEySv?u*>k2)!(`e`=`Mg5~xIw zo*T0>6oqTLF{lC4UER79S3z1X&8sOwuh~8<+lP3`hGf7~vp&)y4{e!_x2URtgy7Gb z{CaXFaYJ*-W@3Q^-V0P#nln%%vWjjmRAn3y?4B$?WSI^@APySY1y-Y0Nimaj3csT) zhUJIfyx@VZ!+WJo(g9H&*Zb-LF45(dK4Xo_Xba z-+A)-BCJpDfBwOn|N8O$^`$m_X~|24|2pbkc>A9mw<7A%DCS0kt*uppO3EFDrlKr5 z=2y8|oA7atTs*uD2w!g+LJboT9ZE(!fx!F-FA|YXXPrNk8SPLjW=BRdOq5N|l&RFY zQu)xwls1y!p}yEn>DK9ucsdl*BE`)byrTs`79dk`t##tlDq$8mld9x#RsL&A%^s*)VdGj=1r`I>hC#L&V;-tWpNY5E_N{60%Dp_`$!CDc z>mbwd3noJEwqTt=A&6wKlx^BH*BS7f7Zq{KJ*2^WpZ0}&N zU-tpJRo_$0I$%$w0RL1|Ys;zgCy!RLh6N(sz8E!rmV>R!7cpX)`0e%g+zn1+2g(%D zUz%LAnyaP@V7>C!vxzj^Agm_;1e6aXmANz*POyjAq*pqOruL|XF0W~NFsJBJuIS2em{R1Id! zDWSZUig=$&I-femL~{s1(5!n#zzIKEuOSb^Q7Xh_xCvB)Z>So;bQV0U<8un5)VD$L zP0Jec-9@vE&DWfIRi;8IG_6YjhdlRnmdQaPshrV#jC>Z3kdMVM4uT2w46f?LKdN#` z$9;S{VMy&L{`K46&`8mFlNv%yfoXsV4hyTloFoWQ)}g9o29qD4Z8j(nJeyEc z!#6cOG-q!u1*$(J0JLTTv*yS=G*gAf7JG6>8zo+a83-6Xk~DG2XrQco8o_3q===`% z&`h(etz_Fdof$q?8(3UCePb1(z`=HHs9Yzyv_1?<33=&9<7;iPG77*WuEK)8v}zd7 zP$aU=8Jrj>PYgXREWtI9fAIPds^O*CvGHxjb#8aSw7q^VqKaS#l^Sf>Nk#sx+mdsu zjYRQwAWM9nsfzDa#ZVh>9G^j9T3%Sfhf)_DUa!}?J3G5OJBZNtJtFSx>@N0pu|q&Y z#M#d7$?<8wUNf$1EZl*%qo3qHtW6!~&ZWnQEk_)Jy+}KPMyGCg+0N%*Sbewc+V%qN zJ2c!qQ}Y%>Zv&vsL>#0kuek}bd*InN z(<_U@Ap45|0y=?4I}hlk2tiB%@u26pv#tOUSVouqGu4I%@#-2W*8bE4yJUKpeq;<*Wj8Z%BTrRwOZO~A=0Xx>w<+IRd5->}gc|HF zInAflBC`Gg0Qtx~$;1}E+ImcX{Ah1S-5P`~yhd5sk9 z)czapM++l(N%JiQNH(R-n`Y+8c1=xly3^2plH<$E>)fPT!)jQZ_ufc5&yFugUk6fi zFB{WtO-TV*^0X1a?ik8>^*4zSmJ`hlL>U&^I(!-zlZ(mxc}q9PcZ)gy#ZWe8&XeWL zAjFxT3^;51bJARJ4*wv6$bG|1ye79N6*O1P=g~_2t zfPpTiksL(3#YLNMqdD>uTZQILB;_yKBj~L|c*$vW#<5U6x%!!r6ho_pDI`Q-3tx(YhHi_SVNPAz;B`n|iG%OKbSsVFO7$>7H zIq%P0Yr1saijz&SGr}ClcSN$y+d#>nx6<#)vLm-fm@FfO07MjHjFeW#^D=MK@94Ze z1#a@jC|=6)PNF1ZPzDRF$)&L{-Fk_QgKmK_k67EyK3t<9B#uusJ$;JcfY)N}ujVg0 zLf&^m?jd55A{ck^V#P9$i*)YD|#G1pZ2}6=UEB>32aTc zPr^m1Dl=aog@idv-o|96!Z4f7C{j;700F|$(GdXbAMWk#FLrizV&4-H^*zN%6cCZ3 z?Eyfcapj1XuOQk&nJ+W}zXUI`Ia+0J4K`TW`U`q`+fZH46r0L_J(AjJX-!9}uX-wJ z&e^6z5L}wW<#sI%+8Q4K;t8)GR%tddN(Z_wl$=QL!29BoSw($_Y7Bs*58?zb6h$(q ztoa__KdaOdz#$9Yt^fd-Bg0DoXr4I9%qzZY?o5Toh048RAk!z^QznnWk@SV5GZoJy zC{lcA%*wg)#vFuiiD%_`i`p!GE|&Qi5F*d&c;HnygiPI%Gl*dniB?%!u|6X@2%sl? zrspz)lLp~++I1sQebjqRs-zv+Qsg$%0f2qO6|+jL_M<JLFf4To?VD=+P z9+%ktCjf11(eRMo!8Jt8D-DP;X1ATK#9)#s7wMKVMlLGYj*@R)x^x0dhLQQ?0hGaX zC=6|OXHBGTw--^eofp77>}^C~jAwDxl3=cL2pj6TLblE5g==Ks+}!~SoU@Jca2Rs7 z%c%XIIDy#QbY*TYJq?P&6!F69r;}2N%}gYngnfe`5c6HqTV}tctxMe_reD1BVhC3c z%Z>ZiC^cB1SuIi7QMtRdc1>o|SQ^o5U7fpND(XM)yiE2*58f(UAPXza;-t&$mNdm? z77dA8#C*g#Htya{yc}mq3UFa;&!duy_pIaInZ*^D|8j?fTP2w`-L8x-m$9GYZN)C~G#`q@<8r(%eamIT~r$0=^R0@DBVTw_&%#Gjau!)sx(aDP}vPzH$B!b{V8RK*ghWQNcD}8=yQ9(M{s*<{;BZ`R39Nw!r5onM| zAP}arV63XJkRs<0r0c3`CGkOy|ILqN)gsFQDrtvg-(ew}hByyxby<+0vVD z6`O|201>-N*}Yv(+q=>`QkMt zB(&x>uLGHKe!oRptjs7tx6~ydmTh;v8@lvZ*1iu|X0_{x5}WhLCk3nwm+~7|GhJvh zdLL8zkkYs6Y{hN&BY+6`wH!+1qmC1WgBO4F-NmQB`|Z6ypJ&c|LO{Zp-u4Woxs#Pk z8#ySwp9q^s05ooAsZ1abyNq8;C`vxvBE=awb6E*kmAA>Txm(4s(gx5E4-v zprDDtR&K8_Bg0(SdC785$;DaO*nUO@1T7{+coGX9a+UU`%}TnYB)8dbkjv*hlC3OV<|fQm7wcif*y;8ZN&$ri z?FB8VyuRTeuMg;qt5(5wkO)hSSM4()B0j3Vj08dU(NIeUc~(g@3BVWCAteBasY{B; zf($((MhFliiwr-L=;suuf?ENCTs$Es92g0BArst zBaIW`;^`m!>?QisKfZlu^@v)0*l0T?8AwK`I>9D$yL8z+C(`3<)U4%bAs9HuTj=a$ zi{!CWbe+Y@z!?Yb&cS8ru3U=6^IvniYye;ZuQ7+j|!z+ig`HYAbi@gxKD~DIs{p$2| zd31ENGhg)mIz|d1sO47)6+@YtVDFxHE~&gfl9F46P>F4ppX;eKoXmcxKdw z4D*Qd6Cow#8xH8oMJ^Kz7999SfL)(1j1@(^_}56PLq&3<_@=9g+c_9Eu{q$#MgKZ6A@8l7Z&*u;BTC(IXusD@GPt;$Ye4($&NK^L{S zDU`=|6d-Yw09h7nD`=UgGti8FxMc33SvQsKT3P0lU~)W0ww5l?E%1} zj1%GBGe7+K_ZGK)^DiGf`1b83+T@&E44xsh-`JDtVc4kn5ekp(?V#Dy$h+yRjZ9+1 z)NwV#)RK5>dA8kb^jB37^Lv?I`O?zGh+;0WMNkIom^dpgR-dD+E_1F7R zFgn9s+2SbracrHZfKb@-{5gmU$NFK65W0ttd||eVR^~kcC8geWZ|MI3GQKbn)9N2e zYOM55rq>OLit&^Rj7cGPp-#*}3oaXrgyi3lY(hmvqYiNv?U>PW7zY#{hmIKrBXCV{HKo8mjg7<=aMuXA>QiI~p81_RBdZFH-I{nh3&0Gu5jG))UK8Y%aJrt|)3P6v|e}K%i=7g8WYz@2P53bLk;i z;76IxPre<-Ev!%ynn?Q2rM$uekOL2;32=Cu8|JFY%B_xIamB2tClN*j-RHyBhyXCy z<*BL>;x~DvsX)wnAi*!04+ykC2q*x9*Xa%J5m;kH+`2WjkGV)WA7K_@$t~l`2`o;+ zGJu=Z8F`Oa+3`F+OuU|H#2XiCHd*fR)^N_3pVv!7%O;p~csL0S0GOg}`f~O}hqWigHk$ze#lDYI#Ns0KupitGQTZA`89vq$Cdo^aY`eoU4>J*@h@%gkJ6l+t z@FD7(t1Nu0ga##K?ufKjReO?Uh-?rV5Hw&ULj6q+6vt4Ul`yt;AGD7zNzp$i_-`>MU)8+k}>qTF3vJhxbp z-fH|Nr*D*o)sw*DcY{>2+Ay4G^rvZ@$V;Fomjp34wBxFlMQqzpHT#)Hvu1xdqVUa2 zBf@ErSjlixy1Y9o?FvZc7)i8yZU>r&Y-!Q7o}X3=A@H6Z1_S60asaaxTiUj}w^KcR zj0vg5NJMaSbUa_puUt6{0ayJxU?6}HkYdJ{U|$EH@m;|t>$BCJ%MQyyCVl;>A^FTj z#;>g`{)g`3AMNc%Ry1U6bGj7uwT^#6@@TSU{>rMfL@{UFp3)Y7I6}0Yw3QG!o90}L z9si12oy-rl_YD{POHL2Jw+3vPndQbZgC^e(s%*9=V_o^b0c3X$5#Ef@c#fPNG|mL+ zhSovkAz~^k4aOBnanlR}SDYvN0EEPwry$L})00nb6~5|GvK)pP9BKgt+Tg~|6lGeB z@2Gnyn`$eNt+A=>a3#XV#OH`a_NPXf)wcql)seiNygEW`x`aglD821mcJEe%NWrq- zS|PPM%2QUJv>>zA7?~lnnRe&^r2HboQgN@r$2anf%M8>|NB>SZo2>WKm5bnN0-<9*O^4?-0sVKD=#qe1|DNM zM7GEc6Cc4P_iR>RfCX7X^zAQlyr(Hwwqz5zryMP2Ca>{B6@2?r+X1$Anpn2$Y6j}h zoJqz_wUPsVjqPNvl&9#Th@s_>?3HuX&xMRjD(o-E8$tcb#zz4vm*?W?t@g`{b(ZGE zZ%IPf?w#0DZri77o6ud;*QD;g>paM{*q$DyA_jHh*0^G=wpZ9Ou+#!K7( z^bnPx@yyWX^_Yrv*y1L-0{Wr2lSsi?zNlnbdO`?Uym;XbEItHroS;?ZfDHq%474GH zkd~X*>vib5v@!ea^lY(M93LMO5kkO#Jw=L?eX)afwkKdN6S%FVfTx`xf;vg@>jD0*vymjGOWo0#Rt+|m^Q?m6RRuk=U^(f{CF_guEnlc zR;SLj+pw8vSPU|nvOr=YCoWAJ9+7+7qM% zs~aL_x>iWO3>7$D1;mfTai&(N2o!3V21%c2MpX{8Qct{kkz7PTATdISpc8woG&gQ$ zRD%Pr6ARs%XSS2dd(?7Yx!#Nj5;Oa$_T zAq0pq??XsC&%j6s*-kh3;5#-b7Q8Z(3mZO}qC8c|LoC7y{IDTgBkrU|e5wXz(qp*5 z(INAa43!}1m=#%1kf7d-TQIXL1t9|}@=47IWoW{b>RgCPuud0q@JblV%n&i*4Jn9( z{0t#pVw{NXz4^cYuWvSQ-F@pn|Hrp3ucfWhLwM+5FnR0bh{)GmgwJGV&?DB!tY|XI z<;bSnkcqsH3HY;Wove6D>m@xPia|kU5k}40$Oa+8Pd%-1HGGl_sUK!b+r@-USbwhxm4fzM;mSVhUD9wKBG__nNe(mb#=jE^pzSNO!R4VG?< zgayjO6DjL`bVIHHP>#S<+ctIiO_E)kK?bn07?{x(A%J}tTOlW;*#JO{5dkC6yqooX zj0i+@aB#3%tyjx+sy)VZ9)|8LmSZ!8PSWGE3dSJ=@rUkeACjPrLM>D?-E!vW?@Vxd zSp+=fQTF9^9mW1_mv1i={SRpT;1ABy8j?w%ibA{AS5h3z>|D2DGIX7yhq83C>@`?Y-zC*7R zgB)t;8CpW}58jf(vo|q@x>?rk(-GR_Hdz;Cht4{xBrP@4GUk?}SK>b@z4}x4-Q<9x zdr^*|3^M(Ni7MHW&D4__PATM93 zw}4UQn={bUaB`(+-fJm4!3Z!tJD0 zJ;0aY(~O2C^}i>du=NA2aNFHocBY*M&}+UA(d0cu0LAGrGV~;M4iU!@K~Lm>cde}u zivfp-zImadi>A^_3!5`IY$4T&n# z0h`Q80eBh@E1n~5nl8A8OW`WoZy;bTMT4T*uETNU(OSaB@J^Gn)+lb9HkBT{&w#s? zp|PBpi|`Vrdwp+$x5TEJO)F2aT`O*?qMONe`ON|Uw6$BHA1GZ~qpaVirO>|blhwx% zZr}d0>$+|>TdmfRmQ}N8Wmkcovh+F5P-9iU3F+c8g#J&fG8Gk>rKO>2F2H-KVFIya zoTVJ8xH3Wc8~00j1#y0we|RFO#)ITftJPtZntZXMAb;oMSSI4ROt+gpmM7Scwmjhb z#|_v33%)rz!D*w%|JoM-pvkj>lhruY3g*O^c<)Y{1M@5w`CGMhZaTs0ZVOc0mN{c8 z5CKxOQ`t>4xLPEjydV&ZU;6f}F^i;?a^y^QrI;N?`LaROYMiP8up4Dd0m9rhG<5(V zAH$cDxSQnY1pM0VNR6Hpi;ilTjnPPz5XlRaWDNK@@BAcJj8Q4^vy`I4+N$@$TL@9I zO-T+AAw7YZ{c(zUiD$qxRgWpeNJJEiM8|RkYH!AIFqjztBp15?ND3e%E(zkpaz$uCrxis}q712zD{+^CM1JHaQKXiz zAAwy8*pCJv2*a5HFs^6XS65Y=^4>mE&t>Mzyk~zzoQMd3DpRRtHd2if^ z6DLj_7boJfUgG&oNI+$~%JH2E0~_?NZxJU8I-hE6{D%AtYgMOV9?UH1I9!fA(ea4l zLq)-t@TRq5jR}ys5>&{vCRPSHSro6K8L*)Z@b z0)SP+g>{=9&kb6^MJ@l#=lRTFq4*dl!E|~2H&pvYyPa2g)bVp{66q|e!b8$}H1f|y zv`C$~{swuU8$)O$^CI4-;A#-yc3$fwvwkA`+`!`=W0jGt+3A?7<{9^hpSisyLRJV&=f+h^!S?3@aLUpQ8h&uvkh^2Cqz1 zH9AEv*xS`(YZ($7$F7L72C(mXWSwp!(}lpg^-gjk-%@%en->se5|o;sHeW|~!m2}s ztg-V^&<^>9qpF-;q=`0<*4oT4$BY{xFXdT*dNqL6h*IWZjRrd)NGSyZOaKrQWg(~` zVmlr<3<`he+)fcVO;uMDM6mB} zF=x*paBrm5gRFlrZkP4Y)pm3E?d?uuzABt2#*g-E@9A)e$s z6zBkcmcKDF2q$ZV0yz{h)}3`&wg`$fN5L2H7$jnBMJtFuy(!>Yg!T$RFeNuQLvv8b zURK?t2E#vtJdWnC6)HA;opq%8DuOS{b|>@KdMk;p(FzDhe(QBmAW~ii0;DQooSQ;! zP1*XyM@Xhbs4YxoTQVo3Hh^UUY6^q^m?U5n3L^UgWYO_abYO!)q76gewo&{o`iw0X z^^Kfa8mJTXAqed&fx!VYzUPz;i{%NmSmXfhb?vDHNfkvP6ltM}qNV%*(vQVhbo<_5 z8f_>;ukTLzM+hb`Bqyfu?ra$dEXhX&LY%VIpIKCVm*NS5NC`9J*@Vh&V94Vx&nH2S zVgLbf;7V;41AW2l@UY^RWTnVKd9RbaTgRDy#I`oFVjwc**_JIO2@#}ePaS5b(reUg zCRAr^J3Zs|55XVYuDEWv2tl|M$dMU~x=1EcxA@>4G|>PtQcOh=+C+!s4!63dyQKum zD@;t8d&7KY^|x7AB@s|lQ4UuHilaMtEMlCB0$UyXFc*aSwzVjZQ34GTK*S`$1hJP| zwC%ITbJrtjL;I>TCKjk|5lRUY{X_zgO6wol3^Cg^H95?Zl?g4OtwL-i()zwyhgNyPgIW*=i*>~3)E8?ha~yad@m6>bLiV`BnuC7av*F-L z2#(>M;Vi{#9?AlZLB#MK!8C|fVQr9p3@}XRtTZV&39Y}KYnr3a;PSILewjwdU?2^z zA#3RCdAyx6>Gd0ATUgs%W<`|Wtfwr{1k`(gQCp>u0wjF&zqM)I{+ol1 z0#af0iH{0k@SQS#W?U-Vh9|hJ(=%9oLlN5Le#^o6$tNHj8~``1N=6z-264gEm$&kT zwEJ{MWd-E?AgZ89!HD3FS`B@{?U9iY-WRFpA0xT!fg|Cd0H)!LME3Ssdb$Sy6|Om} zy^Mf>h&>potJ9o-6$42Z}KfYJE%ur6b@b zH4ryLX&O4?g8CSmm-=qRj5IVMC-sHHMn=A?>mo3Oo+`Hy0J~$bVTix~u>JYiOGB2KTtOKzSAUJSB^D@%?Tgp}v4y$x}95NxA@ zIk00u8k>Vb5o4Q+1oGJxwob=_86B(F`FI>4e{5{Bg&hJg8%><#lvs#?L#OD%mf|50Qgj}#x*P7Rh>_s!&q#Q%9I5D}D z#bEV^r(I1duO7W55o~Pkd3}s93eRNSM@%eM2%P7I{5|1hBdOnlI+>%%;2>tAWBPz0 zErNZ+mHit6$%eUVIe|E=W;{G2NRp3soam8-hg`@Zc-D0-%{w2As|E8Mg*aU%wwU^hJeD}V}>@&c}jnh^UFSNj6sLy%4kj5thTdE z8_TG_x}J_Qq*OUT42@M}`6C550l)eO%#t&*{h5emcOar(FYWbuBDyV%cgHD)YXpeMS1wN`i9qQ-uAB8 zNRg4Z&S^F-85kY1m&3FoS$ljj6_Z36t~Qv2CRD`zB-3*)sloszO5&PgZod!_O?1gn zRp+IuKosyjv#w#nG$uNMfJC5!G5`ReRwfd)XVG6U|)F_#*BtJdZwT;K!Q_&&)HOokpz%^u4X=DJu{LR#(*H? zP}W_Ziv{=Gs0X}*9of$i+iATxTd*%Qn;04Ni!nzw3^sC^6v`@0eheE8{YVSnz7_g! z$>=vs{cwstq6fo}-}gP`BYry~KeP`PN`2%rcxYnUtmbF~QGYQa3bt4tj=VW0jIm15 zL{&Fjv;6QQxPGxAAZx_)$0Q~o9wiJUS+e*|nlq-hAk8WSJ5#0OA#5dUpNo|eHiPV& znNTO)tEJr}wU#PRe)ESIHAI925fIbFERtknYF``dylNB?0Qgi2(G(NI1e6jA597y- zc|MwH7Bp7~asxoZ(<#g}fd?lL%)Sr_3^}Ouf5E&;zIU<3V%km=$Y~i3c`q(XcSJc@Fr`I60`cE|@r zL$PlrGVvDetc}#?@TbeH2`zkjGauiHv=0zIZyo9Zeo#GD29caTxv# zS%AQ`v&m}d44XXbj=5+IeD)#03?rEEn%)kmg{l+a(a#YXntRuILL??2t2!8l@==_q z7+6V&=x_2;qX=SvBq?GO$W)8&BMK{BAKOc)yM=;_^q|W3*MRAf@?H^;F!>0_i5_)? zXhW@A7KtecGTybhU>=mk2sVgD00tF(_>tmu&21!;`Jlgn_1Kst8wVpKqtmtT^XK~_HkL2J~2t90DM^he?{lQ*L@^fhaufbLf#i(|D! za$-U{`~795Wqb8C)+hq#_b%F5>`n`7nX#1$0F*+SK;o{OTCJ z7In=yo363ymJEfVxD^$jxk#x7VI3k=>PBR@>MR@Hz(fGtIU>JBtwsFkBYyybLAuksYkjw(THF+Qx#K?eE?+7s3I8k+C*RE|dJ9q7xS-<$T zH?OVPL9fm3KYVEC?9_M-)>jtpTseQ~?s7WPwzmMHM#ykbppyPYHqFTp6NQvml3AR* z9@`(u&BAXh!1g|VtKXvvc;dyis=q?w!64*|+p7aqkW~}K?^#ne-%9Zw$UsV54&_}8 z5vRn4=RpwzH)h;sFO2&SgVzy9lwhQEPGxMSP!?OoG4KlxBh50Hq2I+mFbF226e%(F zI>4jZFrbPkJc^?NEHJAE2BLn_AoDqY0wb_F%@@oWv5twzRvj9pS}^XOt55< zQY|qU_ogHyo}W#uIG>VFT#~D>Ajj? z#JhAx05&A%U5|V()Fx`z!i~_$qg?amo3k{v$>He2d1?qY<8PQ|L?iu_#&AM)1L|NS zBo>hb=lZ~b)PC*sA&QWxl+!CTBQ99cv4uwHDtRp1QHV^LWDHc-A@vI9Fj_U(qRVFuirBCR8^w>Y1;6EE~2oEf0$UB1=s!I3q;^) zH4YhN8rI?U$ZxcN!3L^ap^N4gf(oS>-NF4PPzR0sT+LtXaZBpe7`zmep?Qria9^=% zR=IdM(H>mnMv`3DKvo0XResJnxI3giAX6rSsV{GWZfH7JI&h=z$ z*Z!&AoeS@rU2a2j$FWmSzmRmk{^7!79Vud&3DUDG^k8J}^lPclB_sY+{r2x>1F_-j z7^4LZQxh%DSUUWU0*W8J7J;k?`smf_z@Z}Peryb!TypF0nLj~iqeTr`yr5z36|sPw zS!2G-CwQw@woBH>0xo2Y=GgM?(>Yb?qD~4#aSVpQZP0o)YASC5xYHp{xc*%zmIYYQ z6J!Bf05ay~U>146%$cYT$yek|^8UrO4JpiSv9ha8Vr7s;S^~DXjPdV>ZjH}lS29t* zc}8s{AaJ}3^ORdrRFKLb5!td~8ap9kf=LQJk$xo@$(XQA0!Ccn7X(dA`n-qs7J%f6 zz{WSd4iL(CrB77)8S}e`&#Jidhp<$;45d9Zf>>c#ueJT$v+yK_BVzWUC){Nv&6>-P`u8f%o`@s1Ng z!~hC@Wc%WSx!jRj{7b%zyG1Hqhk2B4@daFwrvXNyI);F7qzVFscFM*e(7L{U-FR#0 zG0Sl5LHsPkk|gk>U6(tGDIxkqEBk$ZRCUq`#xCZ zQYis|m?*_vaN8-fLgpKvF$0XqKJ3;;cAB#_t3pBuU<_muO^DMs(OIKbn2`}08d$KV#9m*&YG28osa3nchKtAt~Q!X*v93su|;mKCkwLsa;0gwx8 z%Bmp4TZ1C1bpx7eGgQDRAfv|{m8*U0+z7GV2PymQWAVzenP0l|8?j0p)B(Ng)LQ{W?x2tNOz+Adys}8dY_wDVU z8^|C4wE&~aAu##ad=Knm4#2oA%3NooS%nQ6%YY%1#0z$C1**VG2~9PE!Su+oHWrjs zuZlPO4tZ#Jlua_@wX8V6INBx&MkK9TXI?8L^+I|T zO-jTI#5p9SLOH0ffX)Dt4!I&VAusMCCJ7P&^i(_|0e0XiH8C0|r%BySDOH#xNeMY- zq-h{RU7V?8r-g|@F*%S-z{nIv0DI_}m4RTs#h8Qaq6~6CDY6+w#QGx@5f5hQ$>@PG z4-pTgc2X_-5$SSh6tOjR(CG_0adOfljXYLrI8ox6&*F-0^xif{{OS==Q9tx>@T=g4 zxQ`Uxwm&(5WTIYXBti6>ldBDh0BnF&*0_b|SSQ<0{Gk{2)Uda7{k^x}yWiQmmNykf zrZ8MnW6O;~fk-4ID$xOq7%>A?Iw08j9}nmS7u{XZ z6e(7m-R;wnX0i}~*pL_4{522^&Q1ePa-(6h;;8Z2?YL6Daa$CIW2K@Q0Bo8#igkn2 zb8E51$8cInu0zSTRRU4 zCXfK7Y9oTq{I{+M0LVNMMO_iH;>G6;ng&Im?Yk#8!#~6OCoGCY7Ik4YJBZK9)*gOpa701`R2fD9szn{_P^yXm)H+8}DoJz0Gah(<8~`S)^|+`Y z5ZZ{472z)ZqGQCXD1u*{g(h8Q;&S(;y?l~x;_FJ7$ksU;%uLajw z&_NvnQvgxFGu{MWz#?o?Z#e77smewet>m@(C=zrg6HPO$gWQ1WZ_F-q2p}emn|iG= z5vE4C--9nAz?Q~|();g!?JE}>3o@8L2@~{YI?=Ysnkv!ar*NofCg4STTYG+lf zi(}UM9w$Tw$Wr#tyrL1<2;&EyO+jYR{(Ld3T6dus!FBDnom?FH*Elo`9QN5vWFk#u zPNM!2J*?ssvNVbq=}){38`HbU6IjEV_sD!lj)F~3FI%@`Cicli~?(i;)p zyH2zwx#ngo^iDeAbw;+604VaN(Z~|0y<*MKguP^CgQjUpm?V&LaZE5tv4svS)f4d-{^HtF}G=!bs8FR>|R^LWhiaL*5Zt+vDFda^O40?yTeb?pCW$9Eg@Si`>3hyx)*FX)s9$=- z=4ml_#;!x{zuQA(IDX?`!4H9HUu6jKB-Xcp6Nz}H>rG@zz7t#UUZ@5Eh5L@C+lYV( zLeB;qco~D6BO-tVG4aQgP$$@+!A)#j$`~v$8#Ch&MK~=oNo*Q|7kuNWjME5MJs7+u zG9tZHqK}k~B*ZW40?!NZUmwhdfSCh`h=~YDI!c=?ijIlqS}|UzMh}=sF9sRX^0uhC z-)))L@Uf<}8dLF`n$-@;3@tpTSgc+sV+0e}LLlmPRu}GGKK;RiiKB;il=?sMF=WDs zT?Myhv{T9hvU15xCLym!1jPU3l`RJ)!HKL47yt`$J{Yvf9>M6*fHWz#154;9{}xyh zWUXI1K_ziDEWkv-u&u~r3>kK0PR9zbwB`~=4!vIcp^!yQn+2}8^Q$m3WH;Kcxx6Yr z8ZbI}N2vehwbj45!gDxl)QUcj=>Llr$f>a3T+3~}*i*SaUY{C*PI-%%{ys1zsmOg+ zEfxAEVDLq#E%pI)a*uuu4T&W?k%?`re~G2GAlc>z;~Ze3SB?QFWiU-J0>r9Q1PmBk zo8M$p{V6E884xf(vRk0gicAi4nKLrn82J`yF>_%U+_8-8i2-xfTJyyL{ra7MZqX=? zSxj!XhqxT>71MUP@frdb&BM<59+eAO6o`{92Zm<20W`a~lPAeyed;^Vn`S6)b&Iyz z%pu9JGzP6-z{a9%!#@?Ng+n7M%+9eE)ag1xwt`Uzpzd4oBDZTvxq^;H(9>4N8(0>Q za0>tcAxZc+AO;(tQv1tT*mJekW70W6q7_8sgdg^`l*yeS>L3#sB_nGiq685+ch$IM z9I-;%Wz<;OCUY%OZT%96W74dAvLZ+flvBtbMM+m>nusAHr)=!`$j^vv zG{eSGuA}J5;9-pV*PQ6>^C&L!S069NkS17Bws{_WOHmkUN-C`Qc}J zag*OOBnSoky@ly%BZYyr`M@^Eu)vBF4Uz+g=pXHvL~JQ-!4?wTqiEa-ep)#y&Km-D zg*hU^ND_g{@JW#M0*e^rO+(B)$hCleZJEAjB(RAfpst$CUjQ!5;B6E^;W5?9qU zaX+opLJ@3YBNBkSCY*jU!oU``>c%D$=@^kZAjxVw@(gt*7|5<>8H7Qw!ZNzYF64}q z`Qqyj6TlEuinQsoqhH42YtZLa7S7?ZW>`$UThu}PRn5oMD7=!o~7Ap${ydIAA2#Fe%^`H2(N+aF%OIk(y? zk8MA4d~a#)g9qJ_w#^uferxR30y!U>4}FC?`N@51`XO>w8gD-x;8==bVKb<*xky{7 zL4E7;JvM@*pdiOak4o$JJHuXtP!ub$=bNdzgc)Cmm z9xwm{1kB=*RQj9Ir$KZuqVD>1y)d3$LCX1Mi?eM~w2>_bmo)~NwV~=3KQJuHZ_9|% zQBtcvDi}HLEf;m|;mX4KOl!>z$aW9Ib~RQ*$`ZQ(NbCu@yQf68{YT120`2p{h(Wdi z1BHbA4De=XPPEo?i6Vyp09bj8tk?R*I6S7sbk>qx4EG}lt`v)e ziXI8%5W^DQ6>MVcg%zAH<()+na|n+^K(}O;`n16!BI~PhK9r9?MX(8(1&xoTI}K#) z`2zD2_LCOJf9(*-P0;3_ttNrIFyDqb01H8Nnq> zVYy|7MKMqknRtMEV?&GIZd9UAVcVdQv1GO}AO}0l+BBkhJ-v+$kx+^RR?ef^)hpsS z)|(M)1~RrRr>WCXGiwl1p?Xie=1#H^-m?vIG2 zIA%8z@wxwGHrZ*}Z{B^W9@aDnTm&6ROeAsi#x0Nyvi)dBRWTOGBeWTD%SFbp%rj?g z5p=&qAyh7$kD$f6)gXHDv1?XQoK*%6NoisEAEosSkpA z@_0aOn{{jk=6YSjK!4**DUCr1RlK|wq1m^y77@hm?uh;B{>`f2k+P9nUZ^P6hE+cW zEj_1-!gRtS2PFt_oDqO1V$s2O92Cbt9l5B8ct{>5-uI%^iuP&~VbF0OR_vhp0|0h( zT)j>)!^W)!?OzY2Ov*)^;QU@V<=IB@YjwXHlUFR&W`NtlOrI>gf^3hu)uYGw84x=t z+E|6wYR9kz1Z(c|VH46)_pppKjqW!)%Ep3pym?F#oe2bHTQ(v9CHi6YgvnzEE-IKz znXTHfAnzSoj|rf|KyrqlD54fX;(9{7SI1`o63?p(xoSETXyhQ`Phh_4A{XH>|Eg$_ zm!jRigU2md5ZrYH2)m4fRnZTm0F!U+^r2r^r@!su6%}r;z^2dwUtJTOXRo!krb+ECvVKyX2A@|p$jYVwZu*nzGk;jSj4P}UI{@OTILFd`%>I`~DpYhm% zIJ3zPFAHd;P&MwlL0wL70@FM}ynmd{YE=~mOp1scVN~f`Oi@SY5;K+DqJ=CgSgL~j zlr30Vh?yuy%~^1gm)Y*Irb%q&c~o+gg0Hzlhyb*O?>qZWgkrmd3PG{O7F~9OP32q& zlt8{VHS(JPIL&`cqF7r3gWC#ywWwb_ukf%`3~TkBo<3Pcx|mJ$btPHQo{i8uiae~= z*$ConRAG0@G*OI;+>kz3HV6zsWL~I|Bt;Gt4Omt5>*EKRj2e<};C}QU0k4Fx2)t55 z(2y(1wy?W`D@FmhA|73q1Ft+-G`<0!9hfDn#MX&DwAdGa`c zLCMvInSd(J9Zkw-7nq#54asRBrJ#p}KIhr^@@9h(=pjH!My)vOSiVhhh zGAXRQ$id%1FIn(dm{kd3)@q$afX={hN6jU@Xrr^VOb`9B6Rv?_A07TdO;;eR>5VS; zD?;FrCQT}T%slYPwDeed1$7a4WGAyPh9 z1`KEEX4E7a_v#h%_TxCwMq#v}BCc~J^~D=8f80xKu*kNZevv2}2hJvP;^U7wXmZ4G zm0L{Npz9OY$?S4IEvz~XS}az( zb3aG4qA6e$oxwHG7rq)3VmvjaQEcPaAleE9 zoec;9B&f|%PI?DQtpl&WIF+!wKxh(lG3%_qt#BbR_7MTnwr(sso*nS?XHiy9T{;sV zSCkbhvOJ>v)5u{L+LMfl?odPvn@B$FvuhT67nKztNF{PmA3=FFW1l0s zU!u87h7u^_6vnsUfPh%jR2MjfjfH^vX*PBlox%wzj>aInipdKRT84wUs2XFZL6Ahr zdlvkvRehargHd3}nJ_^52%$7hRp-()O_IdwJjP82f3&x0gXU<|6p}4y1)}xpLb)gS zl!yYpjX8tzW$&Cp<3>Mp1TB!fq6ph+D8fYMUT9LFptQ5?PGs_?2_=-WqP6A+XCL`f zQZN$h48korb|34Qc%h*9^_iF z#={<{r{ThnA5?Nj+~l*cE5dOly_vxp)zQefCou>(t4MnlW=sW19y5p|B{RDUIK2To zh60lymS5$m1CdV@rM4V7uLtN_GvXU!B5Du(AmMZRkSX@%+$@?;wDK z1vF|P?F$aftlE$FX{&u*=XazCM3|^ZlLm6h(=U~Bh==FM_V+iI^MN~2~%bG@(N+uXZJOU`O zHIg$FjIIHbdvXgJd)0(fzz%rdF-OKUU|`Dj=1|21=Q8G@5EtkXm^-T?h6y4T7tR}&;L#Z$RnOug;>U5K z#|t(ylL&w%oyRTt+OMB=XFrr7j~wj&$nQcM>^NiR$;g5CZqURQ^`FcV)1eXJy3l#R zBGxsj`xF-=7fCpBe~~W4B1fEZ?_(QXPE=-lXw{m6*4;RaYd`l_{s9`^tht&f{~{4`=Y`*oTRmp!rX=fnb70DsP1YTPhDmZ^n?@zR1aj zQRtwl+29NSDWw)M<$Q?|klWB)U1UZL<=xou`EH5`+eM_R1ud#6(EnVGsM%276jD^z z^Nxw&;zPQ}O3kBwLby>#S`v}PTMV-qK`mLWHKE^}%Aq4;K!iAi2B#jTs6|S)5JH6D za!zeZI3S~5Po+Ab<3xD|)W@)C;0>5@Hby@heQa|deBI;jn%Zay+Pq_zhxn@Iglxr21}Z=sUU*{-VuPzX`@ax0eF>a$1Ie0{_2ft zf^#{uhT6EGfi)jov)8T3lp}Vdw`}BkBf^^TvO3q!K(BvsF(tySgSac3!l4la5CEbZ z9tX8_`!}6`BVTuq7K`jw2AYo}hQ5vVi_nKvq2XKPpZsAYA?Y1t_KOZkn8=Fe5tG+r zOl$D-h``2*bd11Y%i$l6{g_-_^Q;XLne&eT5Fw>BA@vS2-~CppP>3o|1(O6xZ$Pt{ z8TCW@<(aB|{gkMOzscwoM<9srv0BSCP?28{=4BllI;djYJx|Mx1i~i!40Mt*J1Bjb zI=(DH8Vg{>5>&J46WJ4~R$U10lTiLRLNqjlsUO28orX`3dQb#kI9VP=9vz@hWQ|-Q z6j@}AjQaz7^YMs9xyf3neWJc*ZYD$xH1?6?1yejII2;(YY}I9EWoExs1dEK7M6bd~ z{3vF)=HQ#tPOQPvfb=TOl{^Vx^thv39}CX)z{lxv#8Cmec!hkKKHYGW<_6-IX!FBS zEeIxfA%vp%gjE%PFp7ySkzH?OA_~EPV4U($ga=QdwV~`P9-Dh&bVyDq(Gv)D~JZpX*Hb= zh`trT)(Lu-3>t+NE5d=x8p@Gt_1xC@=HmqgCS>3i_I+eSy^Imho2_2iK)l&dkw~j_ zDiXW0gcYg-1HdUAI+!yv9*pDUE6X`-VVN(6EI$VfSkbXbJhIpssmoJ1JlG$8+FEVe)5szKMJTuCFz zdD!O1iuW7%SI`cgsMscD0gtYg#c1>^I_*0sFuLec6fjAU$KKr6L86p=%fYQWkj`4k zSg{;PAZw^aG=gO{%c3s+8T}ePpx?o8dRiPl-gh=U#P)fL0ED+ zd6tS%)4lrsH7BY2VFS zvs4ytt>ity+D=^K=oxDZZ?g~i5-KmP!<#Hl>k`qRr(Sa_{>mHvHfG~D3 z!IV-kOQOcn)N7Q+Vm3x7nop5$Z%{zi(O6_43&%v_Y$3d2awV0v-Q()d5Kj}!EUs_% z@=iz2-PsnVnpFI=awZVYc18zjX>jBz^MXQ?f}Pn zcz2f$wh(I)D{-wYi;OX#R6T6A0vY)sLkp%KCe*^JOGSn3JS4|8QqK?pKuQEDr`rIf zKzad%rIkp3C7+8CY{Ii4x3|U2U*i;+N+2X6u=bK&w%4789TH^AC;~#UaSu%O`hRg6 z5vxOD63P~U6K~BQV<)Kp6VNYZQ!%Nu*Gm;i6HL$mFpWi%8F&LbZJ{2|5rR&L%z8on z9~?bMXbD#`XGky%Cgs4P}s=gTc^9Alu;7oP~77|fBP~40{5aAL!Prc?>)yu9i z85w4zQ1QH`90=X3Az8Wr*`+1Z7peSvSg5XII2F9;qtLHR=zepKsIjb!|De=?tF%Gi zwWI70H;N+_igY!jTSZceHUn~Uh@=f6fsKtEm9SabqM%sW)M!K>7)0`UBCXFX>Qhzd zP03Nvwns74Hk)#VdR)M2F9@LxWNskY0)|{>J|KWuV6>JgS%)62Yj4yHPbWl7Fd>8_ zg_KfC2@-LW|B6tMlQJ(;TBY+D>}fM=(ISu&1f!!<+-@>J`O_tVs9OZMti2wIFcI)p zG~#635v`{T4n-wVltAJlvxv`=;Rp$z3BW(sxF{8P`OR9whSDP8AN(dhCWePCOUTf{u8&N_JwVOQzI;w*D&6uKTr*gYSlI0mi(j34ckQ?>!X#jdP zn8XFIq3FqEHmbso1Ax-*z5$>JjAqjsIjsa*M2&(%OcMp&bq+ObX_^vIFHKWQDFsXt zMC6(sCqpqmi6ol3#_R9!4$qa@#Ei zgA>5@L(IjP^0kd%<}at{CW?oxCI5gBcgws>KKhX!NrSRjtHL#rE>&?-4M5i{;V}5P z6bV z_$_Efpr}Y02!_aLL4!2~Q-nv-e)jKS7P*|Mj&c}^%5)-gh}d9c8<@zBdVE}iL_U*4^3|(ujWy{bfj+aMa5WauE8Q3_u+X^%_`GKX4;ydcK~8E8m2zpQ`HvZPp^9^nVAL19ucavRK6XB*_UA^Fu0 z|KxW!lTC89?FJyyE5{vtjNoywDYB)4n1_*MPp1G2d@}J66EOkn0Q?YH`PKJ(&tY;+9f}oqF78*(-6Wk3XIT&c<#SQ~NOxXXiL#T7btm&XwAwxnj zpSZ^yfra0g% zu<7~j`l;DuHUcEKNKOS-=oAIapHszZ@>KZXT!fKtd0xigE#!}WXkZlQme3p{Y4~}f zS03Dx6YuB`$b0{F&_fFW>uhUNkIf_3yfu(>cg z4vibJV293*B7$?NuM#2%CZp4^{ok!u{_byV4FI`jnXlgl7{bTN?Cz^Jy+~U)Nfl3E zI1SyQL93e>RPKnD&Q`LT3aPGC+odbuqs?kRP5sG8R5sO<3CQl^FDS0U6IQfp* z;e13NinmT+5>H0I0c}_a@W;Z@;ejAJYc~|R8#P2aj{ILdCsq^-@{fu)^0)&lU;W(! zU)B0+5q$9xfvec9!=^_I%`#DRw=$?6_d7h^-^nq$KylbEicV~_uEI}Z{$a?Y_XtM; zAgP1`c3M2d9QB6F=|*-&u=$F1b`Hi?p50WS*jw@=S^skt>xZWU~$!q_+r7l@J1WbksaYB?n2qw&!qVhlD9{lP^@VO(;J zI8l|9l~(h)mL{@Rb)WvIMSqHeo7}3uxMFt5$i)CS#GM?rlk%wVj12}~#K=nqbo$ay zEcnAOiDURK8$}s4aN-x~-&3VsZ!@^hF?nNx+#oUAIcpD>T8 z;7jy`ULrtk@*=Y*iT}`aU6B@(Qj#P|uh;8!d+G#h)dmSBFh?CBm|GF=*TgGqNC-h3 zvTH>eQFum;AxkDFM<~Hv2^Oktb>;y8JB=-0k#;!AH zklV&&WIqjNC`zWMe(FGxR^-FzUET=z)5N)KwsK@*wUL7zG29CoqvS?97||+)pNySI z7FKVgbtfV=4g^#XXyh%oV)b6s;8zGumvfJ!g69nQ69c#4e5R5%s z$68Tf?mH0(@{AY)jz+K^Gi6O6L)R?!Mwy*xrdkt9QrSj&fyL)HqebNe(FIS#cvKx3M1d5w_}&Xb7(dq-a@>KISHyHn{542aP2o~BD&^JXh3b)huBCJ#ww0q z&wsYB>@~H74i(2?qPYqLKq(=r_lhI{1Zg)llvL}Y#u!giN`$T3OMBY-OjG}WnZP2a zj4S}pB4YVu9yiBcf>$W)Jue1_Y#0TX}TdG&P&U&1;ke?ObUaTZ^?M zwTwVw)kW{`YfAR38Z-4Xh^2o^ZcpQJ@$-Nkawnn5(yg+eNa6|X|L2M3fz@i8$2*u8j z{8=nk>a;UBaWWeyGSC}9BTDhiVGyt5pd#hHr_p?g7ndvI@|*O4V$E5MoS;S~PH{sq z4@}vde!6#1eL44dyU_A?0XkaXIF=5(60IW}@bNz6wR*ye3^ za4{UI2e7eRCl~UqAv9$Mu?-5M7Rt1(g*Xih50!AEM+s3KmbED5YasWYcsZFzYuA-G z_af6gtk+i0MtJD2ko%@*PFyjqp~>USl`L9%utt(bk)4`m9K`Q}u7)E{vF}2rU#pfk z#;!(jLlg+DC@D7_r9S)wuAD&c-{l&VwA+7bB>kYzASW2E3Lon?IAntf-T8?S%mhW*(* z^65`ZT>0udw|ZO9_SQi$+5L$0O%4pF%nM367vg?O@%vi_k8YIWbfwH6{7`t^)?{yF z_lsO<=&5S{%paYo%#Hf?;WLy~JP$I^8N^=nAH#uP1C83shq%e^l$5&`a)?yx#ib<*G7!Ah*QKXM?H#i zv;E^B`}0MtW3p$=MRY%nDIKX+c;LEbf)oIOQbN+Ux|$c5Bv3Au2uj`VI;E5Xl>mCZ zlzKYZ_mjyHtq{0p`b}>R2B92qD}|t>?*Wi> zhn%K`P|xqOrb>=L=eEKJ$+Th027Z?LCHBDNoIS#&`^uY$LKl4<;o9*qhMjVWqnWdI z)j{&3;%-hXdK`r9;4q}=5``_MKu&Y{n0U^*X>6M#th*c7bO~@Q|Kr~0?7;8~|*cbcibN8fNksqG4(l=aD9+@dDkBB8bPYRM&OY}{! z{F`-Bd@M5JCB&&vwlW=cG5Q?DL^RhzlV8@V4-0b6?lw4L0zA-MD<3BW1VD(1roHMr zA|j>)K&e`_Q&OA{Ktcu}qX@Y*fgiI}#LPvnaD+}d_lg(k^Y|l{XXV_}l?DYwAV`pa zcjEO=_Wc-&X!I?DJfnY9&^OkwiEVEXHgmd45jMgZS*T^m)gcN7J1A`fV_1a9k6vzS z5axmWsUZkF6r^FlVqW*P2P}81xV53Nk+Pe!@egl>@nng(`{%7YcE2;Vi`uV zGIry9P-F}CDhg#_vm#fwLgv%{n_-iag?d=2WeKI1Hh7`SW+a8-1<2x}%~# zlxUVE0P6M9Uau{8$)vp=0T4l|PnagN25cvrlct_YSoB|GFRX0kD41jfcLK!Ea935j zbsB|sf>$=0vQ*O(VEQiuC9#iu3+(~ zt999cymA0GtcjAg5(~^>i+peeQ!tj2g!VSb~1+A~j)4$)T z!#0X!a1c1h4$A9Gha!yWP6|UF)}$z26`_MRB2?r$x8NV=Aud2zQ&P|^On#INJ@4SnLc6&5dacM3>w;?kk+tCL2}JEiM#J2Us4c`DI& zCXo0$dfqJRi+mIzroM`TYrOg*I;T#LkV?-HFC7;$^c}m}jVKgNAhH%M+tluZVPIoO zyYcaXm=P~FcJ(D(EG&_0Puu-H=qq3s95ce$GJ_htJz3I%dl z19-lP zldC5nUI0|j696Li(i9Ps1nrSTstsv@1@5&Zu4#fpX3|C`UU+n?adQ!f2gPqC%Id{p zb1J5$Sy8M8>$sQ6Dsr_Y0iaCsF|j#a!uTihLDGBD-0C(2#VZ+h0g~K7HDe}{^GMpX z{^N4=V%2&DqJcdEa8sAO+0%~-15!IHhluQus#dl9K&{~m@9lEm5Y!L))w&T&XK)Ba z=EnHA*wcO&x773~?nHjnAlfrEE5)gb{#{l^Bu}0*aR_&;h#Nt%P1DxJa|co8v#7WN z&l1i{;TqkYQSok}%}G&@czd`CkfASlbduMR#lLq$=rt0y3`zMUGhhjT19qIaCB-9K zC`K-kkk2MU0uU0^E}#OCSZGhehX6-b}*k0Hd2n-Ru|=;4Q7{ql$X%dKAe=I@TKRfzc2j~X_@0gtXP zacgO?3UZ4x|DpMlk4N9Oi;yZKn!RbTK^@=k+1&eaV{=IGH-^jcAhYgHzIJkgL}H|e zU4q?W7ywJhCmXnT=1F1sSOP~X&2f#gn+WD)p~*GmOv#CJ4N4?*e-wyrc;-lW5ey1s zd7H}=3!?OE-CM02rn-C?>Qx!#1fqBy82&=}JCw@tK_Kr5UIR4kgZm8`ZO7bp(Nz_c z%Vh-YrD>Y>D5WGx0Dw|^?ud+lfHV%d_Mnf>3bAJ!Ta+AGXC46@z_&)Or;jm$A#XA( z%2zrA#Uh8|t3lMP9U~e~!SMp@12LguzaY7^jP+4)iSLvQl{BKAk)k?tKzl?#;sl25 z-m-qx68BS}n;|`=7BIW~q}vF2U%gyZvq{iVui8h{H50${nvdKHu#ZYa^GnXh$dmET zW!x_Wu{62iAbX^Oa^!r=v^pPKf9($h6q<_+9K6Vp7LK5|b4uLT%x~5S5IA%K0D4E2 zsKf+3EDo{>U5MYEseZ{2xf6o1LVbW2rno?I@lUH@T{BxDVXvJo>h752A&O5=y;sZb zb`?12a{{$^wK`U3QgJU4fEQ%kbA^<4OOhlJO;ef@F9wh{91uZAs#NHP0K6Sg@jbiT z7z!y~M9rZ2-#d-mmw{O|=~jK!@ll7ZIG^Za7{aR=qDi;e ztwc=qfq>~7&^coM7C|TGPdaC+h!!aOSE05BVX{X7WSO)OLMZp8yAOpcz1eOQ1zdss zFz}ooekSLEAe<*2l$MoWrYJ3>R>e&2h{O`I%j6fyb;t|4Ho|3(_p=`^)6)6@yv`v|Kh=*439J)+2< zLtM3c$#9r&cX|a!WtGd2wcE%>AX??)?MQ48Lal`Ca#J|S`i<&fhuKUY3ugWjABN0Z zm`R_NW3F&?fYOv$9*4#j<7i?E;fVM_BJZ#4M8>muqip%s=U`z>N{;~TZB{$3-jTb< zobJRzM5>NZ&MKPP5kRR`MZU1o_Ebg-0Fb7s&6oEUpUkHXHgPkoB+;{Sxujc#W1_fK zp(UScJxO%*z{^t2D18FeZe|-xVDh>cSCJXXE z_$baSMtxAtU9dbkOp{;G5u8O(@Y693YD$Sj_ZImmQE=04Itg%pM8jL$tQu?-t^UE# zfpXS(#Wpc9Q|xWQMQ8@5FkeL+Snnb$c5&HO9CHV4zchY@X-L}R?+2LuFH$c48-t<& zCK`Wq`|GT?u^|`MhR)Z`GtRSXMq>emMkcdLpP^wxS3V_ca(ZTCKFo)jTqrWRjoBpr zpg~5IiC9-Q0IH>gvhcOxiU}r|B&DQ8K;?270Ekpp5pjgclUigDb;AR`Z7+)G4Q^gu ziJYN6{UmK1@GNDt#K?ef$(GsFV=^8AJ;H{A(c&tx%5gWuPd8TFho`eA@#toPsVS4@ zAr#jlQ6&_qfv8Zi?7L)w7@lSXbMj5fi=<({;M0tPb>>4SA9xZV`|}!Qf%vR*0+U3veXRa1rIt{+c)Bg>FX$- zjDQ)X$9LWqlgl6H6MYOB5E|O%&Or4bNXb^PZMPZB6t^RVg4WR}A|9F57^-tHUVqP6 z{bThPyK1UIQ$^5ll&*dE5by>GX&}3;vw3LWnLHxG4FORN5`sp!IF{)0C3jG4&oF8- zFa4+Qa70jbEdj$MvN;hB(SafveTqe*II!Y)YB8S6WRIZE(FDE+oBXca3S9G`KEobz z#zlB$bPUYL8SpF#YtBCe(ZMM*wJIVpa;+KDu&u!IFUKfAosyFPTWMZMR96ukOW**x zrW0afz9gt(L%m)P5lf|n(lmZ@1<$_hR5^`0kvbh(<+Kw9FOYYV*j+ZT9WY@Bi-+E2 zW&=5VeoS;k(BnL3&M18}sAu8O`Ed9vT#$W9Uj zpsf1+;gh$*oCBB8(IAdW20;iIBamk?J~Z`^6vSfm$i>BPJT6%Bxf=9fqS=WCnv7&z zom@f{fI*(l7c(O3YFL!m^UPw{EZL0WZ#IPYACaY!2am0%nKv%Og0aO|78?uL)oQNv z@a7nrFpU)6`W_-CHj_vwJ2J;Go9WCI>0NKg!dy&o3O~#(ts*IdP>#J6rGr-}5(jdk z9i{|9WZIF9d=a?9SM{6)d?aBAq?HMV47>wc&qEPk1B8T3NRH(aLdr85)oUsUDAjQ& zv@27wiRr%`PEi(-Lpl2NDS>lntA@NP7GjKbD>Cgfgbw-~7cC{ej9jebv@Ev!WtOmC z`Yi>Q`_%O@ z1GjG0y1AqmGz)FaSWn#ySPE`M8_mZwVv}d$q>Bx`E4wf_y3A?37z^f0{(yAi8NZ}; zGDI$JC~V37Vcpn%tRqd8u&k~{uK+n{q4+Ml5%NqNiviSySG0K82qWLZx?`biblpX+ zflrW@GuD^`a)1Q+Jrk}7^6?l!fDQP{!XPgVp`vt-HyY1uaJ*jcN7x?nW#sKGA~fn1 z=efZ4sm_bsf z+J{4hH&t_}!vuw1^s2i>_T4R{BSncIuI5#_)@pBss#Q|d3JI0jfp%+DBt)Uzgg}xT z@^BBm4)g&RX9{u5)1NMm>^2rK&uxLYuFL8sKV~DK24hDiMSKl(>LKZSh-O@{gW_Hc z$0wYg9QQNPA|?%)&YOqhw35?7%$#Uh#(yA7uHZlo2)tQw&{;Zw-r_Hh*j69fa(;|` zi~^uWS8kLwS2K()Dfue7$Fze21KQ^z9Wiaxz| zqMOi$fUbqfE`Jz7rI%Qc#ji3Rbb|&bIrD9|2*8{jZZqNY2#V3KvVgDytf7J^$JSr_ z31GNsI1=eo%mgV4ALkQ|6h^HPw+5nS&k#@`n&dy>V)2~~pnmy&o)04#t0i(Ri;o7MuwLR*zta7yGf{eNotXz+lCoKmVRm~=S*%}~DL*;W zE}#2R{IMx%gHD&w)i3y*dRY8$Zt1uTiC&Yn!wtWZ`CnV0U{+%pJ@VEBtq|0w@~UkC zDm{XmF^Guwny~c=;Ig{YBT**O=YrQ`YRb#ni`3!UX?{`E<}ouS=}OI1wMWl@dp4@Z zD$=~0$6^?X4@E}4NOtr*)cS?V{5jNTwut2;`A3X;1Tv=(`xMbeV~+^$DLz;kg4UUX zU>nT#Rb>zhAuJYoMrdDq$>taeWMXw#r^(GH(mf(6;q}_GsWE~~H0u__!lrx0g-q6f z^#|R$;YpcVNKriUStsZ6fSl+QLX1+h?}HzM3k4XZ&uC!OnnuA$EJSo7kxqJ1GKx~2 zOvI^1c0Ss+1;=>Di7|^h$-<+Dd^d~y(-vL*3y2BoP>NAd&NTPk6eIt55z9o{SY$ZZ z5FkR5=skUg2wDdSRZM`1v{mdRX9>o8A%qGvCBgHT$ku|u@i0LGON%`DrPQK9Bipv< z3po}W&3C~9eB8Uw-IO$W(6gHI452ow7s7cgl9qf4MG z*j4KcDDWk@`R&^!(cI6>OR@2Cg{9YUmQUau{2D7TAQ1G`o13Im3&G$4&P*^q254ei zXTUj!)lpZ%ALhdrO~KFnG-oSVFeo|Rg|ikOvnEkYSj;HnL3lT64E6JrirlaQ%sGEJ zj$g2_slp(F9nH=$u#-TUH<9`~WUA?p2n!+lM!J`& zFD8d&@b$~@0^j2b{*5L!^itGgdVV*H1yALV2ca|PU< zTK+%?(GLikJqn`)uh|^=ne}W2zJqBK2ZY}o4v|Z-9BY2$@VFY+BLNXs2s)YN*SptQ zR)vaBhi{ZJAplCXveA2fIUz-z{p4fG{D{6#GXA)5Xp7)t5;oArI|?9dXiO$R6|HtSV8b`wGDLdTr!7uAH`{2# zSLFhTCJDG4$hSbDj*6(;(i$XNR)tVY2@)i|Ue8oWeD(@LQDHeU*vVECFhNgx9CkdTZs<9D&3*OEUe z!eq35MwHVd&J85*t`}ATkULUjgG#y)n2By(yBKydToU$0AQ`e#&QDG=BO7sc^-xvg(kJS)4*ql?5&N*H2qq5)dG!~Z9-9K+(QzS$ zpoj5uJhHFb`_am^ICcdw0shIJVk~;?HE9M3(J7l_k zruiq8qEQpMfg#645*Ibv{Fec~BlkF3x^BWqahqmA!47O7DWU?sT~ zR;u4b+O`(qBv}T6o*#IzD@Mv^QMXsGOQf@85 zp3gl0;;uv0^_)Vj$(LVzzPTOK!qo~iSz+{^aw=x9_XB2ggK033h+_`4@H^s^pPZgA~7cb!I)@tWDRO*he}Rt18ws`7b!I zrJW?tjGFpD3HN;Fg_m|8%;m!Y0GsvcTC+g&1!t2i)|!0zh3A_)_{HAbqWEH?4VoKm z!n1?qSZ(j~CtrB^m6xA;>D2Ch^-kE0(2;Sg5=Km{L#T%by?tjciy-F`%eJDLHFS~U zegS6Pi)<<(qP9R&Qodr1!hj?TU zC-$H* z=%hasP<$wv6SeUfTK_x>k@{@j5KC`mL{VUDMHlSU1v39k5X#1`V{$y4Q=$AQ1X5U` zcO?fro<#^{Kvr}isNWc!Hs+Kh>R*y1n3R&FWDP715^)1qDwUI@gw9M6Q^p+v(WsR$ zD_m~{O+CJMjA`;!2aX&EAKBos2+dn;HB&5*IW4y z;N;kemtS1}^0&@I2LJ%Od%x=o&ENgz`J@X#$;8;6BL}wE#;fbFa`VpR8`oDW0Jy&U zv!6NC@xy7fvijbu?>-!FkH7H3$;y~uv+C;UGv_*s#Um;K^eQ`d?AyJ2y4EbO_2w^L zx%_ahw~1+A2<`6D(o!!LG31$686O*8U42NyMimKk*jwy{k@q{bBTwzWaPM5YI36QYxA?(&EvZ-QoyzcSE5U{B?$Yv7FY)z)_RcaF#-+&f?#mf# zimca;oIH5>&S_c|PM`UL?w5WYAOJ|4hxY87-8osQ!%FA=`3qOqmQww6ud;K;{=JGt zyYm;XTwa*(mI?Rmc;V=&rQiG7dFTNWZl8YU)N`G$e*1&8RX}_pwAUXlEq6!50PA%{ zjn-;*k3;$t+kl4U@v(_DH67SSAWjC5FnIOPBm#5W{bb6Kru?M zvUB^s-Mgo>aJYPValTguNYee^_33>r1OQr3*XADHym(=*)C1iy^VC>*tvi3|>XnCc zy>e)#_?kB61ObHk8XmqJH#L80z15l zD@sGgNGmcZVRnP)pYj2WTbzSHaPF8v0fJ~v1VpYAKY~FrkxYVjKBlqVBF-|==N^(xWv6@%$}lV&VWsWb``Uv&8Dfn&FIfZ0{UeSF+@^hT;=PG zo*pXRp`*95_BIqG0)X|gne8hd-hz5}VrqPOp$%jCv8SKG)0aMcc)mMP+5Pl0$J^_t=kD}MmD^u?{SE*?YxdJ$*!9M{=i1BK ziX8_)7;DZheC=BwV#g>d&uAKu3wre@jyyHFZQ;F3=hhZsc4GgDqqAR|zgG^W;D|Iw zFTM4~y8r)!e# zKrd~rtqvU;)6k<^Z=C@kDD{&@#X-q-UslrO)V9^-5Bn)rzrl+C%r=M(IeYZfk*Tk}J>NipUgOE5C#JW}pSyH!ZINcj51e>n=Bo?$%H8VJG_1BN^#*p9 z341%9I8a$$UtDcN-JJ+g=Iy1o-Z%pQP|9;L3Uj@sM#1u?>b~2zpgJ~Q>a47;L(@hU ztP+F38`BSZ2V?;5*uJyfx_aYoXB?oHuC1=R*$J+xP5{uWKXLf@ioSjK(*OS;OdvZb*o9GW@X2zlSjITmM>jeuL7WYYWu=_m)>hF((Jf;>V7$N zZH!iCmqGuK`8EZ@7Mp1@JFP%EKDn*6askSYGS`sO?KjT?0G7lv{rJJ)UL>if5I+Wm zm=~CHoVTkECDqY{IYQqrZzQr^LC@i%u&2V^m*%`lEC)WW+DTCprX}$*o;Yj3P5?|W z!Gt+5AxZ&KWroU#iF$|_S22qP!kPT&S&?J{ECAr1{i)oG%rFsw4)KsJ9;GZX)?pO{ zdKASAut@K)6Nfy+hB*g_KyNqWK#|<$C~z(aa#G|x$RlJ_m44XxDDgcH z0rUo3Jcy7p=CZWi`DHyn;HjS}=%O>m&KB~1drb}*DG7V2uX}1j_9U+%A^>;uj2#b7 zJyWbQAi8~J;y|XW*KKD+#AX`zy6`+b86F!^am}6GF&47doRMaP;++@;s9?n=Ht^Vh zyINx>yj#Y%TofX{Q>=ibQy>Y=1vH&R z;;pE%YL0LbSBz{?*mrCS!&D~)3w5o?W*j9mWL#rN9}_AvTgmknH59$zS?uaz0Dh%| zH+k3+Wo5+??dy@?7r=OJC#zm z-Ri8bkBmx5WvbkLxK1!WHo3NP$B(3h(5;Pc>t4LxKCx@^(vA6X!0EBZ!?k-U0j9g2 zdAj=Mhi8}OdI`W%_xhEKGfy3w{+&AyCYkI>ZLD5eTUnv9n4P6&v({T_b)gYeM`?NQ zj$;R&q&MDsud|qqpJ7LWZQG9S+I{~kZ``PMi2xofU6^|t8tTz>?BL$L)7!?Yjr8H# z+{G)`*H;Jupj$h2;`o*O?^V|K9y&N%9m9pzwX7jE3R zu{hr?0YH29l}{W_%ZQjj`TFmD>(-b=Fs<&}ePDLSWPL21U%I{cps}=ezo!cHs=IdW z+qq-1(!h3a@zRy6OA9^iiFKOKf8x;D4?k$){v(ICm7D3U2k%|H)UL<7O#nDK_TboTW-?Lx%V%t3e)Poo%^PC zOw`9{e&zP<8#7Prz5eQZE6r~8)QMx4@4sJN-+S=DOl1rg+t<&YyR3=K5N~sG+zUxH*q&o}eu3l_c0iajewPWA*9TSxXwt5dQ zU%j?syWDv0m4ok||8N5LA38K!Zqls>?_IjouD54ie&tYCllR8&fBV*iA#b;O>cp{2 z58kh>?>TT_wlao`?Q3Vx+^_aD<@fJ8Ftbxp{^s?Yvrp~5`n7W_4R3PWa1c(7AA9=P zSf^A;JLxOWe*ys@Nw431=lYdy8359;L;LnlZ=0wowz+)0y+Zn>m|5J|s~$akG_78G z^PLBE0sy#k|Gm2p(gp&gxP99byLa9H${W`!JpjPDr3-U!K?8ug&9Uuk^LML_2DFw+ z`}gg7u)4Orva(Ll0K2~HH`PMvt_+WoVo^?ipAZmW&qLhI@o z%h=P$5AUCtsX-}SY0qE3etlt~TLPRKJ07Qo;;3GA*RK7$c1%2cuw6}ur1VBJ!y$XPDUU_ z`I&7Kdct11)>ad?(>!_d$@)aOQYrQ5iO;_bfOLEA^u>#vD*M*{L;(Q8?XyRB?SAl; zH*ZwC0047K7aqI?4FVvX9dFF9+$I8m-dg*?(!%~)y-ctUgxl0pZ{4VM0SM-nF3!CL zO|Z((zVlQwEP4>Rdm2_JNvTkS0^( zyZ7y#s*cwQ*6uCdymEO_jTf{V&%JW+%=r(;aR1>$vy~>@oO|!mrFIh!e(n?9fAj5| zO*X(M>&KpXcJX&!yVG2+o_y-q)%i=?t9z%nPhe&3=H1ITZnP?ZQ_UxY+<1ZI#@Sm} zyOq|=%bz&dD|w6QR^z{zUziBgfe~q%5|Mtlu8x8wHv2<6jcEI=nAouqZF_8pW&xtN{AiIGJ*89eiUfU>o`iqEp=q+>d?FLquXl*(pqOZa-LtOfS}$g7iem+ zY-W@Zzn{}Alf-t&@!<(s0sh=kAR`*hum{yUQLE97X;w9{UPN7}5w({KWdOh=*=#|A z<#K6#wL79_dZh!qk8j)4Xs45(Jh89QXs&h|2lk)8dA*Yt_DaXcrrYyp9wtYp>!o>E zFVBqEZZEIZDA}`fSF3aV&RlO?W1B9lwog`T6+02JIX2#F-EXBZE_yZ9XfChJx!n?z zuG84FXRMdBOC=z46javfVF=KfJ^DoX-OIO1Dr8`e6aawk_|vD3Q|-o?3m4Os>b|{C zzVdYME8n_VCxG=va}u}pj#f(d-nnqS+}{0(PwkzWxxey&kV*&l9Kq&=Z@j%!O)Ik# zdk!C(d2Qidi2!PIue~z|gnPC>w|mcugHo?@_~6OyyXW8j;N8wrvS-`T<4;sCKUl2+ zK(~7M(8=kY_fLQD?)oxJH;=sd;{Gpx>q@Ds`rNFKtvAX~96hpf=HeM@S4!nhG)QD7 z+r!oKufC1DXP()$|H@b2eK^4d^f*$ZF}~g`A31zv_1wjC)UG6|!fxfz!KY?-&%g8G z+3r%ZYx?kWPmR5QYpn(V>y5?)&UTMh%lF^8c)ilv{mQ5IOwBx4eL$F&4(&cfW0$^p zda2&4%uMV)a(L>sg$HE0M||z4Y0A?_E0En$v?-1E6l@@PQMPJ0HCJ;hEkt zOg9g|_`=?=eEXX2a@wqquQ$s_4sDOskQf$pWZt?bARapC6pZ6b2Mq5|N7ex ztG(*%~)CSxR=zKJonVu@7#pRe`8iJ#z5mj@|QbfB0@^skD3c z$Wu>LFVC&k)G)BIDLo?sfc1%|pFR$?8}FXK*juUY-*@blXS!ed*3CKrRaeekcpF;N zuYA|Ra~Do8&uRNyjk0!=w7%q*Z~;JP=7D>>$ z_3mm75IQqQpD4e3<#stZ_9>n&qdKx)Ieg%$$z2cLJ%6^h1XGQ}FTS|?KA;s^Ts{Bl+sW>kr*|E=`n7kLCO{iK6#%HuzkYfi2=~lBy>s8HHURXX zjGsF3MB2E0?&1|%sqEc-(8o21+BoQ4x2AE-V$$4hUN#btL1AP5xMsHY zI#u_PV;Rag?WL3;CP~ukrGSvA7oVAW0tZi;!e}XLLms+gdil{9p)rTT+;n?wX1BA} zolRj$M_bB<121ikSLxy76W1YE(79wS@ujK7l z;mEr^IBZ3bs4uwUu#ZqNvN%fq95!>i8sFF8H={B*0e!^uaYacY)-j0l41-vLmZ~nJ zd%`NjH}g)2tSC;bPR$PGNVnu~w7Lhii9iehMiryc9U=m&b&fb}2oNzz5|hoxdf7HD z>{H~ng~3W`FHI9nN;+Lhzu`AcQ*$z4#(qQMS|K2-^S(7}4wz;OOH+q}9DMXza|U)Z zgj;}BY?Uj2YB;*bA?7eSty{Iz2TSF0ZTE>!@2l4;&{>+hdEw&Kxgw{QM4{BXcH{Eo zj$NlexSXs^y!eU9x6WLzQJ>tXq}HtWTJ3ax;r{N~?aAV`#`w1No7dON>&+cID_7?h z8?rD05!tn5!foUA2g|Dtebds+M7>ly{)Jc6w59o_v+usQ+T_UzwWSX(T&j&NFU?Uo zM=UU>RmNt8V?53zSqE^-8jy zUOj(ltqQQdw$kZsV;;szshp}sLtLL*zB+dXoWM<5nVPKJTv?SDtF`@y4nF+S8&^wh zK!DpfZXY~yaB-f z)d&GP-SAN2aQ^oyQ?6 z0|MN=b!-0<2UeD;1b~%Bqf%O@YZuS2RRPvpE1lk~p>w%hP8GqE_4$=+^Jh@*q{C99 zQE#m-IgC`T?mKX3@poRoSzm`FfyMcIoz8*raadmf07&YMdV6Zmp=+<6x!*{E7(>~$ zo6D<`wXo8tS4v&FcIo_Dl^hJK)qMvKu6+58%gGub(9LT%_aEKAyquOa`Z0l|_@q~v zo~YhgS*yACW@isgP2K!=-@aWZ0PJ47eCxoW-P4md*A~Kx>{Hujr#q`R7guRKFm)?q zGn2LXyZ6(oYTMqSa&aK0DFq9o%vG`lapD+wLx{Rf-(2l2)cBtG8S}#7d)4 zN!HUVA6{Im0Hm#D$=KymIaL}h>C7!(nL7hDS=&VQ&ay`hsMhu$KDhWh-@ab9+gRzGlf|HCi6aV6;h0NlBG z^=^Ob-RrOhfKVNq96_=ycODV~bYbD_`wPJF@ub$Mx2N_TzV_<7_v><|Br8kz_D@YG z3%64w+`eremT%m?myQ8osZnpPzH{b6dx;W&#ko6cOUI^Xllv>Z5&-ndN^aB)(d@A+ z0NwJ`RORN%T7$`ifHTtvCT4Db`Hj0{1c1F8SMKgVv~z0m_WB}Wxn3`q*6I4C^J_JL zZfj*dor#b}dUDx*7ltq7a;+QB)AgN6aLhH}GOo292fs|VpDxgf^8?#Q`b~*81IR05 z{LBzB6m0+(vk@OzpIWv>W5T9MDM5f<+CxC1)VvzkzUzv_W8TYN><{e$2plrV;hKkz zE8y-b1@K?EW=t=1>IfUtFOeZ>iHkC9raMOrn6rxVf#g9~Cd{KUk@UM@G#^pGZ_&Cb z{t7l-+>7xbF{RBWz&^;vu8RN71^F4;>lhRXtIPuLkRI7j6w+8bGrEWzEVBa5Q#R%& za%}?VIEn+hjgdNhp@V*(ih!P0oJ*vGMw$`$O>==Zq5f{Ms=Yw`F^*MU<-Q0V0Yqfo zFs&JZuja;v(b_z>^dkY;T@NLSI};tRUe0>E7|+2{VrFKUu4E{%*f(niCRaxNCt@Le zx{*1EMI3l-Fk*sglG+s=*1HMX$?L^_Xv3ynjq~1T58>2YJonU)^Lz#%kxwnZ`3>O zhpiMm{}$Hk`}Wk%-??A0oY`)-%B2brLaE-Yz`YAs*L27usnzP8_8K4nB;6~wuD`VH z*efqC-n@JF{_TgD+IJHI0IZKqY-?Y>*eeDnN%0foxNXA zrJyP8-#&F~;e++ICM=f6nzgmnWhw)dYRxj-yLfeNETl%McjeZN7iW*X^!(zjdv_n) zS@M!%O7%v$yVmN8lrh3Rv(v40cbB9h=zJzI3rC&weV^ z^myr3l4`BqX}2JuWbcld`->m8T88qCT5WCRVZ^bK9svPBw=uS@bL~pkIb=$)&F%Yk zOD1*N?NYgtYiy*Y>9Oj)m6Z|!q@`mAU!2{8l+e}NZ(Y06n{6~Yt%t1?s;=)qDb9{J z?yg+#v?iP7J-epwfAi~=&wsvk;Ra>NaR=7NCbzY(dW5QvRp8$FD{DH+megwXc54k1 z07!aQZe4qM+f$!>Vd3W8J9qCqL^+h*#`w1OjVtR8N2R!D=S;f`FF#|3GD#Y%y)Iy{ zynpZX?fG-{9ilNiw$vTU697QkZW+oG5J0KX zsI0H8cA??@VsFcR`>^}O5Q?1{B<6a$b zyis3o-D{^%_l^4uJB0uUch5|>*5RcSF3)cnHx7q7H*3{lOm79@n*re|8Mn{y9o zB35&~-o)y{*>I**S_^Zub6fTH?N+n9?TM%8tq zvLuHyQssP?k_3~aTCKF(oiZl9ZcldyDN%=73!_&xlJP=p&$I+#xC+nB8lCb<`)YGr zQ(sZ$nP1Y|^pc1eOjk5dvh9v$7e(+?Ea*Vux(?~N&V%FLbA}N(PdFp2&11BV2MH>~ zs7+3&#K)S9>F(VlJCM#jm)GJnh)&O9MkRvFG_GY5r#a~zkld^tTAg7RKkX?WAs!TT zJ2gl&LbsAZa$9Hiqx_d`LlZ4hANsTs6Dk6BSIvCl5O9n)><-q=1CLyr+SV|jXjWv+ z><=*b;V-tX7m~r39+*7|fyO6i{%GZdn1hz^#OeWHY`ye{PpR#yaM$#){Rb!7u=a@)d+W7Er`J4jh(suy#@*3RI{^Od5@`*2*IJ2Wb<|jMX13 z-CAwIq@>h(b!-Z+th6kKjYg@v((1uD;nY}tt!;M#mYR(!wbojsLT~GI=e5&|J7#z6 z-Sx!5ee-XgzFHFR$eSFiudKPd2-9+{p4?b?_wt2K&0rub*_pBWgNK*bS`hV(vC^p5 zS5}rtyfh7`#_Fr>xt_tW(X7$hT8nDk`uKQqM^PRD2+Pf}N_(}{6DeR>S+q&B*<4#$ zbWhz@Z1X?_kCIxw-nQOv6bO?NbQQZMy$`Ry2InVU`pm(_guC&|rnH}dZU8q*})RUE!7F9i)-fc|dUv1XwD=Yj$J!QgAH5+TK2kLkuP-lTD z#s&a@_4M|uZ!hfJwsX&}SGA#6yXtX0zE^UUZ|CntR{*@O-e3uU8wN!ka2H zg#b`-)bd&nn%(-u6y996%vNrw=|FYgb2r@~L3uOG^@dCNsj=qj+T1#MN1H_`q^d}= zH(ytqV@c;>JB4xr>$Gz9^6djhw~aUM_tqc*q{MIyYhI2FNYw2wD%b1DjfFE;E_OUZ zA;8pFeXXUr7uBFpYpq3fO2+Gz`Btawsd?QCoF1#sE!{FRMGDLZODjhYjlG_B_U_uV zwsvKHQN57>CmQuuYr&pqNA>zddqwSHQ*xu(T3MvB8E4Uxq|&I@R#z6u#@4&F+IVmE zdaq=zB=wq-qJ)!Ujn(#imrbWqqgkc3wHD=Wn>C2}nFVf1#{&&K(fGo3UoTPO5cS*1 zFXcQeEEmHJ&iSD>KgNv?nMi<;f{qWZD|BsUV0+Qlr#Gb`zes~9O%s3=07|7&quEG% zy>hvfB&9S>({2wj5$X2Y3=>&9WRXD!KlO-7i4gV`acvH1K%?W%64_hrEyw1fixUI` zNruem+;W^3rYCsBmpFzk28i13s6PqsJd4&AsfT?Xo52-0OTyBZoXuS``x12%JW?JG z#=I5*3(F)qFyN+|Y(*4}5V9# zJ`qWNU>`CZ(0Fwl0QY%{-s!WuB&*WQhXzV1%IKr(wr*%Ni!}Eg1KLY3=+K73meXO> z4>!NYiyY{kxhjcO{noaY*qjwbQLj#UcshZb%yEiWTA<4aO1&C$kVJ2dVi9d~F;?hK zYMaf394-x@Dw>CMA50=|?0O~F- zu1xIMUhk}}rUa0*T1(aOiE@`4n4H=-K6&rPO}iGI)W++T)ipQ$sni^+^;Xw91~KOY z0LsbK?p@=lVnmm7gKq!;ORZM5Hqi{<#9r$5TIFVgPmv;=-LW0k=N4B8ddbXK?ape8 zH(%g*qp{vzX=|x~060B_+R8csV%q7X)6IGZV$iEhPE_t1Oq@P?v3B=@AV#R+q0+K)`A`= zO=iYwch+3|lU}Et&NMQ+JTXzZyV|N}7y*?=v(#y|WYoz0&U4v4?9b9pNcp=uIZwZmZm^mr}KIlH%<49k4#Pu)@lu zm&}aS?yl;{6q&yfS497OxYnxH$D0*%m<#J9!rAfW{OYO=Jd`UXRIigH7Aa^<2D95- z&q_Tt%|8I_b=v7nv)-|n7@ahk8LQo1ZPoPeWV~MQv{ySR08o29ov2q0)twIX%9E4j zyDNck004l_>PlK|)M>}zW3AJdmUJdy3R7dX+pA{tAWqI~uT>Tw&g;NeQmuJ%!x#ey zSgAKl>#erDTk56lQlp+|4kFyPZ5wqL94H!xP43<`mWIk$ ziZ;}ej#&crh}s|iv+id;V6=|B$D>c6e%oei@`=ZIy}R{fQSz!vp8r4=lfCJr7rzI#vQ&hlCn05HAvV1C=g zzP&rDDPXlUerW&koqIXH)@_c@b{3Z++s8t1?4w?f(utXwQV&Ywjp_Ori@9!de5SLw z98_3o&ChiYZQs$YU?~|tu>Z;3dn)%<+YJEdHk#Av{IbsdffQ!O>vvaMWdP_U`*)l= zdTchSmk1!iTB+7^sIlH?PN(xL9mkc$^wxugZR7iP@2GYGE6Mo5y~noivt1sW?JO>> z`xsh>RghQZjd&Om%#PRZuB}x7pxmCH?;YH>GpRu-Y3|?q)ZxRmJ1c7yN36#JZba1W zrRn7COsPku@#aiJ(Xg^|>(=^{yZ4ow2|{h>%&`-v==BfoHu7Zyrnm0hX;k(VJ)F#+j#xX z%BqZclIekS!4Rt6s9-5+)R|CY4r9aYc;oKsS_J^oWdF`*j~$;aHA*Q!g0+gr*qR#U z9+WLLFuna?es+BS-ksGRV6`-H=)j3x`zl>PD7WV4dWUxIq6(Hv;|C8O-?yi7Z>3cy zfXbSh4phc+GJf#D@jZJgca~SHF8(I+qW`O`+`83yV)y=X6A`LAXOEvenZEwv-MZ0- zy+(5;onNuN6PnVjjtHLwVSV-P+yh1VB*E&oDJ>i@txiu??k=~g011?v^=&7g+BLs$ zXSD-}u)cbC;la$wW83vp69=C-GQI{nKxE?=GQg40?YV{RV|#b)sP+J>IDT;NliT)| zyTo%ub1yRYwkiOa(7n02iQ2xy`x@N@%E{QioyQIysj6TT=()Te#=rr9(v{WL_>+fs z-kZO^w#roP*2c%m)6@ILC(8iU+2)~BPuJePbi0%?#!7BXmwHqhYfRO~wDqF8l^|lN zTB|?_>$L_VB2-uJ+*&`ja}PEVp}J%8=#!`D_4D_~2w=U@(ETC;(sE;MtzxupYvP$> zPwqW>*g0s-iw6Zt9Q_+k83YiDA#TL*KaTI|77O{7PV4zTsmP^gt4%~3L@`mZHIHLe zvSrB85$T_rtdcP3t)J@lx~*2L+wFGNJKgp5a-{?y_DLBpm6v>7!wA8nD1tDBxfHLRefNgyN)%d5dR$pry+LZw8z*}pqpmoq8g2_ld`^CjJ* zfMEtQv!={nMV|PGfKjYbofxnk0Ax)V%kjj&>^XB{(h{(aG}=sxtUykB^2=@k^9%4d zTX8O178@>9=z)=}Mtq@Lh!b{r4bo!7CPjjYiUB1$62yuU)B+5u{R0UmNs^S3L|xPi zHDRn6SgTkO7AP)O<1xV~=q*2OuYF2rEgrQ&P!`J|e<P9FR0%LkhpovF`#@fc9&#@k;zGuNBD@?rDPk*8ibHdafz z?d7>!XTE*y{?K8f`qb3I!z(qw@u~6q3wN9SpMaz`UQbq6SJe(6y1%gSbZzGBLZ=J> z2|QT%@amOA&mMZVR8N=I=1za`{=)^aTZeFVym^21hLbv$CNtx8C_nK%uROslNb^f) z-+iCY34(OJ*Gt=T4;QJT1XW+nRegB++{I&u_r3D;k+jrVT)ubt%4!V(fNtMEU#%T_ z>DY@<>ONeZfBoFe)rV;b0H{7T-CDlF(yv<^n*^P%lB73oUpZ3RbL!~+at(TE=kCIV z`?q@1Rco)_x_SHPAA0uXwRGj`&GXA^>y=XX>a9!7=Al3I!mj1k((PN6AHr-mj zYN$~kpMskzBdL_$xO3%5Y4^z^iW==Zix=lCH3+EQoNBLJ)2hfI*(=d~pLzDBwRGj$&GXA^y-Hedx)_d4!VMm;n|Cjc zj~)8dv%A*1OLuSGnS0oHxZJK<&ob(fDG71+{DsMrhh9vNbl2KTmv1cgR;YyOt$XKd zwL>o-*KG5~*&C~iY2VOr4{pBx7Cm|7$%8Ld)_d)xwFlpR?}5(ps4ks8d*S$z{hxg1 zNLuPFF5SI!Wwi!aYcxx(g?5TnHK@JX^i*;?I7wPj8o*}>#fP7H?v+-$eD&ssOKaUS z)yJk=OIIjSPju_!lW=EctqO{G3zZC9#cws_N<6&>5 zR|06aube)6_~?OWjvb`-dV6u{&Yf%PWk4u(uid;fK6c=<&+l33EZ(|#?cTx@iz}T9 z03^Muw=Rw~4}bQ>-OH_qw{Bf6FFd)p+NlyJGy8c!s&{nz-uYVX@Jq*E#`5~&>ip~H zZt%`Zr8pbolda{;gi&%>N{Q>$rFYL=Ja%~BCz$e=uddY*q1&98#PRA2`*r|9x6@gh zdwB8cxrb`&7F3r{zjyK2;k_@PJd~E!7gz3Gxw=}<+;payzrB9_+_?i!?0X9KL8se( zxP0&4_4P6UP;G3wwQ>~_)%9*|Yzl60&Q}+1y!BS^(4k`oUr5^B*29&1SFh=KXj0NM zCC+>0m8Cn)-ACrW@%mcBbh=k>>{vQ?wtaH%$?B8k)$ZcCD<3?#*R2>l@!rMr6DRjS z*E`s4tuI}{vC^S?i0 z5KM*G_>kQ(rGJJXW|(1WE6N>tqKX^s8mxM z=>iE>H;wWhu!!UVUU=d!ydzAe1#-=a2`X{z(pn%g&j<}yTFO2GvfAh^ z8GVVC96I+mG|2{iAO?ofop~#0KN!iSOwCm61#65EDoWSrg17g>nR#w8?`iZtWij=? z&GBx{e)@~MzWvs@uF0?{IJ~~PlI^Qte+J$CNl|18^Fh{%GCAYwSaz;@ z&b7wQqU$fZaWR=(|e4{jKXwH;dCp!HQN_ ztxD$g+UY*Gwq{H}m%*#s>lZqxxnNUkP8c7fv^|4#31Q8MSdOZ^nKmbI-BuSDaO@Ro3AWc)^7rko> zQBO4B(1d<-ilU)fB`qb1u3Qt3bS0siA&pg_ul(k(eBqD&i0X=+Xwi|gY$XYa0Ux3K zL#A3k-~irC{p`Y={15fEXLluPAauh;E$Z8j0dv4|y=vF2S=Io>9TV>w)6 zh|;`{3U0S|=99gNSn5Uh!Dl- z58$41e~VcquH24^O>!`dVQ#z_vJ@9}2M}@WbB8)+>II@RcGq+(ED|*&HU>VyH)N}4 zjo#?f_jJ9vcjc4{)vIfzg+8qpTDL0!-eo6ekS$K7ybu7=G)>c<)YHOa@j64^_=?30 zYrz`(!&-&5w`>w{a9ym#IFnZN91Vd?vaU0=j9x>d5cw%xADVq+W(_7K03%>L08f1^?JQ-k|d>4S)F}^04b$uuLppoQW-IER$&7j z=n;ej{SYGs#KQirK94;hc*#YD)T#VC*CK>b}7=j1z?y zfndwdvHng6&C3M(fG;9(k`)_@A;a_2n3yo0N^2(@w z2REp9pCx5XlB8a*wOTE;moOzjOw@s+s^6%xYEsW#M*u)JeA!C&$R5z9CmN z%d}{TO7be0HBoX=ksQSW9F#$yjjO}8#Ks4iUfazOmJWO?R%^%{wt8^hOKjp!9R)ShKU>$f^wq~x(0P?fsoOlN7Xx@Aa+ih@1K zN-2_PgxAeq7nRIbc$d_5ej?w0h?S^U}dR=)d!06?SE@lUbWZ(dF^j(Qqu?JJe ziTL1ZExP!v@pe(oL&4}sPC%9$yDZL{%SpfVpa=vCBLppD71HX5M+z0t5r(|7T+Lmv z-OL*AoOY|Meh$lWuXHkz#K}=;+BhVa1eVOGJOUt;sncGjk+33oUMu@d`i|C@bUn%- zO*J5`Y0#mhbTq~Kjw$0tipBdp<>f5Ud{`t@lxx75Mm^+;$t5eroi(}$ctHuVsQhu9 zXk35AAN_`Gg*ZX;SVro-x>@8oCZ<)gF=Ccbgv1m+DDTK;D{H5smAsAAmWXkPJNXmkjW zuvCS#J#q5ssrRm*OL|T(r<(PZ&Vzg=LGLRHsS%IRMf_`jcaC2(R~Ry_TbEtY1DWU( zOa{t)S60xdcfozg?Vd|^Zy=3E;at}IKqq%B3=WyP-84J#gM>M0ZE;S0GOMj(8CLDw z(Kiqgk_6HeF-a*+5^Of>l}crOy|cc~hluMWB!Q30Au_9zR)1NWRCErsi5)5-e*$Dp zSgUygFoH9Zi=b_4yOw0lL+u-rwanPL$(T(<#x#~QU8hjlLTVVS)5R2FJo&5o;>f$t92eq1zTsp91W1X1Qc9zZd5#&n??JZ+$MMutsy|Jg?9dD=jnhS~&O@n6 z^ui9gPw6ESOw@nEPDfin%6u*P6RE4cZkp04HPb3V*uF$Xv-8BXhs7Far=uJZ?hzW_-+uq*jZQ7wNG#f&XiP4D1DcY#=+fO+l90ist^;O=AN27d z9ESSnL)LV588DI<5|;NX);iUx!Po;n65@x}D;hH==~uans0|8qV+Edr?c?TozFt4c zzgElvL)!Jpr*}QX_MN#4w{CQuoyCNc&D#A|J7>FbNLRGhinTPj10?z)y296-F$*|f zTZQ7MM<=mH50U7ETyVGHL*FFQ4IBU8qTvuUst^Q7Tg}rbjDor9C&!5-BJ)RC(mFL= zwjn8|1frD|6}B7p`0AQDljlq5+~t(ME>a9;M5p zCLYR$uOQtZj*yA-T93X6e}{rsZpsU4K;XS|qEUk;8l2HqB&v}r+8lsnfdVB;M$Wj% zgt|V!QkE3iacHm(-3H=E9NRpin$T<}lvu=!lA=KJYe9n}A2x!*z;!wzHaEg+Wwndx)stE9#+5 zqM$d0!fE4VESh|LezB=uAJ8HS$qtEqMBNJ2nQ4XX0hSK&q?izbZb@xrGd>(cE&6cr z$vE5|=h#DhDPuWQKNcpM4JSH?K8_QO4B`X8yex*31bK>g(gAtz&Yx$M* zl7%A{+0Nv)auSZjH)2+Q9M-7{L!qp7=5cAafVWdCcjFcaU$iea+y;X5zl8kYWdktU z%_1S!euYxD>%oXl1N0{WBVnE65Z@hI|eXqLJL6Tm&^CsMZdUQgvK_;vb zh;bW7TpaTylIn?^(n7-9zmm?T&!mrJE? znqm(KSSHyd8pE^!O%W4G6O%F-A%A3cM))~vo<{Q2ascB$Id11?j#=Zu*PdP+TFU{n zxbsFnMj6rN6Nhch%$Gyu&vgNI$zI2`-AO|cI=RpH)f}-&G9(!HFjjFs7Q!VNPfCW-JAd`NW`cD_+m-?BA%!&mxw;N-61#djXrLDdlaiQ7pw(gL~qzo z1n>SZj9uc4Z>SwM3qDFF)G#3O3y}p3fZ4r;rUa?NTKe--dVd*#5iwj&pO|S0%2HUz=A+u`8Rw!xW+9;T*RJ_K0 zRIF*D6L|C~hsF#;-w4X9(4&}rC^wH!M-Cm4lBEj^fV+RP_+w!YKaLY=@Q68R1Wx3Ui=y5gc0CBntBk zIYmsp+UVeuC(V{CZM?eNKwy?3(XvY{HZ;h@3g&lg7TZ?c)`Ti>?M$UW{bVkuiz=CZSxr-j5-&2AkSvi!j!&DKANp&RLIzY@{+ow;lSkq~7c{)u_B zeo05TgzbJ*V6$C@Xq!dnZN%Z`bpWMLOcYw|Ba`Lzxj2sek%AThz#d?1_Fc)Q%`!w} zhJoWA3Y{h%18sA}daMttw#o~EmpYuh3m&_B$+2LK};~QZ=*In z=X1s~ts~h@$mDnKMBuPGhZ_?Ab2N!9z{@bseb0E4L&>A&7LQ|SN`&@Oj#e@;MPoQi zEL_HO_v}VRiP?i6wdDfLicFfAIwF~wWiJ+(_yjRL{(#1b`ks-KdoWAhbHkU8;^VIL z#L8}!#CJJ1Oh_!KdWwXK!U;A^CsF(@K9U=;a0)RDebF$)cpRK)7`qhOBZbc$l%qca}-*+KkHVz5CX02X5W%7!?7T;5Qt#r#rZ zmHV5q0tV5kkjIeTkQO!z2M6K1_zPRvjvpEiN&U*|N|>!{o(uaUQazlfVoUe3J>_hn zPTB!$Aj*9}=A1BXg2h}Pu)@M%8#?E*qv%{fJ59s7wXx`gDL5byab4AFp1XqUWo8*_ z0irSVgmEdNpz05;uB`!3xm0R2#@p?ls*VMSwPKAFL=+~kQ2~zCYR{{X7AIJZW*i91 z)7E#6Ck6^THG}ITY2dE?OFpUwdDO-=d0L?mm4i%hOqZT1n)`hk~pppX_ z%EC!B>xA2ZUyWz*&)uXZI+|HzNM(_=pknT2jAs@eL1{^>Ay$q@3?Bs(Xjt(0$6*Mo zZCI>m-%nI)8f{H(F9GH^zP%un69 zJ`)9jQeri3#VIBU=OKZKbs6DkZ3vLs$f%(W?RoLg)1Pdt$mPF41-rI|MA_5q;yX*$ z!0>b)@~RQyHcNxJKV5Cj@;N{7;fFCN_klRX@Et^)j5<|ERvlc)9slflMtIhbktP{VKq#N0Vw+?^tgAQQ8Z0f!ym6rC`d%DX&G1PQbQrK(IrA*4GOh09IPA@(MbQ8CXdy zHU#K>i*Tz69cUga5Xm+p7)Ko=zvQN%oZ{Z2#BY!j$1k8;5rQ#Fq8#P(k-diYb~nbyrn7A+Pgr>gC7CfJlQ$&7e~Plsn{gbQldN#a7^w^k zP_J2=(>i#cg>^OThbz48F=-q$VhXq@auHpHyWdQh_?}OZH6#0Kfq_(>KWo)cYlkL= zfjg1>JDNoXwGA>+cI|mHrx0?U@jMmtP2>`pna9}|s#e|UEcxs+9FK$@ePrp+xsEI| zwYy1K4s-E-6oev?sjamq`rz}}88=%6St?orfp5q<*|^61;q?PhK_VbZrT!4ghpXlK z&2{A88Q8sgG7Gy4Pj0QW00gz2xbAvQj~lMCmn`vFzCbO3%6{1ey7)3$rx{ zV1vKp>liynW5%lZW=2Y$-0X)Yto&iZ>q}ZN8$IhZ;TkxOsuv=pzYvMYZ4zzRI=rpl ztbU_z(O}csaHNARIyW<+57Rg{yui$C`RzxWH^ z_d_ow8xqTdZ0ifHA{dl=)U&><6n9icAv*q!EIwZP{$KvoU-`f6A73xfRJHU&zy5_E zIyCU`qxdJjd64e-;=lJ}pE*`0f3`Dl=4d7Ppq|J~KVp_3^1a{rMmJ!Ov{(#*iHXhN~iO<&Ul{Z@fIEgnAP=x%AKWb!E6i~JE6GE&s?Jh&sn14T?q{-R4L13>K@;lJn#2d_Dl z3&+NQFlLP0>S9VFgdS0>!=tc&2OA3GeUfe6GZmfEIr`PJcE~H^{S!qnR!2r7?iD>` zz-xV&Bs?OSLe(@x@#bQNU4AY7E(XfT_=GOmg@sKLLlyxZNxAbtx+>;yb%E?!Z<aCpd$K+sdO>3|&%F~5KtAWw}N%=80{ryz~hcYyZpAUuoi*kwp!qvXAA zWqg+pM!(zX4j_fOmKNTm_xmK~KG|U>JHTMR$WV6F9MV70zYs#6G;yTh&@fm=t8+q! zLc-qMC@M}%x;b>{6cq=~L<7N?GAtC}E3zTLP6`59lSL$oo<%5}06giv_5;T=>{bz5 zJK*pPK{znvwC$7GRW$`Gd4w=5eMYxLDlCb9#T*30Wh1PKfGADVwAV}19uZNR5~V;X z3x*UZRR>Z7dbJRc*;8v9G15!d&qjpYb*9=kc5zY3kAR8R>{=s%(HquWGYB{o@}m^! z8^%Ueau%F0b&@V@_l127EkW_PRLov{%ApD0Vo6T29%&5Z zEw~DGoNq4;0v^V`)UfOjoRDoEI@r{2`nU?_Wk$0A(UdA>&1W14DIU*RE|d zJ9q7xS-<$TH?OTZEte#nie~xL{oBsTd{Ml2@U;jtvyBo%Y2r#8~q+gDuW|y^jrBvQ@ zFx^@I-oJL_8^87D!wKhd``p)F`^10rV?U7o%)fqhv67`GBi0V1BKA6DFtzirkC$_U zw>FqU14Jx!9g&NDlk1)2PRBzCfpkX^M8~4mY$4Q*j>OnA802V%%?uBjLy_}DlnbOI zVJ|xQ?-cK$rlt}enx8BuasHh#Qq+sVH73M)8^JDpFxe1jj2r%@zPO7gQr+^K%JmvD zxz$=i%YP1{qAjL|n+o9>{~3Tz|D`$Pq9ohP@U*;Aybj5u zkTEmO*b4^ADhU1NN)}}06p=GnD2vNN%(TvfhIfMrZTpdfEm8`YAOWm*dTDP}nVI0c zcg@l!+zzH2;XDY9k21_7X_#hYDP|Pt@zP`x<01PSjXm-Du51RyRCoFzr=b0t31r)p z)6#kb<_p^RicL9@=87r z{+XTnrO6W9a;!m=r(BK1U5TU7zmPa+Nb$J6W%tQ=y2o}gE4RyeHzc8zfc(?Jf=oV9 zsN@`x7`7NIVZ zCmii*XACdFASOo48yvI=Xb@5B1a@|VH;=1#0400&tm9yKLmgLT_q;Wa#5vkMW{{WLs@ zMKQTQ%|#sTzOz!TR>96nyEjwv?j#cjpMUuPUHkC#xyAL;*p7YMnq?d?PE-VlQUd6W zE&_=8OHY9|1T#>$WBSyd)ekPro_eAF_B$<6N7DJ1*Z=-6-RkihV5ya+005msf8~`Q z-jn|3fB*iarEc@o#HWAc@UySYy}CjGY3-^HyfBjD{E|%fQA3yqumnJTK zbul%~ulD}kPrml=0KljHmICg6`iH*v$m{=)fB0UWijJ=?SScQJqqqw>Qm-i#v*H!uh7LLNMP$7U(ySNv)!Z1SUWkUkx#@C; zd0zaqZ7G-4{1+54feKr91m(9}YLc_oh|r5F`RBI8987;S_6!09Y9FG-~EP#(8Ru^V${j0AS9 zdMoA8Ob^wl3?(~hMBJNT=39CpyZ@qy0A`mI^nX82-}wfDtG6D| z{Lw)^wad_P?TiDaA1R7$p7o)HfO*#-2N`Wd-o&Odpm?lsXc){k^ez1&#+T3ikJcu6 zTu|6JnDBr}W3;CcrOfKA48YaX!Quq3x!UCnku9WoG-bB{jmnT~rBQVn(-g7`Dw)GH z!_^1ok&8T7T?58-Cn7fbkOL?-#hl0lR#ci&Vr0JUmHyyxvB4zNoo+9j{7`B6GlEg$ zT!OohX-z1*T;sOOwyb$JYGDs*WM(e~WMdwb^khPQzx4wJFFLgr?v_`OiQ+MTq3Z0) zLJ%q%ZJcQB{?&{3p?PR_-*)##W#`dD)mx{(b$+1-0MNen{@ezes(Q_Jb|NhGd?OyH^R6cm}&>#JtolhK@+%=tEKY#USe&&Nq_q5>HdHmQ<{OJBC z4ph6VYgez{|J~od__Z^wMBh3tZr%IJZ(scSnU=Ig{dUwxckJ`K_Wu6jFWzna_~&;w z-n_gj!W?OrIxF3-vAflma_Q*vGk5>V8*hBLk^(%q-MaRrd%8pgKKqwWlz;a9pZS%$ zoe}`R-T&9=R}})a>Yx0LSDsl><&xH~Uj83`_PVaQTKb`1`NYD1d^-8@L(iX_99vjF z^Ya&fz1!>SSJ&S8 z`3qlqZE3v(0FWG?{=fe91HbuaPM7}t;qU#P9Xl(@&7ZsQ^Z)ifC;M~{{^9?__TT=u z|DV>n4eKC44Nv~LC%*fWGuun>;H|~q{ogLWw`2y3a991if8y{-Tj3h+;!+s zb9|j{e{JqdKX>s`J1u>2*I)jr!{enSDdC^`(q~jH3qSMTKlm5-bgZqj@U?&Y^}qOo zUp(;BzjC$dj%m{P#83UyA4wkm+yD9h{d#Xy*>@Hq2FWP**6S4p%=F}Y~KoXc|stc9F`GdH!|B5gcNCbGagNvtJCPAPUMa7Oz4T zN|z#4MZJSO+#<;}ZYgPy@F>{1i*DSA#1r{AaGklv5&&eJZ>~%?O_K~-yR^uNA4JC$ z?P(|MY?`V#*i4Xu>@G?l-=Txmt0E}ndx6n#4}o)x5o9orOej*rk;#1~dL!Ov1E7c1 zeahD4Pk8GNFn{(Z89Y?H+SW#@Hczp$~C9dJeVDN4Z+c%Uc9HK{-2=QUY){->0N) z7c^(BMXD!Jf4|ti-T(z|S=3vFfii{VdV4HoMT;@-afN__l?EeK+Y#W z@v{8+t#7|Bf6951*1z}1Kl5i^e)x<3?9JESYfbFf^~Zi_$Ih__*B<6$G4=gFICK5A z4}blCUwqh|`O!c3;$Q#C)&JXncZ~qBwC^wc-w$5?SFiq$|Id|jW9;Pf2afMfe)kMi z?X7SA^xs*jG{#Q8aPau<((j#t3V<^?0>Ivr-@X6NFT8R0erfK1I&tjpUw%6mH$g@5qD)F0mWC;szizwgr5|IJNxJWuENfBO8`uiy9=|NJt3de;yC`4gZ0 z+Wp_W(*x`t`x`I)aHIEc{?^%lcDFtD%C|{nwvALJz<4 zx6a&2lX|;DW=B|g*RvkY?{BUC+TVERa*v+;@hAShzyJKN{p1_( zsQR$;+<$oL8~^D1&;7#>rvLE1Kk+x7{k}i{jem2itNVoju=d1%?e+`1$Nt7kf1=j= zjsN!CFW+l5Uzz=5|K$tc_n&<8-&|V<=uLkA!Jqi^2X6h7OaJ_vbIX(E<3IYu6MHL{ zFLiofzW4Wk?{4|CJO0vNIPe=k@aFpy00@-I4G2l+^qc4Y*iW6>R=T?8vT9}f(Zf^q z>a>*83sJx#ky#Sciq|N4^>$NCxNVZYFjo;t z95vr0c4#!Q2mr*49ihxUFr{9hbhGND+#5xE}{65H{f5piLQdI|<*z608p_S2~ z=aZmCA3gLfx2RUK?eMS>*H1?CQZ=xvmCSZwovzrh*IeWT(PIbg_=iw3_6Vj?-FN-8 z-5^M82t$>?;Ef~jq?KZ3TEpfWq|qYUeEw+(38+tM9T?S>m;A#e8OLgB|EOw2rQF)>}~ zXFEF+amZKVWp{A9wH|#DB&r~f5;4v3YGG4 zn}}KX#Z4N$MOU3+myI*aMlkY2=u%Yx!v~zwt^hHaN6z#YWz?oJ080-OB;q9iG)AH- zE{Q6(w1H*mJj!JM29eb)GgVRa)5`lm(@2V-_#SDCtTOS@F(^39>?`d|-jqfYiHli8 z30m12=xgV?5Ycy86-QKmW`V7V6V)2^(#jm}I`-oJ?NiN4clrLciyvNHSa-1d*0*0b zp&~Cx$Km1Q# z`rK>t-~LxOUVme84FQ0X!_DajtvmAsW0AJ_#D7TBpz~Ba^LM`eI~ThEF#pd#{Qd9V z_r=fe_|0Fs)dK*m-T#Htzw+vGiU7ZM<&7VH;>lwTyt9l)XTR|2iLd|3Z@jaT0>HvI zZ~fNS_x;!xcmCU-z0p(N>D2Vewafq8|8nhN5VXP_`}U@{zk0t1u%%v`d3kt(8Z2!$)y4}Ofe&Las@BZY(H-7XR@2sW( z(D}yg-~PtFKl431fAeQ=^lHf`f8vR?e|-8^eq*7R04%J(@zd`D%LM9CngRf&DW%b@ zpziJK_o|=RJA)VQJ59E){?;%4`km_1TX)yhl<7AYbMHI$bXG~>g~at)KOl&&*HPGP z0fWkS_muacLmlMh%{a!NqdTNSk=c3catzn=(F1wEA{ZH3IFIlqO1VE*vZjXB4wIUQ4DO=szB<=<@R^i6S^b#--K)$=&SqaMVR$MS03%1G$;^fq_8N-{S z2mF3T!fF|=4Q70e9?FvA{^YBEww}mM{-VfiFsbQ&5Fiiid#OYvaMIR`DVCl9sV1kR&3k>*4IL@A}D(r2{T_C#@hwVbu%V<|OWgtJGFx6Z%!&V}Xm z(!~C!UwY<5`&*}Pcie(1RFoSe0>GV5Opiaj_xfcT_?YCR{>;n!KK0`EL;LELTCH1J zY}NqUkgnbMxnJDzQ$P0kPk;aX=`;7=dHeQT=T>_J0DSAue&N&q$NAG|?!W!^t+&qV zTMC(YL%rq~b{=|X{HMo3|L~V@>SLZeX^R6cw9tL^ zzj^1aBNH$F@jajXo6mgL>G@y%+h;%QXiYqv)zvloq*A(jb-A{$+33P@4S-R7ei z=Bdf)>r0pKrqBccg!T62_m=4&c__J%z|du4g4IXQ`R-_=1l|Msh20kZRDNX=dNF@*S-n+k?7#DjBQUEjt1mIGo7 z0V_I{nc}Di(pM##!69)$)&9?-duz80GCQFAn>i+I0I&^$HGeOi00961NklHG|TW|g_oX%mgn7}V0DhRAqN_a;i|2B7q2J`>7@q_q>RFd%PyPy zPnmd22DtPDrv-=qRN#>#JD|ee5c;`d8VOrn24=}p#AQ!kK#50%kTa!y_s65OHFdRp z4#o}ONp8w}RB)O%M!g`C0Kth+;PG>Zy@cs*7QxX(u`&AKHDdCYAtbM(+?F7_- zqd>pVOvgM#4iABj|B7Xstd499d}CwaxM(J;$NiGf5(|G7Xf%r-qv2435fg1#5M1P$ z5JMZm{oAB1$|vfscWL?7>GQW+1OVy7>sM|ce0KXpa{ED$)zK$N1OT9p4H^`%yyHLm zFP_`+;PS8j*6CloyxN;O@xT7PDXww-^jE(9m%cUr?5Q0mPVM+JKXv>+xOw(({oSi8 zU4Uf$^q0T&7hj!t?&%#TPVM-ypE~}hZk+jBfA{LL|7LXtH6y!Ee%FrL(aK-^tC|yt2mYnm6#0V$tODo^_pFVu`m#_T5-}}@L{NS#C@GEzESJxJ2o4dB* z`3;@?O-Yha7osr~Q*XMGwpTj;`UhV>({M}J5J}ozqxh-P-CkNQC807+9q)$HEL)2z zwKA*`V;E=sbS3SqtpC~%y?#cWB4osT889(^bk4NNQNd}cR8G732VM1r%rR0%e3ALA zeEDLpk12|hT?i4HX>ifvBShxKT4vRn>Cb@^_Z&O%pr}(l8A|Wi#)nMxxf#%Z2m)&d z0HP5t?WeI5f(erB9)bxq8IKMDAVFh3SvOfdru{tQr#e~6m>>WmrsNE}%r&wM>3HY^ zkT=3Wn?F363%J(GF0?5mZ>l#OuiVWD%Ja-)5ztKnwk6-9gk04I2cmjWgB!m?xepG^IdE$6LmPRVV{R)0 zq0Ai`#fCQCT`apX zux-yB{le6hzx%&lICFlr(`DT#!WG@sfSKDTj;hLrA9rgAGPVJ@x=!Z z0?#jqOop*IT^9M>t$iT(2$oRs$IX2~M|ZcD z9pRkGG9(}~gYAv&ugXe`R-ZROCPb0Ye#DC^*FLz`GFHc@*y-RoS%IDP^$l>`ii!21inI=5}E$WUBwyAL~wE>xl!`= znpYleD!5R|n)970p#MX(YK}yClM-%(E`eGDNc5QkwgncWV7WtU9diIdV(dGu6Emo6 z5a~mfOpy$Em(6W0=L-ahj6H00FoU(V{3k>)(s>YRj>l#}XMx!x?-n&n!vR4pd} zfCt8Z8bC1 zc4E8)^*yy`|NOD%ClG+3)BWZzU77leCw};g+qaKnV}I@GpFH{RfA4gX>VZlxFWrLr z%Rjth5}-0&*|V?V81~~wj_$aB`TB}K;c5rJ@5g`ekNnV&|KVMgtl9tnXYaq`ElZBV z0J!Sh_a^Vm<}{mkc4t@8Dy;$_2`d4{Ac2SmjD$px0ZYaKgvBm@W~p;cIEbJpfCnR|)x>4xaCK>Kh8_R6KSe=_E(J zcEeg_*}PGD39NgpyWodTQax?OfSp~ou$=Q?82~qksBD}tQo&5#WPiX zg(As^p^&tO!Z4-VC`E?VHXMnSFeYlW!P3{v05hMWHlEhSt?_?{$t{n%hK+AptFoXN zC`uw~*=lG>f<^Mlv0`Shgq_*O-VIxi&4O9hHLk{xfjFPeR-Wq^HuCgwSBwTMYV0CzTj&+Y&j81QDC28I78zX+|NRC>t+?WE2O_N^iz81(H5#KqkARp{jmx zjMKq#Obr+6-4#H`w%u~w9lKhfBiru0885&5>T54sI~pI__4utfJ-mDB_lu7X{rUSp zf8b45e*L$-;vHwt?cTok=Fflm^N*OAS99pkKXmtH?|j~`{>uE}eY<}D*RQ|sUfOfZ zUH|j1uKAvKz2WV2=-w|s{zt!d$9KQ){7`(yo%j94xtD(ZcYehWpTBxEYIkhg{=2_& z*X_Guu6*mxJ9d|MT}3*ySG?x@!+-zaW8m;qW!_mTYl}K+W-LCRo}GvJ>Rrh zx^v)z5B#^^f4qHk-=F;ZyI=LK=Y8E7;ve7okI!3k@Q(c-`>~sDK1zLTGxx-A z-1U3AE`8lUzx+qfTQ|4&*khmD{h1a$i_2H%&`^8uwlCfJs@HwhX}|NgyVvmDc68%U ze(C5twtV&bUi6kZ*m2XoKYRC0cP+AAy?E?PA9?DcAG_jf&s%%wj(s2hv0H9lsLds5 zYwn5Pyz2wIE_v-cFZ+=c!@1pmbpP+{JMy}3I{$lrs?@k= z*I7IAC6J*k?C#+#;NT1*BUsi=>Ji5X54Ekj#6e9X0s#>RK*R5_++^0Hke9Z?hBn#L z;?P6nD$4wZ>}yh$l7)RL+W$j zQ6dQ?QV*zn0_!a>XXe0ZfkO2iExT`l)3Q1WLaDX~0R5oFuYRbawJm?6KcEvR6+svX zj#23Hgy>R4RJBIMmk{&>D@D_6_2CNQwl4RgwT@vcvaWVN7T{mbjIY;S%=bw4QE1t$ za5-hj^J{0CpX-OmVxnitj}=uOw=57r z=}hb1*1HiIGTbxto@ClP^*RffK#DF$Esi0p#$hM)J)%P1=o|Zd*E5wS!AJ%TQK~7Z zONkO?mY4`g?IXmAKN(dhyabrd zEw%&ImWWf&%EM3y2>@CmeSHs4)wrAx4Y{V#BdZfi2V&`JQhm6~cAo!Oec|UMbwZ!L zl2l*KO=fF0{_*0vhp|mwtto4rjGD32S?P%i0kdRA)OG$4fe*Ol75_Ah&6-2EFVO1V z2aXH0u&RTBau{w$53IIWq03Y3uP5;Yxn|!?(f|v}VSP`rTs3<0pS}iu_|qSGBnip6 zuzH2#>#ms2GZpB1b8h2nfBan+fA}{(aPQNt%W<{MbbERULWeK^+1GsA15f_f-+gS% zFT;#BHCG)kdGsd)8eQ;$fA)P}_uzl|)lV;U9zIpUav(U1TMYW-*bM%zYqoN$%Y7&$ z3VEhWisxQdFXj%*(yhciL!BDPU19B$=*rAB&|f9wXOmBqkTWAh&Zb`JB-+)u!G1si zm=GqdR<%}X1On-TSuhT7=;P%kD{d5bL_}=cwryK&0~_SY!i+_X3l5tm$;|C2=d7&+ zz0MlSkDw=R^0a2zbT&5_Oxz4~#}}C!GGT1%Ni9=Y9EHNn99a?aB7xW0`nx@hFo8k& zgAS##I!bF?thd7adon?CT(tmOywPDuB&WelTm_O8tibuy5)sE$!DREP{L>1NM_%&d zKKb!Ke%(L*j;uK+=;Hb}hLvFv)3LLyt{WF95-YIOA${YX4lOFKB0?>5da~$4Tr2r-nzt~Nbu(E#L6S&8 zR5GazBo21&Xn0H}x2|#y6x~5=>5!Z{K<1*YB-{*glyyxU$FMoe)R0bA7tNN3_?9fv zX){D(Uuib9CrUJzkS#HSmRh-@4|>B~GL0HU2&W6R#I~KGT;#Qj<8Im5)vF3S<*4TfNR6cY!t`U|BVkIm%nVHPIl!L)4vn9D?IYY7;n- zqpoaCpmqC0MZw$&!))LsLqTSi%_WZy4MAr`&L?`tf!zQw7*h5ns&ce#X=soLtn+8{ zA-$Gn5sO;Gax>%Pi zN<@pfQX`q4&UTt}E`9U&e8ZvN{y(2N+Pjx;wvY#jss)QzJM-xK)cy4SrP4g{R5EF0 zd|G$iK9;u9Z3drEpq=VGbX*iR@zyga4-c{%D)+?8#Kep*n9YR2Ix!`32E&dS!%rE( zqjA1v8;CxEP`$q_3O8>=B*^4O!qOVlua5W8D>V2F~>HJil}SsW|Y4^l5XkNf?ubr3GcB#TRhAn=>Kz6a%~aG>-OVXl8-~zC`^W|tp1>{4#M4wf zS%D?#JW&-Eh@kj>ujwGjX95-0F;WsYnzd~_hp25^*;2%k!+NdeEtS3x0};u54I6r~ zS2F=7_k}@fShT>2X`!hk-Hcits&8WeqX&Sr5%uZ?} z4r50oDXSLm>(tq{R^KsexyxD$t5)-rR@M`6Of(%|i@o#5}42t4qNvbLV89!4O*USiH&ctAdHLcA1&Q=<_Q{9$W^Kw+%n+h@%Or&{8 zI3{P}LOLb72mIqDSEhaZoxwXOkBIa;4Z$>_m9{HvD@uO%;glZU3naoK^9(tI7cp7%D*s?+Q73dXH31ORQ@HcdFJH|9tqvOPx> z9HX$%r23kz!1xH?&>3y*pQ5+vmm5)@S{8BYn;z0cu%iZsng{Ys!9!CjVd3rAkxZ4k zih^@8aHi)V%1@#$mNJx8dEL`snp@J_FMXqXtRn^>BGdBz7*mgoHX_E?%7EBOC4;Q! zg%p^SQ%q2}d zAZ{C#0v#q+;)G@BJVD;a`k z!P--CLK>rwxBNO8BDq&q27zVsp2*MAh&7`(Q7kdjF>H!^(BzxZ4P09en zn3O~jDTdrhSIGP?)?fTao{1*rnEpNt^-yN!#w2@$OIwCTo$BEui6gAsUNnayJTv1& zD-U+FYcHs=26g`PDS4AYGT8>#GQ8<-f_|9 z(^kQ*g?oSfj=#Qd0p=h}>F>ccskI>VS>d)%-+yyQhqC9&-%C)X*A!it7&sC%y=X%B zC%IaAM4}nl)k5v+HCTTFLE|52#9eHAd4j;p32AaHn3odEC3Z^1E4KO2>R}p3i`0#@ z4t1zI$Rt)0&Rv6O$*}9jG&Xq?(Xa_S?fud9^GX+VPLb)KM{xC-pc&* zE-Z?Mr4lP4N5DR~o(DIjaeUsK z*O?=cD!atztTvp_W5L#}u+$zdU_Ut&y3r*psPZ*^Mue1^EaVGzp**)-2{OkUmM^7f z=|I)doB;ay7LK)l{*9l??#kA)!u29PotC37Ih5jd=WyNx0W?Rh+x|P(ZP#maB}|Yn znPzS3Lw(IZ{9Ph{OyT}{g!%;elKo2)c_?_2<}OsStx5=$0?(eL_S9Gxs496lD&}(p zikkg+TUiV>EHakNpCD1>e%YNZE6Tbl2}B@7c8)eXgA!RHJ`vX`9!wXW!zYA7cZ_2} z>2J00v}Tijyd#t~a>D;g=S(7Y99<0@GYalnK>Er`(3)XFA&DX~FYik^x#7nxg;IokB7T^Lj!kV6&8k-T}aJZGx1d z31*(n25~L2>A~5WkfxMa84@iKwk|A}s?-A=r!sy{&XN^z71}x(ZLFB24*6!ztkW#3 z_z)7R=CS8>Aj{iSyh{*-&k3?<@WNfl?L>;NGmCmJY%^oS&}M&{E`)>-RIA-;Gd0nc z#rrK+X(pq03Uc1m6f?_L#+3Ex7MW3@#X7M{42;2)s6_pSK5n4Hb)(|PCQ=$Pc%`&PJo$*ie?v6qvY=tXmsX&_Xim4u9L($$gx{$K&1}s3*jUr$vrv$ReDcg z^-wCZU`cLmKZ%P7R<9<~zE;2J8-P9uR^rwPJ1qVH0JDtJ(mN#<-xBUa@;0*-Ai%_x zObw2c1cYc#2a;^zu=_q_mpbcDYg8d0b|?-(H14D2;9OiW=ZsAja=kFdoYeA=IF*mZ zh$W)Euwyi65)7RwD**!#A#lW5kycCMU>K_9V*cWgO@m3kNjCEe7<$8cCW9>bkH$}l zcCR21?Q)Nsf8h-ZX;4{r;2^jel=Pci0pxnUD^e0;m9~sDR~<~@zY7x)vA*V5QUQ3n zqYwj=&Lm~6OH(u?P`ixscjztxzo}WOnv_d2tzDt5U3KrMXp%|Y?TaiCgnRPqqW()k zA9Y#Ni-y|MLr$e3J+C!sjJm0@BB9l?!gQv1)paKQu-q&016GV(aT84dl|(L)P{++& zRdXWlBLm(|M(%;!;sDS+G00PuOzW;u-zi^VrAukjrK#Huk+=C#t54btQk=C6+U2!a zH5Q&R--A)tG)>#K0O57BswSevM?eS-#G<^2C+{CbKOj!!aab$17({CfEYZ|QVswG! zmYmiWGeF6eFO(<@CYetAnxv@M7_5}Z7aQJ@+*NdGLTJuz z`+p9m2A^n0Hk4yZEmev8h7#GB1Y%2)IIpdaS8Y0ZOC_;nCScr-+N)xykkX%(DcP0z zHGaGxnFhj=#mzuJunW2ulZ=T{5bs${rK{EI*`G13=?(LVmDn)X0>a`=sj%}`W&{JI zYw1$KQty1IW>SPoLU#$mOHqNDFpd~;CNV#5Twpf2tPdHh%JM3VDH-iH^YYf{Wy|Bp zd?ompp+;LB5a5u(oyDkO_GiZI(Ajv`nuDJOCyFMOSc=(!V*IuQGJnR&-4g41;Zs)^ z^@&ovTyd;W7@Vh!T+i$A`FL_WQ4`vVRf9T-hH1qxg)|u`v`>j>)^%$0mU`}Om{Pv9 znT|;{5@C=+Wd0j0Wt}!khvY~kqe_Y7gz)G~`J`iHH!nL0qBJK8E}N%yztx;ng8H{A zYkH?$YN#Y$aj7F^zi4)zKY`QGgSKOIz;y0mX>wcEUk<0U0J$+~U`l!yrLiCO$>2nh z?PVyLgT>LqOjh{M$s`XCNIXc73nmsFS=L6BiarUn&{DjGhV6OK5TLCNQZ};LdIf4v zQLmcrBg<_BW6b(akoZvOmM*%aPz?7_(=;LOgYk(l#ZlKkbfYp#U`QmY50rV~Wwe01 zYUr}GS)1^=QS-U3^>@*goF0WF(Ky3Lv{CPrwCI)bS(?#C+1GMqB{{o9dD2NBu5F%thj8X~b3;X>5E;-$u>99s@kmxfbIVq=-WHRTMVnmacEM8CM62%^3m z#Q|ZTU$0ZN`6h=>;a6lMnK|WK_HjxrWQcRS<54l~G5w<94YBIGh&~lH(sLDz=}Tmp zIZINHw!gRwJZ%gO$g*zQM7|?CmpY|Pcqi`Swt(D*jn=(e?bVH7I=dCWtp0!`I}%(d zCLl$WI%cs8T2XcBuTS}!I0dh!^ezmJNK8@u#qoDQ5O11x;9m-;1vox1u9cy85{ z-;_Zd1j~0dWG1Vz=m%8muj!&0*#0x~9tsC(EupgRk)n=oCoyE^U}}H4iR?R3v%5iI?ppZ>2YYjh1T{X z6taz}s@FVjmY0acZ%T;ao*+UAVn8Wish!jCk?k2`GEG%`*$x?`d{KUQ8F{&9N{P8z zh+=g?LJ9NMl|opGkI^%yf+w|*|Lo8!TrVLp5#%`LWtJz#QmM138I}ffklS0&ELh2d zifkrPawS1Zp6IQyLk=Pz7(6&_q!)rv%xu8KE5Ym$(`bMEsINphX(&gNzcF>MVdu zkmWczEP>qpMvU3g++*_$3l;SuM2YEXN3@D%@tX6SQZ3;Bma8Zl|0lSF>d7-gS0;iQ zG5o=;$Z#RCh+^`m_|5(xC~H^nYjSh1gF zw2-Zde0oTNjyy|Bpo#3FVr@A}JuE-i7nV;{yqODo{m7|o=Bo9h%`Bc+7G_cl*)+^7 zc?-_PF;ZV`WJ2UOB?c7Jqu`_cuBUuqQg_-`{emLyL%&h$iVleO8g8MJ$sC)>;=o*h#8h^r-qpFX}eO{x+5lgT#7&9nVlG zM;@qA-sQ+Q?eRpOt>l7cdQN4`D#=wX0(86;Uz#$ z;6xG`3ngo@*APk!1vK>;p^H%W5r}y+xy^l+S%uvbK1fK*WL8!;nh0$d(qaxFrDD}MpOM!}{NH1gNEi6;(wVNyvM8YPT#XA7QjBa^m`d+2pQ-Aq^ z9tprO8+GPU-!gMbn866eiK$l5HKe;SPC_W0dRzzgNt)==nMD$#N}cvXxfE@n=u$Fc zawnO{L_R0 zB>6)SJ!Ug~cte?pGI>Rg2`YIN6)y?1alp&cNetSAkBy4Xjd#X?(yP3cr1Y3V&zVc| zv>|Pm0M}?Z7A*^XO?J=8h&V_cCKePska81Iax$H_FfA0_wql(s%RR2_ZTHkv$8%^8 z3X^{-Q2jBmwxxu7j#qB+4CVYxs;c=5wV7<~67een+hfLRWFST}bUKo=sgY~o#!0qW zCAOh#Tr-HogPl`x7N;Z1ue75!aWo}M%3b!n9CG4D14KqH5ZayiA|c~7)^+%*bLoRPauGuZ{1{3*o-i)GS= zg^g7AQr75XPg9EtuX*97Cm-CkB0-|q<}!zh@=T)c;+J`=7HOtg9v+7ejI=b7%(JUrs#wMmiu585wXTdYL(;AfeDFX#p zi3olvd1B>J2nEazN_ztPRYRUd7wwPWrhqMj#;hvtFi=xO>ms7Kz@=$hU@RQr3-gTG z{ud;euD+@N$nEglk5+&kW#8GA2^Ez|-qmiFk{={?p3PvgnhS;tC4T|fY&2pqvw9PE zzuto`{3#ii>7nGP`HhGs--Vy)7}t)p*Xj+k)@v3-@&#b2Co%6b-v$T(8bAUB$jpm^ zBVxZb?t3W_*tI7fjM=f6#Z$~?M9w+V$v zXjI!pXyeIc!c?xe`m9<9uDyb}V}9o$6h56f)uNr$?YLRvrGmvGMw)iWehh&oMC6l{ z5wT^GA~pztSZ%8U)=E*7h&DEQ8d0?IR7vR0OJn*X+i)>aRtuGN_{^9w(YC@t{yL^+ zWfyda5KM056KguLAj;7+-en0u$3kz#&Mzp!rMh4}P#NV}3C|2>n@@Cj$0HByfOQw2 zzWGddoyLm`QACm@CZpu8xnAx}NiNSCsBdj|*`z^AGa301PYA!Nc#&n4@DbAxXAa$5 zpX>7k(-RwP=kkM>$j_~42}EmFOpYw?gTw#NU605C=wkE&tTSzpNX0>?5YTGVcEhtS7{qr7z#T|8P@$Mi zX!mkRZOUwRKt;nlG4`|7ahy&JU=LYBga#VXknuerU{s~7Enu+b3Nk2jk z+f!-&q=GA>4|RMS3PYd5${5$HEe)qLBWjbN#7Ih>f%C>&*bLdapuNSz8E^HU$x}Ss z0n;&@3G@*@w_;}mvyBrCfYs-1xe&MA^u&=_N$9~~Q;Jq>SIb0aKlPU*@)oCTix^ay ztYYRDJCW)gDlOB0IFUB&E0_d}R8n;yXk-MrKh~5?n}SKU4lNyQ0K2Oz*}aaj>(2W3 z1rkfEQ`VH(L6osQxUT~@6r&-j1q)I=FVX|l@3eP7fi4LK2_l0yzF=D=2Z}^bRmFv7 z5J-#OQRL7Z0f8odlt^R(Jp75NAO3Sb1X1e^uA~ljq_{dXHTlk}l{Q1b(jRZ)rR4`= zz>|WfK(e2z&Q9W2hje>qAmlrP26Bt7UMuSt5rZmBEPacWA#8?cIa788|Johw12 zYNv(!V!ESwtDCL8L!OxioQ@eF0sHw29j*ByPwe8uZka!2b&nO5{$$lfAE$IjS}bQn zGm3(0sU^xkig1?~r4>N9Y-yy$^0;|Be&8bU6$X|gHC zOk)-m$|W+evw6VV%O}KdDoJtj?m&-F7m>@?v5b**W`fRT(nwIe84U@F-v})eS<4vp zwEM(B$=Vf5McQX1ox>lD#_IGd>Db{$x}+l+1uGlZ(LYm>9%@Lw3s{V6CDM zy#eBMM$F_CHDfgm$O=l0&Fv_cf`*~b>?+&KMz$AQE__NJ1zg6ggf4f41wY2T3n-p=fgHh7_qxT&^N66s^5L2MjicRkJ~6m?bwuZ3H0e zK)8n&OnO#hw%T(3IdTb0LvO!F zszv^hGsJTIv)&*Z!LGeT9@sm@TDzRmbmCemm7d1!9#noQU`W;*Ot!5hs=e5OQZZY^ ztC0je9g|V>8(r*E1t#{+@3M%mL{m-}HJ-9?-kFLPcNDQi_mRuu(>;t=gyA08NdY{4 z2XW4FbzHpP)XuP5NI|xi5$XQif_|~KU$!EY`qyd{0kCfX=Gh{yChsS$GF}>@Y@Cgm zFctx5R-y?IX>t28N0fs^4a)mwL%^qLfM2TFwrw;Ld{BuaZ(29nIYnU~TA+}%`3S)5 zP*%i@?$I7#-r<}uC749S73RHFfvG()5r0qRnCC-RtKAgr?{SXFaNH6u90D`aGE*C5 zz3n5wO2>(C(|KpF-gWQJ#T9M!v;#;T?ByM-c6*!I?n8vs=mSPP9R?jj%*64UH41@@;vV+ruiK|$1us87Fp{ivJM(-O$P>~eK2iDPz$%wl&{oC*{ZgBom_rr|qcV+M@lGMzu8I>vrN zk#G!O&qB)zu__2gu=9oC$HiD3w8hNbe*G?vxU4MoQwFOo(2NWM<6i?EU%)`eOA zx%w0%H;oxKxZv>;C}`OLX0OzURy0n8>(4lC)!s+;j{A$AB#@}FNsh9fB?>MS%@Tw? znsl=JL<|+j80;tC1IbSEaqTGH!#|Vo(CwGxcf1vwb^!p=T?D>xVkvhAgnA}V$C#lZ z(ei-naR(xqc4Nc}`MN!FYbpn?D4vaKD{Kf%oe#eeQ-3WFOy*&5 zmu3Z8wR|$noyT=&+jRJ2Gr_Uoq49nv4f$!oB_l!UZwvJ{CbnE618|@yPE58xrS(d} z_CRo0)sq2-U|#NEm;oR(Ef>mMX174Z7-tu9idw;l_F}NSjpB+$d_->p0T4o?519`p#|ias8h$i_#a~OVcwYz2e{a72T-B0+wt+PUe+z z@~5)It9FqSmG(j?AHqJS#VAbJ2!Pf|_oiu(gGE+yN^pp)iUKS6IX*VNO2gnQUnB@x+CU+`fC*4)evcS5m>EjFMJ zXcHE^V^C1&=_6KTBraivTDiq*D#{*qwmSQReb74#hX`eBm3kZ67n?-*^vdK(UAwfr zGo#&K^(CC0k|=O+s<6_v)Cs9$H$*f$k84>axv4*0fR$h_2~DC2q0B1E7z_O-M{)5F z(X8CZP*6(%i7iD)1U3c)WM1SYxLCI;LB$SyH?02W=hi_x!JlX6odSdgw;r1 zR@`fbO$;gd#dQ%VEJY(?Nxa?U(duv%1az9i>gDT%Fu?T5^roML z2CPHSuRyS>G7_#99?F|Diiy$8jB1y=UZ|_!OLr9Sf!ccgR8SP9CC?-6xF3$ZnwtD{ zZhKayW>_cAM)6AdiG*j0W%Jbq$kN~HPSwP)qG^0JsOV4$5`n1EBF)0|;RPI%Ta59Y zPEAZ-j-`>%oTH=dkgF2ou|@9n8x{>z%w?e}*feplk;hS7@AQ4~Gt=ue_N(|&(95*s8gg%MBKczv`%GTRlGR-FNXxiQ%He2M=7vAY0%U*lSOAGSQB=L;sr}?^V$6_I3r^5CXvNC1dDSt%VlEALI z0}iEVIdRGEt#fNZD3%ALx2J=oM@eOZQhHbznto-ENR_pTQdFJG2+Nt0;w2FoFCMZH z3?-tJi@z{ioa{dzU@(+yB#ZYfVIrwG1XjWTnT#z|WKaljm^hKM6j(r^`3h`q>UqQ7 zuE@Z>-#!`*)(a`>I``cb&u)cD9TloKoqZ09_!!1MFoNFN$rL3mJ2)Ck=Urs65J%Gj z{TgheQH3GW#P7S;IF}&{$o{lokf|XhYtuHXQRwIi6-KjHCt2~!UppsHancpELlyi? z3KZ?jBKhH)a?c*U!(y=Yye=%&}a?h2q| z+itn;j$LsNEY7c41;-W^X4mAi6jbU?z$?*ME2s2@Rpjodv{<^<#7L2-bFa4B6-6?i zyDg72&!3U2w(0H?jwYLXeJt<3=S+ z^>N|}E5@YpBiVnHg*PcYTrN#B_U`E}$gGUIEu^25GMU*q1e++Eh`0J7a;PX_B}6w_ zOz>i6z$Vf()h5fvGhg9LjNv5$A8p2}3;FL5x&}kpu9wMpR^{T9Z+rGA;g}kk6-1iV_TBrLzrVMuz@B?P{mI$2cf!IFk6WvRHf8_>5+?F?TZ|Gxo+MEEs!w&b zRW`sR6y;+jWQq)ff(7RNtxn+Xt64pB_sp8bdlS{{c>BhxyJWIxFdsoXcX44~9O2RX6&W!jVHTCL0nF5@6FXmF4UpF>q`fXb6J* zL$dH+qDRp(kzsT!?HB?PP0V9CjB_tGD7i(|lBu{6Fv*NinlGvQKM+G>Nrn*(FD(h7 zqVx$d!YxV(lP4jJ=>%1__cO)CxC_RrMlwjw7?xhG?GiQ(+vDOIS<5_r(q~=N0{N&> zN9-JBr4ye4h$f?KNZ>di=OY)X_Dcy9W}mXFnRx`sQ`)aOF4n!{>5;s#!Zo2vva4sA zt5djIV!D|@QFVG}*2J=hR>}NPZ=wJ_KAG`Mt$Z3lf?Hi;}j1r_Ig zCoI3aR1wA1q4RMYf^p&1+;+w9OYrq~&*6C4{^$Zm%8#;As zX5qAuBfo4xpK866G`OI4YI)Ssd; zJS(WD7nKUn+FtEzj`;L$-N<8iB`s5{4!S#>-tE{Y)mf4EOU;;Y0&gc4(?FbdB}-QR zOxS7#%OO6YErT(=q^}YR?=6032tL_uE=e5P`Q3 z`o-oY>Wv;4!2MYHJY$%N1c;mZ7#eD+WvkG}J=`MzG6M{kMh_%HZ43x_**hU+O(0M< z>AHIq=TBML7N4zoW(j(bS6tfkW-sg2JTIUJ`iFLfBMTZ51K{%)H5)9S*XqNdim`+t zQr~Q9+$tE)T18GTQ=%$bfr!X*fp@o!E*sFN$*qP-pi;Xspi|6Q5wGZp0Ekm5-4d z4@gmpHHe5!(=b~P3g`bNPEh9{7?2CXABMr^18h4m@d0tr^w06p?kG_grT)NldTUbd>AAtHwp<~1x z>+nHVep-zzD^$f+!b%CGy1W~RmEI7Zs-oj;oivkT2n^@JO1D?oGjSl((#>&&Zwt!nG1n%P(t}x#~+KVTce!G1MoYSYvClA(z@lN_KwLV9{kF?`sZK@+pXc zWH3T=iG0ys1E`j%o?O@FOj9vmeb^3h;vkXORAlF_t-%I0*oR#ncI~wim)9v`ET$2A z}x}Pp6CP^RmrWCbpIB2;jSZvHQUg4Bv;221#i+2{pSZYNQ$t!QXJeTeBC0P)0 z_WP$~F52>fEXuk|2q(qFKweR4uz^^qh;2S05P6H4m2r`SoT%s4gEeIOD>vk5ryvQK zh<@cR=Ou{N8L`1{PIqQmWH{TcUm@s~!hlvKgQ%Wl3$cB&&sge#C5N%op!+aL3TEGjIcf<@(bMN(Nnqa^JvnuYO2bMEwAU~;M`_t=^V6WxQqZ48(c#?g|jp4gZ8f!FdDh?s4F}{gry+-qf#waQYZg#9a2MX zTA`FrhgwaAxmj_7?6s*_F3m0SwYaZhnCV^)_I>C5G(@P$)N_l2EMWN z!pk8k8NCc_a*9n`@bfDlG%;9Vs@!tzr~SVyc|l9*qgisTb#FDFz=woH}E>xXRCx>VB63X-SwDY>d!%Vlp_yxwxr zm`Nn&B_|AVn1WM?rAh9hHeEX>A%Sd>!}ce>_$#~_tl*$XN#6OUl_XY3M4mJr&pA3V z=F*_<-T-W&)p}y(y8A9huiQ2|(Yaz+AvR5*Vlcai>FHP9Y>Hy?!F3_;cCt?4)RdFm zYFSNb4#&DxAL(a;;(Lt-*IY>ebI?)5Tj;%5Wa>0Qy^cwy8jD4y7hs)0Mb~LYnxnvO z(n4hA*);TAKGAZ*j9G8S%$)FQN7bdpA~VY)UVXYa*eR_1)S2uibJv9!bxTNfsS7Vj{ye!X#PN`i0 zXt0sBZn2|eyM(L@dRvV+GlI+lZ^z6<{p#PXl<@~D$Cma=nW!g^toBbGM5%?>cqdTW zTraVMWZr{o>Wbx>bs5CF zqd~XcM~Kn$C|F}sg&_uiW(gc0^Fn(fjnV_dX5~;2pKzKQr$`i-I-e-1W+1);TQUm> zOB*En^pHWf6s)h}3~HIoN76WvTbl{rZAvO2B1ob!D|&;p>PZUw;oUuu2!ee zdW0Ab020NSuv82=M{y^StemV?1u|+7vyV7_f?$)8f{G_1qNZuEL26@n;%V&RN%mSy zpW?$!j6)FtP)jkfJCfNv!QrY75Uo!s%cxPrUq#xaiJaQ~34oH1x%%N|rxOxo=-G}o z2%O-xHe6&yYZVQuZCKG+k|Axp@OkzMaCzb6h!dT7=i~u&W0jglQwAZj>5|lG3e5y; zd)AzE?N!iV3$s631c`V`RS2cmI%*r*dEbQBuKbTlSh;ET9Ia7(>jZ_LK|3Cx21QUpCnAqeURwu+^%NGBA zOeGaXM6!z^R$~jZJA`bfc3^L!kb0C4&keNm9%Zg%b4|A!G7pQw40KLA#7`x-XxpZU zgozM{+K?%TDQofLc4~1=F&oc%q>jJs4$G2_?7UWUb2h3t*DNYJMV%$la|sghMI%7K z^v=|sZh9@N+?jN#Zuj*PZE5XS6YY)z^!H>++j&Zv9#0>?#p34VSY+Jk!e76T$Gz^3>dA(YZ%22%hXS#Yn*o+cm-R6$UhG0 z<2nH|q6ATl5YCOZv(ecGLV42E!q8jYzaPSFu|gDq0D>$50=0}oTzeDYk;t+{&KGU^ zLca?|O9Hd@eHsw+0?i7W)p|=28M$Q=IykYJZs=2dVm7K`C4sFZ564rYP6H=LoaiKi ziqcvVU-bD0lNjk8Z6xl0&>c1_bl5B%wjPC*&tN2WdaYhhS9=vxYe_I9%_OIT&2Al* zw+T?u@C!!M6XPqif@fxZp2WwAyi=rG77j7?jPd9?>~NAHVK0`nSBc$|d2wm29p!5` zcqYl6PX6b!4QxeTdXx@|@~xA^yQ~Y|^@Oib2BLEs*qdpl))FQCpt+Zdo5FyweI6<5 zDO<0&!yy_9*;6)?J_e`>@-Sp3j+wcm&*LK=EUX70-G^hfF068gs6KI{-;EOszi-x;j1poSNg` z3GYXz(w9WlGS08n=OZB~m3b?=2Yv!YI3XEb?%f2SGHZ!L$9PO|by>mB*DwPT2-XjP zPO!}CNunNHcT!zSx)9K4+qMN)NEdjF!iri|MNCZtJuGN{Qx zWeAO$K=PaOjvNQbCj!4i7Fk}F*?T&%B2Q&?+Jy|KJ54wG+ALdc(`obP;3RIIqW_6Zv#vH?hJg0IH7vBOYsa#VJqPB**ME*OM?aD?XHQe#O58jyZ0RcZJokmRP$ zP#I|6fhdUs?AOZKOdw8R7t_vsxALr@KvOJyIx*q6;K!-3oTpe^t#Vry{he4zEM}e! zlSr*IyF-?D!E%(SZ2^Gu|0q@!a|DGg3xkV11!Qqj@m1RcfQYEor&*>*AmHset6%D&6K5QmC92 z#8||1O8^W9APJ4xIzwa3rD`nEL{XZwhCXuHbwHoUu1pOjF-pFL9&ua%CSd)+;fUv* zUOFtlnbh69om|HeI&z;Ugy-T!6Tzx2FaE%L#_#@-+n!n&Qk+(wcK$owdgY6*TC;fQ z-~;zP^grMK*rB%nvB`jC|Ax^&`Hh!d`8V5s^Zkzwn|gEC2fO-}+yV z9k9%>YINbtPTBhpd-j=&tmi7+H)wLwS+D)pe|-4%4}I>-3(b)7>0t~=gy;XWmtXPL z)kguKId zvH$z|9rJ1N*@qV_(!AJ2_G>|@*I>!m6&$=ugSB>wzGE<)^fx#WDQnQvV!3<|tvpQV zN{6Y|hOPBJQzK0jGDkJCJHr-|u?y3cv^v=`AKnC|5(VS^K~&2!vpi@Dc97@ALU*oy zw!=uz5%4&2;ZR37!PwyDJp4KeT$gj7!HGjML`$wDs+qD6kZ`hD-}8xj(fBSr(h0qE zcX)P|wkyV5cA$BQ>E}tJMTO2fLW`r~Ytk5ra-lxe_}F5_g36gnJf)6O?8;!Ji)EkF zeN0XjfxIT>G2|&IY#;@O8R(hB;z0rOlj*aHH7)C zJWMW{@8Tc_T5_n!`hjQ)Wyu%I2eY?JGGDwn9+(yyQgfQ&G7~7;O3Mp!I$?5M_$FO4 ziLsD4%lMNx(_|hcKc?PlqL!y_c#?=(bGVIp5CI6ACS=Hj1BM6_R*y-NqQ0%QCcP9S z&|X1B0{~no1^r*1&yp4-ofRVl0Rh_FdSqI=P*Ec9Vk|5KiTn;a`P!# z{$L3DFy_>@Z7^`+@|u&6&|nj#B#Zml6Fb62wx*y8F4Ghlq?%#L950U-Y>~8W-jP=* zkUvrE$kZ|_(Z(KY9?&J!`5ep!W*aA3b;>#CoN?OO=bUre!UNac^ypzTV$IsKF5PnJ z=1ps`T{yJ+(J$Zo*xtpNwtd_|y(#{%u;HKn&^71mzwM{~-S&M4nzPQpp+O?DpDHsY zGhJIawr_msP)kjvV6mc>j_n&CIy6o~EqL~tH~z$>pZ%Mg_HA&An!FfKTI!pj<5R!- zTfg_JwI6-|y~Bb;IUpd=^NVR|Sv!R+yhFYV@EXb!OM2`Qz_Qj-*WgX{IyzF}H%NgqReMyN8q^ zBIC;Pa>4*8+%wf6Bsgje#oQp?>Zr@w7$#skg;TO?1{7oHG^!gE8`zW2!Dnh4L~4o3 zaom`<7$dSi7eaAR)*w-KIlk&_X4y7@K3Vk@NNTQ16k#y1r~?4#X8KBqL{GWaCM^wN zzzgYy;GW=XL}<0zN)1^0a$@E*m7rTjuQWK7lW1Ts&D}#_cqf3Een?HhbGP4Pb_?3f zB?6!ph?9TOsAi7w#`Aip1>*DBvI*ksPqo=lQ6UZ%SY9LBeK9xcw9-%!as&lA@5y)B z;K&DQlhxhCT@LkQ4DZA_YvWtkSPc@M()1;a0U!)|CdPciLDiAs0MMF9x^{@;L+)M> zQ-*Nbp*m#UFNrLsbT%|g28X<3!hYe9U|vzyOTpAK9J=c(FS-WXrbFOlk-P(8wsE4- z>ecgj?BLPyX(N9F*I)entIpVY+ZS%%b8NJJ^Hnc?(U!xXy?f_L7%7@$QZ$>kY&r7x z|Lw``yQu+q{K?@>VEt2@RW^LAHC_{?PzyG1MR^_VFUmO?c!a( z|9j{Dn}7MHJMQ~~M|Y-fuYMkYU$@1ls>_8_jNCN>dwODIagzzEs)dS@dJ1u^N!r4a zCK$jf)jPe zWbh7QNXk!}bJ=7whSJPNd!wTx!!RmuKv3_(_Obp*A;bWXhB?qWIwZ{C2aWfF@f*R= zJ`1U}N|1NbvSuxtt&sSZl9bYi$X1S^NeWupCHUyQ>Lg^(GFIHg?GzM+1_pAF6k-fe zh$wq4P_>SdNRPv{L&O0*F2{3r;Z1UnD3A1R)B#Lir zhoD^y)*`VT?eb4ypIO@yE4H9&A?kEHSqNeX8)L?h*|bG6!!n~wrK?r7n#E&vJ;`%M zDr;wK#xbusVYEF^j15Gj;tQ~x&{PxI25aKh+b|3b3fTNpVp$}SFWVC1!xoXoeH4SH zY50I_ARt5npavTNP9}1qRcMMV1ew-ReH2+YVrwsD6v+c=Q$THI+3{2T=VmGSqP2>; zJK?TRVWK4Ehnh{Zgbtzn%z|`X2Yg+hn~7)?@Se;~; zej|X@^WX8Ym%ZR%xYQi^lZSrke?K-3=G>~$oB!zL+rR7jJ>P%%8(w|-X$$o5pFHw^ z|LCa$a{#O7zx|`~)ab~cJovuMKtfZ5r>td;5Lwf9S{q?IP88;u<9Q zX91e}gV7yxj+XE@`!|$6k>F_U;*c|AZRzy!ZoH~d1pA;3UjUi6?oo*JTF$pP*lai# zyD-%iF>rECW4r9;i8mSAkfZQrpB%)}hzKn=ZYD7k&Qd^})ham@-+Ub0q;ebFjiVN@ zcY|gBltMJtR|M|8$H^l~wh&*9o|P-bWsQW$o6j#ed_9_Vn859tiD($67l+j`%=t1i znpd#Am|TL;oB}ksEBp|*Xo?|ccQElotZNNOz9Mw^NXE~Ey~{NpG~ z0e=-g*?l%r`B~;~e>}T?fJ}D~fm$MYu^SNpVlxVFW#s@13Y+JffjN8w$UB1d7O)|~ z2|b}gkFwx}6b2^sn_?Q030xz_-N`|G1&=^F)P@KVHc>%yG+gD6M8raErrr+5ly~1P zA55Tmxuh4WCnB7%i1owrim9c`=E+IBLgy2;`*$B$f8OTPp16P4F~W7HY@odl9!{`* z#mld?U$6h-4J(6NCp2p>{C7Y5yd!ts@gIM7N4w_Cw|v+0n&t_BAQaE~v7dVJs)z4* z-!I&-^T4W?{G)6B)lXdY(?5B~69-{@@S*qq>xYpx|Ht3B^lyIYx=-Ir2tX}0gQh4A znD}ZFA3OHPZ~WXJBLE$~{HI^_ZSgjj8^Ozd?!{02^|n9#!-w%J&i=L^+WM;Nc6|Kl zF&tg^9IpuRLedX54Wj%mKjs>DT`9*4%Qx8#B;vtBb#r0&rOH!f`))v<5)Ed zx88KuH~q--&lo*=csBd2D$xVkW7pOMz?e#h) z1941kwoV0>`AhbDdS-COvVDXr+I_=p${slGDMiCu&ryv5pSaEy?YV~kW`h!~9N8Fx zCht1foa!4wvX&StDV|;=j-1Joh+JFfF34J68keagDi`89C4LEJTDtX2qXBxlL2QeS z&v3I`XLQT4BxDo+)n0>ioTRXIPYW#?x~LbyJ@Yl@sM@DKlrRqlV#2r z&9reH<50Wy?Nu8rwu%XX6A~3G47*wo5J@(rV+<-OGFDC?aO~IhFmn?CBwj((|Lb6IJ|Q%p+wEB2@-wZq8V=C-VKL6J!%bTGY;6-Z{pK;@Cm-sv8 z2aQR|-xCf9GM=%cWmPB1)-M}%j?7OczAp!Yu>{k$C`M|4BQK~`8$*G3zGcEiE@^9nL3N~iW$5Z)@mgQ6(c{3X#QWUM$#>Jp6IT?ykmR;$h+EwCcf)eXb zUKc~Ii3LFvY351b0Fz#E^Vtp*V$%Rn6EF{WWV$M`pprDG#45JqtUAKgIYZ9xGq^LD ziLsp`p_3&yHBZ=SeiFhIhT9Tg%41?C1v>P|9rqkK^F^DEV7x<4@+>jVWXRJtLEm`(8BI9EYf)2p{M`m!N>mm$Z7xpJoWV#uAAR>>o0Go9W5L^`qYOX zJhbbqvtEfd(I?uo08vqeYc0^2001IgQrC9z$;Y;@I{*CBQt}^t^lv`!(NFy4?|)+Z zLdBUG0tJVs=33Zp3#gh!PR-0hZB>L&Wg955$JgVq_~wO)11iQnXz=A*w7Fi6~Lw=D?#e%Be{ace({T z$ldaWnD!{Euh@{hG6pe~CQeZ_d>_75Y(3AK!p-QqXZV1PglKAj$WRuf)^4#a`02}UctdR1 zn9+qWnOE_u!7YY(BvNa$jGTZ$Ypzr*@e)fTqZEv+#(Ha-GUkFzUI7;Ptgag?fJSUh z4jl?M+!xl2Fl=U|#((FJmQTBJQpk~|TV5+;yGdKi-5dd|SUyp+?!3z`SiSSkTXxNz ze(w2e)~`ADj3@R!bvWJJbNv@@c*V=FJyC*00OR?sm#=x`&ZoC8z}n;%;U$~b(`lFg z%CB7}+&@}{|FC{EhA~IqD)YiPY}4cBZMIze#};7kQ-|Vyv3Bv`{&vlVd2As)>v{kr zxR&H>C%PL?S-a=Jq4bRHgHPT4>!)7zu9sc#9s73QxO?yQJNMjtxFG<-Q!iP&c-Ds3 zeE32kRg2Gdh zmVs%>4kG4v2k=kTWA6y+6l%%ciA*V$s+hRi6@zY4&!YY$&BTR-@?eZ9zy_jj-H#z5 zBKF**m1xBUyG@q1Bz4`okz(iouWcgmnoqLi2Vjmg=Zu3=AN5IDN=v(??fTsE0XbLl z&S2A^At@%Pku8ITj6FaALOV1G7Z7yr3)Yq}xndD5Rzao+x{LYhVpyrQE7jgtoeC&b z6B*QcE(67@+G)M|*IC7s7b<`41VicaV<@ZPy!nz_A)aUG%cq}E_DlMLMPy2QG72DW zh5eQ=GS?QTLkFm?(5cL~ zLerW;oEqjP^+<-=nE>3Fto{aMC`RE4!;9BaPC%1Updt(N+)eE-Uy*Le?XP_U?GeuXH%vE zQ0;9cR~32^lLx|t;TR*Rmmk#i&DuY4V7YyRnZxoUyfSg3b(^ogVs6{#?|SMez^}bX$Cr*$E0H7JoA&gTaE=aaRM-~s?d-wPL(i7|0)(bp8Zwm3J z8O{ZtW*$sjG-?Vmo({feEKi$*zw7AXT0RpQ(kiV zRsZgiLl56~<4-=hYJnCGwTrjj|99`*zR5q4z0y8cf~EuI=tVP{YZq;1Q)(Vn`dw`( zZzAzdwO)kEyiPRxU>G#0y%Cv2xhyq;6FnKNereSmAL!o}GT_;w$u0&8yBE5&ZY{5{ zWY{#i8-guJ0JUI*zjX6Fve88(@9rVPzn06g)S{BxnGqs7kUZyO!jcOHaY+;Q;!8O_ z3M@zdL*X2vK8uK)N$EObDyQH!Pr&gNiEb(9{9!d;(_&ps7^#%DHu=h&br&oq?soEZ zBI!S{0BfpAJ7C$6GW1FpI_0VNuk2=mIB<4*0RqV3?W$_UbM-&IsM^E^R_;FTbph_*-MpMG7f~WDc-C%jylZl=_HgQ2B7IfaN z_Oqo{Cz;x!56RCOTIPI)K*UkEylVekr3*{YjnkTzRQk$B;)&#EjwskZFsUlL{Kk$2r0oXZk|a#KJUvFn2&W#xFs* zHc5*mZUY*lCTh*l4Hl;e=18D;fRSmGt)0Rd?h@ezS^UvV#vpPGH6?-^i5f~{BO?+X zGa@Dq99nyfP^~Zt7@?3yG^SWm(y~ZGwI`u1?Jinq%9Z zSUB(EQ%_+sjYj;bfqTBZXZ@D*UUX&@J^%n#bPR)uN_P~VF)5MuEFM`iTDxXuHPX&q z`%gdZ)Oj|<$V{X5z@hE`@c0A2dixDO^2nJlIRBK(k&t%WzHh_x&)j%+2a;{O08Ks8 zS)&QAI&IU2y*qbiNmcEs*S!4IFTHBxxcFEvh?-4;MBdr+hB0NAN-)r2tK>y@0VkrO z=v%qo{m2Oq;-ejxwz2lLxF1cf@CsU3v12<&^2{Ncm+~NIdYdqS+9c6%6%WcdEeTTA0 zZ@RwcBC(FN{i;@%cdYHmm7O;yCeuC<7VWf^<-eyw)2evYK>)X=yq_{=;lx z+JI5#ICcu|+2OD>AYQl;_SQR`CPOX9h{oe~JRXl1$BXTFaXeleFD{N37sunpwrz=8 z5T(yiB%aNN_2LvFY15tRBQzyOPZ3Q_Ku~;Hp_fHUtQxc03q;Q*uStD29h1bKbYnZ| zoU%`ZnUy75s;U%YDNtSZz44qAbA$Ja#lML$P=0He7nySvwwj>|jde)fc|;t>5^yZ+`0=&o1OF`8o$m05LdGpX-NSR}V6COTN~w zS8IzdnuV^XCW#PX_CYI2^oNTS%nHN>nOTj#=7}Hb_l3mzs@NE@j2UaYl|&5|&BT`0 z<5#ihJZ|1yajm(5iN;x>FY;LCmlZpL#rwY3sbuWpXZ4tbhYQsk`<1gaRE%2kNo@tA zsxpR@e`Jf;)SEc5U}`RPEOi2gK#n%KJ79wtB`AB=;nS4UGj+GRxVw%Ox&k6uIgr8r zd*b%=q86E?pm;l(t*1^Wc{mD-;+L2{xDUzDI1DU?ObfgGZrCfx22C4a4=d40Tu}FW zCBy9qL#Fc<;R5TY#3)T3iw!{H%T+2%0SjNKa+~x@&^oB`TX6wXV@d_4cQmbtWyUMm z0#$*ZBso>SOaOKqD7!KfNNUSN*rmYhR1FzE%yaN&+bK&eOmrl=+0=%UhT2xbL+yA> zZHxRML0Gnlrw+v(21D?=XXObXIb{ilgYP2Ct@==s3 zj(>^qkFjImgddPSTdH9*Gs6g-)DkwxaLsHQ5QbD>e`DqNodn+UUvo1v2C|pcgL>w=+k%K*j&2h%9mfVrU7b? z?Aw0t&G$dGFpE}~8IC@A?=Sqy=&f&g(fi&=kKF&npZ?whZ~vF8oxc&iZ0NToHffBH~&|J+Js9q5+;|mw}AN|Dp?s@auFMRjgwzPYW zJ^9hcKlq1-54%^DDw-S$HmwD8n1p z_1Lbxcm3k+3wO#3ehUZ$Jr3j3U;EV;fBs7!8&eu2UD*A|qx-hPfrt0@CKL^&IzpB` zs+POtu!hUXgFj5iSlyajvCaqi52l{#tk3PUK3rI%Iv-B7Y^G*h%~=vMr8}jklTI_4 z7zapo&@Z&uM~)d(ZO)7*8KB;6)ypI{XOMi)2}|6O`r2-fZh5yVkDfx}rUm;qrXJ8I;a(N&aw#UN_Y4Igt0fgf8f0Km)>W*LW> zoWE2@mHc;@60C3DIm)K|Ay1Xrz)fcZ{p-!abMq)QN0#Wn6SeQ=Mig zk$(*AC!%L)p#={onH0y>qiK-1}V3VaFguolM)bKkxC~%!r z$Q_UdpaE?&8M_2v01;f(+_V_C(Gg5LX1v zu?OD0M-?x*R<^6&A{9*~wXD*?&}|J5ykl(Rv_QBzzwsaa+jn35;otbceNUASO=WKcW0;F^E-_OE;Jzx?W_7t;6biE0`^$>GEf+k%RItce8-U5691%vR`w2mrZZ zXVlg(JJn%paW5@}yGM$YDL8tGE{?nVi%(6%6}p*1W(&_0%FocLw6HXG^o`UF=*nf+ zII^7sECXcBMH1O75V?ZlSYtRwgN2W=ot>PSv%$pN2$mC)vm{n zWUTMBMa$A@C9xZMOPOp==v1o5Or+xN0ieE3hHSyvu?0xWl&Wq$s60+Pc zs-8j(p!oyH^@n~WGC4jK5NI`%$Y&1<0zr&KX%O5nj+64rJBF7h0=3jepHQ4C$$jvH zg6JK+G<`b?aVL3{lPFR-Tefz$*bbG-oBc(3pSnP-a8rH! zTN>HiNVCbOJmtyq2_iHNPrW>kCkC&TFGOL5qD>5ZIDEJX%eCn$q9|qLEFNi)SB8wV zVI`hi*Sk@KqD9ZnAnpJ*4UR^00I;~YNJPBHD^8|x9uXooO$?j`(Glt&jhY}L03ZZ? zfTa*YNY)yQh(naZ6kf>OjKcd~v2EM7ZG-g2*ih&@su-l$A0ir$#|>iBj95sB91|wt zp-RmTGbTm0(IJWw$1+&Y^mR2)5511V66@z$lzpc#0;-+FJ_1Y=P%l+DH5CT7Pu(R8 zMx#DBLm0HYH;omyLhn0!=0P_Dvz3-yObv5h=O+MIJnbD@-}NnLkK6#`_`0Y5`+vH- zdFNH{F5KGwt3P+&zIouFy)n_IGU)qY@w9hreb-xZG@kyI|9p4z&f2Z}_O0Ssw6OQn zzx#*Z{A9-R&Ayiaxr6zzbqo{4px$MpV>>CdK_V0Y==wio?%c5g4`Fxh~ zWp^TNBdas^mq!1pKBbTLdjpJIuWV3A^;&fdsQtl3C-0L#cw|rLJ)&$XH&6fh4)6E*~sk zP;#l{=lV`2qN2=QD9AV@7m)g?`VJ}PWz01it@K;gvsyvN>>uV^a5DU8#fh+Q_u0Q5bQPgL#;ZS zWcR4V8ROYGl-dQd@zc-FxP44!TbY^Sng&lUuqDy3WyDvaAe@7k5y)Ex9Ag4yFB@J4 ziB>g$gc1~Lw2!>~oI4Yjkt7BbD*~c6>ca++!?X=YxHMFRzzKQ)tVdZz#HP_R1`BaH zh1!`oLLFdoprxS3=fcRO^opI-;An0@auFUblm2E$s|riDk_JG|vu1Sz9LbNc&>lJ5!s=#CINQlMi?~Qf z4lh~-$Ba0+Kit8=rYcBZtT2s&AWfw!CQV-di5r*$zWe zW&V&U+Xd8|b@>a|@4fYboozWt)G?%!gauSv$wG;hAz4jgzb29<7d$x=C09gC+AG#- zvH_ZoF1cG-KGDEYplXi`McHrifbwfX(7C{I5xW?gLZyY0%tw3IQ8u#->n)1t^t$YpXZCxA)UU2SEC zHJwV8QH3^cQ$)p}ar_OcTp+pL1BP8vv`i~KRgn}ONCF{%CQ00?ih&=kkeW0&Wq0mi*fT;^cHSO-I|qN5`2nK>!Fx z+r!5st|DsJ?>&gO2!NMI)4O0R;8uHa*Qe-cd-$m4#yEcSx9ZTePd#u``tUHA-qMNB zx7#1MdHV{z<4-J>%>9eVlv7eBlQ9zak*YGau@X#<w!>f(97=wml_>roaAQnY&p!~h`iu)?|r7X9mi_Gkt z_lzzXw9QrdJxN$TqHV2jX+`4)Og;7RVqZ*=_;AuT$09smqbtp2Agq$+{leseF)DEY z4ql5)rppKbOI3=Cl@gnA8!lazKGVbzl8=5mM+hT{e6@Je1b3Kp(4qoO-)LV23Hfl- z^1Ivn4cs4!+5I!ldA1oV8oRWZkrIH2lMIk~%ca#JnDgDTAPJ;1!%sWpusS=NiM3tk zGvsH($9(Hq2TWszRb@%(Dmj*js18y#RF_?t;j7s_5{MUukuaiaavZ>uzL!Sa z$Vchml#b|>v-#Nq%V6#ggyD|NaYAqkcoxNp5;@hK;{yOAI64NG$7E_ixiZ|)Nuouj z+HluMY=oc!rU7 zC1#%Z!@^@P3tVmor97q4mo`^4=f~Gbb*3m%V1ikYICJ^MKA(+a5jCDA_ZQu8I>5B7 ze9j-D>~pEf;^&a^!J}+G$1>_~u{Y$C#i$~LO*5GXXdag`$sxGh%R=2YgHETL%vjP} z!l0IBF?T>Qko{_L>xMjFp3#m+vn3=9kSW1}g>;q@6-*ZGy*Y?c7c=Gdl9d4g$IX%% zmbqQomvVjC`DIyyMNz3D!pp;cHTsNj=a>nh*5heAnbc;5X1sv>opW=5O6?gvNL&+| zVdLvQ3}o|(061&}Q5kALB3Xw^a#~R_C7WGm%a{_e^ucrIBL-s&~QqO zB`58;vQkZC*hpeNEjp8Xfgh*=K*R?n;uRy zvzYA1*|1|`ckn0FTUeTe70P%9@P*J^BKLqYBkBh+Z_zOPj@W?VvOQ76kkjnCofi%v30`?vBYP`%=IwdHF?d> zx8sHdkK+7CsEyO4;Dk*AC?qJEN*oGMdhxB4SIIJLoM-YhhZKYoX?-!)5YCu=} zGPaY#W`~+f?kQ>yw+?NkB>DcJFO-99Hehq0Bxm|%S=uexDr*zzbiD|STt$q1R}w(H z(EvJ;BeV}g#|usX02o3%UmDbxy03WY( z9)d?=mbb#t@T?anO94q+0QyI$tJNq>ON^c?B5&@Hs+p29S8yc9=2U zKM~4=g;#y;b($-o*#^8TEGA^f>a4TtK4J2LYeUF_n9D9;a@%j=Nqsoeg5X`v1+d!z zk~?-jrnk(cQpLS9C83l`OLS%IcB3#JSgAVY%aS`}OU7PLE@&~kWv`@neRp~wXE@tg zg#1%yRXR#mX(p@3?6HV*W%yDnz~KF{-!zG+@~On+KNL~tamQHJPaWZJ(NxGCP6$tY znb)f^AsuWXJa6P) zRy^gGB=UuPqBk;o+3IbNY=!=u^}0Ed@Iy^lWtx3P{vu`{dK#X-AqiZ#21>Z-xO>Tv zP_%nS`av($b(W$K^?e${Dz*bwV3FLaD0pYN?@_?3 zSexEMuG6fV`(?oxdq6(DB#vmv8z+vDx#_7^Yh`fQz)VavZL&hb0gexr&h07TFq{D@ z6Jf|mTcJ0IGsH_B&`&L&)Q}MypzuB`Fa>Am=5?ISlTg5pxL$MY9dD-S^*F9Q&?Sa@YCHcF4&_n8de4(nk{< z!)~)KLM5Nr`9exOMFPvK6a#AP9(y&Fd6>38RG=RF;qGDWU)DK`mEIFkg^_ z`lhvb5Q+0}1sfnf_20P7)6Bt2^tn{BN0QW315Sh1q)yP>j`@$?0ZKL1v+z z2!x21(#f*8o7Le~6WE?D14be~Iv$VJMUi|VuwNqrwhv|`$h>CEr1^l1px%){QK-dE zPias-LlsDtm&lf6TE)F)g;z+rS_=(Cp_8(Z`(Ct~o*nRPPbOMM=unov%iTM2a z=RjfU`9wviB{8wB>6riv`jiC}0s!H8-~Ea!-n#lI05r$${F&?be6AH2Mquu&v!C~_ zi`Kqy^}>O}`)}WN=lhom`m zG>A`$7*uUt;Ici>3NOhu$qG|nqg~MoQ@~%stVmC{29;PwNGOq@V+{#pvkTlXzg3yuFbn#QY7v(&2stK{IWN5PD#tOR? zXM|>d1w^Zkuz9eHwF+dFZd6CqR#-F7JHJ%W?Le@j84pX8bLx1w9TC1&CYqTtbsC$1 z5%iH^$SkVgQ%z~mOp04p!Uh|D)sBr$AY#)%JFd;43Ran9k8VYrTrxfN8$fHw?PEKY zNHj0_JGoOsOU4PU%i~BOV@&alZPr&7EParBee0e}%7S}TE#`?#k#A2Lof ztvT23UDD8qtkfL{HOAx_0NE#}cU_MpsAC$YXz3W4kA#FG(8x?yBBB;3*d9J&i_kO( zfZ>H`+A9u8x6~pu4Y6P`U2h@06|LnCh}~t2S(d}-u{t&+OOFDCxh%(I^IpVAF+brQ zhDG~DrTI`#qKZD~|2{@~!XKg$GCL&VpuKsJ+;Snw>NWV6;HXbx%-> zf%Rv;@!CzVx?t{-Qx=cx-gEs;Pk!*;`6Izho!|78UwQ7gUf!HHI zN2%DwDt{W5DZkNfxV%bz+gPawU7PMX4;N}~eK1Co6C)tH8)~2SPJ@mDgZpfpOiw$B z9%ie!gGr2DKIWkilVD=Lx-!9U%R+=Er-c7l^vQ4nB92B)(~Jm!TBR_h_)O}gYkBhM zU|I}7lRnUO7g1)Pn>^8R%hV=2sgbcHAO(7v0PLV4qZi9_&LJu8k$wb(F%8Hdi>5lk zts_j-MX{7F&hIPFm0BY{@k$ z3P#T4P|#3SgHtz;#oullncS6i5i_FzK%$C(KpZKuv49Uu;;Iv(L-hAEeV{;qNzv_7}z6QQ@%acbYvdmT* zLOxN~4*f#jqto(}XyjbNu~8z%i51O8@dhE?@*9!R76AZ&=9G$cD>adf89>lOwx7c<8!gqwX3zM{0U5t@Lk7*-~+pgI7^S z(maLsA^^yXpoTQQ6grf!s_}#~KxWutta74W6xaE+s;;jkcX1*&N@@-3an|IWBo1I4 zJC#k|qqWC0n!{Z9_k@Gck!pnT^fhn2yAH{^X!&v9iXRpX0R$u>9OO6Jwb`U1i(dwj zdRoFYp8t7{VN;SmWkQHmw; z2GCF&V$-OwI7Mr6i0bmkq$cB&X2c2R(M=0f`koVFU?6vOrq)Z87!^oV8#i_lf zGsIC0t6x|hoY2Vsp%mBtk?}tDN`4BNaA#Eyi1%}R*`w3=U~~O zM%@Vwpyyx+%r;JRc*i3T?0|I_pT7A_d%4+k&bh0$-}U7khgyJz-H+UH|7owfc=IVw z-M{Zdo=G8}hz2YiPXe79AJ;$sqAT8U&Z^7i7Y`jiaNpi1{_L^cHyj-S0ARCW)1_~_ z=(Ja!GTJoWfA{wL-v7{%2iq+C;d3=NZGP4JFJ9a*8jtXW|K&9R0L{_c-+TT38~P>_ z;W=ww^Y)8h`ut7nb{)IpcOUrJXZD0pOLOk(ul|wCU$S+>x<%Ua(Bb?4`ibj4xpTkK zWM#E#uef&HwSpm>S-SuLX+W_@>HiORlwF5soHd+YgtWO zHH>QQOyWY#9&qwQ48XI~w8*E=O&GB%H#;a3HJ$^17z*QPXdnRn$cSWk|8r3J|Zz*DJ}!dhH85!q|cPmNT6)QxMDU$6gQk%(PDG#%*^O;=iMSqE~cyjW=6u! z;i!s}2nEkOV4hBvPcT&O?PW6=%q)z;#=OAY)nZUr8-aj;T4*IOP3Z%y_@#%$0X2Vg zAco{C0K_OWTcQ}^ApmH@E6gHhZQCM-GEw{)a{>U`wsi?e0N8{SEpr-?EEOSoBU`ab zWMLGQ#G49}lY=-l5(+@YkCvjQ(-wB%5zTL-0Zj! z<_Kuj>DT`9);(Xo@5X<9N4tOioNu`D6~B1tr@sGwIFMChv>EN)_Sx@#9Ppg4`pD*+ z-gDETy9fxO?XVsg!J{wy!K**_>-Yceuid-pYtMhnd#`!pJ3sf)Cl&#Zz2L`RdF=yF zec(Ucy<-kezvk3yuimg~yc6f*vy|we!d2hg=`VWefBT`+57}#TJAUQIZ@y<=6-5W5 zwHvN}!MR^EzVCw%t&1K;3=+i#MznBvp>XzAN0ylTmYA^x0~vLHdcmpA{PF=xrIm@;?LS)3=0r%w zgIPir5(9R|7%j$t)QT48ENM+nG*LTJZQ-HWSH4^2XG8$@1-2pxEMbw#b zHHRpDb!oZJ6nU@T{;?tlbsrmWE+FwG$?+i_P_%l@oCe0}F2rFN&(qvxa@jGmmO|Pq z-i+q6r;_ba6tInWYqpOspb|~=oCratCvgT)nA}8!O@r7VB0@{7of~YzQ9%?poF#Y? zXx1hGK}#*QEsIj*8bc>Jn+UmQW>}c8Wm8smpT=Tked1rgc zR+w&%oJ26FgURKwrN*(9W+v>yj%k+Sn}Y zo(DME|L}1GIiF}qN>SBSb26#$T=)}o*{adp8d}&hhDBQ3cX<2XJOlu100{83*Il@N ze%q&idHcFW0%)K9qX##C?F-I&#REG(K}}k*y@*H^XNsh4509`>rSYDCj9wy~o-8v~`7sVCas zsl%_7?+_7`bb-HmuNy4=K;^vsQbD@w=J4Wu9`@ul4;$<3<`6{eL%y&Rp;>}kC_*l9 z!Y)V{siq-pplJXR$79Z^p_ud%rxy)OTS1md5i7fGsxzR#-X6COiNS#4yn(L&8(#5& zJWn1jN>)~~V-{N#{|*2MT4>|Uv58Ew zJR;F;SveCoL5b6JC>@_|Bk>*Ctrc~x#68H!A^xqa83nt|Cgh0@%cNXvowc9h)IFej z*OwN4Bu{obAX91JXSXE}KKL8?~dtLrpWn2B{@EAv3%&0R5_rC}9NPOwO=B z&E^mRH?Ko$vz>xX6vQ>Ad&}+VOC_T#a*WR%ODzB)P@=U=Q$twz84J(SZa)VrlTUQ) zsk?7kb>)>W{HiU@!r}cpA9?WMT`xLkap>!`juY5?A`>bqDCA5zTY)^>;iQ94-~H>S zUG*tFb!*3PplNRT^*gWl@hjf-)n`9)ckQX2M~>NtSptr? zeen05{KzTmwq9}3_kQ!5Gyh`SpX^%eN}P7-kG^8(jem3CuJO9zwf5hq5^WPuuN)vc zBj%>}LW6n}JI}XdTCUotIHZ_$AJXSlA3q~>V9}DENvA4i`ZQ3rUS$ZxxJlSe7x>wm ziDnkc3(%xk++ae%i&PdPSEIk=dZ_j-n^*~pQ1bi$7L{vBZkM?wn5I(zTqoEVHY2;J^hL-lR{k8kM)I7Z5qN6w2Rb+(^6y5m7g&|nHr5av|+Ib&q~|Gr5HDH zU`ahOa8kY~Y!NuF!q$VGBVC&9gce34G5J+K3ip3Bqm349a?;5=1IsNtBC6X*I-I zkf4n_##w@p?Cg>;4-$vGU1ks`dDWjsO^&q^h37CJ;Kac=R@gMINo;g>A%>t&n8JwI zU}I;EX44}!(9kIMBDhNk5Kn_MY=DSO(=@Ra6@-b54blk+Y!`_jR0$wKtpb_tViEx~ zT01Ef`HGnnk*_kjOz8zCX8Os5x}JmQl8KfNR(>^L&TH`H0y?()k=wuUNc@Hyw_MsD z*|uWIMAPkasl4xO;BiIMwAd^@{TFxa_~g1XUV7RoFFx(6_g-@7;rniU?~|(*Xz@_H zc-#Gd_ulQB94auE%CB;>olXK5QQM0z1U*J`Yvy2gJ8l4AbmXSp|L1LAJnJQ!w!C1| zmLIz8^>4rQWB>N18}_&5s*B3fmN@;I7r*ZZ&UE|ER_*-N_uTa5ebtA|Au|?Uh?xVfBdgL4hQ*GyYYe_{D%3{Z@A;%Keldqc~yLJz`zpcIu{dUZ3W(<&s#DJ z-IOb^QqvRmcJR!Yv|g(GGByR6O?u~=b`zl;r>=>}Wh4!LDgseoVx#~64 z^WbS(Lx-blin87UL;^%?plNV{#x0G*u^NH`QOnIr?;snbj`z!G)PjO26YFxk& z8L{yQ)Emjxwh&I$&0A$O;u^eJzPD~9Hb#vQwM6Qn@wm&L3KHQRUmvbC5nn57U7o|} zooQr<9Hax}=8xOkY>*`W z$sw^eV<;#j1R0r)9P;63FdRA5wjoNztWE$FA0_~x2Aig7xH}waLJ^bzO@ln4NnceV zX^~u5HozvjDZc35k=^$XfS^@wA;+R3_`GLJ@FH4?- z=iuanIhMF3Pk)(Ubm}>0&F^`jnuv0OKlA3A0B_? zgBQN~1LvP|`BO*lq3yTt+xqQiZajNCJe?xK)r;=`H#1)Eyp4&S^V7& zYq@;t4u~<@$rZ-7QnL)eTMyHLiE$uVMG2Sg4ysdZ8L+46v07qP}v#PQ}YdG zD4{p!67wDPYU+w`WyMa4(dtm;+N`Lw8xXXN>4_;|XBL^FojvU2iiyG5y$C?19a>co zho?jqsOK^Y;mk=8rBcBU;#Fx$g~GI41!YZ@D~Thy>^wAO(53;|#w$eOygC*1Zp%vG@xc_T6e5`c4{BC47WXJ;ropk}hUW};lzuJW>d$RCs%f=3se-0^ta z#_U2wKx#EW6j9YsV07Y=6FTxvqWRCb==98w^k9#hgvg@&AUdGzEc4X1sgSV>B?L;H zA_6UEC34Nmh8n*iKs)g5B~kcVCp6*e;xtzs?Kl6pT2u6yws~qW_bD+RNM^2cfbCg| z>~O~#D7+yYL*kC(Hy1_KD~hc-=-qaq_b584EPF|%aqMH9hrAM_Aj;8B6q&@4gE_t? zbW%zr!VVKDYI_f0Cr2z_ma)v6&I%`v+dzz##KZJeY_jYvgnK+qi~{256^ONGpNmt8 z`Iwxe|r(0CK^3A8MTQ$FG!&#SJbIrNO9(r*5v6(hK4Rq_Ut(R{tUCt!| zMq3jqTfpQgUF|Ev`j>6J_UA8I_q^5Z2%wqU`26*>c;x5~0)V48KK9gIr@i=RE}7r5 zist6lU3&J`e}1-m*?V*3;JtI3Uw=lsVQ$@)^>gcDqlxmfCKm#%zVMB2`^K+(^IN~> zoOzG!!qwk@#fvXqyZ-di^MCZ}SB{T-;S;+Fp*efaxBS`*-|(_iH_agdti5d0dFye{ zQ-|%NY2V2HSfwDgB^C;rA24M?!TIyP41!}3a(>z*FHZx6yk3VCwA04Wuv9X zN*lkK6MLJnOwkLN&$(g!n9WYKA?;YG$cJ>6cGM8B<^BVw<;(AEe@=XGP&5#%^C!f@ z+UO)Q#(ppPPwXESd#;yU36)#CQYyx9aEC<*XH`X4nM^05wQP!_lt*#KJnCi7ad5I~ zv6y&5+_wTbu=rV?vRtLk&7|B-@}Ih=#>CRoAT8t3BZiDORBtwwX8Og5zOc<fl~fG3&#C(g66`_xFnCB7%d@k>Fye2$?o zl}OxSvYsT1M+Bm_ZQHh`aM-L})#t)&u`w;wzs@O~eyK18dIA_aV#JSKXU4W^nr75A zO*R#ZLf-l94lD0|GEKNa*}H_Oca;geP6-|(CC+HEi|I{(_~6WSjaG>6PizuO!)GOb z-Vwu#?Zyn4C5@T!y-~fVLJ} z`JZPF(6FCbwRVEi4p;DJiFlrHFvIhSaN`xPy7r=Vv6q`(^SUd5j%~Z;x;u8Yw0Pv$ z>dT&g?Uifr*nz!I-+SZzPaIsq1g7brm`}u_c=~GVljz_rk3O+^^OhgDX3fR(G-?k$ zy!)nq|KP$-m{L8?95Gi5f$I!?nfWpcNH9XILYl=T)5#QPha$7TfX+Zb%*ZQ_wj#q z^UVtc0JQz^r~mlLulVNk-~Ml|ST{EsKYirh_uui?Hy@$txX7P+F*pi}3s3yf$Ittw zYp?jx@5D3a77p&+^QBKc@u4qoXaNAv`X^s^>Z>;#p|5!1|NP2Wes0Iz@A)IRuQlto zGlYy2I;$VVH+k9@07#B*aX@DR(LU?1ouIU;IXPZBk0gTXoyz_?C(}tYB%E^;mLHeR+n_&9Ln0i)|^eQaX4dhEds#!B;{0m8csZC6_%A}8))Go6r4Nnk1 zT#Ox;H(pfkN@@Vx_(q!bXbaSSM0C-_<$zLF^AsfDZ3U#YnSM?X7B9HFXg?K)x3;we zKr^izrvf{o?l`TaeJa>n-tlGmWASpE=A2Vt1kUZTNhtw+lu&L;EW?iayJJSlwj|`ZmDwT2(bSl(MAQQ38DVsv z!XMs{5#3i#v+C9bMNLieJLmT#f{T$d@zsqXdm(;CXb{^te^@I3$qsA++0>G=w&jjE zcT#1FAfYsL0)YUUj8#z|3bj&6ETyeyXmPSkMpgF+b55=P4}!XZJ@GBE3h+fEti6cA-V zOuGi$5Mdwri6rCD9uek zI{+P%0CgO(e^WJPhd+2jr_|gG&BSLBoG9U;69SEHrZlG71Wz4Lz$;(=-Qm;fBeyM3 z$7|q^ClD?Pv07ZGTPHtn%O&=FB8k>#^?B)5tW#vLSu4oV;59ul^~pa3wdy;dll7d9 zUy!)i(WQEoolVLbg;jjsY%Vnco-b;{S@_T( zV$%RoOD)EDtC?T~1k_-o>_-%`8j)v2m=sDq#CX0lVmls>+c67xzp0rG%LXy*6w?{U zLEcb_4HCu9^B^0>;JJh-7I~^10b6Q`s9_?sEse)x zAjI}!A^(tR*7P})^f62_(V{9)@;5I~HXr-!n3D}A_8I$(h!Z6wbh1J>`T9+`&H+j+ z(%HbuyzlI!gwFGcCInrHNtU76)=iZebvzUc8VxxuLxjeRx=qneF&$Rrux6`JMP~{a z>Nj;1>*{&&o*6d&j?Sj{_zfAnsm6C{K4XT0x(3SvS~K!*Z!uf@pcagUmSi6Z%h%7QXdYNT4B)p)EBjafpTOSS$lkkqCA67n> z!4V`*CW{!w<9b{mHkl@-GTqH)FOw<(0^*>viWKCddvZoF)5cdQ34lTNNyt`1nX&HJ zf@Z^Mh7|I|Gh^n?*w=|iGK@S8xhb>WL|SKvyg3DI*&@=aq!t3z4GK0S= zI&4|=*#*yqfu4f|W_v!-$ppQ@mCE@T22=0iZa#;x+N;vwe(M ze!#e|X>TPR0sx2-D=Et!@Es|j3+#Sny(!9{Nq{1L)mrRUo#e+}uQp&kyMj5+{U89B z#E}v-N6X$QSE}T(rQ&fx2<&xeIrEM%aN^R`k1f%7am1N@c0`$MmeZ9Iz@tf~TNIOE0JOZ7 zou)Q+?FraLHi9M6-Gmuk-yKHgk%V5k)9Vtr^eNM(s|W3aaejm3jz~}1@E}2JYhY@( zfqi5QxE|uE&IT27lhJey;SI2d-?*$Xb@J7uv4)Nzi+&(sXaL|Nl#@AT#Ex>J)=-vk zJYg(3%NC)*kC+w6k7V}AR>-kYVHagL(j(DKV_d)X!%8tUlYpfV0Z`lWJV69#V)`QQ zDGMYA!?0{CNkxW}jMbbfPfBbE;E9L@@rLM82hSKPGh_4>k{ZmcA+j_nn;wu{$>v!8 zvCJIL!E@kXh%tL&gUmA(;MvbWcvj>S(ZIJ?c(D0I!ym_>Z^;W)hmEt4ifXDL$;_)H z;#XH|`Jn;0dL+g4bf3|0qDZ?o;qmG;-Ta%XhqHwtXj2cS`OOMzIdf*EVA7QY>K)9K z_w57Iuz}=_^t4*;iSYDf+|(7ho06T2(6>~ENdUr3RF*kKLo@r9O=4F9E4){IhnBxu zqHUJ|#nQ*F0U|J~&MdglT-E(Uj2%V%wbn?rXt1OBRTfd+i{L{Bt}}uMCL`eQDkf28 zcDmEVrzvAjbEz^FBXWPq^1?gt(k$0a83pW<&T-Wp26@#+^VgmP08i*)Rq1K$-%@ z>Qnk&d_;&9T~LgxOUi9|6YR#v0%6lf+qU7&(t*c($dGa>f*z!jgUmIZjGB*AU~j6} zM5;sLsDOB-6fIox{FD2!Sz{c;B-d~Z1Y+`(eKk|t+V^}p>S~=>P|s#wQgQf*3PiD8 zx3$S?P}2A8haYH8W~0l93{s|#k4y4?9msr z((ZCWzoHR4D^GXGG0F*5`{rqzh%HqHsea6mj!Y?%!P8h(D6=bSy-{qsY@V2z)`A&8 zYTH;IrC6vUCc6SBLy~);Wl&O@-6La_=~LZGi69zM!-FRDZ^%KwB9Spe1hcD78Z1a5 zRTan$N&06>cVC&Skurxzm@+k9k|GFpl>4B|>Ua*GT|nNPSvkHa%b%q}v5vu=dRD}V zRsyh)Ok8lIk#!svAG3uj?bMkDC*o<8R=oFFeikdAZOgMsSM2KGG}T!Hpo6La(~5!# zbjvK}`=qcu`A4~Go`QI`5>G|@F{^l3sAzd$`LqS*Q_MH!y32->_0p2URD7^dvAHN# zl@}%Au{&3%<`8yZU=3+X2Oa&V8slpzdUq7?p?e7WH3xyYJ2 zQYsJ5jYk6vTbG)Us9GR-uN!E_~1Gn}Y`V|3n~9lpS02zpL5 zu#sT>EVMhbBGw_Y6Cwz5577n+6Yf(4qX*3{sBs}9H8AY&^OR461Uy5W#f7$y(uXE+ zCub~ZTM*ILE`%@ulR%s0BqWt8n6&CV*mNq?7KS)G!y-&EBw(+I5OqXIXQB=Y(-i$d z-AOzST|Hu?QYN3svb5*~9XLY+m8o{KDhI+<F1@+>uaKx%?{_A(QEvtWC^ZGUZOU`vsSQ?Dp+!~Qcu<$FNqKln`Xol z+RTioMN8Az2Dyxy<1|rbWgTc0>tv{cYJ_Mdl~E#a!;}tYnPgJ)WcEW2EQrW)5_bKd z{i&$zlLk`Z^y~l`znQ_afQH@FiupuSY|DDa!#(%iL$D@%PRv2Mwld(%!PG{}@UgeL z9C7>lk5XTVg(Ou=p)oVV1!S#bl&jQNMV(6?Hzu4=4kX2~VC{4OrbUs}X=*WBc@uhqt$X2l-u=S9J^D~+zW?U;NrcqK}aAc)|xk*o7h2Ym$Mv9*C+~$$PbvYh7W21vtP;yLS~_%&r@q3MwsJyM67Qze`Zg7Q!!B0$psvkCDqkSR$1zoURlOzW2W z7!UVHKn=*DHWy}@F*-Dfhb3|<8Nz*vY=D@K44KB65O%cFAoI1J8awg_5x+&AfS^+Vzu0VK>G^b2q%6^mU$L;}<_9zJUw z0h{>NLan3HEz3U%4MczNtf^}glVVD3Th?OsiwP=WcGvAMbafO2r{Fmi%*MFOJ9{D- zjU|{iJT#Hzc49*3j@9XFU4}YOFz7HkMbJFM$uNv}f?X0<8MkiPDp!{gG1qz>uK}eh zPgZ^k*-v%kxNIJ4M_JWW69BPZvzPd6&&`0wwVv7{{>lIXAq3OFw}Hep$B=tM`sFHc@6q$6=N z9hJ*1$GmX9j;GP3BjL2$He(}rHkeBL(Q+m`*dJhe; zN=3*NEZL2{JK? zh4#AtELbA5pGZfF=#xAq#tK&~olz}700b>bq$3zL@*?jh(ndl^DqkA;?8xMG4TV{X zA)1MN;IKT!=~R+XB2m2XmMN@N$it746%~n0C@scWMMN#NZAjX}Sj;d-N*4WXi^&y( zl8!kO2@PwA;FOC1kSyk)`H3y~`C#Iu(iV$VQ;R&FLM8+I`~i;36rN;!bFCAZ1k4dU zl4e9SZrkyA-1?+B!A(SGxzRA%F@31PrZJYds3Jqda=()+5`4=aJ^)B*W#>yU|EeferkUJP z|1i!ktglcN_;8tNUT7_tW#mk<`hX}~7?U~F0N$^vRA;|h%X|5FKx@t{RP&`K6VUt? z$F&M*PAWF7`_w586NUT4mVUvWx2>Vf7r8E95&6B+`gn#W#g<(TW}%=eh`y7#P-Ili za!&@^IsN4CMsgq*if=?_HJV|m0hZ)l4#?e1#yRqNEFyoy!4@f=;yJqtxRn-hga{47 zI1H{yK#&9pTOUAJly4v$BIIa;){kc(<~M>=e6Z#tl68~PIAOYkUj~djeSnSjC=^^e zL(CKbW>Y4Zavifh$A(%WB=yLgMdAZCrW$gWWsC#~xoT58B-$x+NN`bt<)q`LghJ_v zakfQiDoI+EpN%}n7)_(z;)f8DVl(X zf(MVbMN%s<56WbbqtQW}e~x(>UT{?Nlgr62Im*4vsS=mqpsHN<#jN7BAaXYlO*4gn z%-aWmr>z{wl(u4}kP|gVuuEJDl zW}f0dB3}$+ng)t0Z27E>XA8{KXip5pXC36Bf@eXDqzW@V$9nFR^De*g;AKXJv;Jzu`{2X-|FN9)dn zk>p-Gi{AQQ(4pt6xD#a4t3J1=TA*)$aN}#ct>-}tj19^W}`0C3HVUi!P2e(}dX zGJ2xaTIt$y3cgfxmYl;H48v=g<2Wk>rBD%oao}rU-15TnCjntfJ&(SDmQlwKl1}-4 zQ?$6#H-KrS)F(u0(EU)iqg%LL_U|TX64>QKG0U@OQT$9rMZ7chio6-5Yq;WUsdJJo zqS%rg?pEI{w1n*Fm`b~%2WjBanfHa(T`{t>h|-~~I=cOe^mm3=O4SHL*g9jZ24GXv65Z1==h<24fdk3~}fnG?;Nn zD*0k##8Es_ldz;W%aS>eoX;Wl$s}1qO|gcg6^?Lj1?ln!8Lv(O-l$OVM zOJ>ALU?ENc%h|17o1qLHuJ$u@5GIEr9VR35O27=yv0i=d)i1gLpStJ9fB4MjZhT<> z#w{=0dIpD~aNWf(c)@w&M{oMvXRf<#8=Zg63pcNuUCWbzX7!c;%^2Nt|2@e~St!mP zN4;NN3pR~ zLP%#!aP{Zrn)y|8qfyA&aARd+MjAy3$3ZvZ0LKGD0CfhY631g&n4%mb;`b_nGE&}4 z?s`B*E{ano-M4-m2nR>LN>1gm%*dCTCY)vh6rw~FkE;oEv)e+@h$FdfFBXVlq>E3$ z%Egi=p$!0~8Q794r5mE+SMy9N#gMnS_^>6~ig{F!gKAt=yh$D{{$p6Zus=&sV@_pz zgy*+x8z%yyHjKkK>@o{stKv^ewm7e4ph-CZ2qY&C5)Aoi6a%XOWv8wb$w|fino%=qMx$ml!lnsa&21#nFR7v7^Xi+h-z=M$XeSMsAEk#XAHzCc9v3K_@lA%K zlM)%3P5Ux6lu09E!n--d!8!xzM-L89YeSF^{z_D$2J#hM~FWbCn+r4{FG(uS; zckAU_@4D~dK116o@d=Mx^LhCM1i1eB7jAj`Ijb(4UpRE+zQu{DoHm05nH$|EVt> zyn#f^CN`)=4*&p~3)g(}e|hP;U%m4~pWC~L0P}S5w_f<#*Pe0S8LJl_Ida?YJ^1%G z?O$ld8^8OqAAbJY-~KmuZI3(k#;1JGmLEQU^y@!&-~LsmLbAS5K_?A`@jVYLUh?9N zSKUW$ErP~ zZZ+l?FjojxOunlr#X!zdD4g4keoJQwRb1X&tD$3&S+Sj$A!P;R3uey`x!d6Q&pj%> z9ihBq7(o~LtKwov$0mVdh1P=`K2X+YlF#Tbg*lmTD&&UbP}fML#5D~?04%Bf0%#wO zhV|kIVXV};zgmFOsvQ$}@gcE`5_e}#JPPjaMxEY*mU)W&U;%FkW9!}`o~)6}HU>e2 zG)cz>HPE;+u`sW4N9GkI!n!{3)K8X0keU(B%{Ak8go|Ss0{|g5n!bRsZb{x@uUWTs zM90O4PP7G-LuM_;;hb5pU-f?c7&EGJg&^UfG&3fCHr^8=0EuS`fDm7|Roq33Ts(N9 zP1D3CT--C#LD7)MEqcUh0g?rl@=+&i#U~|;pe*T3-kFT7Y;y6cAZd!AFe&^DMvWeG zevL)Ie$hOgj9zwsn#YhEbn`HZZBBra$xcbF%FxtOF_q1=A@_1)6MY7bVM>%ItQN>? zCHtW7Xbcaf86Dse#kFahqLel`IB{=c$HcKjTV2{nE@J^q0wj8wqnVySL--{Y%Ws1z)q?s+`3Skf&*JPX?pC!OE zAV~Bq%y{bP@htb9Q9Cx$9g!Bt@xt0o8|U|J+sT{I7IyB~bJgb4*5cknC*WW(i{Ep9 zeBYU~^UJ=U2=`!SOn34c&Yktbe}B$>AG+g-pFF%~?b_2{dG@BwxbsGs1Aw{HU;5v! z+;#8$H~pKPw158WZ@BUmzi{a%zyJQx0gEx$BaQES{Bz&)1mM|U`Df?f@RPS3xr-10 zT5^Y%C%VCTqj>h*KmN}zKJ|CL{QIBXyVwBW!WHj*$y-*nANvn?-@W6=`fE@Brk{G@ z*Zk}2Kl&K#|JdXAf9ES+c;4s}yTTTOTa^}_FaryQC@!pNL@9VZc|L0%*#I2ux^1Y9(S$omNKlFwT z@A=dn|M}kaEdT(X{=BPxV%MV|`TND+fpg#VHCMdzC7-|Px>d&j<}SYaKfZDMgP(rn zXCG?zuRY_9uYckH=PSSPFF(ERV5NBj)}S%=y0~@V9Z0tY4={@g6dB_H9Aauy@ z4$VDnYgH&H8};aP@u@ph^o)YI{v1t0etEKbxL`cS@+63=5 zjBikd)vRAhi4~Hv2qxT>(F#$v519S7lE_wal5}!P6-1tZfnm)uGU>yv2jZEq*_`#* zkpw8Uxm2M=HUid+z3=s6x!f#5E?df|A1!(`Qgl3<`x2 zQT@BHuOqsc!NG2^fo6pB^K-|J9&1n}MRaUXU1T{TNOLO)pwa%Kh#s>yEOaZL)M0`{ zIy-asIPEtNT`p>|GN~;wCA1}EvS~OvFNlL92q7(jn`W6H6l7t+l_LPQ{LVM7IYjF) z%46|g!WkzT#$AkB&HA-up7VlQqo1sZ<S}_$2cfO(|1bj z5d>kW@@RHwVd+i%VJO5lxl?4=O(ah`i~;#{ttstI1wRgpBG()?aFQ#c+YX{RB57qB zD#5U~j5m=s*o5lmpJkFF{2X~zk08B0awki=aJ3fEgp%wu5eEzAw`TY6c^SZM?{(IZTyZ7IG9V z;CZJ$@4O?o-EdfAQfgEh*mc`YZ+}-msS2>V+5I;+ul|;oY}|T3JtPm}8LxW@w71;< zzwSL{49DP}`~Ul?FZ~}cU4O-WbPoXlu0QbLul@DtacTgb{NuaM|GEp;oQd!_ZhY0X z^Q&&Y_t)>;GzNf$oqu-S*{}V^P1k<*=%*Jgd36IoRKM1WjMl5H!CE8KoAV{`hK^Ie zUel&e6>KfihQ-n1FS!OyO>HruI#m&Ne$An15*m+(%Vg`U1ztr=Y?SVXCWlGupdOrT zx$L5K(!zH!4`Z@}*p|@+3Rl!k$>_rlu#<8LdL0f>HJ+_=pF6jWY0%d=Yqox4k1G4Jq@O_mgXeq$3O8dgf6$~T0$`B5`!=CPSy zH9sCxgQLZT)-8Zz*r=l!QAdv*YZ^YtC*nx9!2yMMS_5woUg01%+1mMw=IDCH384<((meaq^Iy#i?C zo-Dg0VDxC5X|~Qt2(%r?curGPeG)`W)3luYAd7S{Pe!_ybTrBUm*%6@Tb9@JYvg7; zgU0UrE9iORr!h{C_?c&s&ZaOTA?gP9{2xI%stHa{j-!Mqbo1;<&e4ux(-J?VVd9d= z!t5JC`gZvOkp3;n6~>l4Yn07}AhjTC*0L}qm*dqqb5NLs2to|nWcG$il6b zh+2yJ#Kez`xshnbUI!6E&e6rXbWG_Ls^01UQem&z3v!(C`S6GU2v5Ca?ZR0bUj2s`iow#XZst#E#?Toj(gv;WPYkjm(zpS> z^5dme`| zH}m9UM|Qq={S~YC-g9IQ02cQj+fM7ltpkVK@#@hj&=PLE@YG|cpY_t;yjJ=(Ufs;C zA02{4mwQzp6eI(mtcY@fvOkRMFV&!r5(6lesImgmS^0^DXa^4Uy2u^fnpNk_o~+iA zr8Hw0!i7VC{DcpmcwJI$O=qz=Gtrp-a^$?&rkG49C0lrk^3CfA9kQwy%EDtPq)(`X zs1)czLO4fKB>1-90hSH`8}*djXS$N5qPPO_l{Ba&qu0l-LP!FWExqjg#-V1HM+TT& zr`74R7z%>I9mB|;6vEQ2WZ;pdkv@WjVt`@)K#9JxJZ@PwYux~8JNz2&LNAa@2tH(5 z4^bpUn44=xBOD`O19NjtgQM|c8@)rf;|36sS|FkZM{Vi>qZ3Mrpdo{=j0R=IrqDS8 z;5R1$0p{<}ka73AHwj;IU_?SiOx@%l7xwW;s04uFC1(v$8)&Q@K|pAj591a!#n8=> z1Y<&gm^Td_{tDxwykwN3Y`RIvM_eY!CgtmKmhtS0@trI>0(=ooN=z7gsSwfSk>ov< zl&h>(hgvd(1TJgZJRIk6G=%v%4Txz!og?l;f$>3feFS8Y5}stI9+@yIwV4_*v_vNK z;6;GdN3QQ&ZM=dqI2m?cr0|sDz0?|8XGH}Wi0n;;pN=S{<$=X*7o>SUBBRaZR_eN*S`_9nDCk>kOfXyvfbwZGR=(Ju$&raos&%E`AsQxdAZrvE||8 zLDnQJN1O=PoO{&^FQJESxPSLTyhO*2F3fFQh2y90`Qmi|0CVTA9xd!$Tpl)_Btm4K z%C5wGA^^zj05G2iG?qwbXB9akdU5+l@7(#Rb*I1N)Kgx3+Sd18eCXl(Z+h>Os~2eT zP&>Zufxmz6_EUY$^WE(YAh2+tD|_thw_UaVA0GM87uJ3Ad$xZ0U)}M@8~{Ljs6BRQ z@h`sV#yi*NXyEvk?YGkNUv$l?`|dlo_0{J;{3~BPJeT$#%?AR2(_ir7U;6$t-0rT` zJAdsb`}dsz05t9Pzq)DjTVAr^qTBfm5ZI)>MrZ+xv9wl94q7;}*xvoAFa4+cPxXW4 z$XoQTYS$eTYN~EumkQMnoyjwSdSgq$Vd%3nF)2Fg=-3Wg&IMQokoZnWHE&Gl900H} zpQDc%?C#VWG%mKgLTWrGoyF|ilDiyD+m2>xmxhUUrNLKt*D2a!he4TNJspq-oJV`bZMUg#Ro$$_!@eN=OpeH%6sx%tL7< z{ELi>hI_a#;lN}-fF{N+bOVhP3ce~kyy1}RmWZ9cNCz`2LAnTHf&*$FrQ2kPuM?K^ zDLdAfGK$%miH4F|TMVX<<^k$x5o3Ueh}6ax7$TSyYl!g)89TF&4-t|)CN?n=tF15r zjSMbBCWJUZ5HJZnln1H`tIs+QORs?mO0 z@KL(bw9Ay>EMfU-J~3fXf73B}4$4rZQI|cp0#LLl=Vprou08MS7hk#N$y;uH^gyeZ z5AEHzaKRa;kDl5-1^}2l?aWgb_dR@gR;|tu3?*Vdk-eJJX&TCzfhdegd+^YX&m7wE zna3ab;DxXLzn(=J(zD z#e4S7nR3`1yLs0Kf8~iM*N*?;HDC3O-*MJ&{mJ&Dh;+xk$JVcZ!OPa&byw+NsWII8 zx7&W;>&{=d=jpAdAG-0@qqHh5LWy~}>-L*};9pfS?uTRdZTo*Ox$>W!yEiafb9mna z`_K8B^I`Nji~#_ev(H^~*1m)H9j(Sg380}}cRhK*H(jyz%m-jcd6E`&PYDVxk>q=O zMXh5%RMgN?w!UJt1SoKx@mf|GGIM-cHT!XeXiSAyEj95>g5(q-S?Y|T1m0BTcA|hx zCC6CSq7`R@oCwozi8Qbn3}?CN4T758+SiP;|D#2s=5bOZ0@#<%%d_H%lRoY9VH~kE zT$doj^|F&Ev)NSUXSX%p#iPMe#v!+yk3~{nb*u^mDV=DZ7V8)gX%0}C zokI8J*dwxckgzSi1CP`1Twy{H97NQP=0*)PP2;@%n5RMn7&cfTA}%g20s%IorfK2} z%Q+53inThME^i`UBtHPe=qvIu?L~ZfW+J|<3~98ZbBFc76u!cZb=LNA*J0ibPL3TY1aet zfCd`xmxf{WThgfISrdRVV z7Ar0C(_2g?kp_vtO)=oy5{oJmUpr`XPomHY(6+`5w{5%cLQlgRoLqxmTzChN)sXF( zBL=y@=$TInnYeR7@|f@}LP!AvCX$F3J2df9QkRwF+z`f1a8}I3bA_O38Ukv8EOCLS zmo6HfQBm@Dw?PlLtr}8Cq$#mayt&-B#pn) z06VHnZ)UXN!fRf7<*LVTzWtH?FgG_hH#av5OM&g4#~wX$=9O2TyJ3E`YQuR~U4GiZ z#~$00YOoUt5Mb-&TbHwX{=xV|u>RUBU;1+wueo}4+W_GFrsr>H7mps%>{#>bw% z>(m$h%q4SMR?+I>iS z)^GTlH@)=@XD5kCbGtvg{pmS?h2{(Y^^SvYz2fy3tU>_Vd+0MCdE&BvbM+fuaLR@e ztT}JhH9xrJMH{5rxqTns_ULO*fB75EIrHP&@5^5nhS899MChYWCucU}9e;K6x~*I0 z=c3ly@wYdRR=w!5cU(3;ea-xNmtXqs7wx>~#)EfvzjB)vZo6^MJr`W{Z(j+Qt!wAk zthxA#i@tB`5tD_4eiFqW?;l7R)P+{DA?49xQosnrkfbZ z{ekex+oowkph$#3JjxP1^J7zD5_NqsvYAAP*mV+rG8P2(J5bt-e_e0c#VnKHI2cF*olKrUWKUefK+JAv z`bAowc%W`$8F7+=jUhOlu1GQF4K{P5QPYe#@j+BM3Et<@E8X9=0aq09~B9fYXs3(O)>x@vl^a9#?uG;c=QvH^e-)yL6pr>t2oS3 zfvYfiI9|5dSw!Y9_e@g7BBqjtf-!ibu@_sF-Ft@y8Z$N^Ln1iJRC72BAxyp%D(B>~ zD-~(BHksLp9<;rXv4s-YK%vVJvIrZM$l(|x<>V0+&JCDOIcX~r-%&Cw>@@nqdePms z3G(8Gl}UW6Q4S>|4?OLRM&_UvbDowm>3(Kj5kQrSMHr@2gd0>~O>d^z95>7WAWVEJ z{FE^p+6DKBYWOAm80vK*ktopVp@R%&>ioFo&ww9BY7ghN};$^j+hAs{ewHZ zeP_7o(rd0da}CnvuYC2Ec#ZbofBp6M9|WKS58if1bLEzoz3S@G;-MXn-Er%q2Tycn zG5JI_NUbG+#LdMa495!Y&@GQXxq0&yKXA?Ji|1+79(s89&Hv${@lI#}usLwY&)k0L z+b_E2JujU*7mqxBV8M_uX{c_&dMl!aIKQ^G8R9M9w@+S{Oj0^c~1dHza_g_ip>xOV0nkc#96* zdB=N?UhuY;o&HOk7LV@P^Toe^;)4&YZ{;~-_ZkBSnjQE5mp|Y9T`#}#U;NYN?9q{( zPw&0%#!&+xp-ffkt_u~T62Tsvh`NBOIn0v+E=yL?)G#2jY|OdxeXqLAnqt-%xw%zT zc_(tFt1$q@U_@gxnl}d-79)VTc!~&(cu28;cr}<4I;_K6H;PR%zQ8#U&dxFZED8@x z6=`mTHnvhw8eRn8WmOXF0kWfDFx^FBD)6BWE?y|ftHtI)OC{tn6BjkSVx3Xq!L?(| z&7*zuQ|@xI^BsHWgIpETaJBUwhwe}^qjD*iJayvcrK*%hmebQbGTP&cH=kTQBmAGJh4kG~E1Q4mN)8wr((v`xcY2qrWi zUm~FGTO|u-Sp~xxSDf%B+oCwmu6#|*5z;q9J~IF+lOsK)o=Cs$c!$jH{A{UECe;o0 zsR;o2g%}xF`df`t(4n0csgteQEgQZ}5t{=1=sY9AL40!3V)eLbR%fDI^<#vqFTa@2CyJ&>qV+{J zC3W;MOi?sDNR6BB`s&Xn^S_5SiKlMARs>0YmFB+o+<*N~&-;Jhean~EOe67)al8UR z#p#ilyub!(MnH?KTBkv~lVvGcOC_~>%}p4_w*?EM{9o$osf1~X#QG&X4n!)tVT zcyi;I?*{g1+qR9EAiH;*TcLqSJ;BskX}lmEIzZ}5G9!2<$?ef%pDK5{AIu-`v2EKiwJmp310)3ToRM&C)QrOPr#MN) z>E=*k_>bIFzyxH;JrFG3ZCj1o61AdnxM-9TO#`FRXf$d7aA9F_ad8}CO2TUxGaDPC z(0i2DH9!6MlhhcFw9iB5)8X0xl;{=Znws2l96Dw8fyk`q6u?{ zaWoS)5%>slbYR3cYTs5_H;{`{7WE?c3xZ(bo#kAyBLT`r(1sU{ViQfnLP5p6*Oyc1K49QdoyKFqvbpD^s>C~>?DO`6~pEe8IMHFx}YKjFi`^f*Z`iL zA!ip5NSjKFs|OQQKD(CjKAF#*bpgQ93$8u)=*OOVXw{U<0%AudD9#pSIJ2q=+{;Qx zhNf$TF#Cehd@>%E#B{RB8;$aQg4F|dlK@se4{dX}i#ib`>y#;*o_vCzA#jhRus4zh zXe=kA%6&(X*^%NjWb4<^NL(cMwsp45qR8^rYUdF8h0Rib5ajjfOMq#(C})jgC4oxl ziA2RPAG^N#95`bdMMj$DoQOj9uk3N-n3VQcv@-RkH9C*}a2v#e=*d>s2SNToK^jDV z&ACr$7M1v>5;D;e!kwWPQGLYMK}Wy4aGbMvMNAT@nFDwY;%GEdXN)nUmaxI`n1I5j zv(aeOwBwk36n#1geMU5hh+y{{b!A75dnoSBa<5wt|uif1RW1NC?zy1}ub;7XI6Mxv_FSf92D?i7KBO39Bd zPZzZHL>(DsYV1GP7ejSkZgFiX?S*h1Qq4~m&XNF$`y@|N@mUS?_#z}dMD4rjcHMM{ zK^PG`sK$p-TNsCc*Ec8}7!kEY?1zMRm;i#~Deo~O6H&&xsnd$( z{2iSK!i1GpAh}y&aPEf-mT}c)WRb&o5GiGPpY^rU6$EH4mMkJ=asg`QIB*9uTFFKA8LF@bu-eSXT`r)CX=1ZJ zVzM+q|5LoH-{RU47VfJp#M|V}&j?qq$Fslgl7IYyHP`>;(+eZ>u(zN3@r_BpQu*XP z*0kY?AFW)()RK(tm=9`e6)HoaqakRq)1cy zK6tZCFp7d*t|VY8F`w-e_VUb#bu^b^-CoTR553}-podZ{d_enb)?EZUnG8#$ax*49 z#bHL>$K4ht`CY`XM3KaJ>!3<;sVN(*k{4cEAOm(e~##gAa#8so=4 zEjJzTV)pPSvaaOzr``zGi&(m|(fT#ts))|403q98Z*DD5o3VCwf1T%%6QPJ9XR09i z6*(izOOgg{dJ#HCMFP7@3F$juhS6eX%rFHw4z6OMNjEOh%7z7{WW6CSK#-kFqK<_a z?q;7#%ngc-M%Tj+dK9!8tVG`ZA}(p(sR?2YnG>k8yufKC5y$8Qch0K`TT+=*on*_P z=mT3)jqqr^PI^&YC&XsdGyo9KT1Hl-M9?4*v|}1CwyRgqtzNYnn1om>m0kB-E7ya?)lfc7mfMac5N6 z9Mr@ed?8F^_Xkm{8+>AzhpbwYNRtUa>HE>8MiE_}Lo6?! zVu2T;Jek>HdCE*lvw^Y{4l9fpCs+aLo6B^ zQ0izQ-LU)DzxfO4BQ*>XPiY|3OpzrLr(leW&bQ0sUSs!E<>({k9EoMs6DS!B1C7_d zIwmS^d)fc+#2Df%`g9@!0m#YnIpxS2gg}V?5QIi^GOUvwr?53aO?@1_kZozs z`?5_YPnG&qxO{@?Xgk>ywc$)A5f#)cZv0HRp-?T_)(ZJa)-eI`jgrV+T4$#SsYzEX zeJ~v<%V*Oy%*WgMTjB#ak3l|*<|tGf3kjnK7YeA2&LJRR(*R;fi~*KH)){Qaw79T1 zHy2(5Pi@K*#B!l#N_cNskHLzG7JSTgh+mL)jih5v%a`47(D8T zfEdmPF9k1jm}Lk}{bt-TP9Ym=(7*`9m0ablBQQ&5}fW?e#-Kn6~ z@5vWeb2wp4oaX?FBR$;6JHa3~)mEUbt}@TXiK6ZitEH=`Is^W4_C5FYpsV_Bejdat zd7Ke`9~m%Ko4BX#q5g{O4ArNkOeR@bJOwa!5*cCy~{M1^ZX)Kim(sNk{$ zg^qR&{#3(nxkMP5vpk<6V4ZOeHx{IZiWlQ^scl?75(wRcP_guier3-ImRj7*8->z#B##EY2 zxHP6AQFaE9^-hsFT~a3+M8c9k%hi}2HE6c=@m?tzMep94ang@QSD@{UcCf~j1)*gE z;#|G7$nUx{t;bo3KrQD9rLR##{QtA}-T`tP$Gvb>&+KL7oCpv(69jXPB1Ms65EUtj z%91Uo&z5ajvg{{Yj?d3Ql7nRBL{gMU1&TR{lt=;$AOIrgoYMsy?rwLc>-(d_bkFq6 z&hG66kSH#3yE8rA)v3DbH`UchsGBa)Z)REpe39pKMZPUCo~*ILt8|xs5q`F#1ce;cSTm z(o-2_MIvB}|LnIcP z7_k>Q#&$Eih~yWIJ|k$ASl`E3``W9O;=r}8m7{VX5$S)dD>*2snhqpjblOr%{|pvQ z>iXfHKL4#%<%utm6Ng9$D6PhGv6I|v(j9uyw~^C*B-&n?Kb^D!jhFU zAlCc_2NWw;mumDbE!3RJ zY~#n`E$U4Z@JUD#jMRLym`tWp8z5sn%1o2kC}eSKa;Qe9c`%NdNLfY+UpC{He$8&c zJ}R9y0s)bU4iwRY!jN;lCyKbaC<8$daLz*j@_kR>DRNPhP7mU{1v?n1t+eN?qv@?Z zM2>Y|Tj!DC8pAb6*HH=q>0lP`JqgXkia^uD#TYgM%prA9mysr70|6LA#yrl6R0!S_ z_W|AVQ7P_GWOb|glsW2EA~K9j)#FM6MonNX@6y%BIIUbI65x+>&|8~#0IaML(ZVZb z?F3*Tt{IVci9kSWp!YpVz{q)4yU9JE+A|sjv$vop6#iy$J;LN25h&WUZ}?7ulK+tu zkwewoIA)XuMt7J3g($*xRAgsMr`6-vp}LZJ%N`*1M6p;wP)8eX zJ>w{1(%b@Ou%!M(Wy+bNn#WXmLAPks8)oe&dK{P>R^mMhlFlUN)}*qMP@XP{qHJ}= zQB}kOAY;n35|e1i5i%0?30Yj%pqxRm^-NH5y!HiO+4f8JqqX2C;YRvKC5L{Nrn2SB zE%tqI4BB3isc4!K5FvI=UYA#WJJp+!;{M}h)0;ms=U>V$gF#AYuS%G>RmC82);2Ax z)VY{uY?#bdN3Q%F?4h+-=4l60Nj7ywQxB-oV92Py?#bv4qC@&sTU>219YeD!lX8&g z82O1HhQ6rx)Akj|Q`Q9$hymrv)`n6VMpsyz8YxW!)s*z&Z9HSB4*S+eQ|m1q93#FF05~VkLyuwLhhZp?B>-vAfkYq7 z+G;b?IB`qta^hjgd8n=^6P+kNp~}`%c^@f5Kbn(~JxFnPW>ogIom+H#I}s3ZAbBpm zxQxwXWvOc=ijwhy=v5_p3FbWW66qo#>iYHZLmABXm6{+MF zmKVuqH)N-nMV&kj6_}|t!vu)H$(Xy*UDGs=cCN`Ur00m4ZN@tl>Gz`zP*UH~WLa~d z#-MpOUT0@1N>;{GNkNpR%NW3kp;T&+$ehAfGF5G(B64J_xsN&)L5$_Z>ti(ZE;-2L zL^oRrR7@_AJ!|t5V^evz=@jy-F+G!1={jf4;X!P#)Px)h*c*~!FPGmm$Pqx5ef*|r z9Y_thXc8kKQce2m5FKg#Ih6$c0vHeR9TVI zu(V_JhEgVav(BYRQk7+F1E1cp0|=IxsU266jKntR)QC%SIjD>h_>V+VC^;r5lHRGs zSWnsf*ao?pA_T_RB;sKhiZi*?#w!xbskT!Agx?W{A(cwv=pim*%BUD7a^IN*LXZ%| zxkaWx7V9PkVGxF)=qMv>Ppp0ktIjotC~0pQ*1h_!h7wUsO)w06quoe_mZs=gMDUnA z&rP?JhS+qZlqg~fB4f-`2f#@iSY>J$qGnyKT10pWMb08d-JF$0O4{DCps6-P}A-zHggiSSMyxMvnSX2j86HxP!x~{}v zT)~AkMT{w@>!+?D03cb-3r5-TF`}l8rJR}BCQv-9U&yG4;v-_)Y)Aw6i>0?2g2aXR z>g|FE^HSw&xiv_V%V#eX_Ccgr^dBb!{+dn6|M*3sf#>*c`n z4ed>2k?{zEjsdHmb)<3rFy5S|nL%Z#Mq=2V^fVo%w$UtllXI@DxUx^Er^FjarCn=Z z1hZ+9xC4T==Z!&O`n{k&UdZlwa{vtAcl}zTB?$o0 zL&gchP)lf8i!cZ|mu?q~F-}H2?3g!LcAG^3-h>F3T1VtsV@d4<@T8gsWnS83me3f= z+(=mHa?cb2=YT+*ILO1!L~<)|HHc?qP$E#uqmjhqAugZH!L0kmMU3KUmR1-O&PjENScSiVMa7}daFMcp?&Pt8Ul`+4KlggVe&3^_6GfB+e2`(GlC z@$Nv~d!*$?%w{!;R>)1{dWFiUNi=VyQj;Rtddi_rub!#euxQ!HVUVmpVrpT0Cu(GD zIWjini9Em0h?oRw!>xw8Q$|&+S1|sqZ|F4Dx~ijoQV}BCJa^Y+n)_wRwO7{IR_!ce z06V@G1KM04&rms{#1Dr&1_1EESU-A4_2cKAGr6>L(`#!wO7$bAE||A?PR~p0j!C4* ztFJF$v9l)};nkwBH0leWx@?YRKqABR$|sQeWC1Wu#Mt%NvZ2f>vhk;s%oP zG_YG~iWJ;@3pIkFdmx}Y7I8jGZPUbs1Y>anm8?tAsLZHTQU{Hc+4#_ijj8CQxO^UN zkq(=5=dOlQ8qSRDKq+f#HKd0|Y$ew3IhA&3>b>P!#cbiI(Ji)9xg{m!$-GA9eTa`HOlwqrBSw@X1OhJP5$gBG z1eThlffI?lMAo}wyioMl9t)^jFj?1_Qf5M3F?C+MJQ*TRH@&gDMrUW`>nIqE-9G@J zHc~O82(y-^$BXI56)V6P@ChRxDdusf@i;R(wL1_QV_^^)0g^y*6-jkt{})EF-X%nOP|$gS39QvY>yL}dL*r+(iAkVe(a zpwpMIrZ`d0p>@j+^N<4o6pw7%HfF;7(L>p><039!*U{bEk3!Sbk&{N(qOgIW*bSp^$Qu6OqwMd>uiUnd#0f6ZOyuD1Jk=57Ra) zSg(DA68|Jqhon`*S1A!7`scNN)Ski>rw86lZLl4X&kJX|5=)bk8IN3{<^ z`l*;sGEMWSVb!cbL)y8DRsTjUpby=mD1kk}qT!7SjY+cW6cC0ilx3vV(_&1bMj9rH zKq=H|#Q-D-Me7q8>$H�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%0DvAL;2W2-;dNe}py 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

    ?2kD7B%fa2UI`Mz)!P{aW! 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�w5-> zf}ez%+mS?x@nvK)Z|_zUU&Zlc^LajzuBl#~9=&j4cUZc6TmO>tdj>-bosB1=dA?vFouZe-0ne(s0q z-0s8YYXbj5-0-#^e^YVd@ozo;uV>GULh1hB_^p-x61Z+okjo)p{H5rU_gKs^%S68qJ(EM)ma2z5&k~vd z0GzR0SkLBIO63WwGgdqWX%6dOddsu>BY;{C0P6j}c>RNm;E7M2{kIRE9HrXJ|Nj0J z000!^7$T(k-Sv>?gJ=T8P1~+5c9(wkzuqQUSQT#m=f`&CNQ?_!t5#;F>)x>pZ1(Jl z$3JuY$wjLk_^F?M;N}B={`CHomnFqmMPCBpQg!Kj zu5Ewh^rxOIKlp3c9{SZiryF}dLFKuzkN@~HOK$Aiu&sOJ`}$w;p7me;_2-_QYCIRR zHEpl|g=?n&Z0|#-XEjPFyYkJ??u&pI4kr`@j@sBzk1-+|Q+$bROf92H%~wUZw6lNd z+V&}!y>auhQn6SG%NzU89y>9UC13~hDf{J z&^{=a^HiC!UNZ%pmyYbkxi9gDh%B(&;8=5rT z?WL*8s5gSZQ=lLoEbZH{c-^H(cU^2Vhk_N_y7AbQIbkPXE@N$KHk8~VmP&22(_>Wd zDVV3OdZEw}PM@h8Q1q}YZA<#4I|9Y3N(!_V zF;J<1wcW4PMV_#$tu#G*$B+N!ga#_M?vErMj9EEDn?Vt0o4K#XJ^^KnPgC0!Gl?-d?Sag)Cr1gqUkl}mN5umQDmWoT^jn$;aOs%}`dsycn*;yAVesV#}( zv{o+AE&>o?LyU-sL!qr)n3^0HybzE$*_CGC{1bb|miH}QsdPS9k*!9B6o?oXRG|ub zkCl0fjX(f|2#g^iBk{_4jwtrQN!3T?rwX|uST=*kZ0t=s3c8WC>fq%VDMZ6|nN+>1 z1nZV^*$_B|=pMWwg(jcMt0(?0yrRN^&@N0tY3i6H1Y#)8qGl>Kjfgl01nYPllGTW! zls8JG-8})hse@{WfC)}Ga0U#36Bs;B^@=ry2tZ+Q($ymsDFp%zLIT}BWd_^3oOCxi zOg18qKZpRNYK`4eK!&Q)z)5J|(4dA}14a8-UyRk|#&Ea*fITb@GY8=X#E%(*}LnffBBogYXAIf zGlvrer~mcyd#}0mHP@~X5DE5dylY3#)Bo^KkDfX?8it?{yi{V-7cN$oEniVotg)N| zT!QISXUCSWS=+7*oS=8@szsw`PgODv0p7Fymb-4arYrT78$}5F#?N-NZQa=x>l{|! zH#xE;zj4cw>aK~42S#RYX}@Mk-=!m$jQ27$GSS!D9VGNC7JIro#z#hCXG~Df_FM0| z@!CWVoq@q%@A%n{_H8%CIRsqNap(O#&;I^_Cw7mI*0?pz1k-1xDy!R9bZYTN<`0D7 zk%_*Z9+!FS-nexce&@gcm*4xt-}${i{N3OC;}1O5v*x;W9qvl!VY#hMvxj{6_<;)( zZQb40DK6Br{noqvO;$Rd&#&3kF>-j+?&W$dWI3Dh+|0r8@iiT5`qaf-e$AH7(ZgdE z1~f1=P{9p1b|zp&top*pC;!j6L!UhK?Vk46zjbLb+!lkpd>iE7RhmY?*!@^5@4jmcH1`+{4zEonh%4`&brOBz8Lb05y_paMKyXW|1 z_OrnA#j>YBVPvw(h0(M7_a26!zGW-&v)=q34r2v|thc=|Fs)rd>?oCHXQ!(iw7?`A z^{4d+Sh)mQqgr`p%73t2{HH76@+{?D3=4S>Rq&GQ5cR+Oc8|G z+g`A?dSOSYT%Db+rXI5_N)ft|ulMzDs_Z_dbOXcLS>D@Lbh=dvna|dESFunxrVD^I z0x@3*Al5Dx^4XwVVw(BBzC~eubaILV5QMqTuH1#`*|Oj~7UaB`VJCp)M5g9@R4D@5CFj(5F2CVGmSx+yg^j8puvq8CRB)@1;pBO}}P|Cwh zWrl#-%AK=Q6NL3rxo>uIj5j#&8xRYH998ReB9tIefQXn|)L9yssg@8Bks<49YpYjh zYTTUBQ7DyIy)qj*cD`_&h|OLcJG+1X5g6)QzAUH!fPe;wco>Et-kfE7cEz5q{Ke@? zQLKoFEMP${$mKAs@}7=18SY`(=tK+<7%D+guxwGs*vxcYAG}Pgx4n2_YFfBHs6$8y zh_I)&YjDnq6X!e(!!WFiAI>>Z zuH2TdPEXfumjXBtg}hGF=P#YvyY~RY}dR{{N;8v@q3Y*|}qT@gS80_0fNvZZaI z#6FDsKmb9|y<&O0c*~pqA>y2PC^$5TgK*_hZUZwujn!isJ#n(W>ORYJ;f{=1U zk3N3ku4`X@%`Ic!e)3{jwT5C+92SS^A?K6dAaXyVK_zWLmeH$Qm2*x?h_YuL7C z^XfJVI#;c`>s>!|b4nPAVkg}F>@MuR`^~RfU+(Byx%S@oyy;p6Rq;ble`f^mc>5c+ zws*C4^=*68558>b^dq~D^W-@hnF8KzMhn|bt$=hy$rbuYiJ zvz=jSd13qeHeKI_0Km^o4F>F*oqYp`Cc=Xg=hk&xyQ+NQm@#l^{M51Wr5jg!A0QI8 z_itD^<)A^=eS z(#g@n9gD7MXQkzB%ldKvz@Hy_>{R8pU)_9dU!l~?uKSs5Z>v@x{rU)J0M+oxPoC`l z*=yc>&!WZcLEGxWwx7KAZTIykLpgWpI~OnH0BY>X|Fw7OJ)2&!vXDL~aB1<4|NHt^ z?CkCe5P-@Xx|X-$=!KaEN`>`}zjXbb7bidWH>W2euQ(i=e)M0?Z}^q#?%&$k!9Xb6 z4i`1Tj`iyo51%~S*pHeo@}tSwi0n_9;31pB&bIQzbQO?w=Gdg?xc6j2L}bPPpS}MM zkR-Y4#PRncvrJZ1cUODwdwTrL&hBcRq?N_Wg5Url;NWlv2X}l0$HBq(aCaP>fy4ax z9(O_@fslkGgg}lJ@>;Fm@jb4+_gz(8J~Q6$kI0CO%&O|Hp6OZb3ccy+u1XW};>C-| zc%OXlMI?j^IV9teRoDEeV1xPE1&%{Jk!&^`FcMZ%IPO;(?Jk%3aB*kL z8ER`QhrnR*zMhe`?$BDUs5{+of>=1h0U}l;u=fz7a&3}$XkhFlduC$J$ocy@ zRM^>a2HV<8Av7`3*E`zY9a_tIJ`Uh;;)!I^aKMP~!Mu`uIJdf79&7I=ivfk(8%IWt z)3Y}>5(HpdR+4Y;Dj8yPBC?v#tE^#r^aw9yODxvc)3Kh`bOUK+E7czB?r0A=0AUvI z?-^;Xl^k%3pFKLV+n>pP>v*; zX?wRAAppjhVYVltYZ6$I=_1sO9f??o0N}8`)}w=CNwf?O$RKP)c+O^#P$(P}fsxzT zbOt-RFpQ?zI5c={s3)|(n~$KklIMi6Xp{h>R+I_zPMU_CAQp)dU^E($2N40t+07Ok zkBoM0Z_Z`JBbymUC}avU43im5<=qiT2Q!#qn22aZtq>YU%(9Sx$icp@)8j{)Sp;q3 zfMFxzR&R*}07RS@5+{$0_6`rmn!ypvOitu*$8nrO;?&Xc zp|R0M1!A};40m%&3C|jL>O>cKb5RTr#Bi4gq#zneReVug!<$K%$VKxsU_{iVVKYd8 zp0!94*8vbvq3zfLVsi*MNU+We3DOV@*)^haCQmU?Kn6)|WK2Ls;xJQ(RQQ<8FAi>V z7!xRyAZ9RT7z+FX2^o>hB&>B(m64?0vM3AFZ}Eae9sC8k;e0ZLMeWE|bpeM8$^so@ z(m#TFm?$nPfU8>Midh44NIT{JMU6ubB2xEypra4IA;qLun^I2Yb))LguqzKaBIW)A zs0u(-XEj|5wwBcIDy!nE3uUi%zryRckPbG31B`>DKj5~8SCofM8 z4Gx`r@KlshDYvtB{h67SqAQxh;??swI(q!R5zBCLTT2(8pWUwCpNJ~H)PN`5?C{zF z4(IPJ()}76SUU;`wk+3#C0yqw-LOg6qO`1Wt$(>Z?HMBNy ze&?;A(Hro8SCBKZm$EKYRHTfBmWN{Do7#0a{H3N;{u>_g@;{`r5bt%mcKvaQV}J|CR6l zAveV#m7n`Re^UI`Z+rB|e(J5Pym90D$NuCWCye^yXv*93i|KJEJD0B0>&E-G z1|I$K!5{C8nd$P<6RF3AlVv%-yc9auQ+|HNfpB4AA$+E*bbj9PMk3E$e(uV{uYM%? zzR&CgUk^IXuX^RcSD*b#(E z{OX63@B61689z97>Qvz?A6oK^NptqvIzh@{OGs;!lU0V&l=gsKJY)k zddXRx_{d+GkG%YWZ+`T(jV9)nmae?#U7uav@iOL?x8@hp4l~Z}{I(a(JbMq_H<-FtCT}Cdq*55y}`P6fTeG`TF3tU}W9(?HJ z8Bt(1Z-)%Nv_3y*b{-w*H6q|pX(=_mv+UGmGb0xBYir8`51lxj=ehaS>2lr)^JuKO zkX;0KT$Cg6CYbYk76>*TJas1TaP~M$e&Nx|8xtR)r z`BP`|PHuj6I-9pc%vo5Qizj*>Jk_yV%B-y{nma?8V#%{kkb$h`v3}=3IE|%zd=v2pUDYLq= z7}^<17fTBN;`1%`=CZ|T?FWrVMlQED&^NsK^mAS~9s-o?#cLCNW4%YA zmx^{Vlil2qDTf?bx_I8{9~c=p%L;ZeliOIFFGaw8U~{%HJ()Psd#bEDWtR-bSGK0Z zk-l>yC&_dK^W`)borOj;Y!&h;3RN35=z2I~IAl2BB9eOzE{epO3)uxv8nGsrm(Es2 zd-2*t-)QeR^vHI}Q-iOvpdn`E3+XaJIBHQTQ{)wKrj^oS8`G1C<9%oB0lQ%D&Mjq}92q>CXfEzf z*&F~&)3jqvO)#Hz{e1uc0gCyx)#ZT)Pn^#4+`{TiHpfkaFRd>OnVrW5dPFZTXJ%9D z7%>b^!~qQHmE$;$0|1O65kq7lD`pjPX)qAnRM8?;Hc;7FoS5hv?LChDP%IZx>6PUr zCyWS&Gru&|m>78FJ>A(-YH49^d1oxOTQmXOeXr1&Tb{qSdF(Y0P~P6Sa&4a5(lMU# z`Sq34%|nlzqk^+__3A7yxyT8c+0<&hcX;E=Pv#3tQ%c-e7SVKYS>2t?!%DyD>zv5`~cn zbIym|AY+Dr0y*aZz)4TW<5`&KD~##Yk_6TWNnuwaOSZE9HIEsOs=dG_08}joP0WE} z)T|OPhy-IAjDUWN*>|lhOo@cNeCDbO%_gmjq;=|Ico-BqU}ZKdd7Td-s=}~qa*OgS zWg1`--R-OXF(Ojp6Y8n$G)$EMfZ`!=&`atRESo%atNw%!q9A+p zgY;Y@0KiAS=l8|Y%++_5sjk)P3r}Rksw1g^RtLW#YU4v611_lV7m}8X3J~zvaPP#_ zyyrc*mkG4DN#o7|x;LDrEmf{{%k&T;kn@Fy$|ItW-$S;{&+zV z)H@p)2aPML!bNP`(E>HZ?Ef8tnz6;x*ciUMwjH9?t8fFxv3kJrhVtG7jTBIgKk%E ztJD4~p*pA@h7MZIL7Q2%A$1mVC>^{>sDdUtxpqB`j3Yr*NpCB@37=|G-d8^nj6(OVIvs_aY-8CN(7l4E2MB@H;*+FJ7 zgE0okbiCTHR3x z0Z4DL9<`?-BvM))$m8`5Y5!%RqIS8c)0V|vNBGTPb-aGtYM&W6U`Y{x1Z5!D$zH>~ z*uCmpNH(fkZ9aF43Ta6Y%4?Bw{ZRjvTcV6JblC>2V9k1xPH{4YzGhTZK^eRwsCSmf zOBD!Djy~l-rXtP6aVerxF6;~9Oy%(QM{Za0ew z;QHhZ0!yiZ*JJv{)hO`z@(d~@2o4gZ!PQjUd+GsrLjn*TRs?E2ge06JX`^R_Ew?F<}S( zk@$5&chH<_o%#*hi|#~Rb=&pcHKi-H`-aXp*3H1aqBfbicT;9wYx7$+j+4(Dzg zs#zPv9fycyY?R+|#)WTOBNn`z7t-b-@|q+!fR}<1!8S--lef5$$W7WSO*X#?jXI+Q zY9DufRFHnXCR5qF+E7p)NPaCK0Fc3D>Qd6fq=-92z#WO%AY+Dd9SV*$?Z!&m2?3d5 z7y#TsX~}yqhbUk8FM-bwMHWWBHj9ytfWY+QLCnMJCe7_PY9b~2KpZYxW8ue0SO@3TV18_7=(fqBH_{iTsfgzzB&3uLEz9H^xqt~L} z?}=K<*+V8g#nwS07daFbyl@8eSQG<5D_;v-g5V#j)`7BK1rh}t3_eRJ=<*=A4c_$< z!HMc7t!Mlw8UQMz1uL)i6(OW_baZ@TYF=Izn9YLmWIj?V>EV0sTvNp(qr!Og4-wxC z>3t%1!!&fCRQo>qh29=uY4J5%=pDS`ul1T#e@}2YgtT?@!|J;^z?xubnXTP9^iE^kM9_^FjMcF{k;#(2M?Ed;ROYW0DypunGgQi zrRB|vK)EV(hnl6WBs2#0q_6eRed*JS)aa{8h<84|UZfOQan|)nxYJiNRd3L37N_;( z@rL>I%*JG4pFOkcuF+TL*CnocxbzL->`Nqf`z8X%;da>u0K+g0(-6T-BHfMV&Vs%t zjc)f;n!};b(^fJ@e}N19}1{41O@OXk|&iy_=;2pxL-0P(LW>r=DI5`EUfE zBz)=>Kq_7uIFUZ{>t0%tDxp4~>zw)!fEIlp2mpPuyFPgX(DE+xW*f1Ep$8j!w<~tU z#X(ipD-$29Ju(3GG$4-(82%+SEmW;PeJiV@AL8H`w)%cDUEdhY zUmFUz6dkA|?kc)`AcgSOwM0Z9wyQ@(!!Sajkh`W8?4n#|i50Z6s{PdpbJDe|QI$;I zhFrusImEe}UKoV)2$LuhftwBpf#j|>B3rY=iMT`zz~v0}c3>b*#S2CN_pL4w7oY(b z`)zTKh>Rg)25W!dp3V&B*Vb>$ER{l@9|1B1WCjx%q8-N(JaCs8=Gq@JPckwF2#nC- zoO5@h77>U*ZulE8&H=@i_U>61_i>Rg8C9p5<8I)dZjPzjTsVo`49I{aj&Tl5xI!tb zR~oQ{%B-oSie5ig8a07bFGS>mN90fwOUrZ6o}!F)q5AS&HD72-w! z#W#9)d&rq~pNmC;zO1Y4FZ7IEO*arLQt9|@>>w#Vm4OThs4-Y^Z_w?`y&W}w8h>Pw z;MNlw>34(cexb@nq>2Z*h9Z#wBc&S&xl@xIkFs)a#!wDwo{N&~9t^OfI$Jd@px(cKEQt@KJht#REq_9y_ z3aBoBT^0ODpgXku?4j$h>eC?c9CWdG8B9#R`>Hi`pXI^rtoZgdnQx=a7d=V8$6)UP ze0>0Lx7BGx^|bv37EeXE*=?_o_kO~CgZ8Iyz(X%hx~oRzKT8UXgu4kF9em7vW0byV zD9{xZYH}yhXD==y5F1d5p&_<@^1XN?0p~~)&i6F-T#cmROQfyg6^OtXIz*0bbK-zt zGL?^pgg*>%>2w5+jKop^1S$(c9wAw!v<#Hv1pojrH;|1ad?FD6CM)AyAsGl@tbX;` zxq`#F!3;pn1R>Y8M?fzE@IoehRS3ZGBHi4rxIjiuF(nO94M75q90^^Q7v@&wn!KQZ zG2$XnO9|Pt-reSE5R8jJN#_TF69EwtL%G41N~a=>ap@zYq+3lfJeMGl+7N^_Bs}My z@=yQ`22mj(3TJe&8`qBaE|#)Xd)srNIY5LW3$w?wDq1qAWFi$qKyd^vOo_+<#Yf=W zK@b6epn6c0;o0zBT%VMi>dM#Ns+Mc-fPDa|i+u`npvK!)**|=57G+@%qPu zaR7V{N*)d&AshXa{I37?APbGx+6f~76mt@r3ci|F(x?_UrZq;50Qq0PS25+mPDH`< zGAMx_lzgcOR@D4GTt0mbkZ=Nd94q})o@6zi%T2M+>Iq=%?HMz)O(;i_r%m{m83uUZllg`&><7Ke$(E12fVMo zFBNy*HE`&qhbY#=D+T`EIq4<6l%(~-(n}4;saTY}^yxO_?|)r%CnbG@zRqaxr3D6# zeLV~%BI4X3PSUxCA(LS^iuCXd@0@NhyCGj5(Y zA*xNpgh!X`O1)dqT z5|9i&@?kBymdm){^R+diG!Y}oiBjVQ!NE4DEv-B&w6#P7W>|^i=m^w1l|P%r$xWB zf`~TqD-5U@)xdGpTmL>Z#csQ8R zA<$mZe5sjlhd?h<{6oycY7hjzswcCY*DGI%NcuXoaQCIJff`p8v1cHBoxDPS$b091LO#evnAx-@~IwxAnozLL)#2;0O#vV3#n$h0_Y@wzFr) zpuiabfH8wWWcLPS1^|J(S3P>@45BCtIB^sqUqKKB{Tf6>oO6YQaZX}4HxC(bEp^Rl zN}_N6?gNli9^_J{*&&vl@(aN56JDwzr=ejSU2kW`oh`=o+-sKBBSCU|jlib|vQiCF^{&2I563Pxr>m`E|X(Um0ZFG2uicg^OhDxi?bJFuj z#e2zKJ32Z(F*#q;DpB);_FZu&W-_lzebmW^k-Lo*`26<#ZS)=&zM8#RTASeZd~o~S zCdiZDLFu2Hkz5CPPXm{*Vs{>k};M}Vr<_aZO>>Lq=ex}#$1 zBHxnXpC?gG7wnhXMDx!Pa6LG^NMZMvFjallytr`Z7t64yWmx#GI22}uD~(|ooU|Y% zS&51d(iT{*aYf#;T^}ZzRVht+*I7oaoH++?qj485ayJwcB}>N~AZc~G);fujB!1;L zh(R4vhKPp7c>8#XJVylH`(SS>WDNbgqA9N^WQ-9a;{+mM5fPCiTEiFsqn*l;{~%j$5|`;}DQkE^^<(oXaJjh|QDPyj_KS zWVsdn@1ZvmU|@)VCZfRMxQaz`J(bXnbQ2O_jEU{dP~tht%SbC9wCXES7q@HFLqwnY z^td+C+*N!IS*RbWg*s{10}xc5N`v!6bzUVm)lcb#i4y&ghO%iZo3LML?wCMrSh!`9 zI_GhYsNYHcQp6eE(_M-_8loXdN6_J zx)`i4z*=yw^wdW$*y?=4ul&-#ef7&4%1Uj-1@7(!zTPxD-t?b;<4p+@z?($9+V(Tg zsoKxifUw%ne&?%Q=)bxiI)Dgx`>Wpa_WO>6_-%`cWB2#n`^YCAzV{Ok-}|Zit%s}c zDqyy?o%;2A?)}Jvr`~gB=oj0I#$H9T;{AW}@*jD5@`Yap*DZs3KqBP=T+h#*JduC) z+efLZimgsr9!SqBSUNy^>-(|VzwMWQ@n>Fnf1^h^nqB2=a+@XHJ-HUhf*z`Lffe zlLO&W%|a^az{4Di?GHUX63}_E25z#BJaG2R$uswydE^Lx0Y)Vv8q7c@qM+pZTp%{C z6^|+~M>x#@5fS4Z51cyPJP`5=${Q@6kw-+1i1%{1Yoa4#Ozd|iO$p(_BmOWn44LiP z!hGCj!$Pi!A0M9sbEf)(H2tL z(^%H-;aZ3wz&--ky~zCy%BDkA0wL!le?Wq9vS+<22oM=#24f6;`_k)663=LKuTc1a zi+Ks{VaN=_V20r#L}F12!l}y<(TJQxx^kO4j^j9P&a7aa`Zpb?0MIl{{#V+iujkaT za1}N1iEO%tP20ePYT>OOu%B^aM`%CpcVg*y4Hi(cv)ViL?Q(Gk~ zr4{Z$ITa|K@hVkC$!59JiFcjLv5OWcJ*d%?I&73`^YdN?h$dnMTPeAy*-J5R9^$$K zBQ1SHgB>kRi3pUlJFBy|rq^~k0I;^>uQ=Bo@{6dnc=0P&HhGP*0wqf{M0^1`GSo*= zr0=DJyivDaMTFK(~T?J4b*HkC;x1s7KbkEQH$2S{WfA?Sh z_XSH`R2=`&U;WqM%D2C<6r<($KfnAzf>O)ytAc_ZzQ>Ex`i%U8P_R6tb3gMR-)wGu^gsK1`N#g>@9XmQ^1@&LuXo*ACIAS> zkACwvzv9SPS2S8!S)6#{3tzZ2ncd3;lGrQTe)i{2ZT;4>?|pig0B|_|FaP+ShW~x* zk3PD}8Gr>Re|Y%8)5%s7HZJTw`JSnXi~~T>6#5q*I5(aFvZ=6MUij+vmp?qeSQ1R; zkNn2N|KfO9<1n)DKhOWgSJL_ztVWJ?s^yj6(|dd@9xKwySGPa^7gN&(4kmxiUp(}R zC<6i~Yp3RlSN?kXOILOsw=`~@YJTPS^aby_LvrVhvL3oDsZuLgapLi3@BfLne;fbv zPdt_O8xbVORN%LJQeT+Yq&;35)%KS;*!;s;fA{ceajLjsjvwj0zC6PUb=+l}?XBHy z9gSw($UCW-g@ydKV*;>p*F!Js${+xcO@-~<)w!wdu*zoPgxXuX+tpq3^SN#3E^IG_ zjnT1F_u8L-c1GBaSnPQ4Ro3U9nT^_@-hFAL3Ar2|8t=WnagA~Zp2iPwy&XP2dVHB( zUZ0lDcg(SY<95T;m226!#+bkRDV4kV^An|7{Ph6)e%X7QY?|&A8Q2$fwDhHxNqpZZ_l8 zeiKwNDIR>72b4{>HB@ySrNm?jg9lyX)fa?(VS2;(qu4-uK*dzs{-Y+Uh>jQ`_^@uUtXb z4v0&GWgL>s(b3`}mRkrzO8^aKEU4~Kep$%t0 zq5me3mpr$rLdKXvroIXt3G^8MJJxAVfbb`X4}$0)MY9fGSneyVsC$4Q3m<0^_}*f@1_y67EJ?;-rj4UrUT zPKQ!AY!<2K}VWlTGC5^MmfCB~oqHD2;>k7Dz@;E^)IQsSjoq+OF zrCYKkv_n22B8CtQI-q~>o{oZ<1is8b$#~HGAaHdnYW;2DOWUy6t_w>xCgo4*N;gc~Xl1v+?__jWpe|kv^-I32CC-A90|m|9a# zNO>Zv(4)qs>zL?t)~GYJbAWe!N!kReGmsPa^4!` z1W~O2dlK)yacA)qSEYjeM$%pWKtS2F4t;x?1Z+n=ceYJh9Tar;-AMYM@0T^a`zAe5 z4k{C$cdgYB@BuEYidzNvE#21f8Q17JHSfwFdk-R?)S%(MnHtbGM*#{7-F>2)&XU!M zEBvKPP;`F+h4|g_46g@!x36>i2Nt5-$QXUEvHTzRVRcw|OMmV|cE9bl_XGD3_xJ1S zcdJ#F0k|Pjue&oPrEwt?cN?W837n0H%%QET{c6~vPLnCQJl z96a^*9&NduFUkf^+7cM>zwdPgkON3P!TSDp&iq#RO_OiKR}b03*E{+h9N~ZaVwpc? zLX-H~9GG!Px{{H@17t|8{D)YH>EG^Nhqi5Tm%n9w zom-*p!q0Q1lm*f%oP))Z8ivG*qNeqJHMxI#;UP9&aDQJmjbuVzWb#3!MD@HNY_6fU z*l2EFS98X%=rP&`OukPm3p5-|i%z%4VwMi>o@K;P06`88He6ffjg(d`B~|%~qh(ES zxnO#(1ZOriMiVttg*!rFG@}^>w}d4V45Hmy@oPKhFvZ$q zJG;3RdH*tzsADwi?ySBC56=KsuKD7t(h~?;2CBy7-lH!BJfSO zemnJD1NB`WM{kn(XaO)R`d~(^A2rsQv^$BDpLg4r_eYXrQ#DWfYL=fQvkZXXX5KSRHpQ&@X zm5E1v7Lr~3#-R;jj~s9sN=_e((xe`X3r0UE@77a{_ezUcattZTj3hd zVxQyrHI(|TwcAzT<|5I*17rXBv!`vzh7zdYA-$l76j|2+J{Me%mGNRm{2)N0aEGX5 z-cIwRYsIjW6EQXb7Yrrs+lYZqYUW4TCFp)#_xksj)-wKSln&gv1HkFL&gUhfHjqlM zQ0FMw=}uJdcM$p=R$br2sfuGV^lSf}TAAYqB}Mnl3>B6t(tCi+=gpiDzLBSKqUxL+ zYVbRJVnD}Vh~&xhFn3AB!>%M>_&W=ezSl*q|Lb{_1p4Vm*4A6Cs^yHG`s2Bb-x1Q( z>TdeVQs8~XI=18w#|%Ef*z``l>UyvYXl_D3HV_8RU|t~4kel^<%c zO>WK7=dHbk4@&+!K7%5dAGuqCu20O$!YCPylB<+0jhYQw@ALltZ*OEBS9r>on1Fzd zk2ZVTr(4l?#nuYu6NEk57iqti4PwMZ=iqY_t2^Vd(xV6?oZ;Q*AkpQeN3q}B*W-85 zrJ|XPir1aV^UKR`(;rLvvNe=_a~}r~y;;7;L2~w(D7+0Cy?3mGSa;Wzj^E4XGMR$U z)d)#CR0`WwQ`J^V2{>T#~>8HcZ5JMx3?(5sICVRYcwjP72Y3zLBJ<2Z0r`%U< zPk(5NNllny7rC!%YSdYwscjRQdp{l-EcQDtS1#ZKRJe1Vq60 z^epzqXeAX?Ktgk~v!HN%OHVHHpURP*q>D<{Uz#y10f4oYR1i{Ji*V6HkrUshnKElq zj61KN8~uW0oPwlku%dhFasP9>Al3xp-0sQl&k|}tnZ(!cE5xlt|>#qH?XubHvgcQ z01o0oLCiNg&7-ggIGE-aWEq<6KXj>J0HM)$S(CJO>urh6{hg>yT#`wgp4s8nGBIQ% zosFJUzfLbe_B^|B49vfPZ3H;7(OCEFqRny2-wq=ePhOr`l{V$X?LQ1SBWJ*i(NC#H z*nkWNdl_X3Z)3hmcc*e|q=~*xq$%C80g}a8i^<|`k0niK9pv%d+12&aADijdeE)fL zzxhhFj_BI((9rY+83{>b~#(e=Ue_iDriiseE2)W((u2S(smk0-{d3Z8Fs z(*f_Hq%Iz3 zkYi?LzP#Y`t`=3~aoMWfU?iHz7mgpOOm!-9E)h*)n9@xh?*Dq~Bj4NLQPd(V*xq0N zL;kB&aJ;BSfr)mz* z(r`NY>jS1uZN&Ll>c-r7ApiV0ayiMT`bv5*#D>|Gsx(dSt+?@1QKssm5* z$xEr90uY4e7gp9bX7Fok42p{n4^`=husbJ+21C6F{~EH<>8xsLYOby@aNq>iCOd3@&=DG!$IHFPK{UBx0)ViVQco0M*aeIikohlchp;mFx0BhE(MQ4XG$nwu#RCD%TPfs84QyT7R3Y=v;}Pu3V>5oKGp*_H=@aam&~HKR9m;e_n{&88}V9p4B_ieQ4Za< zr>BSaCqg6{r1XAh-Ip&LPS59;@0vGNesm3Y@IVhofzDzWs5laSS1S-zwvKb%n&|Uz zJka|!??gs3*NB?GeQfNk+T-BtQtR#bCN=8Nw~>s!<&t-@N~Gzr7Hx7@0%ZRde;rD; zb*s{oBcdteYr)~e`)VI$C~ZAA(;KVFYXpC)8<9MbokHJH|K+NroJKo#t)r8 zjBWN7Z=bS(A*m`u&9PnQ&G5jh>Z0fk24wFavaF)lF{XcFLf@-iPW0O})5u|9P+h6q zmks^K?6c(GpC*8QMngP+8lijnqfH~Q^2gyFnhmzm126C-d8*?gQ`yf7(M`0K>uv)r zrCK7Fp*Kp(tcZ;suEnOB=a??$V)Cq-_p}w@fgUj2D%^Q zPmTPliX88K{RuwSI(seR-u$Q4LTCj8pyL&tUiEQ2oBa&WUJ`jAuWYmaA!fZ-+~npn z$Nja+tGLt5cYaqrD@-dlr`%pPK=m>A|G29JW*-?q zlUfTe9_v2Ndp+GRtwW`KOtZc|hxT_|O8{SaE?a6}`V*S{uHlt=KlI^|I(R0V)cpS)8m>)zasm zn$NrU`;8_FGsE?q3n=>Ca%^a@b`ESPJ_8CL!}I&3tWAx)P~H24^(2mz`1HNZzI^@1 zq9E*zA&@|;{d|<&l3@vh&Oita5ENQ=r`~LJy<6n&LK->l7Cved`4|^hXbO&)nY_?U z#Yu%q{81{7@Km>9nU)8@5?pcnPo$@0#zuJtVM_*Rkv^o+g~pCxQL(rq3Rij~4TNMT}866zC3hf^kr*3+Svgz9cGLXoE1WUsH`@-JK_BoXjZ-ZDE) z8dTs$1x*`lwdjXzv>}(HJ5B~?n%_1OgCGSty9tqw?WMLkSGSG7O^1xXjjs5rKP=w0 zE?iZ3aDwy2G*evx2MPQJ{-8vsu#yKM-R%vh)G%} zVHy{U7RZ?D3uJ+;Q0pmjZ}ff47J_SAaH5lq zZDdsgoaRB*RPbl406H0?+F^%0YeP>{ue@bK0wFKRgEUEPGEn9WY-3QHM?|@g;dQ;# zZR75lt0?z$u;CJFOo;X3=)X9`n&{-;8XYnOjnww!-xsE)zM4=VM;ptu&5mrW<0>D} zX19jvjbJhRIxFj9^brHtsF#mLXXiVePYz+GY9{x$ORtw37sRmvqvA(v=6K0?Rk%8o zK~Cv2{W|2`Q<_%1o2r z`}2SgZaNm#!{*$>3T;sj+ z>VOZS;M(9MN%U66RB+gE%m7jC0x9Rpb8xzI#r(~*gmC2qkxu#_Aub`8x_0NY)-yaX zL4LdK?W3lNn=l?6dHeNksd4Vr>w!)}p-oG*|7+mfy?K@{G8E5%Q3d_)^0}oV$mk#- zhoJA%;&f0k)1=#UEoSucX;g~M+iRt#`l;V>ZdTG^G)Pg5mP^Q^qtkb<_fGyv4+5T? z%shKqS9Late7yb|rRaOmYq!jn4q4f2YlMmlzw4R>`{aKhYGchKQWGOp@10c>zgn*XTz5G|I{q0dh5v53CS1 zz$iGcBq(s~{^sFU@$c6Mm>y9L*%;JvHCIA#K`Awrc-C}?h;4Elyq@N8(Wi7pOh?3Uo&tQ6U@j_FGM5S*qTyw2f=HetKCqb*lZD&=Q z4W5kV8IH(}ruxvX*oK7K2@NK#?cqn#Z(%&4@ZP1fcZS4{*H!>vx{jR#F0N{O^tR z1-z%qmC2sw_mWAV1BMTaMQ?LYT#XR)-_~zpyL=i15$CLzou6mEpOpi_@$$!j?)!!6 z*S%7Rs(U=#{}o(s3I_vITf0{Z{1A;5PDCsXJ<6KhXmi<-@#mqVe+Xh-<)@n}n%T2G zN#|U{rdI-AiirGcX(;;r*W;Gk{ylN2Lrd2}^ltg%bw3$Q1K61WdR`jazf{>jw|*QY zVqr}QJv}B;6kYO zSsCrYXRBO*)O%|m+~Mp-H>v))v(JVZ=j_akH-F|{)6ggo>C(>T@}z00tL*@yiTS?F zmEX|;3Xo8uX?|C(2cW|OdiSlp@^=o#fWR4pPhyTB`@=TiiRM`l=ZSw_XS$d!?9WJM zHMD>Ro}F^Po6YxF#gBtx-Uu21Ack7s(|<4FV>f(E3KdXFt1kNDF!j(?b_0PbJ2Y|P zWlj07S+4@G;?+W-+-PH6aacr?+Y|8BYzT#CvbwlC`=|!K9knYXe_^RK+piCl(SJ$O z_XX+n2j3^ezD+6nu+u`CS6up@w|AYTzh}F5fmi$Ilzk3bQ-gg-I-_=u$BU1YI_oN3 zCoJ9{PdO!mXrTZZAu)Ut#my3O$rJNNA*8mJb%rt}jPDfn}X&11az?=uV zoTLORRhX-+3%5jiJXQY}-^`5P-Jy>MujABPxcrhjCQPneOykhEVXL~llL?exU+xrE z6-nY1qU!eCOk1*&9%K5IQEUj$sqKv z@~YJf9nbsDXDBfJ;7Did&L9vi2lPESIj$Iia@C^JvHbR1V#E zk8DA)JNeDZ4bluHdH3q5+?IvCT{1Et$AT*r=;As$>F~+G+`2M_)Yit3o-DK#5W3?q zCBjiL8xQ`fX?1!^2l|IEQG>}`RNt6hC>aXG>o@mE-!_1wbZWnTH)5Jrt-O`#y=NMjyv!LimL}CbctDZ@ufYV?gI1M{SX$ zg`>BbcRt@V!piyVtX%CD^biX_4D(2r=FO?uNMQg8r$7!WAU_Sxh|8 zCz;3DgoJ+cY6+d*)a`)=)K2h=EuRw+%8K5fJGCH(#jXBg{r5~ns3~%= z89lQ>H0K=ucyW>Rq8n%LQ;0DfXpKeMS7ki3Gs4L0Y-uDZwcO!h8%gnra`!tUoOQXg zDpDaGEiF*TK^xZDu-w1E|A8R4?yAh746Y2V3f$U^ClMiWgE@8`~m zxQTIP=7ToEZWf#|7cRoN+9-QRKTI-E$UG!#@~Z0Dej;7mqzjQH>>S(UUW=r7`!_!!1? z5ACRg^c+lbcf!9fM~>WGN>4vi-Yh-3F0{-1%ZF`YCui|mQp}T-T>r#KkY|_z!GXs9 z9!_Bx(r^ExSwO*%tBk1kR3qiT{ErkxYs3@weOI(_$3jiklhbpDds}-5v#6{#&TVg` zyIJ$o#(tI6P{KIL{(-|xE=Tj34-Iy%TX>T9@SY^nO1_-2di&2lO`)?*L8|tzC1sPn zUCYXG>nt~xp8TeNmr!QM10_EPk8jF(;BL zQtd@;7)EU4*0}Fx{M*d30qFb?8k}?f94%@o@IH4myOp@&=|_8Wt9~lpLk)S~8Z^u= zz6?XYfwZypile~6zg(ES^}`6i>X_?qn)uxzrE?U;F3VN~uT?)noL<;Fg$4Cd&XHxi z`B^zUR%_U6x$RlE34U1aQMvd3#%g~!?`|ae(EKmtO?bS$%iWvP)LS zh?KitlqVlzGQ5v-;r*_L^hKUtWi}sXbYAYAhUxqbZ7=j=M7$XJ?~0c|*M=ysun&y^ zUc;&bJPAflCeP=ia{fRtE!i(8c(ZW4@okd86Zk-?iydfF#kYG-vNml4$3>^QlbJ1{ z2VtQ1^&8$S0`Y?^x8Jadg6JJg=ll9LUX{WiC@@(V{rS~+Zf5&x(rm6)^3#>;G+)Av z9eFpFvBE()vt{+Th5sB`gZ-&m>S@|gRZz@90Ppz$S_nH+31je-~daE^Bo|Xe5 z9K`-cEQGeh2UQXU#Gn(@E!{1!k8sIP27EL8h}}|C8RN>r+utN$*2uQ>bg(I(I}?58 z(sVd3vCbJ^fr25{XBB^?3!@cw>xSwkK&x?1ZHBmi#51gO_ zx(#90Q7rmv5x8W$$ViD^bVEu&WPiIf1*Tjwt<(S>0A zzZD{kJkK=@w`^-m$kA>J{G4|c$Z_OuarH@xK7;urn?`5Ijm%VCVf@fy zQQTYy=O=;ilWyNlP6icNV4QS_K!H;GwkR~n4vd(6SCb3nL>NTa88GYTARBF^4Z1|F zaR4=&I7+yzNHQ#(fuymab~}4|Y#5~`H6cB&(;w6`klnAfwlr38$&}OF6r2&$AH-v| z?-#@SV7MDidfdnm0z(5CqI65kcKls4RiTcw6%=&FOR8-P$4nDKcKb6Op?42p&0_>-iHHHybk<0L%qwsK_M&DwNV(MjRS zoi{@K-wYmj%cm@cah(%;Y;**VJGiJ_Ld%MW{D^c}s4Q>gQ8}vNY;mFu_99ebzjcCm zy-`rbgsxLwH6Q#-x{Kcv44 zLOe|a3%06h(QfuS7Wibu;1D|82o=$Y%E+^uI0uIvTX-f$DCqP)BV_nMNY0Os)m>+D z`EH`W%`sI^DxZYEK;f z4X+=$_+X36OmDjyvsMou<-gF)df#QW=aFaW?{w$FEY&7MWN>}mu6;~C6n*@6cc{l6FKI#P=$VCz3~~Wg54H(aQbRqRWnCuZQrAF za5{&DV-ufE_wbacjLh}ApYD~QZ0>gWS+KG;1~;R^Z)pc}RbvXm)INhSQdL)C=45s? zL>xMennfm4PWTdUTnFkJ|K4{eJlL-Lp^dG=qPuaSx})~js|fLK5=2WvN`D0!__*^s zQ>&$sF*Kz*B?0J7Mw+Al_%vmCOz{pEU!?!CTVpxxvdjmoD+6&rt+drJXldSZ$Ot;S z@dvshF#qH(i6eRI5D4A6EL01KQMvhAVQo*1<7F#;jt8ap2TJAF8nH-q)d<@C$+uzW zW*0p{VrZ3ci9N?OrvXo2iGdGKU3sCSjsFL4_6?5BObXQN79MnttuUD1+8YBABPu#F z>a2e!$V3_Y{5@AC2cMV9n@xF{IMS}jJOb8VTwjpby0_Hk`%~*5rpT3*yiXY2aATu5 z8n#o9;gW>%t%`|%s|iCP8-xwJtE*p~3xI%<7FDGVF68<&`gJ9yq$hz{_#|>__4~*m zRJyLBN=Mw5u|7{F4t^cwj4q3!mkM?6 zR%eElz2(^n{>9l!tApp{x;LcCt^PmgiqU~ZN2O5veu^8{Oqlb^k9nm(SV~G$;eC`C zDdbst@Qt*_2P--ozQtH%Z zRY}9SlIl56uOk$%Et*nhRm&2}Z?JAu(~zx;db-Z~#cM6N(&dr9BI?Y9Nv{}r8Tr*= zWA0F72xbtg8#0&Cp@&e8usi%!B3iE{Ne{#4;4+?>R_Y4K5DeRvMh?$oj}OC%SToH- zz@SLG_V{;H4{HRO=avRfL!&Zm$6UA&I8J;d4EwMUcd%5D&^h3nfvANvR_%|y@Pxxg zqGmWaxEBFDJPl$jnBf6_b|?33O4B`;%Jhf!JwyD!~77fd}r@LY8g4Y*EoKtmyPEun{SbOMqKU^7URa zY||0&VM^M(|LuF^=#0pSeIg|~@$p^5_i>09jDQ?LRBFiA0 z+x7FdGXfAni-xtQ*2x+SfJ3m6aZ31R)542ok4RXb4kqCFCVl>ENGVZ*iC{)*$gjY7 ziw3#YbrNqZ`qw^gwRvTnvP-CtXZVLPh`!T^I7o11_yQTZCgSh(8&1Jzx9OL!Vyl|J z=y{`}-PvcA)NI@Rb7}qBpG})$kelo$CXPC7%s=zpABv`>Wh&oh6I&08Ljzi_fPr0XMV)q-^}3^-+xp3qnJM=c+CjBAp*WJb4m zKbo-}g?1H_#5*kbhNC73n)5#=$y=&3CI*E_I%JReh3RB1*9RuADE4Pze1HIlFP$l2 z*%h-U0D!~xtSB?8pR;lWvu6Xp``r)r>1(F=b303fg`BY%!rM?N<_oH#KdW+U=ee48`3L|z^)>PY(jY$7bLx@ZJxg;-WWlLy4Y1Qg zgqZDBV!Ky*_piAoX^$ME>nOMBuDU|)5H#4mMc7Z(_YNOY}#p!ft^16INHJ8j{_1LLfCHYq|{PwWO z+Bg1PwOr-1U-|1wGO9~$Y}{fKo?PMWLOO2|%LJ$S3;0fl@g-0a5XXW|wd27B)8z&Y zFqB_k9X-Oqj0zdSZ?=WbQOHGiyKG~&vsOuT8qE!%wlj;w1@ND2DC9MAYmXj<1CT@U zkjIRwEf;h8%CqtfNuCFa@LEU z4lFsYv~qrb2-}Q2Bmgeq!Zc=P26KxAo3B-Nv92t#rnYr~t65d>6vQGwNHyju8p=X6 zBW$9nCfnbG(AeLrQ%a0cJ80tM?%r;o{CBj7kJiS* z4nyFwYK7lAMn-+VGci_2hH*Zs=NPxEM1FK=jl@$X}Fc=9pY z8CU_Tbl^ja0zg(Xg7I(x{SXxL;_^zWLrUb7gHlZ2Sd6M$3uxJNh(%DBDIp*%3~y9P zf~z-tcn9?e6~lc8b}=KY$^^-9M-71A%+ww?At*U4FC{m~OjIBh(EVp6Rs|Qftg)m9 zDlCkgG!{!tzm+1)3Dbd=~rZ62~6N?wj5-3DC5o^6x0 zCgU|X#5L_*!PX4Lu#Cn*D(hD9W#7VR#2z7dYBM(8C^V?}@r%Wfjdi>DPi$)}gpQGp zOPHpWAds}DH={g$j5K}vnB#BFj@*KOfkfonmYEE^(V$uP}6&sN_d!jc?hK6m+|4sjRwbBrLUgZjCC_3k$5$o;p^Wk zY^>yPvdIDXzre(p+-;3p`>GI=3RYs69-otyT zloz=7GI@LAt)dRZIO!+aa^hJr;cm+CT6+-5(0@D~AaFt*wcI%XrQ-RDlNZ&zW9;~y1O}C9J-q3BqiG`T_R@+n|`Y_ z41r{|RNt?$5YyoR21hfOUPn_tA3?FiXCPZUD}t5}9a2!tMjOY@0dmZ3=LLzq#~YE~ zwrizpu!0K1!{ZifY{$)`wK5kqa+q7F^4sxpDjzf;d#Z}y{J1qKk%-{M%gmC^uYtFX zCsEDXL2gR1P*D1XDO=3wAtv*!^8M<%rY~UHMu@;U!^klxAm?g*_j#eH9>@`pPhpp~ z=&%-_ZNqxXm+*ajgUjpJoDpr*vgUe;>E7R|oao!m`~UqpjkbX_>1+C0`ka8#^U@E; zFE2sH)fXuFHsCA4Sm2?gM22AlqtB_#(4K z!=aD6DPUuMZVY@0*8j}ZV51moHh<-vQ;9Y!*-MrF#_sI! z0Fiabx!}W9^lH%FYY(l9W!VJKJ$pCLsWI1fgaNF3dXhg$emgCNkD*?bF-H419eG)r z)qgy1s^i9|49Pi>Ja+{;9%h|nPWc$h(6e%~6Z7UdQepB^I^v?T$Fafz7_)c*Du>Fi zBPh>1wU;kdS+!rwL9(x#{_eNM{!W@-wefkxG5V|!?>f7VqPONd?^hNo*~C)k_40$% z&*C3j|F2!kSH(Q(S2fX_deL`P(GQZ$J6S*d&$fPd<<<~=Pnz*VVb|+?S{9N-)LQ?v z?AhS>kEYq(b>|-oj!C}NrO$iSCkCac05o4#Pzi^x)ZomfUqJQI}xV>U*X1IOi)nR8|~Ve2oea*G|wR+M$L)d_M&x_ zn${Ev&~SkG-cxA7S)xoVJLsMD(>meBO+|J%bUSPO|5(RLcGR+y_o%d4vOGkn1diqO z#CWV>kE7~k!kZg2q)mttDaV%twioQ3L#`B#;9-lUV}l0IEivWTVfq^<6PE%@BTMG< ziTFQ%qS?m=Rh%o%mai9yd(|h+2c3UwQttw!^PSu+*XsT@WHPrVw<>*mip%zdXCpS~ zvKi2kJJA#5WBl`3P-oIW$9qH)YtOecAGDF%Xww57;6%MS{8y1gJ?I;{T?`trFhLt% zXB7xf8bTJncMkL8(G;TV)BZtud?CB8yA|UMVL7@tJNkO^LIDaLI#Mq;_LWxlp|tQ; zlM)LuZRi<_C?2ZBGuKebDeD~mLvr^e)ky~?*L}hLA0~J8vbW&-JPVr`K=#n^`2kmM-!07gXta4v_8$9Bvckj<|?C`eY?ba;(d3+(1AtD4L3D z=wv0G$PV*N`*Q&G3*$cEk5&iJyr9(`_+Hm{-4bte8pD$clY6+_J%bf5&uM)jkGU4n z{BJhZ3Dm~$lk4a5N*(;#sx20Z!tGs5lWRI-J8bqE1|?yh_J&;JK)c|YIFHz}Eb?7U<3s2GjcQof zK*-#laS&Ay%EWd{lCT4%QukLIT2=#CQy%cbgd(E|+a}o&vI6cUNJKyYlbK4Ke|5RH z**%iN5YtI^u<}lK5&)29OkbNod3z%5u?lDr$|LRXl}~rnPfq(kDFnG;H`6L z8=BIQpaLKTiY&4B$dbm$6tgQFe$Oz%-p1VH^qBQIDPxXC>O$I+hqi2#>O%j<%n(P_ zJ5udINd-AIUoiBh!cFog!G~^jxy?Z4eLzTb|8)0E7wH@YAoR{XTg0(}+k_o;Sd$w2 z5JH*(1Q7Xd6e~wHhZw;@5uW}-KK#2X1&sqXAWuC~)soonWdsu{GbT=2hFZNH>L7}3e`SA`%BtumQOl)7 z>%ZCY5cz(>$UDWG_t*14w_uv`!N%d7QA03R2e@+5B&Q#34Wev5*l%7Fc4w+qxXQf2 zhWaYuC*&ZnNaIC>gMR25(F-$NP8%@&ZMbfpj zWxyK;e@6?axic6%KfOIY0W(6}H+x zkf=EnfLGY$Qz7-(%g;H5{Lj-)oz*_p7-7`3SE&F9U`{38zs*L`J#MX*cQB!iY z-uwE2DK8qvGs}Z3TQhC-ICAG(XjdnFt)S}-mjCO+R6Z~D`c}zcOUmbE@X+Q)pX831rZGGM!Qgzqv{yr<(?%1Z9?|4eJSiYqSbjH|M1pF6)W^O5!+QX)4x7DoA~g) za-{Cw(H#%Ie--yyADJwCyDYXkm9RL_TY9(hzETrqzs1UA=hXY6 zd^BpU!Tq`1BndL67 zA9#d$BSH{nHqJu0i}g#wM-5m4=yAIU?Bp5|XS{5C*U)g>`n z=iO$OS~3E^t4tYvRPtXl+CJI`uefI&10~6jk-VPPXYay~FlH6hA%zMa*kPgEi!>y!Pgn+acK8aArdCDM#~HO3E=Ah$QqE-O9lD#o%CG zk}BMY8}YC8%{v)tkj#P8pp}JI+jA7?fD1A4C}}a4n5gqZmp@St=;M4cZ{fmQ2@0Rg zcv?76osdA=kcTyYd5)G!qWzCB9haFr7fBM%+oQYa>Q9%1SEYCxdrunti(zFz!OhsX z$CNbMqMzaL&W82(|6^Ob{C{lgQ9}S^n6*hxyz{xBA$GV_aWA7obuWozxa!{Ap^$&M zgVKuPlacX7G11}QXhSlo#?iQ>uq%=OpNpFFHD1H%W4aL*yU*?v_9AU#Q`!1A#mv@C&y|7CI0_CM~fzUIt$ z+SDwC1@y^}m6py&)Z_h?S|+YvykVpGFIFrW9MXqaO3ar97uZ`R%J7CY5V zAlvKxIU>_7kd~`5Ol`clY=41aHFAmOxvWf4u`YimW<0UH5Nl)aFf6rxPUFZ9RMAe3 zP1tx=R+uM_w&#nMWx2(CQB?(@hWDNPX2q^b!Qv2NG)b9Qqku_IV$pSggOh%_G!%!z z#qDV4vm0NRBfb>0MGG^`a;%FnXcf;3XbI402S1sbOUQ%)_=L08T|gP7A+t1%Yeku0T(-C z-xWkC@|=mIZ0|_|QV|{pQO1?v%<q-B0)txe69Rd;bAGlK)%#4w60xU<)##E?F_vYk-wwZ_)zhQvWJ|i zedCx?63n9pflsY>&HOg@)>v+xY)3 z7q@izT6-pnGX%hX*BSpTivBMQDxfQiBEAg)L)O&wd-El*zpUf;@1gJeYtwGvSzGnS zR6T+y{`}rEItRNX5U) zcUe*VB*owLolO>jA@}KOXuI?7KKm<|51f5`*pWYeN6SzN&hO1P(TK+u41}|_{6A#f zbx>PR*f;#(Qrx|`I|Ygs3GPmDcXxMpcXtAW;_k)W9ZGR`DAqpt-S;!kyfg2=$=Ne| zP9`Ut-D^Kzi4cC(d2O~&8p?pGT05M1Z*3Mw#~{I~g-F_Vgm5vL9@HHsvF9HZdGAMp zG9Pz6q(Hv|-@jddvN~Sz%|WjAw_?~i&H#m6++^B%MkmadK+-tHxF^GW^_OTr*Je#? ziNhUo4NGc8UF%=4&1f}+Tdqbq`i?Jkg(d&)h(F6A?8H`sLiS}FnCWU6dVFxXJt=`XADIx*rn1)SJBwW49Yn*`ir^i=H_4 zel!#Kwk`D8cl0H9L2=H88LfB!TleiCBu`?H`dg5aiNbZSz(wR{dC?Sf>4v97_=-wP z-{TA04iawU&aIqd_l@VjzSz{aLu-&si<3co`@HY#CFD1atM4t+(B%vj2TfS~8jZAU z{>>7uzGY&w@V!ZOTLFxmcS)Gmd(78&`HPMp!*sU@^w6Qyd(FN3^i?=-sKMS{RIY|iyL~0}H zKZVA7#q&csJ5>B(sj&e{$ZxM<9A zuRKQxFd-N7Q^G=8%jz!lLiD;XkwZzHzL@fROJH*G9vcP@^4Z`sn>CXipLvKDZq&I6 zwih~W*FbtWv9nBYuT799k>RCjlaU2zM{D^4&sQ2@h zl+#5S8{K%#z`Hy|3UmnYUk`5x8xY;Y<`h27}Dpb}&S2 zYo7pXo&BYIfL)A}BKp08uhV1{{FwqJ;DFftuWs#MP=uRnfm_Wpa@{d4vFKJ+^B z2^zNtpnlQOR`X|kIU98SEM~tC({P%|yo7+Y?SFIdRQ*a&ZAzV%`pxg4a%ai-&lG}N zZzBYye$)ib6eVsJDZeETtSw35IS^BWLcg99crQNt`(AAa-ljMDSMgmK=&83UsEOLl z`>~VLviEHB2tEwX^}2rWo}9;kdZ7PqsA-h`3a6qnX;2*zUeXUXbbAnsY8@I)2qzb@(2Hy^!y-L28B3YfN@;MGSAzh!+2q9Av)gZqNc;U#Y+bej1`loI1c6B0s2 z91)ab_Yh;oS2lr(9f}yN0TskF`viZ|K~p zHs~xV*fWEm-(797=>{K&0WmJHVj zABfe_w?Bl7ed3DiF}H<5zI01w5*~87E#Z(D4LY_M@A8Z?#>7?rkh9V@O&~R(LKz`i zvdU5b6G=N#;GiAMz2$q?Wi6?mfib#mJkhePZ0|;*-I^LfPv3`oD71GKO*`dnFETl$^%^HOM?|B zC+K$mERR^&XOuecOKF*MVjNSEPLa!Xz7)XqS8*Ft;Qy4DHQ z{D|G@K^BJMmNe(fX&32d&k-OUXRXVvlv2O))&DeVgCHb`{84i`0u6db zWyiTE!=DTa%51XfX0JRHTZ4H_AGLNYa(@xcx%j$Ycmhm|4J`bo^0)z02omR=P#CXt zY3f~4_Zbp(CS59Qv4PZ=&~{$6y5ob={dgI)#ixm?k6wl>Id9@bdwJaVehvEG zV(zUUB)(60Jy`sGG3d8ba#ZxYF*V%qu?_|LV!gndJj%rg8m1A_F6%?q zWFyzcvKMo)KmU1Sg9O|Hj7L^0XF}Id?2U2`;;aKVSG#4yUZy}5gENPj}vU?Z5kx8!c{Cv!@S)# zC4+>Zf+SomvE~$6QVp|+5fM?6f@}kTRkhfJC?`40h~S|lRSY-79wu|lS`aMo!~;GW z^v(uSIf3j?*;fR7y`~_&XCj2AucISC@I&-2c7=C9LmhnB3`vA= z`wO~(qhe9jEYyXGAF`nY?~G;22T-D?qD772pC3Q*z}4SwA3my>XS+;c28r?^F!AIr z{1ARFE{-->1la4)x@{BqEjFSpAq`yzdnc-1=W z{1t#vY4t@6*s8B-K}W}lviN0)k|Wv4e<9yf1b(O;>y8gD`13cc^&B9G_VH-@6PI$& zQHA~Oro5_~!MD&btaqxRNE0NrJdTLC;;^1(9o+Wc*(*AdWU6GmIiX42+S#(epkGfv zFd8)5e*!*oBmjUsbuLUmGDk5?qxds1Ux2vkX(*X{I3lGTCcrF97xjDejs*4Zg>q@Z z=VXdh-6pxu7|WjzYOpoxULD=z*`TK^{WK}j#oz~MZ9_X4QOZX&+(qF)_bd%URT63l z(ns$QUrl9xr6eT&Nivb;60HJnQ2v`K#Hj~1c-OzI3SBK0r9QOe?oV?^wSf)~s4^Pm znayZD?0L4f+`seMZ%+5}Qr`xq>!bo=Ofe9+Y_|w1+q2v#m3^a~WALo^xeG<-#A5y9_QdRx zX7?#i2AVbM7g=&2N@#Y3F~QUl;4AH`BF~lxt*jA!0~IYM^XhI~l*kGAgp>4l?ZVSp zp^T+L+h+!+@Re&;j?>T)6bk~@V^+#Ds9>n664?Qe7cDUp+oR8T*C9I{Z*8yk0$*87 zJpfCX=HGIQjBm46pAJKDWM5F&y2zrZW7#T5Q&*@&_`SzK+=BgxSbw93C`p-^I;0=_C3>N(eX^)E%1P5lr;4vvd%D*-x`^P|DrJ2nkn!KOjN;gMB(| zn-JXMEag7F6H1T|^9TDHp&)!Kjn2i> z{HJtd_wrZ%8#-hU6l=I?MKcVe-{g`t_m+~RzA z;YTDFT?tbqpjT$V;4n|2gJu;xTrSWQS=bEYz@$NdY^EZ>v>)}bgVfrY!Um0rxlD2? zU!mh5n%zG}v7$gH_YfntZ-wNCI`-_F|4HtVE|^VQnPi3D<0?}wHrz?UO&-Io&5f2Y zc9|%z3UO3AqSudXZpr@fu-s*qbc1YFkxj2>l!_JbsSMGjW#;4jL+i7$M$}k;&u+a1 z?kDk&D2HUYokLqR)SMf$Z2CjVez;!R4aPm%>_Yk z+Rl~K(KWtHb?tV$&24b^I*~a~CAPx))i!ffuD1&RARkjIm$WWV`f}h8I%qAhuBys= zhozl(P>mm z8U6B2ASeAPO0#C|lQ{QFtL z%i*LJG$NItZd$nY+3{#Qa32g{497iwy6>uX9MIrPs+kY=%Vd;W3ViBOUDhy!!Jv*w z^mUU*<>wScc9Hn;9A8Cd+xFa)h;nXgyZumd7hYXzZ$orbL8_qJo#@a7ozq-z0(TBN zxAgP6;PLI;IqUv3A~j-@=`_}?6-a7!V|4i$P*uuTK!3Frf8s=*`{DZw{H#do=Bu_% zu^20gVTj&*{qC&0x|?9JRIQAV^L|#m$-LKE_|ucKaCQEdK-!2XqCOQY)42aWI6%)6 zUB+Zwd|*L@pBNGz%MLpNAmo6L3X?{OrXa^ET2*{ti3>v+b0!(}&=W`)bF{TiM10Zc z1StQKzX@;9jB7sROCB2EJHTkS!b~0MjS0uJipIhN*hp48bcn#Ub>eDsNGr3Dg=g=F zFpv%Y9+Yep!5T>tEC*MSqZ>N^8~ZyS3*Dwt(5(L08Jb|(p>x)>r1kTs!vocniBxSAep_mF3 z*(qwF2FCCA{@`}{{*fJQu@>$*QsG}RIOmMA?t3dL#4o~H)^HjfrymD}j9sj02BTYl&EW7*_7z!iPP z*64(`zS1JQ(1+U5e2W3_BUXRo^=hs7mW&XxTq0}yn+&TLHLzq8^&942G^DTn%%_U4 zZK63!n)+Ki$&=#B5szt)kH3`4s?OvMNU@)8Yh^^1aObWmwpg~xMJ zgK=YjX`mY8oA2&T%OleZH~-1xxAn=@)gutCU4TleNq|3Cy|{$nlRFxEi*ZQ0m$AR8 zgLeZ)9lkX`hB5P&GAEY@ctm`U9m#YrqA`1Z*}Et6`bx$eya5* zB%2l)4G(NDKsz{`a5l9zNrrd0!gDQSYe-pH%f8hnn~O3p^tLEDImgGh!jRM&}3Iovy|H0b04zv@r>u_PmKI7tR92UDu1(@P3Ea^GZ%_!1Wc zjN(VnGyD^p$JBx1o|vaGFt%S1KAIM;Xh7H-b1v`oL3x|J^IvfNUVZ1b%HXb;AX!*_ z_5zSi*BFx77y#>7`N8=rtxV1}<;!p!O99O>ebO7LA2CHgD{~T!=l}I{NkV{|gu;9+ zKen!;-;tZ5e*TfN+EqQ6o`$wqh)BiqAvL@Gd{blic&7F3uF+Rg088g|%I34sM}KL( z*Mml);Cth~zd~f^JW3`KepRaBoAp^KjLGc=4yC*8Xm-s{yOuw_#Pz1)% zw-gcoxxgpbXi(A(9jKJg9k0rG>Pr4R+QiSxt&g(mNl5_=S`ht+hD>`wPvct{Cirvj zXogGKw4GzHXp06A!pqgqE4{I+e7XrxdBG;N&}S?6AT?UKTh-`W*+tv-4#Yga7RHi+ zUMr@e633x{lJh3^f}Bm^ffpJ z?$;U9W|gjnNaM?!>uj(PFiNDt=y^YWj}Ok@wQ_3=AKbn^R`s%~N|dUxULvbRQ;ce` zQWMVQXP1U0_w`=oK?_aA&&e|CjfpAQ4mgruJeY~UpEb zg8HbsFJ;HE=E>GKQ-Oq`7muqW{8>YZ@>e#~GF91eX4eOQ1F zo{fxr31J?#?712a9n;YSSbX+f>#1f7e!~&d_vtI$=pLFU^*ec;)Uw%UW^w@~zeN=6 zn_#qqaUhpexgg96x0PN;3q1w47iqct=j~ic-q7@%4xS<=$gVy)Y71zm{8=}92{RG- z2Oa>j(8JpmJ8yjQ!{0mVn1Bn4s@J>J-R#NKf@AzL40iXzRXC8f4sp4>(2KXp){v9x zcIk5_t$5(|lC_Syo7Clm|E|CJN%`eCz(#8o*2_QBx4=?o&nDFkX~P?}3S`lE>~D95 z&zR9ZL^|3)I_lg$)FJM}%=oHI-Ns9;Ns*1hV=!=NV>6#!wfC#M-IIHCk?J3H{8^#E zjI;^HRk>_`B;x81FH6JJCVubRGY3qQODV;??#OhqzK$U%z}?XkZ;)t%u#K1KtFi)FMMwE<>Z;mF@n~qp;+^9h zs`4X1Cx<&Wx#WSZ6QF@6(5CVgs9Qb)iJ4VC#dkWn86k5&U4|A>7*jS-Da6{&>eXmr z1tG=KZ%y-VOBd<%sRn{!09$zlVK%-=NDO3PW=DA?G1Px){O8qS@iu!vVM3E_+%3HA zEYOaj`$DhF5rz!ANrNuvTbB}wWCi@< z>N}!q2}RTl^wrdp1Ub`W?XSI$!*s_iXmKT>`lXhmlZJwQ>&;RF1M9H=*SoEHKnDpP z_Me3#0fIIVLl}u_$Ubybr;THy|Hs#LZa;r%^%57i73S5LR`X3%L!iTp56|~2hHXnm z{gGf0aGN6Dk~P}8(yC|e?B25k`%8Ieyn407SMUVAsAH#GFxhJIxZ))IX5=?2YUKCT z-pj{&o|*{-wjnMz8c=br@y25>QnDMd@&PPzR_4{YJyuZcO*jR)m7Vpp(iVAz2r@wA z0Dzcf6_<|8#AUw7n&%mS(vL zOD7O9+A{f4vGf)Q{gKCC$CiP3u<86ybUfbIfbWynQDy%pFI4sKJch<9$fwG8u1)o@ z4#0=Jo-NW-p@N4EQTwiPtVmxi8Ek`|$e%%2ujdaVT*1t%zRhw1ggE~uuI0RkqIh2Y zgn^k*n$^m_RV8T&WUqUDQ;7l64}<2^#2ErND>Ty|cth>7HLHbH|ClJ13xD@)_p>MH zpaL+;tLiJ}Zhn{7_W+rCW;+!35f&JauYeywHRd)S8VzcIKv#P^hhN$J;Iw>x4!!8r zM&@d1g+^w4OT%1gsT6Gm-kIr-0Fdfu%(z6@v%4aBEfvJ^OE0!@J^Kwg@IKXlM=-5{ z-a)oLm)s%$dI2zyzw)b=T31-?IOJ_${wjV*+|N#Z@&1tMszv7c@w8!lUg2_7c|Tlm z=b8O#{^FmTlgCXvEd|h_lN$o3AbWgboPKUceCN{-I-6CRjh5Akqd6--vx|+X1^wDz zw%=FtPvE(T=f}UoS}-S1*F_peA)Oehw;6cX#J8LC4PRm*dd+F=ni>ofq0H;AAQXvI<)Z(v~W~&~&l&6CgYr1Pf%izL|U$Dwn z5H#{{Ni-sgm|Wtwrj06CZM4tdcsy+HC2Nqlp_TdVvhW;UHQtXsM;dnHJ?V=2(`2Z?R~6=zVA;CvL`<8VkRU`2R&j+mht?-q@1f z?P^)SBtEbTy0Yxr$Hygp_oh;(U+7S?!~`U<*(ush@zrrFty2Jg?G+>xjPR_3hmZEi z)>%yyZb6rWBidgwcQM~AOH;r4n9+aE=?b7C-4?%pJ~0Oz#FvI{YjRGZPNb_&%1w3& zw01mKn+&bL!PBjPaaIwbf|?o%7GENW+Z>MSWN&BK4m?RpWrGDK<(NR=P2*ky0Ux(D zD|Ru8p@?FsD<}~i1%1OjMw=wP;U$O2#Q*qJcPh<`tMmWIuQK53R$2WoGs*>FM#F*> z8ku6@47I?q;97+-;?Z}7nJQX2(QG_CFAEO`ib9vTo^wXps}4silS^4q=^bN;MgJ)p z(w)Onk3WCr=c_N*!OET`EWyQt3$GVvCdPqT(Qy@CklUMTxQ+-Ih<^0+WVD`|VY#hM zvzX`iH{2~BAE!Mz{cL5yp|jJ=#|CfrKd%l~kJGAFI!sNcF#~=TC$wIzw1ycsKr79% zFe7i1k4v_VjBLqo9Mn?qxcE&m5>e3KB3yN#Lj~QwEKfGMnyYE&{^!nWs(ugs>bV~~ z#}03J&-sR}#3ms_oj+W0vL;li`tQ$!4Nzy4U%pgEJTN`R#Q3V|AYG^eim5l3d+X;T z3p>hCt39bFfLxJ;B-p0t+<;22zTMVNRyR2hbx&3o;@HuA?ib~kROMh~| z8O5bFl)V?e9MX6OG$ht-_g-Ru1;)AGd_p4DkCm_FJ8J@^e{2{cAA=G`n|@Aa*ssa^ z`Xnb20PNgmjqcwR^M5j8b=3OpMLU0F;q^pjn?7UIXy*xIR6}AAQJ9fNtU02#T$`-3NdyiMvF|0|#Lo@gJkX`B(qBhK zkXIKi6X{jU)#!9h@VNP~PVb(@W){KI(@5hjB8;QVBNo5MN)}8x(9YVvZ1D zrRB_gzS`&kyL%4zZ|{S<_LYF@aEHY??x#UjO7#wfVc+Hh^q{Ra+A6<=3vY$SU7qi| zMyXrszfFSCAde&^_0OcWZ)oBXk1O;WkAnoup0q=}#NWJ$ZaY z8(_I_TLe0n_L(*}2;}UeK9dz!nIBHfU-f1`4#%JfcwPkiurKV0l0M)803jJ(ZbF7h z0oVkwVUsfn3V=h1{+B!gAr#tZy&~LsPz%Ts^>tYwU?39eV;t|(gj?Bse3L1)}B=EhXs0&z+%!$4^f#%I%3A zcOZ1)rRE;8h|zsn64+Tv?R2vplxZqBD&~@+A@)_~bN;<1J+4!bl{aixRq6X@OXfIs zww4-Lz7<0|!C~rU^i_bv9aWAthXzvHTs#nbTLC6j(b94`S(;yKNf(0!kgODt5DT8^ zJxuBMhnrW4&4LfI=k;Oy=knHZnry~Bc2R|?!&}QP*JFm zX1Cdutk*hP)ZPlc$u%IBmx+Lm+4!a+=)cg&sem_{mZ;nDT{znA{=$BPP*H!*cUmL_EWkkx!b-pq$3m4wto02^TEC|?ty>T z!?RGw;{Q9p^YPu5T|g(sQT%`BU$OH@wY*PNG7Ne;O4aXaGVIQi87s>9F@_Htq$s#P za;zC^oP-FC$!69lsk?PhjzvkHk(*GEpqI0aSd2mobyHF)!rJOjkA#uD2Ab5MbT8$U z7b*hIyg*~@U9nmtVxfqd0TXOfV&C}aD!Out5SRBSB%^xzX?^yMWuT$q*Zz7 zjmdb|Mq(E*rL)5_p?U0scpnQxR@K>oXU;X7bK2Xb(xXs<@P7Uk0a_`|_aC+DMl@L0 zH+J8u%Y`$m&n9J&{#pGhN2hk#jMK=eG(zgDN7k&b(z$=o{tP9+2S`NgV zpgh@@8)CSE1Jy&Mf-8azdm7FT9X^Hmfxc{L2vQcRD?8>Gb}eb({-~%ILx%-k^6n7Y;p?G9Q7AKpeQ&U!=s;cAr!axTl3p4ESHME-6dwoFMzdu0VfV;t# z_!P5myq<@z4x8(l-<)QnZ`CSw+Un&UNXbv8R^k77)_#rANR%U(6QHEaV!VL|jD5^p zL8}a-laUIA2)htIi1~9zHNcN9Z|bW&_P#_{omr;v^`6<3lbS^Ei2A~M{2`YJ< zoy8Nkv9jd)ef)086-Xza-*NL4B)3(Z38qySt_2j4C{jBM>Hfe_i2I@|WGW?|iPvfh zo9v`?Epl{P6Pw0Bg|n)uNn$W{?b%-JIb%{x7J!*$x zcD^5pn>#$Ck&l!FxEPZqnT_Wl?_fI4fZxdDSv>b+eNiCG|Mg5zDHAhhQmzIVt{1_z zLB)sDO8sUso_?>jLUE13#5@DeUfWtbnbBc336G7}7Z*@6{O;UH)0M|`j0B*ZFW3og zHYzZ-wl~kdH(?z@1;CR^B`h|r(%qkXkBnC=wGi_n>l*wfgPoK;^7yFs8{8|{8F=8* z%A^=2+&|5acWIzVt}>>Ujsg1kBIprv(%0273v_2~rXO{h@^D9JHik1g2HE7feClo# z$>t1Q*tkQ^gyTFBbjd5|;Yi=5huzd@HDQ_2tjOzsYO?gnjBTTJyhOk{&HDnmaPQBs z@)(>7tdvyR-U3}tmuD7vPkh6a8RMTMI!<69V%@M^P8RDg+Y$Cc^F3HSFvZpN4a_W(>cF=D}onYBbBB zDbZ1PHW~!O07jFnUD6b0SmpJ$<1j_+g&sC^>saw1rJ>_ebrmK&s3?GVtFIY-976d9 zlN?uN|5#YFAH(B;T3*oGIOQ4Z!KXXp3_y(Rgs^Y3 zdiuf4mM3MNJQKq}N;Hw5Ri+nTg?wE>KME}KCek`R_AQK4iGxs*Zk^;zt!NBmh?#$8 zMNf$sw3 znQ;&@A3&AF2c0nGsl+U=8wBL?pCz#74+&_~e#Y)-k85<|&ZJO4F%X4{U1+jV-smy# z=hRUS2EuYerD~OB?!sYWW=*V9d(-{~LOKkYEQySg)09c0?>m!cno^7zizN11@t0r{ zdMql+z6?gxDDY(MW5i7LOkxa!FZdIR(9-DUD$}BVuL704SpkhX|JpW4TzwbK@-gsa zFnE@cyIEfVcP^g4B|F|FyRAV1m030cw^<@(b9zv5j6^UZ%&P7yIHJPTCaD_@-0%T& zE4rS}6IHcIE-A87S2T~Xae9+_?}}27o1iQQJ$B_pVF`T`xK%S?N-j z3F`QfM)c~o_7~{4|EeYY&73BMRJ`;#|C8a@z8{lNLBpL=uavo3YDyXz-Zf*;Sat8FW_c9!~v>#AhUO{*ivTS+Q(AB))_zm-+M)P9BXKX?|L z(bmb8osNQ1I|+X^PD1vA)u_cAQhPPrKTiF_`1yOVc1!rj*(13EIrkh80zxVjV<{Wi<_C9DNzg{tPo$aC>uVMa9GdJ(1ke zi~Q`m+U4-t*~8&GR3lEh=`Eze$m(Q&-uhvA6HDoQQ}y!WW8Jd;(E2kDEpv_fn(}vu znnlEM_d+uKgjc^e#ln_vPZ(PuQwOehth09CCc6i~8fmL6vf|iRaU~{Vw#Y*!&?bFj zNLldj`(^)E<*JK%zFVywV8Q zEaH3-g2lCT)xfaNB=&bXcDN)6m_;qsd|G;nPshD8=O0$@ghfz=}j_bDrr23BQbdf^;# z3Ep@iP6FRC#aei)oIR4H0Ows$l;{ zo0Ka8>dn|je^_8t+?G5CtSSq&Ar#^HED|bp3M+A0Dd40|R)3Srhpm@lS#=C=F& zz+StrJzOdmuf81bod{4yyw^)0twbk;_poKYz^F`eMizEPAnnPok0P7y@9x`H74vXr zu1`dNnAx*R*+x@kpW^k$*%Ii%(ALD`Iv(Bo`#|~a?ob24q-QiSD^^Lq77wbG2j4Px z)X?Kqdv@j}++=&A`uuN!IvbJlBeMRhXGY;z< zz@h-vde$F(CSAV6eu>nRsIs6*abtfMKUnb=MFHb8CZa=Q#G%{1sDUUlH7vI`VG8Ip1PE zWu37aDUT<>1Uj`Y8w@o{|K$v_7&DXRR5_@O1RMae2|l!&4~|*^%W_gSNEh#& zAni}oWheLc&de+?$&zNL!_pONe@U6H40SRfg!oBm4vzK^Kk4**z1PWmhxx)g2EzM% zpFTE=Wyfo}fM8JKcHeF@j4#*as-H5R3TBdf4Gi_)xIWhn3IceBYqtjz^sf;|MzYdb zuB>A0!@Y}@$tTewu@xOgZ)>co(=uBTn@So?6cMz~$ti}=6e1)C7KixyiUe6}Ry4%# zB+&4TLUE_hU5c#A8nSZtd{3XqCTPnVei0Z*i+#a@aDNWMOJ@H`O)PjECAGvaqe2=% zQNmrF3I$n(pe5At2+Kgs;LKpWY}|NU7Y1ac8br+O0Tgn|tDB=RjWNe`KJ;kr+)dr) zaMmXB3ekuKvWbA zJ2W8`b#@7(<1ZB>dZ=|I>ZtenfOI08s_*60H6)e&bV%ZG^|cXv)`;jf(h`>wjCsQ$ zTJ&3L`P92w-Ux8LS`7|0$=^5=0n^}wu#I!kPYV?|Fk3QG{P?21L z#o0~G2xZ6w0XD>Ub%8~d22~LHP*))AX*6(rA*EUEQ}n^KfmWYuH!z_|wnG6$OMq_IasMZH*&U2B)}$N{mCks>Eu%LcKyy=1k2}NxL6dw&ap6XeQ|%%iH(J zjkW)-AZs~~Oq$bRP@;pp(#rSA{KfcF-QMeie|+ko6>yhwyzXjU&T&<5A9bUqr$%^BCj5d?AZ_IK5hdpmqoyFwbhEzeZ|DB|?ha-daXgh4Zg?gN%(n>pH zk8`%Tyk)t;latar2HVE!i{vu+r`ik&uhieKmVCY%aB?qoLy7MO5Zk(m$z%^(X4 zkmRc-^Xkr<)OFe599j-x*wNQQ4H<{VcyM25omDJz*!%m(hQbj5 z*i`Fw2p(?9hwKktHEwEY+N^D&5>tsyXUswXAmr}vE$dO}91lgCx(aruEaGl5;xn$7Cxy-sUoCVa}7 z*fAQZ-ADjfh1(mK9a}9^S6litMaOIG1iG|3*<2J3qx3IDE#)-qMyoF2RdJbn6Rl24 zxI)U3Q%LaXG2MK4Ebs-vK%hE?>31$wJth(Ph$f z;ki(TjB3SX)Zc^%i)c}1Jyh_kRuE9X6V8o{yU$|?ku*DJWk$hKOPBfRJn_j$N6Dc& zCt@6R6xQy{vOMRL_MBzx2!-6@Un2-ydWc#l_UTd(XX%W!f)z!Jx1okAxP4A-?#KqFZYtIVF`r219OT# zu<2lNy!;NL9Fa2;fvTy{np8LHD|Je~E^yi^pV5S_7s#-OAZt_xV$U^Kq?GWUd83sM zgW@xFrFbG5r{T8v{eNz>-G#596Yfi&Do>>9_|OkaH$^qrB7pd zEaz5#uvT(7lsD0ctQa-Q;}YLVh$Ea>&FJjUKZ=1Ti2o`(TTT+%*t12>{q!=Nwet0} zQfS8y|MVZyVe7jNy#F`5{KNgKb{N|-{S|~BlVTiF=W4;`l7illZ7u6@5r!m_ow9Ot8($}j7XD46 z8pAr!_pP0y>1fvBiYqG%atgdzowYR>03L0;{YHS9pf}QqnX3D>d ze~+b`W`uKMR~S#o&$5mUIiPEu((d(h!5=K%7lM4Aj`F&;)`Ne(Pw&gZ#$)Rq<@cCO zx!V-a zgcej-qiN{7HhMEMWc;Q0C(5UCY09=E6Xfl)IqYr339F!VkEis$7+WmJ0i}I6H%Ak) z`5ZM}*+K>~veodXb>`-1)~q;E7{sgVyv5XNFhke5Hx{SOeYwxq);uwRIToeT*_Ze)_%74J&N z$+)6U^kQli>fEb{qnxe9HBU)oYFl7yjFbb-(5aAz-4!}`=jbEqIhSS5ipF$i1lQQb zD)n-35Bi0SnhF5#RUwhl51LVtV~rGG^(aJ=mHh)VHCw_D3R?!6#)H4D)h*_7=I7ub z_qmko991n81*zZ5cUXF1U6{-qJ&}|BoI0#~0|Xi6Mu4LUd}RU?eFGtfrV$OhNKVNi zPxV$YMktH$wImP4Xn)I)Nf;_1CcSolFAOuZEzazKE=*K zNxBs73_P!?zdEZDN_EFFKvcW^OVn^;6Y(0Ei$i$U7&@+$b{OVN_L0t6j_R($`YhFa zarEo6syV0o(f0*I6!#5zR_ghRDKq9jIdye|PB$!1U$a+Yrc_#7mtvS|i|YcSIsc*M z#R)moG;27OUGB8*%NdhTeQ!WkbKDb*K6VzvlayE(9;=ps7!?z%QSj4%dcBhdGQZ`3cC2NDP z9(ODD0ye1q^Xg$Z1#5Ye%mpuP{_8@@TTYIPG3IifW#=1hmR;hoSqTERd$l9c2Csm9PQy ziTa&R2KNUM;AYc*JE3Z$)7v`@t+t7Ecba$ra{C+s+pDnZX?4cWm;8;k&sPPdE1xrW z1U`OGZU)>Q)S&Y9!!O=ivJ`Mzn21YVH$Xb42))ugikeI%TPmH}o(L>-1Wra! zG2ydpc-@p6WLgW*?c@t=r1qZSu817An#Ufs$y=YuLRMba4Ba(_*gF8FPpa6YRTM-CH*0d&}$= zTipkkPhDmQsJcAuuC3hiD#p{IT`i`_&f%7wjYbvOswV9J>zlbm$|(32UytW;*gZei zQjxhOoqtlw^LpLeE6}leS0l&iBJ0#Ow2^eJW51{n*y_DA#kX%hc(uOh`V-;Mc=sWe z&Gv0LwVo#pu3?Y$S+VcW-AZJ^*47+8&rdRI=~M>nqp7Uz2-BjrE!XD#{shvr^Tl3mD75fYFef+(5-OsE=>Z0lV0_pYO&khuY-@~VvK7^tB# zJH_L2K<`;V5{HP$VXuLaZ=#+9X-r8`UiE2D%v@z1D@{4I%p5s}DKVvsPHOfj2UarSD-s3!)+3Vi`jR!Ce0wiGdO@l8X}kED|($4{BHV3mXKFS^^dQ=Z5{W z?sd^bry(BzqjaL=LvM>Sx~Q3uuICdTrQuO5VeYJRcnIUzAJA=-o#IkDQ(&`%NbOmtsy{#irT6;UX|rP zs)`d;Y`MPz!!m2?#57#`eyS1n&3N4#lY5@n*_v}88deP?{!{5^wzSv@C-URzf2k#Q z`4D@Oj|1Zs5M7Q31R`tGa+;=sWt5v%EML*xxAvvYJq_+=0Ep5x2P>T8pcHS8*f0yu z3<4D)no_CJ7$blNF-~NyfJENm#TbJ~<#Hba64_v^k~RY&G93}g5&;-Yl2YOlX1mVi znq=W(*2?hetYoLkW+5mF_i>>B$3!?0=sgFj8hB{@E$VB*{z88oJWfQM zbuj}S1)NC18WnM(h$BLm@hieX0F6P$_+*{I@O${TaCh(Uo%lxrRfT{=PH!174M-g$ zz@!>d;bS>3q{tBu`7ND_Co_m>4ERIVH24+vUjZi)f#h%^QS7K|v4RV4Ns{=lL!8v;5VI=;_;IYU#Q~mo7GXHm%6WZ42--)lY}!b1TgsQnPaByPTtfbW z0X+4Q&sNjxEvXL!+&@$*?y7uc^Q$!2^UelJ{hoJL3l&4)OtSV3Qi_+0%W z6g62Y3v09&0LRgp~{1*(;jrY6(d z(Kpa@g-?KZDME!4iFqsD844s)R-rb1vlMyycvy!x&Mod|Mt{S5hl1Nud1hK*s3&L|HU&qXvaEz7lL}c6Wko zH6B*5zB)hz<4=gw;~d?ht!s=gsDkbvuZVKlb0cF3%rj#Wmhp-_OqG9fd9x59$A$L6 ziCBtsy^5d3kgT=Yoe7bgUl%Y`-C`aj%5uV`6v)EZvHL8g+{|F3EBv0t^@`9VxksQP z&y+`>e8;SKbYY}0(O4;iA0cOB^0Gpzk%|_GMu;MeofnpTKQMnOtb9P~96Xt)$ZR69 zleu?j9Q~xFh8Ta%{7rz7Xfzm7>5ry3j}KPPSlef*Og1I51Sx?3U@0Xk z6Qx8crzIu;+3vdS5fNAd3qFZI0Fb5B1yTW7Ub}2+Q)?|b%gdA+jG^(XmXCjB`)-@c z4nE)uk^V>w74Rx3n|BaD0+&CCe0k3wzxkKir6HG{$NiO*l2R!#Os+Oi&1wY=@%GXD8+!=sg(Mf;xK%L-qTJ19UUcW}38qqjEQS})@g+@i}C>O1oF}_8H zI#Zo9NKGXKh?$PMr(^)43^8k@i$gv?QRW8L>bPdT=3uT16=(V&^1}2>6>uD?l%J>q zZ}C!6q2@|!SaH7wwn42$egFW5;ygaXXBQ98c=gj(O+p)xWD5i|_o$Xf)1>Bt+?Hc_=X5sYJz2jbfbz^r^?#Bv(&M&mJHRb+h2OkRQfn{-`oN`q#3`7ih8P69QL?n-|dECnn9LjUVdmu67;|LkI z^7)%G!|zI>@42_r(dX(;2{;)Fq6`vkfIh%}cia{9G@PNp%<(TP&`=THE6?#~3Ux7uK`?b;{+|M3J zvrsG&=k}J}eiU5&Egz$0A-f6}ZXv5olgbo7sInCc+84fM*h~u(OA9~I@K@okaEF?y z3o=Qpsh~8u2U|`&{hJFJ8ZpoT0BTHP&4eeS`TYSLRm3ykMzhJD2U@{Ew7KGV)!t~$ zUANd;2y6}q4PFn$g-ktJh&87WFe(IzhKWWDBpUIyMgvF$gSGifne7!p4siLmIPA} zR0zq19DyVg5x;$J(7U~gZv`2)@quYBD~dH13CY15)*3^R4~xS&VmQND&c={Ub7584 zhmVspv*W=lBCysXvk;}?_Ngiys6&oxa1fBS)`wVWO%OREVq!e7MK<+5F=5lp^6>Si z9?d}k`cMr&!&)+q=+g~@Vf>2_!CJJCGG0f*8fl{!vB2=p#S1DkE;4^)9QbzPAe#)P zL(T*u3S!}3S(Xqiy%<}mVO`>VFKJkdDEGh)ie6;yB1D-`J%?Ir^4k~EWeb^#k(`R$t}<3Dj?ASTNp~J?#clJ zV5y*B#;bO4VSW8kG&5lYRb{|5Y8e}G%08zBGQtYaxgtWp7tLKflLVdfwal(F@%7AR z|D;&a{2iuPOsBZ{7owaV}$fh=b@ogrw^pu2enEtMyS1}5MADpEj&tD`J%`E1aD#wCKh;RI|2bX z6kiiy$$_$+BK$1KJtqHiek;MilT?E_{326xrNt8kDhhZ?zDQi9hDLJAST#v!@lQpI zNWe~Hy`WGz0r!}4TVm~xL(XF^crjq6&TM~C&Laz;uXyB%)Z@t#M5x(ELC~~$s9~P~ z*GQ-IswgcAL`B|Pwk0ZJnM+#5V zQ`o!E4dTq;(Lp)&?H42}q$*pL0p_tTs+!`jkW-rhuvO7ssOTtIvxSj=$pZ>7Iw>S; zz)7LOnC_a{3N~=@eOSdu>?CcA>$`FNOdf!7eFoA1M5CuerKwTD#dBZ{4JieyhQdFY z8B)tU&lMXEy~;1+m5q=pRC(bVc*pBBU^=7FqB@Npsxl&ZZPXx9R1&i<&Vi$7$UACy zoPiq@1CBR-1o3}jgLxB8S!{fww5+BPOTh|7(huAR4OOu~I-T}u)rf@g7BhKg~B$xNu z8;=ZQaLyBOA!IfsvJiV05CB*L1mZ;0030Rc%}5#YSOJ(lHhYy{7st@3d@fFY=%e<$ zcanfqz6^Qs8z)XT#@R=b^vH#=p-RHVc!&7?K-SX&gQ<++5@bJmIio>|ib4S2qApJQ zj`(x-xzFmu?qJ@JqZ0H}Xq$QbtJ0G_yGPL*jQ~*v1<1oz84~cSmPb-ijC;OoUfE;c zLB}aFbgP?p|GP<~#qX9A`5mL1+!z~!46yPdqtGJR*P+a0@7CiXMLkn^r4cMi>hp?D zZu)spI@fClxN4k1-nUo z>I%Urj1z&3Uw^tgSceVePc*0<+hF$RabdNH7p@kAth}b?t6@ZgXsu?<$`>BhB>RP7 z-{=-fV!*BTE6;3={XRJARHq@M>gri5nldDq_F$hCnQdc^D(wP`OBUB#I|u4w)rSWE zm=WDTBw6F=49z-rhLPU)*Qrj!K?7P~ir!uZ>%v)BVOK<;4I*zsISbcFyS_@oaF;Uj z-5YiQatCk4*puFW1vJN*ckzN7yk*$M$hs5I5D>s;)-i~jN7-7d13ySmD8DT?K!|A2 z7=IwUN0HDNHV_erz*;hfIA>6hq%*x-zGZ7uwkkE7AZ|4-(8T3@1^~vfiblx8K!Dz1 zN49Z(khn#cKZxNDEh?8ChUMz=>H?yi7pHxq{flIm&Bz!c3tUddf~>bul{xB+ar8#F zGTo6xmJUC&2_;;YL&1m#GeCmgQzG|Pn?RI_l`J4LfPe;NTu5$kBNLzkvAr-Z8evY7 zn4s$OHZy@3gd+wAJPO5wrP_-u4F_NVL`_9=A-9VudVXl^qeiObSziQc71|RzJTg=r zz&QSiCtf`NIh->eB@`M!A4aOKFnAIL(C|On3ybTO27Eps8jyJ5hl+85I`Tmxb@F)p7>LC z)0TCJr0gI0MU|>$ZoK^JhN0nb&_w*F(2|e(&@g_&1xuUy22y*m3@RB3L88UKm!@C$ z|9$qlwnE$y`R^M4j5w91U-#Fay>4txps6hDmG#Lz+E0=*R>Q0t{_cNV+Zr+`)^HC^ zx$OFzE?icM4?V<|X>a}0Pk-Xli^ld2HIqX{Ez{om-#-0`%PtyQi{_W6zx}U2`}W#K zIY-56Prz$x)yd(@j>0vzF`4ta3FFFDO4zBFUw_j@S>5oIQ?3dVn5RR*bf?CZZ@lTP z7f&u2K^n92jW@mR;wb}K)+*76tvXamS!%qS^uiyh6~%x2CFS}~71rrs2J}aRa3Q6E zciHd2D*YL5s?u~JGXp9=4Ba^~jXF)~BIBIgHqE#s|bW_#z8;_%6pb zVYDEKweLV6Ykf{=Bs7fN`Ln=MYg4vA`FV_f^ny2q5?x{vNC=yp@fSnhlS?$lmokIbM*xk!tH!im>8|luUh_%Ik@PE*$nJ*LRY_P-) zk75ASyc-#h2(UMa^=F_tjwtLH{Bpw&+`^SdKOXb8YIZm=S1f+kSGYu^KFf8A%4atO z0hm!&hhQtD!KVNcLB4Jjm5XlmpZF*8$E6`7jDl!n<&k9^`8OG+=m9}ItJtxS!W96S zm=va}g7m~kPOcNrUPN%m__@E_+T(5s@RNujG8FXygdvp`fnjq{LI_jUeRc{h1IsGz zwbLXn<-A%l!pa)dP7R^g>Y?-}!ZDNPESNuS()hM9(0Bas-mM!q@9Xf3u4$SyZ`q<* zlUkB;=h6K;UfsB-BOSt~6%+ZH#=oe~wd^HMBtOv*Q#^pt%yYlu)U%iU&Lvy!|6F%N z;eC*wMg7yD77R5726KDOWSbYCbLAT^UNUWZYj@YKHP768|AX73QBNmadi`&{=?&Ze z?ay!9-(88x>~;Q-dAKw$;kJ4@cfIiJz4t$`ohK~nw*J?j-?lH?Rt=<`FGrrz371}f z)6&+vzObR3IY8Iip3d&B-d;Om2kQ=$tnGFj4vDf+HJx`a93bqmDwnEO$><`S)^yb; z7e4y4XOE68{5_p;*$p=>ZMo||bGlK45ap|{VOX$t{i9D`_>r65LjUilj~~^^j|qF$ zKl=2AA9;WNr;|qm9KqsU(14o=TN{iwgzB{v72hh2S6*DynoSk1_s?}d(}&qS18Jll ziDv}WVW3e)vInj56WbjG(E=70CG^IgD@g8ta#jj~^Q?)NrU)n(3o4|sQCI~Cyx><$ zatHbtK6{Hu0?n919i}0T3Fu@@;*YjQafIUTp+U5v1LPfQ0*=5jROryD1jr*(Hmlrh zFcN@+fB4NmGbtboKN*O?xx@G~qfFwgOG{wM3XWDZR^H*uB*C%;B0vwH0P~_@06$Q` zwygCd09KA)at=ocv7PJy8m?d2&WaH>TYbC13if>tR!}he1H6V#k+@pojs)l;nAXTp zkjJE)R~I{qAY1DMd>od++#()X0@a8);eJy7=Xi877OOVquKQ9#t0l_X|1NLstq@PZ-r7VxFOTm-b0Jo?6{b#8J&wE@am`PcMeU0-AAC3 z5`qW7qh-N0=npzW0lK4*No_th8Hb@V{X)TJv{o@aW0x#6${NX9QZ zf7Qf8>z;e0y|*-O*4Zo0TMbV=zo&b6p7}$xl~DPK`rQE!GgYxRd|$`5HB@s7a0S&; zSz}`bE!8RtihMP3NQG!i3(kArP1luw^po#w*w8U{(%G-OU`kTjUKYm#DlNS5`io|? z9~>kYsd%Mi;d$@-z;)#x-tnCc8!NW;8fmKWV2lAG1ee*z0%2-_L$`zv6gEJNKW9*inIG*Mop{IsxKrj` z4dgvyEc%2$zOc8A9bo52!wCkxt5eyMwW+n3c|dr3G^8B1-kB*Cu8{Lgp)m^15o11r z6Od6UL@5Wte)g1{+QPU{&L#nf8)n_ z7Sbtxs8ckWy3T%{i5V27U@@ckXI&p=OXX|G+JcCZ=LckF=36BySXeQ`0Y>I#u2mIm z7$#aZ6oSDS@As3(vQXfc0E7ik9nTu$DFN8iDwD6X*wU6&$}6S8OfZ($IqTy()i@)n zS>%BoVg!=O;YuoIjkpLE3t0{_6DSP<-JD}EO8l6twXQgk3bRvtN`~q~XPmT4Lj)25 zfbH1!!dm`vbkB|h3#PX=Cvez;89#kS%w5(X(Fqy<5!(-?Q{}=Z{Uwhrj)WCm&iz1|VsfbnW#^UU%O3 z3FFe8n|6KY8yjETUQWoo;l|58cy*&`FveW)oi70ZK+^S%e|YeoHL&{4Z}`KDx4iFv zY;Pg}fW~F#ef9UdKl+K6j+9+n7k}iemp^eUe(*g@FLrJH=aUbwhsODS0s7Se^s`DNdeq+4Wca%Ivu!-LvWG#~xm{p~Hch zN#p!W-*oxPvu3rm_3hpH!aaB1zjb$C0)TM#Tdr%pi4|$*q6Vs`fQLifACO8|Lz`S zu6*z7Tetr5hmY0lpk&9N^SUdYH2S*ttbO+9KfixVYN27yyZ-jKRs{~f_YV&}Q+D4< z)8GEz-*@DneqgS<;+&atTaO-EclVEf`pVW`*JUb~v1$1Y*Ijv*ll-0E|K-|aj`LFE z{L8MsA{wt7|or zP99U<*1hJdTONGwXm0}0h;RGWMF-yh#F5`zeEI7pPU?lN-{1Cw+xH&#o`C6uOQv7; z*6H)+wY2ro-d`TN@2i`)^bi1;W#fM1lk@NS^%s)gnt#P*Q>T}bU0>OB>%Dv1Zd&}& z$Ky!;?0%DLhe*h)tgS zFY&dZGphAYnyS=%#+vbkJMCKTQ=iWW*;Sa2)$s_m@t2ML86m9^pnkO#yGLLV_?)?G4TH+sEG>A(HO+=|ry1@pwlml@l0>`1Z z#K6Hz2EfBK6f!Ug&fuMu(lm8Y3zF3-isaQj0y>lk0Ll52T0*B*~h zF^c3x=}{phAh6D-C%6yzJBeWrQcoEIuF8_7)H*0h{Hz26bM`tjgN(TtL_=i7R%gE( zBqB}%tq&}75)Lj9B4_r`a@ZGHO9qI?Zr&n~ zU@XvBl`p70M1U>sfR8BDg*h&Ihpc3)_(atA7b6y8=vN{X{LSB`xQE!CNPrZ+vEZJ# z+o-`IjnGKBVtxw4^F*+De>cpy66r1gAR#e|#N7=={49#{Nt5>L0|4#n7xmIj%W%+N zSZnxf#rPNQft#cr)e3S_Wt|L-_y&azy5L4$0C?syyUx?nUDZPK>E0t|ynj`=pFB_` zw{g9}SC6vlM&zW2!{aGn8rmk!Sv1w|+HlZWvPptzn#x%89d7S9YwCnXJlZqJjj#fJ z``rZO5aRg$3iSiLylDeK%V4-W0U{VXcE-m)Jvn`D>~q!$<+Vyr{^YH z*Zt#PKXd4K<9U~@`mdil>(4&*;=bed;U7Hk==aQPuD|qyi`U=sxxHiE+^}T&l?=hy zvD1I&)05NZHvW@u%RRQhOq}zn-|u+v&b2@I24489=e++n7C!m>OGo-k6M}HgTi^2N z9Y6U>`{D5yU2**fZ+_F?|HDr^dl2ocOD>zcZT*A4`1zi$zFBX6$Bn=Ku7iL5`R5x6 z(5`y-Ef;Kj=&N7-e+L^ICoMed{8^J5U)TVR00>Jz@Y^@^?fvOjzW9yf$J@@n;2pPo z=$e1|+)p~XV9eaJX4!SmztU@p79DI@dDG1c@B6`*cOSXP$W)WZ06^gmG|T)4-}LwY zaA#)^jG24ZY`gBcS9+7&EdYR}RX5$d@ZKMMdC!rHlIX#*^aH~wcXuB^I`-mgf8$N( z?ET>#w{6_q(Ki09E3R5Hu6gU>$tZ|KgcrdINrA0$?zY4;@ALy()3l!+SY&j zW$qmU5cF;T?jQZ-cL4yp7ytU7-Wc>HIriA&8$bQQb0*%gr@IUQkc?lsV*aMjf9H5Z zSe`4M-3EXSjg5_s05$G7({Zo6?n76fv-gL0+_phUqy0Gb?fC8={`cDv0D2-0eW%7> z`rfxbddE+`dZ^tE<<gof;Wgqy+4dp%Y zc!{70+nQFs@52jwU%CIQU*2mPo4XG|KTucil28B2I~wTj&%S)yf$o+ICSLcMbFTX2 z<9F`r0{}?ig3q3}_h&nQblXh2{>j@`NQ)px)4oEhfc!xjL*q|076 zXXh85?r^|U2`>HA@<;#U)vs;eF#hUU@BGxtt3LMFU3<#ueFy&a!Trf4Q-1fO^X_`b zv#*Q;03fT*XedovwX}8pw_oZ_GUG+q*0kb%A70e^%Kcyc(q1#Bx%(g)0I;(zxoqzC z^$$MC)BHEyb?~o0|NP!PdvWrNDJ3}CG4~xGxMga`ZGZXyUY<00`eeIj?;&~A_N{sL zrR#oY`J`lfw{mbI0K{JTsi%s2;NXCd6T^n|12=~dsgGG+a=cY6nQdhtMCxz7A0GlZ ztd@rB_IX9BJG@k(fxttB#j;`@EHGE6A))+;u-Px)0%?=WJEM5;1rQuyL>6q>l2xX> zU?p)}RIEulU$yngddP!K+=8zz_$s+5B#%-^9vm^@xf`T(A~X=j-C)fNr$W8@;hyzG4}5Bj^j#~9njktm4I z6AokK?naLg5XYV=!&^kA28m_D{Ksav->YQMq1*-`;6ZWyTs{nOEl>TN4g}H4#fmkc z8cykf3`@9_^Q(!a6k#yAD~?HuM3RMyvf!=*P{|8DUq)PO0Kg-yd4IA9jV0xmC$i5o zOFX759??1}=+zE+UUFz8IAl4B>kK?QMF}`5fdYf%%Gqyt(`A>wZpGBDSD%0BfJ=aDkF+02 zrp}wwRzfh1t<#q-pEu5w8XNkls}jXpMf|7cJNQzSKL7w{Em}HA22X@=?CR+q_dof? z@9*BR>-f%1?FTvl0Owu2h|NKWgk2Q~5Fs1*U7L{K7#+QD+ zZCm@Xqg(F((ZffQm8+K}1OUmF?|$XBC!W}R=ulVJu~&ckv-RWWFPrY5g@)#q#sKsk;kKr~^}SagT66m&p)IG1X4dLUmoz>4wcB4fdZgEu z+t)pO_lEYB=PWO|kufbt?)mO_pIx)#*pVHNJ@9PTm{~I?AOMsmy!M()y1xI-Z$H0w zch~V_`*%I{?OT6-_&5QWCFfr<9UuGV57rz#($T)}x$l1K@p1FtxO%=JFiXzAWEwpF zjoY7VKXmlKp67n>vkeSx;_OwIE^dDG>)%^*^k|<=+h2U-XB!T!ICq8QB*v+;W~O_0 zG`c4>V(Mtaobv{H1W09T+;RZZ+!c? zwYxiyAKSOLX0*SRYiL{P0ummhiRt3Ukti~IK;+`E0pk*jS^x(;mZ*s-^l0I2=g z^Urp!ykctN&TyGIVfl=%bx$*g)b!%tJ%8WxhYuf0w|-~i!#m3>-Y_+BkB`(pN312A zl0SHb38&7QY4>d}iriGv*mq#>_U%VqTgjI1e&x2upWJ+?y{oH(r+Fi!`*t6Isnezy z96M)vy0>%s+=&UcO`q0qVD|x)GPJyB=l;f7GbR@3kNat6(N7ggHUz^@*`=hyrDE#g}XiJ{2THodV9U++vp4`9<>z`3VC%{R+JDyXIDvVAo+q?WN1(nxn_$jk^ zd2^naRIyB9Uic6=Gj!G_2k?o9*@4AdJRHpB@dO84WST@{k|aq=i9th_(zKkWsZF_z z+cE>2kD`apBvhuNi!*WOow4Hyw=PyUk+<8}ktZBNAIv-i(nrFhRE`oZlQnt~5sgVq zlDMoS9t0pk$+)n)#FBH}lPm15!=XAL2Cs;dyRMy(Jn!sm75V~1kfv$5T(&k<&RI@| z&M-D4!ezE1G($P&uosed_;DAN3Wb3sOWdOMTR}OJiHPI=IHo63NFH)){n%!8mQ!eR zlMIJx3M>I*dqIAgg$%QPE<6By9~2YiK7%T<$BE%W3MuUoA;9zM}{nIw}e+Vk!2ua?U~EY@-lKCa!;| zhL+?nFPT7LStT06{6qi%U=O_f$OD_2+a^p~u=s*sX?*^<9UT^+ckfHjH!fRt&g++$ zzOG{jw{6~f=-lb$5j|rKD^JG?bW;3@0Qz=s`OYu8BaDM^!R%I=IPRbRZIO&r(ufbW zCKh}Mk7&BPq2{)>e&-h)P^Pqi((e5Sd{_;2^c+tc+S-6Xy^ts*DyM8!Qup3{hnl8L zZZ5;|MgYKZOO~Ir;_UfTr;jf+w04`_&5hXJL)7>DkAAr1hPQs=yi2xj+_dS{m)C80 z^)L_snc34Pr>!&p_|tEc#Vlzs2b)V4(lL#V$&AacS^2Z?efPd2M;n%$bHhzHz4gH7 zzPs;8^_(@cTQ91#+P$`?}n!GxGQH)zwf~9q;Fz4#=^es9Zj=an#<79A4-qo$2A{5)>-%>AwBr$ zJ%!T1aZ6U5v*N7z)25G48d|%}?xsehj@`R=ziHN-(ylRcaL=m;C(N2XHkmkM>XzMm zIjZF|HA=mgu7&AYlJd;c1%7?CcYUXD(rEIjwwXJ8drM{hFq z2XA*t?wk-D;osRKA9s&v08;SAA!W9_&H@s=1Kpu!Ns=T90C*=NpXAw{@eb?}0PGHe z2<~|J$n--9I8MMi*rH@chycl20Cb);-l#Nk21c;hQ6krfU-k=p5S(>{H8jSZ%SH%j zZAwZ-Rm6?>ONg&QG(ciBiy`RGCG*+C{psJ1A18XYFwr>{xgrKJNfI>1+D9ugM$1SHN2qE72-q2NzNHTwyQ&76k!ptOHz;+OHsIrpRNH( zbK~Q*(MKNz$>)d^0yV(JBwwY1BMM=oAXg$e58f-b5+*a20bfF$(M60td0+*3Zikku zz&&b~69lLMIV`Im{6XL?T`T(niA>yV@*z^*gNPAhr?wiRiXIL{jR%czQuNpky9EIO z86-a?l!^lb#2U$QZj69P)|OMSY08s~M~junomkI2@GK7MN9^6m;HCRr1RFqT(BLb` zLhShrB1fMdTc&jwGmn7s+F0UCLqhK#;deG2d+dQnf3kB&J2hYRnLnMy&-LzC zp85L!d~wQ>#Y^TdTJpAEyR!SxPyh3a&!lDB+0)m(0&o)2xpI^FTPg7J))qYW_ zu@TDF8i0<@Exut*-a zOG+gKFh#f7uAaW`9Y6WAFTR*L%}Ug!oZ3=Scy9$Vee0fE^Ny>|ncMv8@oB4(!&f$i-~e|r7X>tpbaO6m^E+zX($lZ8aKw~KOGgz0np*3gP` zRyS^ZwfC&o&)W7cPjnSSTGkjtWlD21y@1Lol@e1p0Mysp>!lH7;ih@>vBw^G>?b>R z9EPSVKl7)v005HxJGRoI=~MPJPk(v;gPl$1&6_u&bxz}}8}~Ox8!}@`IyzammzYwT z#_?#Cs8(=hpj5+iLvO3p7T;g0-9jz;9&MPS4IdTXmE&tvVlihdLL@YVDmsY9i?5!{ zK{?|U;uIlmH7H|?4S!jdC@QRO%Hl+FXH=bfdygLbAl0<8M8z`p%cMW~oZ$>|DXYaS zW4MPDtVD<=F@^xZ0$KJ#@aCT}XoAZ@j3oq1G2l}P5v6Hr$tIK#MgAQc;!;vXAl*HU zxP|8|8borhY?Y+hcS_`DOlHsH4NI5ZNvv58a`F9gPb>+60hYV)?3yx3ViIFa2>^+# zwP3Bc)4i>V;heb0wI#%6sZm51K}I~p;)^7HNnnhY7Gma|wFp80oB#~v@CuPp7)I1N zs&zyDZ?7&QUU$E@lB!!110_M8DxpO=%IzeHZ{{j6`Z;%hkt*l7%7S?^Q7LLg-B6Wj z<#6W%vI>C+0tR}#x^mB(2^h3*(-^dthZc=Top_?fsIDArrUc0If_IlPAAQ4sk^?`p-XaQ*VaY(A z`Leot08|!jHGo5zpC~Dn(z2YoMdj3*ro@B)QMn1zr#2kkba((~QE6bWcFGjj)2=@y zh7s^5s(EoictY~S89ao+5)kMHw|(36J5rhP#0 z)IWdrNhxibF8kD9%>3eCersPh1dxa(ta{DLRxO#7XTFMT>A>zi<+epjX5PPk zM~rJEo!fREe*Go$T9YkqHYF40&z{`=%(m{tn0@=ZFF0pb6K-|lG)Y3x2LOPuY3ug3 zt5zlbl}j@$rnyYu-ZJxP<& zuYCd*^eS7ihFsiEA-veh-ac@prNWPLrD(5PsdT2={u1(yJk=2*p@F)(oTfD73Nh3M z+!;?rD37}yB`vAETW8Z986A@QwaKLBg5X31fXFA@yO;Vg(u96lL}ZA_pm8~U96aRV z7PtKrw;-a_pBC?5{=4JqiQRp`=dMN{@&<+oI710rUt;Td<`Do4B2i*f3q+QzA&#me zRR}oK3HORuYLcif=K?`QskLYYr;=En@G$U(xB46`NwKUox<$bdrO+85=LH7j{9;uR z6nmb-VZs17cP~BPLj9r`!1Yo_f1H`>y&)v<1%1LM5;Q^KM;JZRQ2p)u5GkqP3rbH} z8Whx)q&T24Mh&TWi8yl|#Msu>c0Ze?{5yf%l>otb&WdV`?jY%jv`!FU$e<{dn1b9f zzLolrHT_72mGb$iiz*>@;|hx5HYa*zAre%`>o+OH2L#5T%=#XnA{j+ct$-4c@-GVC zodcZ>H;XcojJJ$9SL)RiBM&Jz8V1nrbJfT+64YQzO2kdJu>(> z=89?%h={D^>C6g>dNO8ijf6p55i(o_Lz$l_nY`qp*REbTZS0s*QfeAEogg%H&C{<0h_r=eu9qwe!)nTgd>VbG5cZejoc(nC)@{KC9oIe$`oOhU zUwiXaQ(~_SgtOoJ_VXrB_RM$gd~D5DLIiv0sfS;f_wILJG=6*onu+ILb@}Yl3u`x~ z7285)e$(Rjz5mKtvs=M5O_~;%uR`VhkKX^x#2ep#r=4?cB&hry0p=Vt=c*6B?doek7;9AL zBR}4~@RQ50SUI*e!KRswtA2CI>el{dQg8bBH@8ms_}SNAHf3t7X_?cw@*`)z`^pJ5 zIDD0k-nC=<<&!SBa{83J_HB&tm)^5KeAYR$#xze(R(@i|YkGSgd+?CpZgxw@ZX9#| z4O7PglqNLHnAIG1T1U4IOgGYU8C&Kpozp@|+no8Y57V4z&z`-dvCEgt+_QaGdE3@q zv*#_J*t~boe%|a80AbsLMUxM1-PMubZ>XO}h6eO_k*N4^Gln|)t;(BA6;YG03(Q@M zKqB!*&XpyC?6y4ryqNxvbAMv%S0)GC9nX#JW)!Jl0IXebN#3# z*6&%_@4#mxDkX_Y3;>YzDPjQ-F-c5fl9F?VK{Q0}a9<`FHf*uG_jcPtX$qYS~UE0*t@FULrn zZ;%~2xUfKVsvC%rtrBoN?d{{SJPQmJk-8f_{6bzv>fAaYnfRVDlDa)?h1%=H@g`EH zunh}qh&+Dz@9=PDEJ#o&1xN*z@}lORPHN`IpC;HzslEttPx?aw^984LhRv17w4|M&J)H{NpDd)n;bLr3qu{n?*9(bv8G)vx@Z^~PU& z-J9Oi_2Of%{QbWi`~Ut&1Fzejv<3|dehV5^-v9IyTjss{{nv~e*SUGaUH|^A=Uu+s zqp#leyD9k6eOjwY`q~d{{QlQ| zw*3e-0zk6+$G3jfoIV9f-mx(~_jAAjxEORv8C`Wu+}wGUUAt%^$R4}9;-oo~G2vMWD$ z{p8Y-!@FNz`{4Rr)&Nl7GoSxIJ-_& z{=dA2cI{Yu_m3WV*DW0Flix`paH7 z@f-KHHx)3XNz{h+zx4d!>)$#5*iXK?mx^3bDpg<~{=s8VJ2u_W{=n^D?!5GhORr*S zta)(V?*4s?YPw>EwE^>bhRlSg|rPDIJ(U+$g%hs)kPz4`dM zV|Rb@x##;75661${oKpfesIq3-MlzG+`H$_-QWIBmycPqook+6_qxkoH}UKJ>jt=K ze)})p{*L$jSHy$cwyycrh9j{Pq<)m`_uc%(7bE=p~>e?0G>c$zdH2X zfwJ=QODA4>>HJ5Zx+^8fW?#}j4ekX&6;dy*YkVvKsA=wQEx4B5+5m(zl=Y1meT)7r zYPR1Zb*fXHs#5-?e!jqnQNPTbJW?iN7TJJ!4~;(Eb9j{>yg*cSY|k*Jqa%P+Rmvju zMj1)kBC!Gai*Ls*r5y3$-H04MWUVudT@Gx+#;|+o?hhGakO+xDpcqCfoC%lsptG#g zj0giEI)5A4AU6PIYpp>8NCejZ6nf(E5oh}vG!|0Xqq8GLz@Ugku>RO09to5tQHrwH z6vW4@E6WiP`797MA{2%^k7ywxINZb!vODHUKo{;)xFFpm87*m0lq4h?Viw)a-bsWk z5s*LhjR3@9h`e_b0br<$@(4i~84(1_fb@?J7z}U(s75kXMF~D2w{+xo6xs98@{^x3 z`KKWo0fby|mP|SMUa&cF{EN~#%}^yt?O);s#79rsSH@0JH&L0`@wS`7KU&_%O$O}* z#yu5(eoYC#3V@>51HCx#h@jU+(C&2*^i=c3AQ7sxYJUEBq*-7>E>7;SzrYv(09b3~ zD-pRfrrZ*gBtT>Uz(GUgPM*?BWfe%CCuU~Yc~x)=fQTVXboZ-LSkenNd9CnnO>Wj{ zMZ(uy|5xr)*T&oW24eM%D3#iZuWNbcAGejHU7JC$e9`P-$xn0=wgrCmtKK%cAmM(u zP=n^bmi<>Po2DVz#}&0xwe4Xawwk+Dt=zyjoekqI{e$0~_pL8}eal{o7TiIyP`kA~ z0II#l()71~_T%)||KrEU%GsX^9-p;QKlXXQGphnci&y2>_%&Box@N|Ieb3Av-t^on zg1>Ly<-!Sg7Klr`5w|(IooA*}2s?_dd&_rhTs`uag<}H8!uMel? zxH2+xR=)p(^3y;Xsq#FK^-%qmIrbzk`D#NU8}2 z+?D=mK&wg(>(~ivOtz|_s;z(?xa*sj|LXgOsq!JG69*kmd?6ZTR3MSjgAQezmLViS^mkcn(==ssi%};u#v}qTFx)Tpyc}Wf5e@%z@oqLYO;c;h7~>8+LT{mm zlfRv~&;VH?O3URkFn9zUbmML@!E=g;pIEL!XTQn-dhCk3tUL{DWJ4l|pAm_P2;Qv3 zkf@gji7n4kLqlSW^OCSOgbx%mTkkZ@s2O5j$?|&<`tPTAa=$2uj=D+D;e1FH&(|L-bURpZ-CfwLh7?;su{B zT|Z^Z7CrKAcB|HWJ(lwj6#E9p66S1MH!5dtD-9af~3ks zfe5Y<#)^Gv{BotfGHUE=a&A7Nw^EBNBLJWifhn-Y%`XH1=S?IKHUe6*z@l>?k%&HR_Bul=qKIBnr|?|WP4 zm%si3mFuhAHdH9c&&VO9*de@Z9C+dmab&Aqy(~%LN0$EWmQZIky45UIcUjOd?L^I(LWB`-@LVVv3A%*d*@593tJXFDVms`+NwKK`iKJu_j3}Nr?i2ULlC#9mgP}PkH1_ahZ}v#iOhW+4 zxW|+spdg=cbJ)AYPa`Daa7Am`?aYc&3zFsP;=sS$lRcxD^15F{M(;s8~b3#mm%MTP~Ni8DBf^iRbi15%CZ9vvBHA}oUTYimY*#tPTLEBNS*j;YfCD5F_t*q9cX zg#DMVPBp$N8Et|t=-Pk)GGcTi28lERA|Veb|L1Km5HA3b>il0B;N8a-iPH$xHF3=w zM2F3=$B=PIna60nVULL54%r5G3b^x!vR0fnd{BvZYSJzhF*JbD$x`x@_)QeJ+DchA zB$PeO{!;=~aR&jxM~iX$Hae6F{q1P1PcQASSR$fSVQ)S#%!7^uCPdpwMkFWjD8m5r zq6IHMkopdS_DFx_9_7fwaFAdqz5}En75P^{7e#`tP`3FPBY`{>;7Qq|&!e_=F}dOq zgm|;cpb22+2tGAoFz<1aWtXy-NdKz6sr%0l;u#9Jc@DyLRZ^`f#AnwlvtP80_`40|1uE?jMic=k+PaKHbCI1z#bt7oNB6}WS^rjf?=|%BP-T7VAIm|z zchmDQ`nIzJB^qX(ty+2J!B**drD6q*)zlX<=S}?ZpDk;8rR&*0Tl+*;F23wUWzwH+ z)NXwhvw?Qsrsp85rQVHw|EteItxm6*&22xw$A$g#RFK}G(xOU^Km}M#;3K-EN@ozF z0o%PNMERv`G(6zyq^bIdkBlgCr&)d0!NC*-ZFu0w6;MK#sd605AwPJd8p(7t2I|C#z5O(#Eo37>r`G zoLo*t@it;PhXSKMQz6^3-HOGQ#I~>(THEjzsFJ^iI-b`3oKibf_E! zS?Jp%OF=X!vn3yd0VeoaJR^c!6pqOwki$|0s$`L}j7ZfbjcKkbyf{+nZvy`TArc^PyNs%mv@C5t0y1JGAZu>oCrOed z2@%<{CDuC&)~41cN&|LHqR@)YN`~N9DhSPMe=p{iYmo_Qi4=PPBzg+qL2Owwh^0|5 zGKgmmP6PwqQQH#$iB1wlJ*)&0#Y;Jiu)Q(5C|<*ht`&==KTEQIXlC^9#k2fX6vn8c z^4=f)$)AmElQjt@V~z}+b%OTk_J4opim)WmlK`U(yI_ z%n3D+o>f{bD!n)i-{VZ{lrI^9L~0XOw{uSuIyIKpIt_|WtHI@0`#SoAkpuK!+(m5_ zdqc>XC`81kc8PCBSkd_ZZ0cZ?DiJ|aDSI@)Io41F&NzgK&!}P}U+@U$>f*!Pl)Hp0 z?^20W9Xi)EFvNrE!4p2PR{|1InpzAIEB=FH5fIQyS+N57jBs-9R4z_M$)f^{mGN<6 z3`I}?g|oCmEz>hm@iE6C%wrKG$u!(9x3Yk7O+U5{BT3Y^1<+p;RzWOF4^DyB_k$^ zn{@Nm=lUXsdyru;-bt~7`18vm8Hf*|OnsgdzNb7rDM}*l4=4k#5H6I}`YXIa6J8Nb zk|gLuTy1JOzEzex_TCE1p_ig2|sSoyQgP#icZ`Q#iK@wI=6cUCT{_qUtr(YUS2-e^5lZ4}+n) zd)MfolQsuxoP8O`)`3yHu?a8F-Cr0iB$CS>CGv&|+hW!lKntk+GuV#xxR1Yx!DB`m z^9Pn2gZ>PAs|;D+HA&Z7w04C=*6~S03M6uerp2Zn6s*UY%29m?sFZ_8*pf6RF_Jx+ zlQEIt4~fFRj7fs8fos)TF)E3L4tyq@HsuwAJ{`3-h;tob*oa?QM4l=Pvgli#8L37s zClC)N`f9z0g&Pq;8?usTG{K#q=ZDW@e8@v;$s(}V6cKR}YYNaq042~_&IXlAIH0N0 z1RyOFZOD`05x#&0@F(377*w}m0g9&Y)#yi2`>OfEGFd;OOe>1=)}3-^)1~;IFwEkI z;(yb=LITIAHNa1L3^_Oo+t2n=wU7bB(7WXTdqDxmz-K0H)LdQ;9>tarLZ?pbMVL9N zEPUgsN0z?}+yV}#HlkIS81ImzJbTC*1b+gI08ao2eEK1KPGw?Z8Rg+LWD2N51nZRF zC3O?HQ-OAj$oo;Wa@rfnGNUjz4CQr%M@slftb_cX)9Oj+PDQ`R! zZ3v3(I{w!`RwG3A)Fydg)UA;UG!WSoqKtJK3aTo|>;|l#(%Jo0f3>m-^n)6y?NF}D zaG@GVXq#boB}7<<@#DY+NjEa4)3$G_Q^<;c_ly4hSXNTVH6n0MR_D3 zw87^~t5w$|2^oVvrIElTAx6rVGg>O4&nV~j~$1XVB?Jd%R)g-}%cQ0c6Og zmQxvJkrVOiaX1#k1KK@;fe0=3oS7SN12j%ZF7zzHg#8Z4#iX!oEdUt9)+Sg6XasX2 z4|0jDFzoyt*ZzbgA`AXZB|^+-Ux3e$WMDXLb0*KGYl_fYtnx!-kI2YT=CMVhAI?6t z;7}D3yWLAdIf}W9sIts3)10KmSM6iV*nkIy8bhFv2ne;OmiI~u&?II1ByGwW^1fpp zmDBQ+jyv6AUk!m9FjfZtw+dmaFdM5+QY!jJx!*Ejhk$;mV0b~4Kezw}vn4=3S#GN5 z*5JNL2lExE!pcTcPJN{2ErU-enU%r;@2YND*SNlrQd)1)tPLK8ii^m6mRiFK zfH3cuHP*{{&-thmf*R2XD|7#K^n?Mg=Z&Oc{0W-eDK z-48{xy>cb_-N~sz{cLyZNKzH5BAL3-hLiHpdM(s1%3Eau$3WBoN0$mdMZadk9O^Wh zX_&^SzG9398qna5mWShsA-vj3&RJm`55x^crXqNYoD;12SM+Qu5oA#YWsV}7WF|2N z4S~3WsI~$)GxDGUimmAWj;uq0#exNzv!zk`0iT zdr|LO^4N}H3zW#EsCFJ$3i}XNyz>OtWxNdYYMCe>TL4(6~#6f!0G z%3b;$$rLVN1cNNz%H>a)0S|2wSODXCC2$@vqQ|%e2GKH5j(;2v=XCAb5{Y_H{ddSc-=XeJV z4U_kvGHN9XTyk16c8>}j4MT_qQI=8}MV{AsR&j?}5Ymo}bdX9NCmK~0=H!XjQzNN0 zsK&ca3y|mpDYN`m{H@^UQ0_El~61&TCNQg^+D7LA0t=2 zvebP@l#?5YFg+aOJbZj*PNF18mO*rOv0yhcYC0Z~9dP3Q`@gI+g!OrBr2FrC$kw@+ zj|Jx0fFU3Pm(QBek}(1kgcQC&Y~6$Kj(QM+JY08zB9lr+gleQP{2wJeW}qQf2lf#=Ua zxu{ZL{rCDR>g`sR#2|o`8An6}4iI8Zlf}V=0YC%*on}b!ui!df5JNx0p*C0~+Q^8N znL)8k-N#|UiLhzr$_rObIlA_t7j~z7v2oJkvzE@8)RL5sAKbBF{kHbr5!{aq=uvzU z_DOjkp}|!%n475J(+Rb6dh9bZNKlnd#U&|oC7XFIzEy1#hi$hv4E0i8CY1ZRPEeP_ zh?ClDMVpYgOb#lda9B!Zs)`894zMy;{1Nll3ceKZ5_)th>ec9ZFbtHF(Zji>YG`Mk z`Yk#-J9&E1(9hfv1Bt+ISNaFyDYx*7bwgw=Sqi7Qd+aE`BnqK_z3xqY>vF>AjLQ60 z9ubUpCNdi62|xx(mD+R1GJ6^lak+1#i>j(z$BVaznE4UW7@tnbrp6@3IXwX?k)g7I zgPF+zD-HlM+5yS`$XT3B^x)$F8FAKOj@VHFEjgpr3dg#G;>BPLCW$+xo7hYb|3P%n zdM3&(3kwkYSRfgXMp=@Y5z!hn9^Lb2$;Gv~OAdc=9vQ%Ch6N@Hs84VvVh<5F<|@iZ zd$oCBB0l*_In2l-KHBAnv_~v)4v&I>(zp;Fo^1a6`xy)LU=xd>Q?5e%xaO z1Y^Tw^q>)XwhbuVVD~9C&t-s!ms6f=vJP4zkRY|p-c{fxwQPw#z_8#%rfu%ZB~3kD zk@?&*f7Pm)-5Z~Mbbn9Nw6j*OJ|}(ZsU4j|-*`-ednD(V{ULs|549J`sc18dChB*m zRr^+~sATn>9O>ua$=<6MH(z+QB1j}xuxf$Rmels4PA7|o0ZFN)zN$b{AwmSjAd%Wv zMW5?br$ABA!5Or~p3;fM5Wvpft|l386Lt z7V*^?blHfUjmDy%?F1}i1H2ZY0 zpieAAgJ_A;GC9$KnJ2VZsE{*wm*WnQ+;$jd5uRLKUr4A&=orSiqJP^8gBPaC1FwL4A$|904^LoVy~xE}D_( zbLV9G>!Bhwr+j=PLvvmk0CW&3>sNu;bX2K8nS#nN=t&IKAWMvKH?B^wI?jpaJ^t7w z%a>2cp{8Lx7{+7aa649&b1)Uj7xZ)Adln+P@g^Qt2W2)Q`Btf4I_5bvgkWBB-dgI{NqQ zAoX{xMA2v7o^nfPC=OdEO*BBSBB-w|{jUtCfP794LKK2PNHdXt>knSd#9p(+rwsuD z#}-LFynrH-f7?z7?o4OzNhH>vgq5-JXP&%MG zl!Ny&*OcwAq=LX;kwGMbKnP^5wFWJsA?C_Qd=Y{784Bj1a%T~1(I5~RB(l~3krfvo zfgs4+!oet{7#nlBehi{TFvgHOGL5{a13Th4IeYWgsxEP;i`wV;ldhB*>X0gB&|~NV z>aV^6l!z_vGa`pq#gR?iUrW}Ii5y-+wVqj7Bm*Q7z&S1!sWQ>&@fGH5}b}uT_*W~NxgSxB> zD>6(({^dClAQ+!fS;bv}2anhg43Ll}mbnUpQE5WJgD>6}DVi-6EYFO9YIp)T;03X4 zfow{~0D(ui0%Sl@unmJz5+>~|J~8&({Z`*0d2bZrfsAMXib+afr3Hb2yc0<5dI10- z{R$v=Re>DZ%J%^^;mj)(b^#>)kf0Cpw;M|<&JGN-2^OQkBaUwK_Auza*)Sj~aE9V( zqrNy4k3Y*Wu$IVa?A%Q~%zV{(L;+_a0#Mbp8#Hg6<$h=L1T<)E#pt#InaYj;?t(2f=E6OSS$dp z#fJgP2mydQLQx93z%qBc9I{A$0S&^#NGtPEcmfjn+lCS+GOhDhENQoIas;@aYs_29@GP0_D#W*>BLlsE_7!(j92o`YgenA8|@SgAWSOlMVCT3aq8^M7@ zXbd1)>kbkE2OP1p4=SeOpS_joh?$iY-!=eFp>N% zkz2qnS_OuXn?8XJ?MmAs<~*-;!~A4Y(c(8Msd!IWTUf$Cls>axs#BdtKMmLX zjovWT5CfF=fv>fCez7Ir>T|D78LC43plRC|qNVh{TQwY{q8bb#fS%OT~hUGPf43 z=cw=xb(B=tCq^r^w>TN?V5~%9dz6IPLNbWfqA>=%r;o!q!qU&CjUW?@KLqY$(JF%! z7^jIa1one)>6_fC+`egVk0U8i#~Zy8NhSU_B*JCT%U$HStWYT8%p3k5`~l8j%}g^$ zBu+~D6e@2nqc?xW>hl6YvVf?Xl^apm%>W(DjB~`&ekS2p$Wed+JY--&j*AOLl=AAW zIpwNE>4sod`6UCjQn0WxKFXO&DgN6Rv5sxZdd&bZ9#=%922W!k9+t`UNPKeSI?p0f zxuT0HMqxxLL3Klrh46P|{D+7usm3o16v}2)A!z-Rym8tJ-#o(VORre4`N_w&boBQ0mBuwKH+t>QptsO|ZC-4I2a?Lb4WttaYc+M^&=D<4e1sGJ`HbwN3dLGDL%k zL4$@9ROb!K$`9mVZ^fty$DBztn8D0#-Xshc*^pBWhTolA4RhoyIH09H(CBKRv zUt}rfr0&DCLNt}&NzNO}o68X@C(H_dfnw`2P(@xsC?fK}rSiQBAOL$A$w&qXIe#_H zHu>}7G!`W8#mMVKMLRjfUg{U z(jF%Q$vhpKdca>LwoX1<%lV*K_$m^|rDc`_+dP2a;3VDC=+wG^N;sY~R=%~sXHPk| zF%L{}6bxnTHwOuRpk(Etha(U^v~(iGZ}hVwZw3KSz- z8Ez^3Ctg(nK?rKXpc1fPc$gFtCs2&4#8*@_kF)BItRqE5y|VF`vF;H-I8RJ`#sJ)` z4(beQ%i&|k1VqeYI+~*_&LLfk0X2+2k^nxSa1q^GRZy#AraI?J$TLENMlwf)v6y|C zWuhaY`w{XIrn6yCQW{~+M*vD$egZJ+-Y@_Jl$B!4ykmR!`OB8g=-Rlycg(b9izgo6@yy|TeA)?;R+-pItqK(m zz(60~wa74%d-jfz+%4qy3HjEC2`d{-)NlVXyM@t6rvQt^bXqA_#m->ACF(SsRB0l91IDWMJ?kJq{=dEActQ?lRb;WK#-ijKbmn`1mSwNitHALl?!;9 z)c^qi07*naR5(hTMXDQ3 z9va&7&MFdhY+m!CS+?ZDOO_|)&I3DMd|~_Xq1?V#@FXfIIE0PX>C~mu&~T@r(C%oT zHC#d(5UQ%F7*wyJ%#cw(tk;*9QA^qBF(lI^s*ft9@8ISNcksC{1y$7OB~*7Ns#Bd# zEgFTq)17<_7^C@^WwY&7-s-&G6%eB?Iu<}?K~wgDX*f#g%fpde(b^cO3%Sp*BpFxXj>_Qhfc~v zcYuwKo{d2jPSob0PC_G!N(_{SW~7F9yw5ys8u}jBBa8+`gMx-C?Qi1WIco%$q=GUr zh247gj+z(Vx(?K-PNzDJHmE3L)w*kbfy%-Hp-9M8r0#X*kVAZw9q9tg4ES@+kQ3!N zs00DPC3!Vyz`e8&_=bjls&padB{*}0M}WXC1;CH|UhNv`#U2?+k&E0}5sSuLoR^Sw zJ+{`ewM(2EhHW?S-~eI)t86r8toXcSbgz-Ij-sa_F}y(}xro98j=RB7gRl6EUPYmS}LICl( zSPr>ipiBud@>}sNP&lzKh8A@(mPvLb{A|&flI#VXBawKHkk4T(omCj2v=MnK$qy2M zDd)N?JqgH!0kR}OBw*l%>j{iftT09MBVbW7CGtuZZ>Tu=lS^6To7B;xSkOORn}iPP zdc!z+iN(%k?3jb00Ejo7LTtSR=}ES{bghyK&d`IC1q8V0(w9Z82)7j)fJ;obvpg%Btb>}Y+n4D z=51<6mE374B<|(BJQ6dbJz1O`sEh-iE)Qf#IduBkZ#y~6KovpGx2 zIR6zK$TK^*8$^PT@SwnedS%Z{cpJ=};${KK0PqQ3WF4G=h$d8F_;554BRiX@ioI93RKABUFNrMOm{hW>2 zLj(XLO%Yl0xx|3=g<@AAP|^&Ze8%{RU@ZaoG(!S!xqCelWGz=q4rEFalO%~r5}tcj zL<=$IrTwJT;{ZXhBnHq%DDLb;sp9O&JT~gv=p2RFt0t~~H&drU60fi78BnJ>4Ha5c zrxT{325R&>m!kSLT2#=s-dqFd{cBt}YhhHVf3%~fb*fXHYNU~Zim2$TKmgIJZ85GQ z3lPL=B=w|Y&lvx+yi^w(l)(!&G&v=WI%SObEw=}71Vuu{=fD=dDpJ*ONx^-dZC4<4 zJd~i2Q`dcs{0`XQ@&;UhUaTccWC1L&hlYbaj5txax`4m}fn~c_S*n3UvFn1H3n&wq zi-(jt-f=@$XbBR-hN=<>X?dgEF8&e0T>}Dkg@8!{1`|rWQaI>FoBqJA2?PY}?BIbN z5PMa7N`<&EcB}wGgTfJ!;6_Abt#!Gsj6v&zsN@ZfiY6nAXk0QTWF`Vi#wVZ&z(VS| zPA=9DvN%-eVs4NG^FWQiFjM~DNQDsDP*=`-1EB2agY3P-$-VJH=z*FF$`N^EvQ9diTX+=V6i9UoRk`9+gyj3aoj?;obg5 zRO_5?Ry05M9-{n!Mj>*H#aT-XGm&KSa`2Gc=iKK~YsIOFJ7E2^0Cc&Gko>B}t+;hq zoYw+Zk%tx$3}4*YFjL(OtC_IiQ=Nu`GP|id^-neK`UWD?;)hnhch$y8|22!pFvQQ@ znkpYac`01S3u-2;_(fB{st~=)E&4t87LmUdlrC;8-ks;`uR9jisZOUERa`fQu!V}( zqd;a|P8oOL(qCwo772@x>tZ8GBpQ1A-PPvLpyyC30|E{J0EopUt84`ux0tfUDy)+z z$%rvuJ%#Ve7a_Xad81^dB%dNEhXAaHRJ=2l2Z@|N2dcgXR6?S0JX*vj!2=p&1S@fj zP;iY2;1%145nBZ|wLlTT?gqpz1|k{CJn-}m%h|*(xsq?581EqeKO~7bEC9HkTMOt| zR}d0OsvVyLNWdMBXao;6wAP}}>Ez%HkE>X+WC;-xOhQjE@Jc@U3%WL3Hew>@z~P}8 zA{QO!2a^Sq?K+`46)cQ+=#K_pw66>@!~_h;u=^PXP?jR3tSC+}I}q_0WffN^E8rRg^iK=Uv*4lcaDdUh&$6u)q?J-%%MJ~)N68(R;$R2Dg7ro*!MyyssX-&gVYQgjnjSaUu_etQI**{K}O_!=IVedlL zA8S)tik%Z3-|f~7uztbud{fAoF5)5a?URK?ezF{Fc8cOeb*j@zr@E;&SSsF;Rw+L~ zQIC?586n3atW}J48c8bHsudL}r0}A;7zeC_gLSIY=}U#Pdng|zIZR649c%l_{U9zw zK<@pv80P?lq)eJ{7b=t@ATrL}LPRhg4kas28Mz)vUe=$U1Y|8IUBYe1Oq2#}Y>Y5!#T|+5c}XEHB8wO z$dNI6*!*3pexF^11AS1Rg5?k)brid^j6Edbx<|&v<`958z1s%N0@>`3u@Mg{F*4!M z9`+;(7?-O_#EY_dRC`Ve10=_hSptJ(!N=moU`AlVp*f6zd5DgRwKR8;)kO`H^T)yb zO#}=VdK}M5M$OJ#@i4;SVmQGK3PB=PJ&1~t3UHzEnZSM4XYG{} zZlF>Hr-xdetS4!m>NL`H;<}E?qziB2TB3S4v6Fjz~7)5fDC{ah5HGKB@+Y^j9bB21cnH%6kbr^?K|6- z_DSUkE=5UVd=_vbfBL)6s1rMz_%GIy_pQkw7an-vJUiNxh|vcBE3(T{05ljq%C$&D z-njy~f4-ntpco_!27rtqiQMtH7>O~=pFM`754vYGiiL-02rc;3FqVBh6tG0VxRPP) zQjHEt(qE^j@eny#NyMB(uGqYHHg^uqP_vAgk5Pw;`;O2!3&w$Aq<4t{%Hg(R2!g>F z9ywxxl3*5?lLNz3SqF~Wm*5IOHA zaSw7TmfF-9r?KQ6iNe}Kj)j2M6014+=tXgD66q0Wr>igk3gq&O1^|}qDdSI6r_o6# zvTLc+nM#%SsDrO+)Y33ak?b3!It?4;_dT^0AA-?|ca=5JDe^F{vgzp0aiEskT}AyB zs8gLzRXS0qsJ|=9Y~T{?;o_sBB*uX}KA|iLkF6L0###WqCy@q3yw`^R8W4zq^(Fp} zx%C>eB@r0#h)|^9MWifr4vzzXVD*J#!^FZ14F(4*tC1SuMNix>!~sF!1c+$7ti-AV zKrkdt0U7IVPP{#cE_IJJo)ar#L^PTK9gu=(P#Q+&Tk*%pM+6mcUhNqEa%c$)mB@NT zDmSp~w4xu8Y|I8cl7S(#0OSsC2Vmb8|Br$l0!jp|l;Gkc5sd|(@7lG-uoAKZm)AxL zc!8=LNuVMKdhdWDFDwY)KyY4TZKK__Bxq_uB zQ_udyoH47LdONy0*6w=gf9@NT4y-T3MYeI}qTcSE4GCsUyZ`91R{Siv4%0 zEMExVrm+vPQ8yslv<3mdfF*xC4*-PZFz9SYF)a-uhM=C{8-St8sC8{qXJUH_`d)Qi z5^-rbi>*qwnF4NwY^KKIL3BWcbsh%{7DaE{y$J{2%|{GRU`$CP6wI9Xx&WU9hkVu) z0vfWZcf|r=BNv4qCtorIWXYl&DCR5o5JdoGltdH?LQ3Ln>T}{Dy>S75U-+h7ihzhL zShOU=t#KSFCFj|R4J(c#zF(4a7c2o0S`WKnKs!A0$fhuQj!~d5Urm53Fr$rPR)c_m zAmh(Uu0{zMFVv4Wew`BuLeI}Imjo72KPkeZ&jMI-O{D9JL?4idFqCqRl|U$-dBl*_ z#uW$VLn+g=1sv^{59-ucjC-3nZF=O{?Og)}4o*etYkSXcubg~r?Vo?ipeMei2%U#uK(rJ7k=aeZ=o;$^zoyOC!3u*jXtVvpFfg*L-8w?k!WkU zTNxl_cEhzm7K2^k3hpBqsQ1u`&``HC>im*N8$ZKJwSxv3v5c+>Sf>HeAfY0xHaUvS z+i<5d#F2kw+lCE00x;~U!6=Y3VB8^R2E?Y<&OE`oBZi-xJ(FRqYNzs&hzv#)P7Cf0 z4UpUsB0)Ih#27>bB(Oj}eJltDJtOT?24;|0^#0Vq~aF3LI3^SX^*pf$yTmU07{vxm_ zsKJ6DPBH4x@%V$JxCs$78hqVDt~OocRSaMWO~fpqT(Y zp%MfKtOgi~Fz9xG7sGLSe(*wP$%n^*q6+}GE;dr!{*yFMDX-b6UAu_?`8_aAZk%4;uM^z4^!dkIgF zdm^#~Y4%KpK-e~RMfdif9E3wD_4FOz(L1V~<81k*Z{GU+1y{dq!Q@k1<4=sv=+2+I zRNzBB{Hu}Q!kolqPd&0vxFY>0CW=0)KPRW>IKV$cQptcSuhS3^4QTUHr&EOr2X#Or zP4Nc`x{~o(AeG$&ywz+aTLz&)gC;R1K{Q0@PkhG2U;<#ghYg8kXBj&IMl}4N$m&CG zS-~;=_o-@;yj`w33#1ru=9abArfHg%({edY%fKe0Nl=)#WGz{;sq;9|PZBW^V^1Ok zLIek&8Gzv1B4T#VAW343Nl;@f;fZ1WGt;$B)`2z|8(Ex*{3w{v%~Un$wtQfjUHQ?`_nKj17SB4Xbwl5zJsrOkdLIHSwMg2tx} z4l?lr=l^o4e;qDK;mMMH!m!W?0gW-nBuP?AOybf%Im8p(321(Bt^eO$$f9UUzU<_I zm{G(ivrn`nOFWS7joK6`Kd_3kyXXg=a*T6<=Fo#gRJ^}K;Z`6B`ImTd5QC;a*?z-$qe#%>G%jGgJ$UG{HVX45qNcO1Y?HF)# z0KlD9Ktpa?H%we|&YYf&>yFJmcf7vdbzs}31JE*m((EZi-Q+M+%fwkX-?DJU(#H0^ z`|ti`(oF#*Nm?de`_3h=J#XBEadzjXUElrYtLwIx6M&?3{%8Mc>BJV3Am03k*W3&M zN!K_2@u7RyP<3Fg70&tSve%zGq4iMTD?i%S&;=p9tpxLKoO{`&lV?sIQ{L9S=GM&* zJa@D&alfVGFPVPXTc^*P*V5KUdwuZwVo_G1BQ>T}b zU0>OB>%Dv1Zd&}&}weJ{v{uok^INsZams%uKm_UNB-*?bIZKd%f`1J z?puHBrn??F+?&|s%IUxRkp*qWm;~Q@&&7_d!(V#ofBpD?^?KGf?@e!>eD~eo?(Ksl zbPHPmy+A_0SIu4gp=k|^8u~iBJ2oEP`-5GFpXqS{S*C5=f?MW|du^K;pB{VZz^4D$ z+Pm4RdtC+bxAC(s{=f5j+Dxy()qnST007go_A^g+J>8FZb%mLwBx#&~`J1j-dG@Tf zw%)xv*4%UFeVcdpB><)AZ~yP_+4pB(JaWU^uRLqzzg*klqsi>}b6$7l zMd!_*I<>8@d-vLB@BR7xTP%D1_8xxZXTSXTwO7pfr|)iWjhi#g7k=zxSJSb(|NV>4 z&?t*5tkXylReDrrN{xhhR|`5bgbqh1!;>g_E@xyPe#0u;u)^AEp-gY<_IjO$nyN1* zb&WecsR~GxU*Yolp#Y#bOvDo+$;rxm@KpF)8HvQ2t@FLw? zV#*R0y9GfNkPDfoRqaocY(aLbQGx&j_c}e;b^M<{=iW!1`Sw#Y;?X4T zlGI6L0gydG?L19*6*9#bxqoT+t-?4(i2p)V004nbi_suiA>4S8!~#YhJE3~60gDv1_lNFZc658VMCByuN|@z@HoNCX@{fW`n><8?JmS@OZC0Wiw2 zOalHQTIcs@-DC!13?LXX(o{T?&_~bt!Ewc`TZM)eC&Do^R-8TQ;QFWb^v<0>(3@X# z(FOYJ6Hh)pbc_v}Ow;U7{l(cG>(>AEUml_{livB>v(fBvKVdTUzkFsjZe9PmzuDj3 z(Qxi%tA78Fm;U*u*Y7_L>G7@q?UUQU&i?QJIsfi|c=VSW2m#3UgJPKSxu1RQn>)Mi z`plZmlrDVtf@=({^KJDl`IGbCS+aM1_N8wf=x(`S(%V0C&YM2@_?^4@0MfBq3X z5AG{nGWFvhop;weo_S>)03cbP$PfsiG=1gL*7e_hsW<9rY3k~~oVMYcFYfu{?xvRJ zNw1wYel{L_1{wgMani5+)6#>lYVJ4(cdn3@WY#u4gj^?fy{>^yB@u1 zH^S75e>D54Pe0$go{)ULyTNUT5tn}OBR7`!{PZhd`1-NqZObos=Pe(;=3oBtCr7&g z0C4Puzj^b%Cm;UdJwJujum82{u7AVYm+$K814zfd?z#_Mea_w=-f`P2n~#khfA$qu zEg9Fmwf#6h7fj!pXJ5MRcUDYFw)ey?SPfGa&L7`&bjpJ9$uo!RIMJCxqt#j)gbPn( zS)7_g(LYf1t)E*5ON9v4U~3w!N>!&JpaBhTW{*F(O6qiKl6p;^|50zHG8PWImH3|m z0s`JX;(FO|=8&s!m>0iSS3VvZ)B$Y__R|G@U{u~0gQIc!qu6wUkVUsR_pOxl7LrP%Ym#Z&DIF$aoYm!?r|;@%d*cdww;zPGH(h z56G1RVJv`8q~z0_d!H1?EwV}MTG9SEzEY3bu+{}+Q3uiZh&4$!9bO8v#v&kc;2^MT z2q*UTb`ya28{!t3F_A0_I;T+?Tqpapx`;?|0mfxQ1CdS7b0l{kKxVwM94S|&;2Fl# z-Op{o))caZF2$2qW%856L56Wo1dKTkh!OH}dfDz%e7E|a0^F#o6HOB71q3U9k=@&Z zRIAK=kL|=zm0uI3BGyy45CVk&H8ehFkwRYdly@2w`M)`l#w_vT;MNs`hE><&KD_2A z)X&vnEg1vqdV~mrm#Ok$LJX0g*&VR!s^yv-_UgvBqWlIxrgi>`#f`hxZfGwLW@Dm( zq0s>n0pQthTre-)`fp#}wP#=V-tD`-{Js56JYVO%cG2p_t^fL^-3Qvs<-V?`?|k{W zLo;4~Zju5JKx!#X2>{4a>ip6AY0Iph`nttUPyFpmFYM?#wzKzz|Fdah6SJ{!;u|j< z``F*CU%RKfuM9^X-*fL1hgV!aJ+S}{=AxSycm2mJxBqP4o+IVs+q$3m+}is*NCW@? z`lma2)opt5@1DQ! z`6Gwh)2-jx`0&p1@;6LPoc5&dI0dp6Yzp$M@~gzuS+nfE?FTI@6#^h&V^V6O^5GOx zN{@B!|M`|(cXT%)0N{ixW;ZwNTKmuY;h=@yo_*ih(tT*kl-FQddByWrE!mU+0GtD> zJ&~=jnZ5e5B~6ch?RzgAIofB__7@+y`<3>U=PoZf0LQc(x#zpzeRj=`qepf;djGRs zV`k2pfB;aMc=0utbbbGu-+pfG?yln<`*uBb+pRxuKOQy>1kks4$Nt7yGbd_SVIY8> z?LYt8Pw%_)>-Qa~Eg^cHPCg9_DsqaLaD}Uv@`XOtXe8OD+@CttsS2H-s$_1g>)RPY zVbn7(m@^uHk#*+EBfsbNejaRBs;wPcAT9>S1r0Gs9#FH>J{IW4Ek4~}iR2>ak$BXdW*AI-n3#98AfG;kBj%WYYf}OOumCIu zYg3!1skJsu-Ty9#$7Un+lzOtX0}7Vkx{((b*zhZ>ny=M|5vkPdhO-3wC?8~@*1BBh zKqW6+7f0tEng9cG#?CaVlLB>Rsw#4#(Jd?XLO`LatAJPeK?dE0^Z7JgT4<~(AUF?% zMIAzUaTKEUW_{GZbb01Eq7^H;Q`Y zCbKJp;JD(DFoxI!^Wz#xW?XR6vtHFLxoMEP*&Te_6h=?v{NuQN2xvZudl8?=rq@$h z^u_gyMFnY^rm0&}0Dwv-nngyaG;z_YIlZqwwXI|D?h#Ks`Sfcpx}ZOhXyi6NX~VKb z&0E*+KiCH?annS&V0J4_827n&|0|ejXygn9V=gQvUe7 zh2Pq@v8iwT6*H&bckp(FNS9M9vvS||j;7fy&1LB5=jblN@#C5fAM4DxP0{iFFaP_5 zvw!!3WA8e8_?g2;pE!8r`R;@O2q!FP?wi_n$!&9_UuKMH7@Jrq4@2gxN^G0i(*k3jfQH*jeKi$5rz~iA>OJVwayG5$w}}Ld_Y8mV4Vk%AV)F2z>YmSU4bARsO>od z@o0)JI)*s^tw+2lkYKNKKn)u9=*!2=BnF1OeI9ihB_+CcZ_FGkb)HmuiZHL3+rDM2-R^DWM`bcOt)P z64{}PJ8PW2Xii%*u6X0L6~4a+t1rD`!R99)+tM+Bz2Ru_Bywa*C3TKxMAX@xc5Phu z>wmweE&icUq=lLgQ<4~zsS}euZhJe+KY8cV>s#X`qXE$9Wimr< z+j$eu`po>}TVH+dPxdzTQD3J`*KB&=PYz5})ldZ)4jb97p1$rKcl@_6yqGz`t$+>X z7iIv!_6Leml9bYP^c=)?(y6wG!oVube5lw!MrlWz$r?SC2Y%xyqs()8K(LW=j~z08 za&1)nQUle<)~FnqlR|Y#j6Bui>?gh%BSm$PXmC^oBw}+#l?^tzvytS*IpvL59ljG< za&@3TN=L$=h{$<-@H=$xK!limIjRg(XEKKG(Z8OFTz4ajk77d)V?(ugGwL_f@}geV zCT5a1j2xWd8YLhyE(8jIthL@yQ&yISUsT%xGsv<6Jj=ucb>=g=v*9hU)H%6{6)b=q zxLAgy8sWjrTNgScNFXZjy9C}T2@u2)!!?G+V-?!(K;nPchluUu(3(F)o^zV8*95rp z?J{7K_lZD64--ifs+bth!iN)u81Gut0?!0!C>mfjBpBosU>O(ON7g&OF((FMcQxgD z6U_Wo5 zQA?0^n~81-zCIY{GKJ>73X0DW>B>SK$b+Mb2?LB*v)(Ysq(l-p1()u~Ah%@#VWdJ(rFR007~|BRg7KR$kDO?>g-{zNgzPJZ~Hh)Qu~JHTUjZaLufiDHE1W z>U?ocPw_xCj9IjD+~Jpx^!VJ;NQcWk%}Mi^qMjW%bae8>38kVDN{@FPcxd;Qe_Qw5 z?`)s8YG&JFB%}jtkF~9sGIm-OHi`Pc3>Y^uV<*g0$Zj; zRwB^|Ecwi)9J9e_5qJ|Q{6Vpi8K6>x16hD0t6LgYZDs8D_@D3t0T2QsUzwJ@Y$82Q4J1%|3tCUy;Zuqr7-r3?1h{@lj(wiqO}?$JL2kwW|vuI1K_rfG#9X9Rd|x zfn4C06Fm6eR$D>|SF2>CQhrSP)b%;dItqbCF!UXWAs|7it z3c&Lqo8c4KBz>`Nn@x0?YbbCLQF!`$$qO22A{dP4qG)5L`rz$GtWk_h`CSGweir6q zdTMQmsYR$;BA3h+rqCg@Rv6~+XgbRA>+i}rh4v6Pv*4^W@LUAOt34U<3id&`zC7?UIo)91|m!24%44N#yY(+10r?SG*UU;l~4 z3nw&;UDWc1zc~9WZi|j|{_@9r7JYKX6)VTK8fco)xav2Toa0cV-trUQ+&baoXWekw z;2hn$>BzLjbDN`fS}$DoD}Oz&X+@(= zfUq=fWveas^c)}n=zeC${`C{i{qy-|NrNqwnio!8`q8O9`n0p8`}l^^>?D;T+z=(*QT@*gUBA762ZLoy{m_6AkGUip4HFqdi z8OC3w;{h?z29P(0#SnAWmCt;WrYa9nx!jk!zteKcWPOq#8!Yy?8w|t6T`P?3Q+SrO z@=l*po2IsGDFp!UT?E!rYAH=^xt#W;X*tM&1SRs73GNdi8V(UM5pb6=xb$;~7=?;_ zmsH9eY20V*v61D?J})LQC1Xm)B*r9Y5_BKX5TTWTMSp`gWeqYC#Y{1F01!h+{1aQY zBv!N^U4>AJe^SPqfKY1Plb|CL@O@t$Pku&|3}#lA(MG3ju{Mp|2S9o4m}0g8<aVW5?W4jz5(#q{0R&t3N?kM@)RM9h?I{^j2Jf4J<;)0>a4 zJ9hUcpL@Pf4ZyLU`#$&b+deqw_ikRC9`4<9=k9NRr>n~;lI>jc^t#tw_PU8*zqg%} zaKrKEw(Xfcd&zIE9y7mz65F};@U#DYb9xXA0GQ)z|NO;;zcF|9r_L|U!0x>r2Oiv! zXs(m)jsLl2)gLW*-8UP1+mF2Tx9iI5icXn~$@U#NbTpkdb>93rxOaX3IIcJbB|zeKjydaMD!9U>0$_8npy zQOr$lT8u4!9dgTY1?8s@J%?&1Q0Y!Fnu5uVY_n>on^0YB@d1btCw88;A5k?&*;m`h zMNqxZmn1}7Hk&g%JRK1DKrKXYcA8)d!dqT)AV`Ul6ptmlbpUeqqJWZ+PoP3%UECRp z>FE27V9?kgR)3ZG;L6B@afm()2g!glGL1n%A~I~ChY|AKAs{)?&Ycm(0Dv;y3B-D# z0982U2p|Cf2q@^xauJ6Nri?9PTIlXUAPX)5u)FTHgb1Ad#+jbnIpG*uC9uc`+=+u1 zd0!7e9Tz1oDcl#wst*L^9~6is&;cQ!3wr}bR{#Vz!1%B;jQ>T2sew#ObX{Wcsv8J0 zp>i4(6KF-O$pD0~5{efM&$ei<$iox7XppC&uU{cT%nlJ2j3cW&OH?}UPh`_ABVb61 zMEkRsDX3Ofu2;z`HNsFhN=Pz6AcIW%Y}0hxdhX%X?P z^$E=o(V?BGwJbCW)icwEL0&hK0r4`%SOMq=&wty0bJzQ}{jiUUf{8`}VS`Q_gHSMl zr#cmxHR>TggtnP}08;6i8NdJTnLoVgxmUyosL@>eoj1bA9=c=apa8FiahLtU@6EmK z3*Xqh*A5xagP@-IAN-T+p8w(hdH&Ut#0DjER=xk`YqtFTzdckg*K~*G^R&_Mf=TU0Y~RDP)V4hliL%c2k!pX<-hvgp|AIZWHk(eJ{A1C>%&SXXNZ!v91QJOqlspQNv>_ ziAz#sje>S1&~~vn1jx;dqJ)ZKqd9LED#P51Cfl^L-&_fmz*g-9+}Qa4OoGN3aJi7g z4Z>xrzmcpe*ip$ErKc+hH^frG})GAYi#%wj9+Gur`8_vB*n9 znc{4ix;VDP`49yb0we(J0KuLdT0;VowQ0m?KLiCj-h0(7Wa&2@ttc#DLo;0OMj! zNk%Qef!skSD@=^xHQk1j_z)1#B#ALd3cg)7D!~KFTC!3Z|(f@S0Cvs*DB0m8}Cz+P6ugJK@ez2!QUaI zn!v09maJGo!Idht4ahu>07v}-X-H_eu%S~IYB_Z|uTz~)adP&Bf(?|F=f39N&=aKq zXpA#e*i7X&$UX%zTcueXKOi;e7ufvcOrtrK-UAdb%GE%kOtI|3E?9#%`;5kYD5@f0 zMy_ga>WclV+9KUBsjlg~L&g1&(jIAXRym46?ZjiPCF{;R!Qi8T2Kl@#0941Zd)!4( z2I+e4?HWZr@t!&kxCl-jZ2kJu=!$uWz!(!TtE^b!K7l0*WRMsD@!*-9Qw9Kt3Hy8y zxYSM%oSXpoEU;MW$ifvbs;s2dkDeR;Pa!W}M+Jk5o$2D4!7ds+0Z1S@k6Q)gOHe5i z)==Dyypu=Hbw!O<7$}C9Tu>gMG(e0`2}pvfCI-`_N^kF5#;EdL)GsbISCYe9{wHyL z(wzF6i2#tI`h6;R68J>m6jr?4G!bVj^kdC9E&qUo!FNV8OxZq#X`reH7k=drb7KfE zWB?~smjHnQTT&Ps4=(zj7|rr-I0~s3)G%5#bf5kDL|%+)6x4`Cixn}V1q9?Wnpp&f zaZ%VHH)oJjs2RkNzu(EiHH{vg1LxIfL+ha`CCgI z#ys&adwVly^PLc(-L>KNuY7-XbN@w$i^jC9e%}YqS^JAGAL@aVc!#h8)qToiy9E;~=$_^edX!zIk970DGe7ZH-9{l5Jv!rOqIN0LM_LCD0)3dcdhGB= zZ;A@e!9WEuDj-7Om=4_0uO++>FXi#rzZgdSk8fi9yz0^kFyd`an9 zsDaR{qI4{L)??`b2VZX(6RkOzIaOR&Knz-G2?S+CKs_ejzE=Q(XbQ-X^YB1c@;O0s z#qP)`y|Lh#k|E)V0WB0@fTu08Z&N%)7)(>(p>!!Oh0%>Mat4Bc1vo~5Z+uQ$^j&RW zJ>NQPs$kwb*eHZdW%#71DEW9X?hTjV8Jb-bRKJ3}5z$qH7A$M5cgo87R)sMjKC?{^ ztMTr5vdTnKZ&K>{ZKU>!HO4qZ0w)TmxTznbD zb9TUlcJHR=;bd*`$SgW%)xq_*{pg`XCoPT=?Y_ZE;Iy$FYoQ_N?8pNvLkJcW&g*^= zjXIqO&3mVJ+MGGV!a2mt^My09~mH1HvIo^u31h)j1Mc;f?$j6rcS z^3YT8)etcN?{_>@#6CC<4MmJyjhYpsjz3>Lob5)oM+F$!{? zp2BysGlw~gy~M&z3Yue}IEdB!7k6?DhR3sjI7 zV^6@2Y#!i1M1#hH6~`nQmE3TJ6~joNoXkJY;^gO{C5YP(>noS>ZJ~GF0YGxt4_Dzd zQvuOjUe+gGO^reVJzQ*176ikR@+_k%l}fFj z>NrsqGPcv2+RoP+JPmB8GibCZ^AttmU2(`uZ;N z#EE?&hxe9Yq2j&iD5XNjqLJs}5qB8LLf90k*!Ah(S`vE9Vt)L@J^T_wyVbNm~lXb2!D z3jr8s&w-Mv^Bb_%I%}FypVN~keErf z9Vs~~zCgx=`yHSiadi>dctI8gk!dVUA#MVmf_HTb@Tc!pfTK#SaOg7YF~ zxro+9*SMdGuB7%q3`-Gfqh%i-6xc2(Owc7aUp0fgg%^K6(HI5nA%K->#iQUMq<{)# zfHUXh20W56s0~0QF~g+V@;S2sT$(cj{zL-FYUE_^6QVgxh&51j+qkr2#t=~*C#p!x z7A<*c%dQivjKEL+z+@MyMr>-Lc%C?x7+Vs^$o~-iqq@L7thj(x>$sPVy6E!^ z`}g*g*^n^g5lm=gH=vloOrz=vB0XcnKPv1i6Zahj8+iAEV1}YGi8jkU*UYrz)hb|% zlqDJi6Fh7{&NyU~k2oz70uY9CxzIS@0ne*3#+%h7fErujcW?mQToMpun{Q3jWQ}8f%{hQ?oH!%Jk&~qm~&^Ei*1yF3k2>9 z_aR2DX+%a95x*Y)9Ss^VNaXX)5Rr2&VfT{&)&yWh;|##aUoi3kA!PY3@F4OPO0UF6 zEBZY^q!FY6GUyJUjN~E=MdQx`c0EVNJeYHk83EFeS2P7f$9R|U#?=!~seoiM4}xtm z_=vJ9WMvYDJmx$UVz4Y=IoYMk^#aiiDl(YMRahHxnTLuZd64KI02-w54agFsO>P{} zfMk{n`d|zKQ8_L9ZcB5BL}U!6{yYP)Y3l1Eu!2N`IFkwN1$CUL8ojbAaJHw;3vrcuYPDL0{_^HxO!^KT;L#Lj-T<9t|TAZ^^HyZJUZg>FsQ%}q5 zbS6>eaexJ%>NHTo{HBnIGDZ%^WRSNx$+BVS3~;h8P65SI@TR6exLIsA3}^_qiw;mg zFk;MWRsx%B?GJRBD%xNK6sGW*h|)a*WjF_aqF|5;z7qZ90iOWqM9NBq8yoiB@c>G= z93+tKgDOGV9TOClGH7__^I{p$Of@zj z-jC$57>$piA4}i1i$Qf!hwgTFg*hWW$V`@c)(R0gkpmwQ9PS7N4m2c}@Cd*dOpGBO zd?ImzV*ZVBXIv7wHHh5(b)2Xo_2*Ai@W8H__*s`<8;hSV`Vr$5x60GE(ob0zO~p&4 zOLeM~rr3G5raLOkkzv-cQ&WYhNL-cCx53q4ygo!P{YI8}_jtNfeSM9olD>^P7-66@ zu#W83X=F)5MZsu-u>S`D0fZPL0Wbgn9NYp9pa7rJ1pv^1Gf~`z(`BGBXc7++@f&<` zCJKQg9(YlPb(SjZQH!UV+N7%c0_qVQTwL;HANs`}B*F0HUAy~>{d0gVCx(o8hr<>= zlIBf20c4D~4978c5sc8No8I8|oCf^EV=I=;*w}0c_M(aF1_ZE*%L0jt;SK;QAx>zS z&1TT%r~q;Ps3zBQ?}&v!1lFN7QaS2lm=rfbSy@4{N)iAv9s_@q-J|3YT)m77;1TRwIBfE3VHj#50mSU?k2*9M>sOG=h6Yz`S~uaud#4 zd#d0>BfPUl0C;8dM!?p7iw&N)iXc(z+_V4g52xIF`xCeQqPHAz^X5Dn*!kfqR0D$RT_ZLqc zf2<&Gxin?U@=weiv%0CbqpM@>&h`Iu|CqF5m8SQi|9$1T-&p&lhYsiEQl}H6+~QX2 zeMJ{>geP@nqqJ_+4GZO7{JQ5)en(xWGm%afC^=fG_IFOFzT7JIpy-F9R3`n@bNZ|> zm3k746AE^dc6*U<1@PfV;l;NgDC`;GjC+Lyc<2Ik`v}gB2t$5lvAmJt65%b_$rbgQ zRL$A0Ws8Qh*OX{-)v5?7jRnXK*V}et7y4@?cAL-A9PMq`G~*UEd)4PG#p2_T5$O|o zL(9pi!k5JgjYu?g}OtZ-r4%QME#Eb_#37o9Mjq3$pyAJ)e`6xSHuWeJ)` zEISZ35Tc0_J~G1RE^DxX$3Yhr{i{S8?TZvae6#!zp^R-%N@+PLDr6gr{E{$c4=C^} zXcZ}diha%myYUI6!#WY+m9n_Sz4MwV3!r$Y$*l4Bu{&30`Nn`)>w8u2 zyr6iV$j_FnP06NdVA{Il(hN8tnD0+y07$eJED?eQNup)kxZ$v%0N6Bh<%O%J99{d+ z3%fnPrLi*?FPlGYLX#e5Lke1&n2fIJ|GRqWc2?Dksv7%t`TpvXxolp*dZuPSn5Ft8Mu0N%1voKZlE z#IkhxMG9VMkosG}O#oqGes(c_-z^{1xH0tA6=YjMF zK7%&kO9yny<09UtBP)6Z-GFQfISR^M(pt@kTL3a55CtR!Hp-{atc(*8s>mTf<9xNw zT|>h=@+Qsq$zf-xz&!xNAe$Z=5r%Kw2jhvGicCWS%WPIyjzxjO?A5SYToggU%Ua}0 z?(tZ}O(2KP+3-VDfnL-iIIDp3_)WDg6Vk|Y+AI&j%KR0-nShC9j0V#1pFlVPW!PRlC4I?o;Za$>?$bguzZS0EfS3YwP4grBZz5|jG;0h{lbL-v^m1rak zgF5ACXrMJ;)kzCIJF_Tf^VO+NrxVqm1w%y2aEbnvzrAg(y-vJA99|LwMfa(<;ouL9 zR|YY1Pz4*{Z18Bnf`7BoOMhqAfL)uA7^*Xdma*DccG}y}MyCHxUJ8iHxQ2@q# zzaqdVwq}EEM(T?*y>xPth!KiJC&FhNQllm$iKCQR7_a$RAr z_}DCB#7}xBn_TBjfb2{J1iHIt*l}JY7#sPRmm_AGCh<8)tVs&s2)Tu z2lYw$QIUA|fJY9)6yu=~7Qh2$s8U&JkWoz&CSnIcpaAF)SgGBK-y@(5_F*UqoO@i9 zgb^DxT#8-M4L-e|dxqR`02docW+Y=~Cg+b^_EeamhJzdN!^*Huv1|ac(zxuLum16jV@?%J-;clezz-ksijlO; z`|MvWo!DX$#G5~P&CLLibbaG<58b;4vOY%uzzWgd_VJJWL)XnWFFAjCOHXI} zPrtS1&Zl}B005wA{PcIfchTwD$(|_SVh!KYOe%Nyol_@yC`oeff`G+TY~vO~<`| z=|^Xp|NA!^kGi-&({ka*K6VWpyZirq;b|8y-Y*NMIaQSaK@DS61H_SC_yIqO9RiK=surLzyS3AOdWr@}W_|)_1l8 zA)sM=gpmmE^Wp3S17L%iGC~1>E)NmKlU4kUxGey(&Mk((A|QYPFvb8M%s!x@%yv_| z2o=4(U|ZKSCtOPZv}r5;BkWb6t+QyZ3aU}ap|qR(jXe4j99&|GupB=sKAekLV9WFW zXYaoQEIW?-P`Ik^Y`_L!k#kxAiwqFVq(BhNL7*s_lxPK#vXv~`PnImp3YPUO)AqA$ z%a;84vz`?!D^gUX0!cHP5d;YkM9w)cfCV;T=YKeGw1Z_ zuCA`G?)r6gH>ZejL|@dVL-w>{R7&;9j+Y8jadZf+EOz3t!eowflxODVlJ9I`!IfN^ z%J7Nuh>cA_#twK%fEqb)W!$l~yCIzgBnr_t5E>>v1@DLu1ILWp2K77BtQm}hkS9qG z=ohh6lPtSxH5xAjl(JgKkDBL=?tKcv;n3qW=8Hud?J`h@0rna%gwUz7;VRZNXbm<& z84}ijL^XLU81r5+`w7Yt!mb?oB(labHEI#wXnCM)3dY7)<{Jb(*IH;_2yM-w<93aS zpYAOo$PCg-wk1pyL>Z)k+Tf~+jWxmVCQn!=?wf@hSY*NtTGPXEiOEVSX`3OGDU*;C zs6_yCCf$&zpm0VUTg^r2tfIFZ5HoX1w9xmR@v4(9y5N{Cci!;SzSGaFc*w&_y=8hh zZ0b(0e8tP+uiv=-n+wX@tVn2%_npm$_T6*K_x{K&L`3_J{mEauEWR4#n_5m`F0Es^2s{mV_v6IQ3_KV&@k>dD~z95x@NHmwoTwJNx>Z@7lVb z((03c<`*yAar>RW{I8#*RmZ;X2QK}^pSa`a{?n6^^OyhXOV|D-zw$d@_x$A9yN9dieopPdDQA1$DVc6;G0`>-Te)lhUj_(!<4l4Kwe9&B!t>(=xp{X&EJ3VA5%QGfEYQYY2=dIK}0hQwySCbFoA` ztwS);zbWhWwsf!0^zZ1X2>~P$$wZ0SC!#z$JbZ>q`Y)4Z5Zv4NmH565t9g#0L-4Jd zVr+j?%TKplFB$M#Hg@3fg;Ca{nE;45u2MUM(T8J0y*w)ik&;b8yU&@)o7Fjo|KP;DTSRZF{@}Zs>Y=V+2~uv z_`85W1ysq^Wh`*ny)89})YHtah$=P(v0L$tjcK!G2a06X_*& z-ir$t218p6%` zN-2TW-e{CLQd)cFMdz%1;*6jJq-?-(A-`KWg%hu2S_2b)*IP$FHn20aB zYU5e*@PGT=C!g7}_n9Z2_|0E`c>M(%UwaM<5oH+`4ssp}4TXlehu4O9<2k={Q`<$Ty8=nlP+rD8MpWv|dd-h|&RAD3tw8YmOR~g?^(yJc`EI5!5)`w+hDNDu zI0naDJf!4+K(wEuD8`jfmI)P>HTXb5A9JWvN`t|mh^HLUB$*11goq=Cd#Qhl3K`af zVwJsATA{*yB#THM<{S>rj&-(KAey0Va7S2F9&ua=sSPA5I_V|FA4^IXNAR6%XbPT6 zd0ZN>=mcVuG*TmrNQNR3kttE#v}_HiCDnL=XX$O{4;(h~>Yzsx`fqvIz*f@LIYmM` z+A6?5gX|Jh(w0%CrUxUH8mp!%&85W5ex*q%Rz4n z(i)AGM%x9=C!&zQ7cQP?>gbJ^oVM@&8y?v?ZZ}z4 zd&Wf@S8u-U*6n?%zH$9GU-^ocEd`K>7CD{>U87c)9@jX+%;VCHDrdOonP)W=DDT|+ z!f?gfbtJMa_{NCrc3~3z^5lwG?{{AgzpL5ROi}y~?O(o=oXYT&>4Hx|5m+knj z?OSi$y6qcVw%@!b36b!IvyRw*{JJYYdb(NNv?{GwKgg695~g(Gb@bYQbNQ7U24DN) zmfce*bK{z0Wq8$Zzw~v+#?)Z&`JF2=4b#d8KK{`3KR)B^k8Hko_4HA1IOW98Kl^93 z*q^`Ux-Swf#(7?cCP^ov%0}fGX|lMaWl~ypu$O6>mgz93t{EJ;NY>{#9)c9z-VzBy zWUJHcZckai&f$1!jWf_AtKozp#0DRh-+D%u#%D9%&@xirCkonpr0%qKp{X~3s9zaM zOpWfs%OwCIfB{03G$a6V49)HpiU1InZ_N+3Bq2H}A{iDNAe!Zfc~58V6v9bJaHmrE z*3OV--99KpdWAL~0}D|hrIa)ViAf{_?s2c!JX68BR;~u6o~cK|#r^e~E0$97()~QZ zq)K{Q;jW})zXjMLLU_>+Vk#%L2$7yYQ@C$6xid$VPM)pONI9;?TB7=1l^cKI-uHm~ zQFS{bmsap|-GMz+42d^XWW!2VL?Gt~VIV@qdUWicgfn<*pwP}{7HO;A#iPm(%;+5j z3`!ifc51UyY`q|z+CIk~+QmpT4vI}}DOw!v^eg|g{#P~8l17LmG*XCiDveUAt9oUf z(HcsG?9?9rwi8Ze-2jLqt3Cj$ia|Wk8%J#s;#TQF#zFFlSx6EmvIex~=F(P7Tx@`t zriscx5-J8cQ(`^C$c&91g6*K6T6tQ)eP=6A+<4l$Blx1%op6y!?b55>aMpv@U-!^X zG|%djF1YM0dFY$>KfixeK1%~6Vj|kKaS_iave>rK<+w|H~9{IJe@1D79bg_~NNje7R(4w&@Pq9!l2axJ8JvM82;1Q`=2}PLnQIcBgtc_IFz`O$G#J<+Qh876X;CUG z(8ksR%Al8e^jU;fTo#Z2qAdK@jX<@JZRB&!tcyXDGIMVwPRKqv6w5Y@h5PZLkjq`zu^<#v4>nVfCZutqC`W67GdBB2H!+jfyiQ0V91)?q&te}bV1ANnVv7Yi8TPF5l7 zC*Z7D6*o#HpebjIv2vge+Mx!VD^pe@XoLW$oHLb}OrpVp;Y9l$|K=AS_g~kX{pwe& zfA}l6JZZO>^ARUs_>xVlpSt;$N5@7SEg9~C}7XR!bNhjw4{ z#-le3p5H$tA{rdO;hf`l{mBEXH@PZ@K>N?bWAg z-%VTo_`g2!)DgokU-@msf_|{X_ z{>d}vAM?VuZrv;8a3TyIM_>A?OQyEpa>HHQ7CxkCws_N`A}kYf(woc}n=^v8Ob38^ zS6>fPXKa}knU?ixndU=>ul__ph=?S|AOd(!92{5ss`7*l1VUI!^t$v75{CdCE!aX+ zEb5_nGR9fLHmnpfUG%ZP2~}vG#OGi~eaB327R@;X^dS`7zvx4eXlMnSzeU94*bU*- z6_3Oa1MxyL5<6f~HCQN1_ogH}XPQJZuC3RLt28kq%)xM-vH_0Bf`c62$|15sEC5C0 z4lH5<@Rve0N#n7IsKhl`Bm=60{diH)yh0TcVlAQ3Bf-sfoQ|!r1SkIH`s`&@cOhrS zwbA4qZ(i?HOLuH4?9&Tk91T-1>7(y7@SyW-Eknqby+sIuDj_sXLMfsy3JFRM%ngT* zQZU74)l$W~XY9iP#!|?l(JU?o6~3hqRZ4iPRJ8yWQ(nFWpl zwWM0;v6B>Zi&*-64Bzg@X7P&XToVIISHrhJjspxSu?4latDZALBMp!gqLeh0 zL_`*6<4=bM>rTJ)rJGhhano&&?4YTssi~={L0=T(Qld>~_nuF*Xk7PaJZ_RS_bHUz z`o)JHUvbty`o0s7-Y|9a2`ByiA3bZ&y$^ilUbpp+KDc#o=4tP|Y!#(+3v+?*%KX$_2 zc-vXp`@+3br@ryn>Ge}<&RaK_Y_s30)8F)gYu<9rhu(Djiu%RW^VdGTd5UO1fBjc( zd*OrUz2VfAOeEWOef6)O+W1o!z47ApYX`LY4jMu0{m;SXXqjGYw5(T$63yQ3w-#iw z3}#i#eDy~b=g)y6xVh5r`=CtfZ}Qc&H$`XVi3xKJSp*Dz=D|Zh@7~_Bt}^q5o2b;4JN9@LWZe%xRAHG!-qbZXyrVaKo$m06Fe4j?U=#);Lp6wP{i5HK5JVm&&#sEdX7K}8frbiuJz+CgeF z-~fLM`{nF00E4V}6QQi(a5x-F&L!i7jcO&Y19IL9A9ePn7aX^m<(yYt3G797-2aVl z-2cLXD1MIAi6=4&IOjsq?1$I+O`-Dc$Nt?fO~3zp&iRFZeQDbJ!tLL>?f?Gsr^EUP z?Y#Hi|MBM+|D6wA_5O8v>vP*b{}B`0LGo?`O`x@5gVwFRgg$x9|G>=g++Q zN6-GTlh#aa+xPf&TfdUot=g6y-@0x1{`Z`A`_F!D&!Em}|8tK#w*CCP( z8A%;U~x@k#bL%-5Jj!(bcnZImD^3hXbgin5-viU_>I$Hu1Eq3_nR0 zMG)Oeudd)KC~QG0j&jZ#A|w<9icKjZxmxFA=CG59gC3OJh{$%I0dx>+foj-ue;fM5 z#6nz-*9BB$5^fv6ZZXf)Dp2v=CeZ%k(l?~XLV{W)2K(ZQN5NQHGwS8z;X{io3pbHz zbQ%|dl1r%cBit01HTX?W1TQ=I6t<{&bdcEFP=62u_=-@(AfnLOBLVONS|_SM2;?C$ zZZ#+h(KH4X1-6RGh=E98y#jf>bZ?jVt9B*l+BHb3{|I4|ZrG~K_0Br3z&vtG2-#Uh zqg3=K7984dS@j@D5@gi`PIctXRz)gsZ9#0=jezO4u;_tTtTret5`dQo6_H?Szo{Ej< z#7$=>nY0F9f3)|#DJ}5`$;?>W7^JyWJHz2e^_rzo&kEh)(r|}C6&sqHtG|S>3ZgH3 z>Z4b`?fnOvivvk|+UaCL!&4w9xEsD+Qt1AzkoZ?8BBI77qMu1jK~#@zPG zvvG0UbPiJNM;rxjikJw3Y30fnBKzdjyOjL`=k4hIK%Y;Y32# zrGXMmO$}DAT$yv8o}Ombd&C9jy9hKZ@+)?54}}^!Qk8%&S$#7$Hc6E}v|yO=6$vJd zaj0-K$dQnD&bhhF3u+J;4FAUz_7CtO{8+@GI$#1OLk{3=3xtajt7$6YgVgu-{ez}4 zCbeXkpevLrT!{h0!hPS>Z$&F&J5^{&OlI0r3Db~^D(A|lWW$dguV4or2+#uoq-^qm zXf+!bUp?dF@R$AEG=JdSaH5Ew;IXzy*ZT;CQ!!r1P<001h;{oYEfQB?B2vsbGFex^ zdxHN>3Mi-2z1dGDCt{|8v}O(O$-oiC03!x8q);LUO|#l^0e}RNK{$GxBU@DNYQ+7O zt$I*waw6j8`=L6T8`&|Qv3;k$^rXF?eCnYY zJ4Mw#vs#7iUmRRop3x`|f6}kWpla&C@f?b zr$QrTM3;JX(*lVel_Bty9QWuhUH6qk7VsN!CEyp1J;BFtU&|eAARPx}-Z#FCT6qm@ zD2{9ht5R1pqGTdM*>2FPC^~&5V|*a`LvZpf!UFJA@c-e|1&~PD5z92dCn0zwBUDEU zGLv`!Oo2owi^m`s)@IaetI)}yc!^pLrL%jD<|y9Rru@wF}M zF~{>AL`1mwt%@4~O^fqGwoU-QJ*Y%{R2m#@?b5dPsM^w-(|ju=VGay}mC}6i@ST8K zc!N3^VO1#oCucqUB@F=M7$QgILibEU1%m5k9O#8TEKS#Q_HVti3uUg8P=k1XS+hYDh*db(~YHv&F*Fv_jsaL!tFhZ=`ds{v^eSqx-P_zhu=ner@xCLTLa0uTbki-bKG$~{`3KtWz`v=xj?lyI4pa;cac=8zuGW2i?Kb?k+N z!-2kirLjO*aZ0#SOMD@<*Hx3(vacSI}>LfG#;;yICP)F_a*6|D$G$m76+sQ;Cl4&S0HjtP&AqK5z2m#1J=PCAqp%p-dS{d0c z)xa;t4Q4Z6QjW>yL@Dvq(siy5Hr?~UeUv6UQh8yicb-s)$0S>(Ig+HykNUx1Jb(2) zyTA1>Z~gkN$u8rY^^|bz45~l3r52XuqfQuBmKu{wi$)1&K|G3OTBc=Mre#_RaSCl!o{>^?rM;}{!?jmuvA%ssDhKHRfkZVN zW`)O7m;e)nmj>J*ydehsz_;US6PbtRl;f&{>>^fyFd8C}OxgFdq157I3L{*J+-I&G zHu7c#gSiA`q?D3|5G4|vETS(B#L`2fEuN`ULKKRA2oSAgRAC>?jYf0xuSh0N$*~8; z6quPPvtBXBOo__5NYs+KtT_vjAHu|1e{*7iDPR`r0E%6@B?e}SR;cFR5D%5EWs$?I zU&wUFu!{0KdqfzzMXPYyde(j{6|NCI_u`5R35(DmB}yVP%vn*G#3>#~WD$g@MHjP; zU9pSuo3TL!1GagF@5#DkXcZx$oTV^{D4~>a zxOL7hkXT1Wk+f4lBPluTX`oSMkZsE_YZP8CRy?Xo&~qa30M+t5=e&#)EiCnz{z)k1 z7c#G{v~EoHb17k&MiS>6pa1XQc^!V6Lyzc&-t?j;W5Zr_1gY)d5`q)@YP5vdJM`#q z6y9N1;bmH;LyjitrL*nHv!7*FljK={y+mlPMm{Xq6A>o%A~<%m_{n;t1>#LOevBV0 zW(rVYksrDYt$v(=C&7y&-;yA3rC9kPMU_}|Z%TzhEE?Ga&Fa?dT0tsKsfY&mbDLnq z$#4VRVq<^nkL13iqXO=#1zB0ZbqVs)lZKdxs*PL)I;mW_@RK)%{-x|O4lXL1fV;^E zr)~q2B0-aBIDoNeu@pg2@$VqqASU}NBq~`z<}8#Yr_8y0%+MfGZ=Zz91|_yj!o>=S zvt9S!QF`DZoDLm>ESRGFV$FmA&ADz@B-*Pa{LUWqltfZotvlhrCIS+?*ndl=N+KAkU6%@CK zghlf7kSL3qJ8g2DRo>C)oP}AK)AGKvk+f;!-1eQ(1ha#-Jvw{bmchIE(o&6cnUSq9 z9_X(Jca}VUzCIuJ7O;huXk*Vn2fb|ZPMnV+4rI007+Z_ZcJ_Av0r`4qo`*&)`mx$aUW57b0B`HjF zP^?be{4#dj@xTxO8bo?#JDclg`!32Sici3+wEx_diy}tL34%=+nd6WiA=3C7E?#>T zY@(Qw``hIJ8}-YHDT@%UC$c~rYJ)7y=@WhDE+gv+&^g2&IC$XlEBFN>EbM)!6g`op z#77j2sFEF7jE08;0k|QJ_%H!?+RDEpYqb{VQh!%6@DQ#$kncIG#2nxP_NV%L=m0hP z0nzH`j2JPn>Z}7GAltW9ezqu~oF(U>dFEMi+26-RoCeHc_ZC#r;5&!%P@))8CfIIDPh{7uvYTS)~vQ90cTVS&YX9ukW(Q8d8P)1En zcEt=ixCN~!hsrY(u;i)-Xs63mE)~bMnZk)f?@-9F)N&ao8cFlpcQ$5b(=(LKx~yeK z;1Hm>G*WGRdh_AFhX;lhpwQ7Xxfh*IzvwEoOv|)PFE;9n zE_R&NTTlWS7~}2ep0p6@c97!I2av##pi-gY84?#)wA`(v2>_%J0yc zBecYyb7;#^M>r{_1^}eAScEC-nK?%l6(Z)u16*%Ul!=pG#V3+Q7+1*a@i7v!=76PC z@g@;GA_7d-3Du#p0T7T<15Q%F@m=wuR)n}YgAQUf#k8Y!TfnpbPM%9-4xK#!a^6*H z*t~~;nzy*QW<1K_KyP;o*}$zG3&n&`Jt48{_E7WKKz0^91V?PjAS6tQIHi=cWSSNs zssaq7osayAF&RxDYqS&P>^GM&cBti{K9q6{R^mY#7?7MZA%u=NC5=w?lkatm7!G9_ zCmKofh$k|dbe^;jWi2X=fxQ-&<~WHx_%!z^@=UQ9OKtK!8u*#vNT!K0IW(x-KMwH< zEz{vcOHEbdeDPrN;WUPgr6#;N(C8|}H|EI37ts+4AVTFxPcnvcFrl@ZSaZ{?k@WrA zWYt@ibLZYw#quIiaE85}5qzn!Ax~v*%|)@hwBhzi>uLnQ$6Tr6r~~yVcOnyEU7Lgq z;t9UCyCo&DF-BD4i3|>53h@>8Bsk8oo^7uRcnuNm9j89^={#xl4f&0jV^|zR@z3lC z5{*saP96%12%?GHMFheSyla${DRb7SA;j~HzWAx+B-Z2>+aOr)ZxAT#%_&D)4+t?M zF?xuJIO&CGVwi-$xvhlh0VgHi!@Dkg-v|Ykm)?dE%LzCFhfRE;X*}{pi(ry$eZc{e z;B+%v=Rh3+Faf7x=7>z00RS%L4|=pht5R#FbrkSrxm%VYv4}*)1fo>kAEymL8d_#e zY#=}iz@9gYCjn|xm8(B6kSmYXDL4-^WdY_ZB$UbVOKoOVG0!_orqF6;IzkhdFG@e) z3i{EKo!#pAqt;%rM=80YnAMZ`YxtLi#J8k{_t6g40bzB04Cf4WDeA`-?^KO|{(%8? z4AWtz9qkj)ej*|b?-G@N2_FMS-lnh$f&JKk(>t?Cp9MzZGT)sJfLRsVKplG#EX z>>ZIvjz^_XZ*ARggEOKnBa}%`xu`-DRPF*NmCa8jU_h;tT{b?16``2KL59ghEU2Dm z!krtk$IlMMx#pOdRga73SMHRGVKtqMEI##f_Ta%L2S`GJg>0 zMy!pXOe%*+X}Mk^8bw`oO*5F9DmBg|MCGg#2Otz3LQ9p0TsFRV$pWDnDg(Sh^~?fo zjAL}TYNqV6F(#NbLIxmP1>Z5SqLdIYA#prZg`)qd%_0R_9DHO;MU@0pZUFYQ$6I>=7*(TW+MsB);;^1J=HwDH za~7d<#avw1Fm7oFOl0E~yH03)BHGIJ)N?EB_&`{|x(Y5A8BR}Ymo0+ja-tcu8l94u z20XAU8WAmpiv&3it|9aaT5JHI^+!jv!Q=x$-SnUv{!x zFwU!vIsN=AUiO-+Uw`%0uYJW!&N*S-q7=NKv}xnH_OmS^9DuS80CB$k+F$#Z|LT`M z{BwWw#0x~Tng@4C`u>bby!463{@O#sqpy0;_itKr!}a$8B$Blkzxh{Q{ZHPzZ$N_$ z-~HAf|CQrke#A5pQQC0sPrmt|{fjkcOu+%%NL=V6v%&bj<8IhRYBvJ6Frl82&~ zcn|fl{%XHu3wS8cOV)^Uz~5z--ME{R*Mu-~#Lp|&zy2A%-h$|ruepnQ68a~u|1%9z z8cYoagOmp9I0%)Ki-#r|t44Wg8e$$=RYxX63bF;3K;l+^_^Nt#4&25NhC+rPAl#^I zUCTMROl4<~of}>JVX>_|Lgi0*ws z>DIh*w^&vQ){UxRAnKo608L6fP>4iK)E+6MEd;NR5kLbO3EmPm3^H?yEel1?XnMU! z-SWs8JO`EqaSF!1xtUP_q{Ssw2~TYpfi-UZ5tBtW7)YeqgOL&xM0)LdVoD*Q*1T>; z69pLz;+olXO=mB*y@=FpTsNX>PCNJS2C~F5D=vdLY};Cpt)BQ)39aBA4hg9>9G3rv zSq*8eDWx9$jv}=S7GoO6yL) z_}tZdcZWjL+7nMZYPk9STkhDom)0DA-bEL`B<;KQ-mObI{-GP=Qv>0PTh^kHE4>Ki zaH-zdug27tyWcjmlwJlx;(3X3QSm!aPaVU{6ED8z>Ww%4+y8dACz3oI66awik~~c! zS+Wf@dG|3FeA^XYdi45rhptaETM}7y#G2^?QP42EAU{u_fPt#KYq;} z_kHBCEiW4B&$;g|(=xq?=uifUmKsHuk)mT-{;wP)Uq)j>OiK8avLg}UU#@*~o6y&T zEfZFJH332{*p_O8h3g%tYtIRFz+_y+YGY1FXU5Enpju)}&7_61Ekf)2nhN3&0(XeO z7<`ff(RAiSJ};5*n-{G=!T~St1cFFHQ*yl5-LlLgEL5*_)f!SV4{mEnWuX>fA{gKV z(rO!`5ts0(RF_;8P%{oyF4v=53_yhnHC*XYMyg`Ln?+W|&v&ki^IPD&jP_6*jhV|C zwPg4dg>#*mtNXTG>y)2xUs=#g^$7({l0{g`Vaa$;dgmHMjB0R7j=!kT3ro1>oX!3B z02g!So0+nbp-Sec$F}zpVkr`Ta!{k{GS)wPSX61mND#HvTzX4DL98uYxr>Dj zSq01l7xR@kD_2x+dfl^GT_{GR&ExtKU{^d~&&f;+U{h^c?bOaR8q|4_xb+OY+V_f# zq!hqh+pil1ZDrse))StQR?UfMbQ+i^nA_6hN>>f`&1=tyS))qY#cE>kVH*Up9>*oZ ziZ9k}D<(B`+^XADIu$y+iVMMvW&x2Ph%&aHEd2RID~>+*veWk7cgK#?FF(p2=ADn+ zavOfx{?ud7o^|5dBL=ioaiY>Fn>L<%=YxxMW>DMJH*Gxku7@69e3!0cRl~YOpjB%x zc*i?lf6lqb(*9@fzw3*i`1IZT_A75k9Ci6M-~PHYPFuhFh*fF8Of>!cr#}3v*CwGO zj=Jn!-+ookt1N?6XI=f~H(YYTDeKnl+x*zApZVnHA9!;AfQW?8yyA!c&Uv5ye?B&N z_uJoi=|v}Te*BYv{=aU!e})TErsRzGo__V~k30F;Rr?>=ee3T(_=Rt6-!~v4O6MK* z_y5@$pZU_K*pM5r`aj$4KU+@DPU-$B3j!m-V=Ivkl?fdWE zsgc?K)eoQfhO5I@%Hi}GZ+_dcpZe6F?AuQR6DsfD^TMvQd;7GI?B2egU)Z~2XcMX7 zlQ-=-;myaN_N`ryPB+z@T7B91SHErTStktlZ{G62r|$pCt%Lm&wykn|Jk^Hu4A=$lcKfkbdM~+k2 zeOtf!scZl7HE%fWKmXaI2X3e5NLq03W0?**9ppBZk-xln>2N@Z8fRbu^X=pcoC3c_ zcpzfn~y>o#u>HIV?P7;n8ZT(KjLl?~A&PjEgq#(BYu>TC0%6_6<FC;nry*$szd?TQ72UqpQM1Rl!I?OXav|xR>z19gdDX#3~Y&59qi)% zs@Ln{Eqz`9l7+WjMYFkGALtq5`+|Z+gMwJK8r&#~5Tb@!ZK6(Q;Tb-yx{w3`MtwpT zLJpoNi8S@M;y61s=4@f)_H?`cK_f0)~`R9R-XH|cfa??KJ>T$<+pE1 zLNtB$`#$vc9e4fSfBeW(Yu3H;2mj$KuKkPO_~w24%d7AD&^z?i+E@JGKYFFT;2a9 zu{o#Jd-q{~<%m~lc=^A1<=bA^^@(4&<)JL+eDIw2{K`u{{$n@Zst4QnS6}$>9Z%=9 zde1&@{izc#*|heKKfP=3Aac$5g&jMlUf4RFNp?NIpSSJXZt+B%R^NC3*G_-wl`r|s zAK$P()@$mOulm4yH$VC(cmCnMt5#gF>CGQ}*?T|wwU6F##H2n@T6_HauK3PlZ}{8) zzURq(10s@(U-3O3d~VC1e)CUn&AZl}bn*AS>bu_k`QQ2z+OzG!Z{2z2dtZL*7yh~& zRKSBvj@$Ie9lx_}97se&^75Cw_qF%k@c)1O&o-}GdBQPgzh=WRE1!Lcrbd@F*fag$ zH~!T_-3e|F0TDz+)lug{DimHf8pOtNe1e%`ikdyPi%{#(Cw=XdTOAv1Fwp^_@-vIy~PS5+%uN2T}nF(#Hn#c#F>bNnS{OVN@2R!szl#pFy>M+ftNFD znG;D#N!XqPEyCucA{s?AB%A*mWXJ61Pr1TaBNq+;`Y;i5N|Fr?h-qEUMR=)lR}me7 zQY^43fJ6;6qK>!Xo9@k`&8@#UcpCX=?zZZ|dpI60Q!$Sxj`?_p@XvuA0;=UW{KU$H zWUipmzV=XfE%pQw6^}|WC8@qH(oDYV5cVZ>bL&-VDHT6u&jXKZ5w=ZVV>!m11&P)3 zZLNk%9&OJ=bB(#V`r09%!dRS`W%oGoOmL|P`KuCE`Xa%41_VGH1UR48RMHHSZ;Lx!QuK^s%+20@KI(NZdOuKh_2 z?@J7ixD0vh*igvSb6Ut_QPSEoFFI%C6Sv*_{B&PeNXK1p<(prB)oU&~e)s)1-}US~ zP6(MliPR>g?_oGID2^)&%tQIJY2$fN=|w3k&t_eYyy=9~roz*7;ze&+ zG59~XeEOSt$M)UNedE@@`NFZMy!DvV(uDf3>Zo_V?7Pms`7^(<_2E4wwCb4i-?sLM z&)@XP8}g35G~Dvk4IkUJ^@`)qo601+AG>bHo|m4mu`rOyfvTq?@7(d+{+(MB5#_D> z_H5g`O-E__GyT+K&#XMyKF%Y z>KnUL4Nst@?n5R4KIiz(+H<#OvY9{V9aK0zj+ zUN+Hk2h*Jj_prhQEjD1Ib(1M!NT866Eoz%zM>y0;m?)(*7)(t~m1Bw!r{f|mEFqM| z+&RcIB~I};l7!2)qeIe?fdgEeJ8LQUDUOq<>r%ORWl+y(oUD8T{tBXqKZg=3Q7gp6 ze*B5zPkvqtS(Dn|mcIzuK}>o`RxSr)InxsL0!~_N8*t9xt(|I=yQEVPC^siC7l}h$ zR$g5TGLv95umlka>T(!mQV37hu1-au%teM4sX@)@^{bN&h^Xj9* z8c2kKRGl=5!C_GiD716TE_4tuWERU6#;uojstUHc+b*+7_5eF-olF$ZBaNn$WDRof!ZdX2!g6Lz~4P#h692K=#sY z26n}>z9MSRVxQ0q1pjI}imk!u2NEBJ#^-W~8Bl*0xMM^)=R6#i6W?He!KHr1VnsJH zh@He5sk5$R%}rrw4IM(0*oVvu7*8~H^u|k0+jsvBkL(=b0_JD${^}PVIAYy~6V5v4 zWml}c`KHH4rCdzv!b77T-u=M6bv)6`*-p69*Ddaz*_1VJ;$SUWj`NzcPCMqwM;_ib zq;*6@G`;1a$DaGPGfrQ9^FzCM=VOm;e)%PrZFuOb&#zjw>HKqd-}V{3zAEp0{ISii z&{r!rZ8~@N?Vs7Uf`}xYdg8Hp?dyN$XRk7gI#`jOKVoV~dg}9V%hx`0{fbGC^I?HfsF!=n=6_(-j@aw<#*!EuC?s+x6=E5V7essqp&tzIlL`3`dK799% z*Peg$s{j4m?wH}An;r2{>yOyFb5{p%mEDj1##bMuBZ+9`-CzIpyQ`OJAo=U}ef7GPW( z-nj~bI{LU1_OCka>VNQ7Yvr^etysMx({vi#`^Y!4anfoW0MRSF%X^N5)fR?SL14SkRII1C|UU%XBDEvo;;3 z*C7H&UkJ{}iId3SNl5TgsAyuGr*gF|V3ZlEY^EX?3|F1q+*hj&%=(f|s|d&-Jam5}TJOm$Ia>~3U*fv}a)_?>DtDYnghld@;J$z@hP$DwqG9)Ax+jSPO1q7a;LBk?=B`Ph#mfEe2s)LoIOxy|T*sI!eXQHxQ$Ym#z zGyGYVCKxrJxYU~U<~Vbj3~}(p!SS@pFk=@UsScJx*hFgnYZA%iIas}f5D|ea%cpEz zNslx#e4+`6QNJ=#QZ5SkIVeYFi;xAMnZwT(7@!~kDrmbtRSt+FAQH+V$^CA0I5@EI zSh?ZM{|%R_GdGP1a5i|#!8O*F13=Pr!`L}HU{}R3p5|I}(4Hoo$TpQQ?=(% zAxgqurtMIcU?GDRMUhEJK_0Tm)z?-ZAq4QC#Ax(F#VViPv9_|+mn~KZ@P%3A$c^Ud zqQMt#0*p7?%g2nP$CCjLP#hA9JM6-pT-sFH>mrT@Yb)Xx&oLMh>uy9AOJv>K-mr_z zt&bk+7UgU8bNS*6^lnX84OOXWr-*CW2+Hx;C-#&WaajAAUhNmGY=Vs~(&2KWfGh_Rz89p1>tr^V>ndHh3Hi%n(Q*Hm7E3G_n<7w-T;EP^&!bRYeF1_jv zXFYiRbr0>dR-4|pYwObw-8x)-<;7Jm}eDLuxnbp6# zhRw)D_tB=dtd3n?V5%~&WWt2YFpU=x(o+ig;jdo1^L^j;-Dh0ND_8Ej=lVbS%B}kp zJ*i&pz5Du);#J-Kdu1BQLb{(bw1j+m79yfg3Hwg2Pa`OVwc)-OE6 zymz-yFSgSAika$L>!ms)0blh4Pg$l0$xYXU#M4jR^tp4t?JdWh@TFlG-0C=+p7FV# zrcb{3+t)w%rQck0=J&tkO}E|niTjTrB9eXk_Dw(i$DjG*n>N(Rr-+EBpS=D0^I!kU zwQKI+-IpDA&V9Fieg-s(M2L57zWvvqx%Z@F&%Ef!(=WX6?eE&P{ZGI7C)ci=9#>Yh zUo+Qbj2IWlR#6@drt1wl*w|9Q*d_|$Id+K88H!zEARr%#h@hfHUvI; z@R!vi%$kq;3QUMwaE~n-Mt~=?kfD88)u#7Hf*-0!I8`V{j2v*JNBt>zWmqXL>FU@;vm0E^x5Lw$P(f-6W! zuUAv9a0OBZJiu|`9WrM&ZdJ4t*6YbMDj!N zHWijgka9D2K<*HlL6(y+Vyxn|cWjriN%FY|BcGCC;=y1*L^%&jI1}R*Ze))b2V%Vx z+#{&i^9$ZJ0G|LWh#duv?jzn80S-~@)JV#3&%MnFAYP*xt}-YR?yx~M)x_CW=76V> zbqlp_ZWpj0i$kfsrb^I|HOv(M5uy(C*SKDFmLYAap)mmH3blyHKvgp`h@*zEVQQ#U znDHcvFhF9kI7F?ui-|zPm)I7A{bDiNHv;~EE+?6Z#p>YJ*SlLioFf1 z0f=$XQ;{-L-KbVeRqB9s)~XetA*sMdd=IrYQ!i8V-2npH_xLxz5P*&~XTSOt>mUBg zEl(CCXfQQ3oVMGJWO|s>>Omqpz&O#YM*LaD6NPq~xr{Cw_dIYfr!@h;j2ZT1Fey`` z=POFn)6;2cDkL53dgSq~SHAYlwS$LwNJKO^`pnageg39L_aq|bOWygmXMgiQ{rQ&N zZ2==+C3@hYN7udal5>x~JYq{*NBrGeIDXJiBH4F)!ON;Er@>WKC|k z|JpZQ`tpr>ocrK~=bn20{8w%qr2ER0HXV7+`VCvQKe@Xvj;SWzxA~_3_x_t6UvtN& zulnJ?d(yeTvgN)#Q=Ff9{J{&aeEEi>Zl-O01KsZHH{bXA(=J-KWy_`V2u+IPJEA78cp#INmnVurGa^PWAsSFK*#W2uQqjyd`Am+pVz zh9~ady0ST1P>wxCUp?Q#SR-D|s8_sd!;$N@J-0>Xxa+pFq&n*aAuM(FPROjOkCW~+ zf0^b?%do~W9kLWaZL-rEeBSKSf1-}raA1Rom~`)#Nc9cHPkid><@@*cBp?YoV%XeB zaUh^N#nMK5EAcNbF&kuad0k*Go|kRbv6*-*y0hLsv9XTxoB%c$M&LfK`E2Z8ik)HY z2h|j*iiLUvp8}CCkwL6B8^!8GP>o2q9FZdiK$u(a)on(!&JeCFy4(#I2okZzuW_4j zYD+VVQWqw&%}m58WyLT=q#Rjop&@o+GzHMj83;bMI3HY62gI>*4Fy`KXhUKmO1Pyy zVxOw624J}Y1sRG+0s2hTBAGcQPVPrC5hallGDIO+xweVyc5G$0IGvoG`>@EEQW{JR zQW}WloQI-lAHYcCklC(<1K&`*(0-7lkb@3T)?D_cL8^u*o|ADC7Bt>%+ z%xvxU2eV41?Ct!s{Y~PJg20?8JaN#y$RkA3?p3MYWf$|^<Dec&Uo|zDT7Be6=WjY?@Z9Dt2jZ6O2?*1j_VM`}&zl7zL!_h4 zoM_X=^CCZsMcnc@cy9Bft1i3z!d0t}IQEp2*R5ire9!e?eKx)Jd){@?y7g<0Jm%u} zy#Lj^9{I{m59UO~X)u+JJNt|y(^S1@o`}k;(~sl<*RN#fgJ1dDgXetD_r2+~Q`d1? zee4OBU31OlD<;#tRj0q{1J}Ienh(9{_$eE3WZSN<{`FHEf9j$)UA%r>;v-I4b?FbC zclp}6i!I;u%(V~hd-cz3y6Cu7M;tSC@jtro)%*8;^|Q}~d$LA)g0lUQ2ezGX&gm0J zLpkyAsc(I5<;hp9Q5-05zU{L^dgEnpzMR&sU3KIY7k~R3p5OeLXCKWoi)!%f6Zbr^ zie$L=3pame=M`_gM%Iu}-u>ujo_P5DE575J6(_FG>4-JQzWn?*y>ef|BG1(G58U*? z`I}yM{DmjpdFLH#fK`w7dU@@sA9%(4-nHh`qa_i^+M`Z8Rpi;dJA_E~gtBCC#F}GY ze!-hwwa;14+n#!K)p4&qT$ zS;&3e*&C04_MyjLn1_3Be2hsjNj{LcFB8m-Wb~g2J|5fXmSB=U%FAIxlZtqmmT3k$ zAdqp#f6%95u?afW?ct^SAvd0V6(`aZ&;S6{j4PrHV$Q3(WnE(GF~687S6fjObrN5^ zg=eUw=fp%O5ao}Y(9OoaHXdE&8sQLRCc&9C!{Kn4hdJjgLucC=x7{V|hbZfz7l|n` zCVA>u*^?m620DU+YK!3R+;p5#Tfx+5ips4jpoTAbd;GvidDw^19d5*4;R6bjCANcm zsI=iQ4|5)t!>USMQVG2=r`GCLj;}&?IJ*gu2UEFxNkygd7yP4~=#fDXwMxFiCu%JQ zsA9Y*-bW-t=RBOA9uBh$ zwbWT*1sH+Qf{y)lolZlFRD=T!_lQyu^mP}mSsB+vyHCnnKyP#NL$;z4G@ywi2c}RC zk4C{rR3}v?KM}mGAf6_xq@lFzy)YEtICklv6Ks*50cRbX4EeIQw(-a`$knKt<#H?_s%10ieo!!7sU_P|+Zo^|o7E?J#q z->$7s-+jYFPwibg6YP2ZL2IVA{+~~M`g`8@_MiTlBlhlk=x_h@ z5AS?P(*7HNi*S;{iJ<11gg`rY66Q{PTRL?Y8W zwm&wlL7H}6wmC& z)79^Iq-%8-H`h5mS%e`mz6Z?v?Mn z{B8eY#fGUpJ05!ap3jDjwzB)7ukCv451+Q_TVMVB1W`*QFFgLKC+~gZrf>U+BaU4! zgMGW6yW_@>eQe(jSwSRiSr0#b?`H;~mG?gNH+O#N?_PZM|1Iwv?%Da+!`J=R&O3Cc z+w`^vcI>?5h28fLhpk15uLg0sqkT0o4Uc{ORcC(fhEEQK78fO-F{;RtEh-x}xXzSr z>Dc2#gq8)iOdXm}XAZILBWa#W*H{~0`SldGEY9S6FLc@n7R)(`QzxBH8=g>oRVK&v zj)>yrl}S8P#YdcR$HIV5urW^xR!OK^IE|%3Jj&FU_2?N6+vJ3ED&Bt6f@~F=N6VUT zs=qKx*t}?-+uq%w1%1%H|>J^o)WVW} zt$%=E3?jmt;@0&|9*VY_r_78nA9Ecg5oL5R*1b0hb?LsZlt{yEfZCKA5pFNbS%yR0 zZWiuhH(ybRaOXYYq-~m>p3XoK%n?t_nN|NQ2eVwD-FQZQ#tBh5%#7>p0vfAOga$Zx z*hR=$RMrjxP}3;p{D;|8wI$M@2M*Ox*cYr6fF;E-iy zFbr}OPRaPS5e25JViX01iZZb&tyfH}K0-tQSsBI^;3u+?(r{#l1d+i+%!J6&l#-(( zZUfnB7=|wbE+auI8js0AXcYLcD!I1lZ#a;MnQ??w?0W?a0`zGkUnM&czqqdwDPcQh zl{6qkL?n^{1lHcRu(;H^FF{ za3WD}UL+!-3(h+Au7}2)g*3NuSxfB97(de7xI z{EJ_^?%316^M~HCIlNkT`Bgvgp386e7r*wkK_~lJ^MCMs*hvaran$R7>i;_9qrdrw z4{TnXyWSU=f;98Wb6@x24JZBn7ykUVbz{Dm1@){*%$~-ycQt_Yrx=&<;M7aL|3hzk z@IU<5FHLvj8KV<2E|U>j(fi>TsAxn%2Tj)(j(Eh6{eqnYO&dj%XvzZ9(rBOg2<%AX%U==)>!IF?!Co9(x2OBdtpw4ARP#D^f}&eyy~%@<<#mxGzp`Zk&I1jVxhA zp&o2bHlesGxG7|dp2?0arI4m%purysiq(Kk&=<#p8?40tG0!`oL@{2&y>^OFTCF!# zDT4k9ZoJ{D;n}%vO&e9HjT=IP{D6ywoXnykpr(RO3|O)MdZ!9t&>*=8;8ZMn-w)6S zvNe>tHn9YRPxsFQd)Hp z(hDM$agEnAMe=^`+-Se6;k(d$^}|~H-V7#%!bwnVA8HLGD*e%okHZgK{ScyVy0Qs=1zbTh4FUK!uqUL$j0$t@Qb5G2 zfFcQLXv|#OCc3Fs8-!+Ex-Hg9jzAIWg`W(UQ53FC(JLL#X9D?}0j%(=YDf@Mnx3yI zq82JEsJgnC*}xUCs08(PQ&Lekd7C<8G60ssTSxkI!=R~eN@>8Hgh=nHZyZ#sxagrJ zWd{n74%2Qev}7tG!=Y|uw8nE~C+FCK2G$5Hp(22+577l`&(eHUW>$qnZ)0nUQnDd0 zE_v?;C3CVQq>WOVA)9wj{&k?nsDZKYPqn(}rRx6~)=EmbB&8K{_RI1@rqOVPV%gs{ zcu>F7#x`%PESO6VT#gv=y*E}>0}sX4;KR zjI~>4RMs|6xhQ%XNm6fK;u zhrkv9Br?jbs1UiUzSlq@9*gJ;K|Rh&se*Ao*W3;{3!tfA+ur z^0GM`QgpD02df9^=u^J!eJl72Pu{!t5aN73B!dV4O3(T;B z8a9`ATqy8I*^Z(%gUJQ)X`Dj~ckznhrNJLznO)*BNeqM_=S0c;G`|QadgHS<*%If9 zVNP#>K_Ws~h|3YAWf8uhJjJgm5Km&enJvKpHJ2jP|)k<~C253xcesqbff5?rhx#byx# zj$2d%M@a(A6|!lSKa}B;joGIXeL)#5CCsEqh1EzXOAg3R3C|%rqL_-z+9cje zrrH5D;2_#o@7P)Ntz*`hM7kMDE6wO3p$9dDS18Y&?2fj@?-_UGxh@cwZCsYhL7(<; z@h*wUMZe_gKKLF*jOi=08`|2dX1xTAx(tKP5RvYv!WmedzKp0Ofl(y{8=`Q(!ClLu zN=mUJVbBt?W39R5S?nlfN3Kikj}V|D^8(_ihnm)9u~}WHqQFM#vOwoF_~#9 zq+-^y^rF%o8r)eLw2VEs(4NhBivEmaw*yL5S~I1#T72o-epk{&VMF zb;L7IeeI6VenPe`%$vLFhjC7B zzgnEWG?NisuMK{9Kmp>6sAqXI_=qHc5*PvND&_>SK9UGctIff+@PK)V4ga zog*XeXxo}0f*c^1wp!Gkv5kOj;CE8MY}^YgtMnF{WsAzXGOk!c;&A9nQ%da*)XonH zNhU(T47oGJoYEjMvBDI(HN&oTZ{#o3chV5EdnO@0>mq(iEuhdx62}Ox{;}G6trbtm z!{Kx}^Siu2jDYtOsYMY$7VMIeMvV#a1P%!?GxK0fMTA5z{G;rsjdrS%1+m@Xq)}rf zpVF*Jb$~MIl}E1Bs=4aJY86V2QyLU02+m1qhR2{4`a?=Q7$j!4Xf~;|F4-g;nxi5x z@BrF4U>-0fJ&OwaI9=GeY-%fkSOanlNCOp7H~))0m`KlHf(|hdF~Lb&#+C`HHWbjN z3bLudWSjEE<_g#tIWRx~SRG9Xx)ojR$V3+{G8BmbS%VuORazDM!El5cF5&QBs9E6- z76ZvW9L9%St_&3bm&0alq@<6Ili5VZ&-2PClM7{J+r6G_xSB8Q@&5o|5u1W-ro z7Fludonn(m!<6(eIv?`784Grn2E0)PQbKH_ktw~&)rF~)VaSs+s{a`>Wa|Z$xf7gK z?;um7Z$1K4I#D4%;Vb_jpsp>Hik3uQ6A?Ke=U6XY>h;hLy3cihK%#?-#*8lg5O9;s zd>o?0!zXX~H&5Pju-Ry7VKlOxv@aY@$lh#gaR?~aO4LU1F*Rj-Wzas+G*)!~YNoAlt#|n#z?V@qmK_5i7 z7O5>ucdf}_B0xwH!cij@El4i~Sq3@k56yQ)#085Bh!+7ImHNw|1dVU*Mc4UzG6*05 z5!!*uflOR19amg<5&F`Ui4dbiZTb)<}Xj#%?m$IxD+GNtWtL zl})3uQp}@Un--iCLlOmg666B?5P`L3=44XjkU+BHy+yB>`vVj@wo4jC2xw3C6b1Sr zv<%QJH9mSnfmpj^WP%kfRf`+h!uZ9&+`M@t%c9LoUfjaIP8{0}vqH7duWg zf#catp-(n#JonBACqG+yQjU5j6@B~8W~5P*lRhnq9Ly|}Wg17;;}2=5Xvxt+>Sf>9 zKNHOv!l*r~SyR77Sf&>*EdxViDGFy+J)_U@Swb{hW&$8l(=4?oOt}f;mbA_dHlDx< z#B?^IGZZdHHa4)_3ol3g-!gC4nYzFMC?A)tRio;K%spy8c*jdR1*^l~DZ2o}4BI>u)cky_ILe=d?q{5lNy{qI@REBzHNfm}z z+*D~>&$Xdr5P)n&zt8wFIZ4RMe+CdEwWgX&t}jEy5lv>!Q~*LEuTlxC^PH}VInu4h6y6W&!DBN+e%;F-~Y^*Y#%dICGCUx`BK+!Ii! zNPzzyc1~5Z%IJxEWR@vbsZ+r$5^1cL1#^Xpx|YYBVPJqYkmKo{9$0raRSTfw6q=dM z;!7;TfA)U?b!bgcIU(I4%*-8O$6p!oTKnJOqMoQJ3JR>L7Nx3^F)S(?k-abl3DKf}8pxR-cg&-az^cSZL+a4)3= zEUU5P%XGNXGAMX>(1guAsp(u;l4|Haa3Mue`R5GjE_a}VN#ms7C{j1+!O`}X=E+6l z2+fv8AQnV%Iy?4r_zht;Spg-08Vbl@Gb)Km$`1_mA%^OZ`f>>Eh>Qp1BxVv=4*n#< z3n<8p#V%&cIlCJb7rJeE7^}+Q8w?kBLvpz@dEy3@$c#B}iX13qI05Di>JEf*)@vwh zRH5OJ4`E$lXCNJ6b(ol#1{!~1ZVt#3!r`@j4ozwBGT8nnPC{AiU>B`*@MT0w33VNU zOK+ZSlpcKD@P)gAmIqhqLkv)rN6@N(Oh6OOqs3)mfgAPUZBqzS99F84jo{dudyE%W z+p6Q(_uMli#%LCgmq4qjZ)*M_yx#~`n4?P?y}*QRc7tTsCwWcGC5JOBthau3uqUf_ zQ70=qqRQHFSbG~Xig2iRFq{tNR!L0B7{{*H2nAxmiZV-ObE1y8N>oj!R;_QX*P1^V zn^-T{F&D43K-EENNKK@GeFhbD@g`h{UfH3RGh;^)01hU-ycKOcqL5+7f(X=H`E^m3 z#Nr>8FB4H#2m{>v5`ndig-4lMTL_zR5%tOHSt%K+C>HrzON&|2{tzEm$q1ik5*eZk z$NarJw_n0KW29i`&8=jqXk;pkL1v~(Wy#L_E)vFtYa$}Up^kH9Vw}Q0wFnRSe~lyp z{Kf6Nh8XC2WE!njAiSzveV!7F95Oi3tZBT143Ui8$|~W zVVo~5IG;Uk#q7Rrek>DHVe?v;D2qD}V+yS16CRwPi>vP2*WQ4A(=4!avtLZ9?D~jH zqDYU@>hF98A3R?nV#avH%!w)M92l^d<$~4o;5$@)O*u_F16Tn7K_t0iD+(&gQHYqr z<#E1no*bO9jR9yxQYi#K~!yHa!GjZ7+DkZ2hd zP6{Ck5g|wg5+^1q=ZdTBIdl)kK13)LUKX8mB%;=FRYOjQ-zeAVi8IXZ3?qNjf3wziN#exMEn=R%w9nv)?vl%xQIK%HqY{ijBU4G)8>+anUIPY%PjoHxZ`t$*e;s~kooIOtT(Cl)f>rBJyJElH*h3u11hf9POC zi%qR$X7@3c-YL#OafEcDgsG(@_f@3HBCY|%RB!s|}$f4NUKt0u~_Ow=M zQ%knmszT-Rm>swYQBUTOstSfZI2FVq)(6c|HL%7!ZTEwTNPs28o^GKip)E|v6e|*x z*L`CSeO|&p2#jd+@QMW6#%Pg{gPV`ez|-_-h`=}rxTdon>KAym8Z*#>;?pNGhz5}< z41;KZT7dKQBqfewMXXsYZrsQrB&-M>3lJUUgTY)uqN6^z5OjyENskRT!dXK4t93Kj zNyW@cOmPVSVutfM+Ma!x-sw#gco(nRRPEqCr(+f zwbb#4V5;%8c1dLc9Y>)k?-gMZ&^ED+KGrT~$I)SQxHX#t&K*OmWG_;#Tx8-Dao>d^ zUVZWyM%HH=Z|()Du%Ldz)r1i#vbjK-GsuAT$2y zWi5w{EO)aL`*IAj~8EZQN8Kc1W``S9=!vOeA<- z>dRJ3#bURDg$!FgU=>mpy)wqCz$gZ_9}7j6qghkg2F6xb17#XSq48y+h+Hr|1v2)> zG4{!gV#-`K^Y`tcP}LEbnNreaYNu4LP)mt%=&XGW?7_hW#cw*in3GdpbBX)#>c!8{ za?V$9&4YYOo*V`!$>r`aDY0&pg>nTpbO}tuUy4bC+6py4n2L><1`B#mE`L}2;E#z< zP;?Q9yYCxB%P4 zs1clfzzSZVK=7@YRsYzcgz#94fRI&XLN~XFnQoKT$`EZ+tG3+xW8VN`A%5|xG=Kb? z&cK2c&&$&La(>V(Ovh{)Xbv;a}hM*-kOSk4qHZE{BSrN4)buBhr{9Y za5#-8%2lBA$uKe^xQi_^(@NR9Oc*r?kWDPl zw6S!iU}ue0a&D}RLXSv#hP8%{T7E=&g&AUZ*{X(X2ShI&s7AM5-EW8C*2vfpAG480 zJgx=com5SH+~h?$pD3+6{o-?1@7>*F%g4N$fhPK5-gCg}`xjR{QKZIv$}D}rBiF5% zZgV^&_YA#QXuhJK`E$3w6XiG8t!IVIMd&{4E$d)Y+kch-OUtxmXyl}InffXAo@JRi z&DN?&`y*VAa=BKS;o4GZnGYrdi3HbC)&5?|L2Sy|EaXyI!mO|g_hxN<*>VYl^>d3; zp?a;q`mFglEU4Ro#?0~H+gwfuVI(K=Q<5qR?(=A2`@JA8Dd1G)H0bU^a~QjHmTm%K zP6LhLQePmuZ!(PgnF<}T*wR=bngBu0AR77m)Yh&UG2$kZX!#>5q0l^kC278g=n zvQ{InH~4C6*OcFVftE*BR0>lfyU(Ok%@z)YF~@Qx?`C^x+r{wC1zM z?eEE+)4M z^Xkiw+;HUZ@duy$vya?=`yNw51mulv5YtV}CXN-zD>-zFlW!R|l$Pha}%t#s*I zul%XkJp4WX`q9-wM6`0#OMdSs_WXk%ziaC>5%IaNfAx=^fA^37e)|6RpZl7Zt{+Tq z`;*_g{wsIL$}=zdjUV3mqyKUD2S0e;%Pv~8_l4&_{>Qg`@`k-H&h3zgB1!%8q>kG> zp(3J5Kko&VmT3vlsKxr37x5=*%;gqeFd9ElEYp&uYGyY!kqKd4l)5U7EX`Jq`&2=2MGmWlvxowEsf)sQJ`(-)Nl}m z20StQfFH6`a8RV2gI=#T8%j|u0E^IIkeWCP)T(ncW5t>^THWs~iB$FDn7XANS6?e6 zZKv&ghQ844QCy<|BEl6uK7yIZgj-K%t1bdZ)i{edeB6_p0roZmZrdOU4hItfrZj!3 zVPGKYp~q{!9h|*0K;RBQGMPoY1|y({jn)1M7bF!GW9}T*10h&HHncUUs|8oG86E8x zEJRfH+}65f;dI&oE0&P12m|NKGty?jOQ@d!t?$D-ti~L2uTvOuFR|`IVT7y4FD;oZ zwuy)qIG%`CopjL!$85RthNt$Oe&)olW=pdNi16X8QXlg1MAB*fLeLJO_3KXjhd*=d z@aFse%YWD*t5)oNnwW?O$N!U`zcf8^=YRh9&pfwt#Y{_DrH_SHAno??3mh5B=w-j}#&1oF_mJgx0S=@gM%|al@PL{m;K#%2LaiHk|geKe_XZ zpSble|A=4yj?2IA@11@9&3A3xzi?tWRB1_KAER`tFX_CYqRHvNqD3QXwIrMDz*8F_ zO%vCMlN~7eGNb zhh%f5BtY}-W|d#y1(pyUDeSVVK|EduUam196x}~&2CTr|IqSV=BQJif z{9E*E#uY^96h^1*DYOf>k z3Yc*1ldMwxL(CHrsF0c{B##mjBBq?O?J-jW*YN_( z6AC@UHL~pgweTZC&@H3?h=f%htF{fnK^yu6S!qe&NjpQ4OHvHYU}dpeGqVU2Pw8+n zqw$-7(%LgGI%nk*H{bgFw5*x<)d8c~I&n)Zo~Y83Ny)0*`yC&7>4`gk_qvaKVQ)As ziqCx2#>-Yd{KLQf(IHkoU-)!h{Ja5HD@=Bc0y?4>F=fS%1!5Ru{=AOgscDfi*a+};+jEnEOj zjF`upNZ~A7<5t%%xYEjd#}rb7~fSf6YSVqq5)_sd!6lJa9khPivQBdm8yFK~=Q zv`N(&l_3G*gPgTzP)9rlDru+iZvZAjTyS5r`l_P4Dy3_otkyMqQoZP{Bsagra5N~Y zw>Y`Dn(~63bs+$?C_#L}<*Lcp*9;gz+aOOb#z76F1U~OyNYys}7g;NtL>O23g*RNM z7p`xUZvh8x>WNHcU{Ak`Xa7+U}O=mn2%~OAC2nQhiPj~ z70A7q-{!4ev9hfhfyLA zs+0IaNO_y3l7W69A|wkJPc(J(#!F7ycmEBK?98)xwS;N$;)%M3_?`#umAb4E{`HLT zN&jafP^SG)J^ZI%-aClhUHGh1*UE+?|I2?p+fol!@|V}7Ov5xwW~#EDeE3hl)Ph7r zB*Q(=Jgdeo@7%X@xN_aP!`X43Eu48Us9&4i^d)G182 zCrqp}X~M#NH4zou^bKb+486hSsU^%*U$R5N&bwnOB6dJT@fPZv%&2mZf)By1*F?zJ zSAV@;Rh~?G1TQI!QyjEJNs@5ZOJADhU9U0_E??kfapz0ikuujsg-TqmvG-^xo6?t^ z1UU<3CI&(T_ZiZx1+2gj?l^L%7e%&{6pG z9hG<8R(=ioK%*e1_(}GozVxXC5eRS*tD?(P>YVT@Z1y35NSc%@l+9xzP;GBTgAZAE z=SZav61EW4UOfi}{U6u40{VmmglHl`9g60m<3K+l6Ki#}jQj8*J4PJ>&!qRT^~CA4 z%1-1DT3AH&NKpuU+EG{W3(oX=(>^d|-9Jc6Dh$%= z!`(XeIa%6~B(fc9Em4%UQLxr<+vUH3v@UNP$PzbWjE@= zX2cX!DuhR2O6#a;T{@iuF1{t?su; zu$aTKM9aQ(w1wMuw(`V{r>#4JFM8bx7g;4Pz3L5TJ$U_fPaHM!)k8abDmID^uqQbC zc%q=wv!qQ67P}N>)ZwIMQ1t z;s(YdxbNh3w_iKnZ8)r08WAHX3DdKb7{^y5K#L6nvARpseCn2%vXm2{tvGekD-Tlz zQ9SgdtL~Mc*g*lwA_;h6)HjFL0s;l}CTNcsQ$mz0g{$;6NX4JG-n&WNl3_B-*pgD= zEcm2CG4L;|V^}M_NFsw8EhdMg1P;`)5|M0L8)EW2=*emt>Z*=hc*6*`iV7aRK2Z(O zjJ+uQ#10j>$QEAqhj-`hohi$BM2 zThzfSAJjgIAIwC%gA@4Or3YYV`*{clSDC7baTYi+tSnlaO3ncfaCMDsILRoea7)l% z|JQVeS%7{MQ4GI>?emU+{#y%xA)Xo7u>c(8j8y@LFbwy06iemGR(J)(SokCaZUa{7 z+Ips2G{xn0?~hu5#^UO@U{=&({+e;BsA~`p%BuQV7F3?25UeY;&NkH{AbHY4a)HZF^z3dd-TJakwJdxodi` zcEviT{X!(^s3j7*k*xVju15Jh=$ zQWu6>re&HJ&CY-=aa!o!(d=%p(@bp9wQO1{u6S_*;Q3-g+?wDXNyCX}^I1ZveR22Kim99+1dzz*URZ1Qn}^sORAt?LDAs}-e>ye?ssuMp!Vw{)aDgtcTewii zXLJaw@TSg>#iOYwVka6Ir|Mc3*Ph#UCXte(eovu5w4=J8@b;zF7cn0O%m>d_YX~gB zVxwF&g6kE_w(u);xtWA0F;j{kS7P>N56#w+Hlxec>qYK5YU2u&)6fwys3<@{nholz z`i&d~a%FgfwpB{kWdt!}a-zG8vR!j!Gp($`#@L#j z%38n1$7&upBwz$ulIbJr=1?#b2g|3RcPSCfxta;v-F~4B@ugW_>+dmXXp$go8#2KU zv_1T-f{CWY6%Wc`K#>`~AQ*3wD1|Nsrp;jK7q0uF3f@6qNkp2RM9buK{>JkbA{z;R zM$)FSWr;3J&69@-Uv9tS!B5|N?2r9lo6b9HWg4tF;k1*!|9ek4f{h1x^ueuzGf(^W z%U9E2aO81EopcNn$x{z)-*^0}?|R+(Bac4vw`t}Q}KgE<2hbx_2K%@G97qYYAQkX5H)VNI_TZAVQbW|h6;>$f3Rz@C^Wk1 z!hBs5;uCnt;xpeY&8KlHD?a>THg7Y32)u`{@NX|j)OoJB1T$lUR!R}<2y30)m0%m7 zZ9zKc;cz(2Sx?Lr1&s_gGQSaZ!z?}l9C9In-KI$yOh!(rIZFuEP&NWss?I2W(XyS z$h}){TPT5$d#GhL;e!kVyb;UE--n_^B*wxN~N{Ui>69;)zxeq9dmc8(vJ$f zLWAXOITf5PC5;*|XR-Ez^>4NwVsc~uQ+@?7SBWYpjDsc=(HAQV&SQfe;EBB^VjHg!LMHb++;s; zwtw!=zxCKR_V0P*f#3buy7#{CHE(|Z?%S`s=a+wN$G`p8Gi)+D_|#)<>sQ=oe9OqAblEGl2}LP)QH~{Zjf!&} z088DOtycvbPncPvnubm#Wg8|mA*fEtC_*zR4vmnQiMb$^Kms&^jfBeWH-wE^Z086MLEMucQuFv`^d!)(tL!mypIpsRN#^1!#UkM11j^e~OAEp8V8) zSw%~erq<1zW*iCiXx|KU;n}Aiu=~yywye1!7?BQ;|9+5Y3_LVB%>^f#xZKJ0b!?7v ztLE(LH5Xl*04K7EaQwCVWZs%Svgp}T-{>~4&*zrUoJ(0y>MLiGvS(4%IY?!ZYA;>o ztX?lpsRw}$%BWDg4dW7woc_1jj4h+3FMR5wSHJE3?FS%*Xu`n|F>_fC+DGX_*Z_ zP{*n3l3{LbK}dr%;KVuS;c%FTIZGz;_=Yf*CjuJOIw-zC9;Iwvf8ahYAlb(XawPyt z=IrWXeP;<=Jm#Y_`L|G@n08!uctv8gV&n zNq3*Yl`Bi|VjDoR#w6MHivdiLFA$5p> zdudD(5#j zPZ3ff=rw)nH%G0Ya0eLzIRYoDljim(;Bi5>xvD(tF3MsP1Xnc`wIHG_Ip^}EAV*YU zH?j!XX<6D*+2t0!SE~$)45|tU#OjDH4M#V&bwy2ImDs2b5iwPHg!%{WT&XGKg2zo3 zm90jK8av=x%8q0($Q~NP-nbzsT;fMkziVV7;r~`zVFO(+HH<-*@^F~(wkSj@=NtuG zwjKqd!y|PAqUDP=y7G!K0Jb}RUBIWT*ANv5DQ6-|$u2S^ED%J?skrfAFks@Gb$raZ zBNMk3oPDE`R`>0vsh(u(lGXad2B2(4HcZV?5 zgWW<<_spQhqrP~eF}7|78l`&^e$`!ym>V0*G&yxuc8n4q^35<0hjU^2_QA;f;L;(l zGZih7hMIv5S>j@EmZ!!f=%?|sk)=g_v*3w7IV7mZeTAD+-1p+50kF^%i78Ve%0j}1 zT!e{t$+B8U#aGgl0W%wJJ{r77;^#nD z%1?&OMRtPIXqfY#}3-$N<_lvz3y z0Y-DU2G|#MT@jcZF-6x8*wk5wdb(y5CiSR-bkfAT$eNFYh`BLb=F)SW*6PywrIq#r zP^fK`w!KNEwRn|^7!&#+RR36KaEGfnci)eP%OxX1qnPd5d(iQ$kA2{ zyofp)5vSv*I)rvZn^$mrWwz8PxqYal%=kdO_Vofo6eL=NiIjJTO;yhg9K)a%M#IuI z?D!<-gewh-Ls!t?Z`f7?mN;?e&xjRiUZg%SNw!P8?{#Q|c^*$=wYih@V3Nf%%LH8azMVwPmb}g7 z5kD_9$xMQth31S(JIAc0pR-B0nWMydRbqm?u-Hz_cICJpox_Qf#+c~jmn*kK%K(T} z7dT>*fYht){V?PRkSKUEWH|vIsxvDy_;`2`4jq!5#kZT4{Kk*;6qlx}rF&|o`P~Lq z=}M@QATS4Z-+^psSKl&uBrdnqii#XP1Z`%i?E3 zNfsHBWU8Ksh@TY&kvMQb1Z7f;!&|0?0AmHDu0rKFyPsM~rJ@P~@U&bd5sM?LrKOlo zRjyUU(n+Wlqm!Yo1icXvGC64lnd-jb#YB7B*0RgJ6;wI}bCV32O31egX=&;wT{ajU z&RD3LtR*!!Ty@31fdqY$z28@QuLywkTXM~!-VV}WAL!O2n$h_We0n8oL08|@MT?We zP|=1N+r9n1Yb#77Go^$QhDC|m;jN5T11&WqLFeic)ZTa{`-Jc9)Mc=zjH*^m8nK=m zM>_ihp+YO6HqA0Xx4Esgtq1DAB`VYgfiPS`=DdLSogEmOY(m%tKca%mgtN4R9Z$57 z)EzJ4jOIm0rAmFRJfgO9ntUHLl9_dw<7hkL`PdR>!A!|_!38$D5f2p2s%K1URu+gx zjN{AHOAFXC()r;qq@`ya=i3@H;z1R4>VFWGfz72TjKt+%U>HP=(BdbeUxE7I|vpSwklxfIA4lV&s zk+9r7Lzf~-D58>h?5Mf^6>Q{D942-~waMIV#H&=!xc<*E)}u6~w;e-{Tzy6sf1rXa zOz38?BJZ-{E(CeF#74k#k%hXQf`AG*#Uan;)1p^!!AS;FiaYmqD9U9(FHWgIN?l#Lg~)`%mO? za;&_Bjyz^g<&wuiLzQOKQW0mW)ASa#)^+Ld^%xrD(`q4|&*#7UH>;eUuIe#>uVeQdL=0vr}D{wV5;P ztYUj$BlJN`NjEcwI#y#u?3HX{X+bv9hg_e-C7r{!bCzN&Qm7h{l>KF#n5Bv!gS7~U z>zNYzTa{QDhN_VV<^~f!}6%1aLAVno9r0A@ZA0XN<^?CIxa9iX7b~R zOUZ`@PBeC8>rO&OqzbpSPC~;9xLI7UHID^}MwL2;$!Q$+kjIRb8dJ_}1+sWz>@wM@ z+QLF&HR3z>Z04UuP2A==wu3B|M$ea;Nm8d$%d|`{5*iWSzf^nX(q(K?s-4Su<#14_ z!!~n75$bm~;nwhSg*ilsvPfd)#3`qoq#Qj9m)$%BA)BhkF%@2!m=^#it)X_Z-*F~% z!d>zYo{(1#{Fr~xyV_i~m^o4veJh)PmqlNWY;?1tlvsjqfYtJ@55(rUQtZf>8wd&I zOmL0~sv*FM% z7NE5aLgSmun~1Uqe}a?WtmO$Bn?%>bt~E`eFD#(Be{`=ANxS0tj&A=zFv z>`k)cicA#Qp#!dvl%Q|go?N<_RBwu~xg5@;+cyJ_!^}h}5oH!4E{70REml{l$JIBO zu=Xbb4vAK$W)YlK zHK|Nj(*U3i6X(EsaB8`=-vzC}Dz|W%? zs9Hx$W^}0fY-pHq|0?iNo~HoHz#g|nJHQ@X5y3vmH0cvBRLP~lP9$R2v(L& zjJ3uDiHcB4R956km%mFTvk#mw-J#d8%Qp{zGC zp#{9rEhIrb%-GZ%)xL3$QG_UyC2l6Al)$WBmqZE`c_l(+Mm3eGLglU(X=>O4hotK9 z234zNIii%2Mf*4I<{|>YIQNMQ)seSY2)7G^t$2zGR_+A!c0OOgdaue{iYUp)K}_CzxIb}(96{6OHI5lgz$iw-}wi z(vbSGeK*(n=bYz=3pKfn_GzK=Y_gqCnimrtp!&|bKgif$4@ML9ZR_ChD$Lauos;=~ zepspag3$t+qJu_rY5XxOn~P2_R&1zCa~-V@5vsO$#K-0vLJtx zm-Ja@~x(Ev}R_JoO4cTU=F7_I$4Nvmc&HKGGQHdHEm62-j7;OVMUR(s7V82Fjy%2mF46IWIV$1^XjTe=%^z~Nw8 zcQNdtald;>A}Aq5>=IKMKozJHKmut_K;1+U&8V<3(hi2*t4tc~An+m_Y|LZ{79Ae2pD^ zASFxF><!g#R@HL%4y)!&^%9s3yAcLTBL)@ucxq@)z=gy#wl=A@1QM}U zleKZi!S0kFwEvha!_NXFFBrMXV#IzCOk`*h7*dCXIa>{^joDuAa5T zvD?~UJ;NuRCo`9Gc#_O4%{eAs2s$`UQEiMDhho;!{5uDlYs<`7WFMdLW%aB#wI0I@S!W5qi%F*A+%!xz z3|1xDzB05gBga7)ULZwyXA-CbAQ)2sP@8rPPtST^G;0A4=!oplZ_}2kF=$%F)g3qUltZ zQvh~AiN7r$z^nkx=^j~Ri76QI2E8{dJ>acGI7NpX>9PzI-l;*2RzhS3rIwON^&}+@ zUA7wkswY}5Q^-&(EUX=-LadKk&yv`N2uoY?tilW6E35B2W_r|pG-P!&e# z<*PKKI-!q&n^5WSH!-SYKsPgS(ktEUBt8S@jJ1;KArep2(|dzCo*;vnZKi4XSZm!r zpV-D8Y?96o@fG)_oO2PhpiX@+KMR=u0iXjEH((ZRTzLmcax)2_XM{Zz>5#9$!qRwU zd+`Ws4mDZK$}b~9qiGiQZ}gaXkeAiC_eXys)%;h?SHpvjli)jXfP4UNh!bWhfDq|` zrVrh_@VR>&fZDlR7MpT3^JnuQ;4M0Tf;(vBj&${sn{&Rks$i z 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 !=Q;4yaLmED<@Bsw9~0BAw7oZUxYW+d&-w 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�ay^{%mc+L)sSKCdZFKEDKxqNRm{8MGfj9B)J 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%0DR!wpE>K=zufqq|9;nD&tLsR zzj5Ak@44nP4~~h)=f3$F7vJ~Ddw%q`Z6iATyu&U!XW86%D=H!}a~a=q)9o+)*|U!t zJ-BD$kq%6LiX9jnR`lk}5D;Avf@z2Z1%;{xmuoBnBOyTmoI^EX zcI*;hmoS6CR@Gb5WR6i;tufntmS>T2BSfxTj&l%!C}q6hJSk`skz|rmKoxlhk0cFj z2~o8G4=~r1Y&05q%-r|=q@TnhSsNOOp8J+uqrNBk8efj5wNatvP3nLJJ<2h>lPGn6MdAsqIO!3)rN@hAPzBG~QXf~P!%i8T?*jz7nl5Ha!|8np!yle{X&3RD{v zZb*d#onaLHr95b~W*uZ^E0hft%J-b!Y%9V)F9iV4-CY~e_L<_}1VkK4&80!bNP4=Ma6eO|+YAr>Ri=7Y{+q z;d^4hK)k>MLSk#}wO2azS$nEdH7io=s5n~@!IT&&H^Qf;qVsXvVSP@2M zDqYu=PLGEtp>Z9PW!|Y5=`1YMA5ysriAc4rXDP7~vPamgoBHe!2)76ZkQ}xo6X9t% zX0~nGCe~Q1EjB2j|ju$JK2Ie zCq-n^rTRchqf`NOgh*=dRj~AxP=vH8MzKMy?h;Fiql}%zq|0KO%avH;7aO|0--yY? zer&NlJ{ph5#ASZ*5*mN2t9uT1aW@*xA9Lo@)-0Z%qlMkuAKrNP{oD5s)r{wlId0{6 z%QtpU>E9Eyi~}-So}&PqDUzig1!bI+^Grx-2yB(LYBE|t9cE~u2oasR_MBVqyj`do zUSR+yBJzEb*1MG45LlVJHN0GRkfK*Iq7MqJ$e4# z*Ztk5Jqvx$SY(Mzx%45`#P!I3u&c#-H&K>E!=4q;;8{z)VbwmM&XV zAK!am(%0HQy8fmsZmlxHu^j*b<_tg<$=jV1DXK^@z$vL(TSx;Dm7~|Jq0Luq>1kOv z>Uv!pNjyI{x44cU>!qj3uE!tw?A=`Zj!P9j^4Z59*4_W5KiNFj6G^}6gBy>1-UX{K z+3>*Ugd4lzL&RnIS)!_&Ai@kLgq3pjnp|G8{`ao_+?@-x_S-&i=NF&3=DE*3@-y#z zs1{zjV$|QUuz#ViW7>M{qgPzJ)q{%`o2q5k|JkO~_?D>fh`Snf+RVU4f)K3n1`Aoa z3@WD_{>*1A|H@0RzWK2#L<`q!`s|f!UiG}AKeOS%2@&!9&iCE?4`1F>iR7Q|x$zaJ zoOZ@iesGV-Xl{; zJ+OKHlH(39JGTm|inbTbpzM42?>}+gul(9mdp_{)_uo0*-M{S}KJcJ^8XV+oel)jO z#yfhM$Yj^!oBw&^7A|v4LcH?X$E}!q_{u-qIzJ(j1CM;@o@1YX&M{BD`{B<^$-uo< znM@`cfiRJs#6qkBP*LzAqi|qcVe(^xWYI1E<=W5QJ{FmWTJ)vnvie>%iTA`)3dA?n)_TyG^7>l}bk(d#pTi)#jd; zxrJcnMRRkDWui>ky>Iis+{Z+Vxd`!L&pH0kxreU$vqu;ArBJ{5L-($J{yD2Iz5mgF z?MW*zsd-(zc=7xMTh$OQYPwdnl4bznX%{2&>wfR6pSyERL_0os=a(;AbNRE6`scrY zM3|SX7}Y(K1LL{5j`!TW`wKVin9K?F7JfL!ML?l^*Ttk6jF?dRhY9m$Oz+X4dj+XN zeDcampK-{wFTeKIJ(Irj_}VR>`^uUhfA-P;@^=qTgoKvteE-e=`^vq-rTo*qH@@tY zQ`at*hxQPOaOsX(bF6H>YD-T`p$x>#ipDwfIB*;viHGved2;&R;_&RrheDtZEyF$650p{$N`dw=SOpk z>v%_B$924O?;}@iWRkfm6XKOGJbuO8LtlQ|)+J-1eqqxG?_T}9^NzV>h)VpOo4&TDtq_Eq6P1h82t6R zBp!H$Np%3=T<~#ekBS{TDMP`J_gKH2F9KuWh~24b@HtE=YgU2~2>Hq-#(76}wx>Vt zsd54o7i4`XUSfP>@+$I7BqZbUr0euNStJg^*BXBF<*-E5_Y>p>tZSOn1ivDQQ#uE3 zW@w4XYDF{n0l}FO)ft-BKBt}I0HvAm?PJYn(FOm{KG%RJ-Dasek7+!XM)n5^fdrUI zAt9k9LSB1S2iWwvFL-LP=hFHHw${^?PG zPg|Qq=|&wjm9J!KGyyv;kV|aymoa5^)E3aoP)l^B>1YU}d#-2(D2H5XC@n>^{8uVn zGUN{9U+Wv99k{>P&%y0u_Ge)(b0a_5kY-%Sr7$t}G^ve6fnn@CC1|lpq`0YurG#EX z2^bb0kq^dGN@4CN6LD$Ja_Lwri4=QV1RYNiErL%=k~lSZn6h&9WU_i&oene1erBRM zs{nx3ea1R%o1&&#>v&;-P^qnS9og=6^8r9VM67WUEGU~@&AAcp>y$MO@`Pda&#`mF zs9k+TsSTS%PfT%3-d-tr99+onS3;QK5+R*7uq07wSRi&BnDW%{2pmnVePOGIMex@G zH?L9#S4CadjYf7LL$7CGH|j*OY_=2#DuoOn=+M1mm@@DXJGmW+#*anJfY%C2pX?XPA2uoKQa_o8$8x*P7@lWj&> zcEZ`GEZ%(UExW#*tW*X`=sNxsW<4DyDp?Ux5yECey&FrC4bpmUMw@UC==O%`_6@g+ zB1JIF)wT9o;)ghWrG4;lK`?coYSMMNCclZD+5;g*C`fr`_i_bjv{;xf@@%kO> zuide;G7&TNeNVdKmVIhiNwD(br~cKyKm0(vkZAPipZ>~?w>)NYVs6IEtcUK0$oXsx z)pE+xBS@b4?n^FpYK*$>^N)=xO^8J3u}zPghStfRU3JNd`9k}+E6lwda>$aMdmh(> zbRn|Iz5_S@<44#2#1H-QMbEtVj*WNSar>?7@7jTY)4(^&-rc*Gtysad)vzDKy{o<; zBx5f9`m1mLPgm2D`EJkSeAf3~`08iRS3YpXhi?7SoqZ>HS5LTLCZfGt*8R`J&VJLA zkNc5bTW{RH{o1WtZ{9D&Bz)LOOD0Dzzx*GL^C9zmS#(HOWz0J5FX)MSRJZ^$_arhI zPwHrnb;YTpoK&0o|84KjqqfVgx=?h^xz^s#^EO{sO{z#$lB!Bo`i6ui2_iuvK{!K^ zGf+{_0hC7Iihy35*q(d29yw>6aZs@Vf~bfMDk>_1;x!2fq;IP#T~#U_Nvi6ruYH^6 z*?X-y?;o>SYd_x?gyS9KGVaK(SW)k~MF;S|pnb!op;Fw+olu!)KhYAO4jqb0F5J*JBcftDiY$ zwPjq6ukqfQ70Iz^W0zXq{A0g%J=x@2UtU2ve|GQM(Mbe&s`+yC#6y4Q{PVx(3-A5| z*PeRkmCJ8?>hgQGBnS)_?%69(JN)v0es@rhRy3Z?LXx%pymk^ljVtz9D@PGTVr+wlb*B*Pv<%i$$9s6h{J}r`OoTfkz(szy}|C|D%_i4OY&}(e-QlXU~8qy^GC}^z3u%=ZMg9w~I9r7yd3r zD#f7(%ab2FTHn3DSK$chy?^VW2VVD_@BXqoKK}MAkG}2FLvOxxrFN(u0YHwGQ2b=K za&FNMM4%+XQn^AjAy)I}o-Q6j{my&A)V0E$;3c~-5BqP;js8XsArre)N(aHqyGQvwvy96oBuiVhv*p>?W-XiS37e`d!X$f$Nm(UJ}{9TSM41xd)cHJHTg0jp! z)u|~R=*C)Uk1wm)&B|LZ(~3-oL{xRRjQ1t44oXuhf+eEZ&6f z+1lgH0(6g3`xX&>H;{l*5TEuTMXM+SsP^oJj9ln6-2liOu?73)8;m|d<|XuHm{KCE zSFubH*vUrvX*Ha7#FzzvVoBy0v7^8y*)gMrm%;TF7GG_iX702hi~&`J?ess5uXokfVs%fhu3IT8L-82M1_ddr^!T0j$hb8pfnA)w3Al6#M+Z!#$ z>cZCN9MC$ovs2Ih%B(c;#8prdtSyes8^oGYH^MY^Mnpm~qisAQiOefV9>=jV)GE-Q zIs1R#ULPR|)4Mb|Kx(yJ$P&QOu zx1wmbQEL|s0ART!X5A1QKDbj19Rah5Z03#I4+K=ecDgAiAAH{*_<>K2Eu{|7*VH$$$ShUjNn;_L6ViZmPoTtvxQi>uulg9V`rA^(|k0_ai^| zqi9L)^1~~XCC8J)XVRB+aLVS_;YvZ$8{ln`KKNZ zDu+y6L_q2hZ;v-W^Hpzs-v|O^OKbv=9ZSFtxseD3S-8|qtvQkPbZDI^Pv8I6fAIf! z&+X57;5ql-|J<+rhOhjZC;#0Kz5Z>dwJkY|q?D@#>gZc_R0Gf#SA0=N04_Y^Ie+r& zkN)c4#y|RdPXG76`0nc$p8MCo^Xb3(|M~>qz=@6?<;j2d(3}3t-mNb?ckX4kyznpI zyM64Dx4iCgnxULy}UQBLEGBG>fiej_AoPtBYK%tcoA14ShBM z0Yo^jGHhx^0HD)%J@t>i;q7;R@wxk7diL3W?18WNR{q)VeaAbl^!+M02o+GZ^R&{b zg$}r$`^InD|H;4oU!T11<=^%7XaCIKyJQOyI!hug435W0AVWgpcwkh&n^EP$ECO6v zv=_SwN)_R{J#iXiujr+H~?EJZxU3kHtf7a$>A9>sB zK9e^xoz(j7M}Gd#J$WWPpNLqK3TT5TLO%#)<1t7= z#I$+m<$v;r-+uec&p!Lb=brs-_rCg%JmY7-=bi7k(&%Ch=1}X{b4mc0-}R0^_?-ed zX#)MK7b=AZqVcfNm5`&etFS8DH@5wvWrh2;96T6q{U z5+%doN`jO3zx^M5|NCx#?z8W|_t_8p-f#HI|KZ}l|Do5vZBwmrBNL!%C3|Sm%Yd$H ziMVG00671Q=YHSUAN|$81>gL;PyYA6@Q&-ZJpTv3gRM1)i;17hm#h5*jt9DU{09RWD#ST>_K2m^|M~Ki`9M|8B6$?(FchlAq?8Y6GM0VcT#Q>J~|D8&$KG;>ZJnFnwWW5L9;FDInSo!SzTf zLybK>_4>R?11;b}ZWCW@Jd0q)XA*qqV8zn&_OxLUupOZBUi48q^`Ygd0J{gM95&b9 z1U|@So`T(gSs4W)>N2?5XuT0IxY+Lo(mA*CmYte80Jn#x7s^c}%qeN@bFVC6Ogk*N zcoN$GdC$=f-*kVZG7CZ4-7?1{c zyDYLePq8b77UxMgMOAFeta<6Rv}qb?8u&vB{upExs9ejoIH|a&xweP`&ENU??7fKS zOevaXgPoFueL0JwO>1MVQ$=zS^}KwH*k~dQER3ExbyhL}(BA&R9e3P$@4ffJ|CcXH znWUCzLxg*u_xzVVcm0|7Jot&D-~0}@CYx>%1ptV$P9Iz;6LsL)lanOy0g&jUIFhzp9l%% z10TG+cmLnf`Xi@?#zO#8zb9Y}>cZeRJ4(KfgSu+4&^U4?AMe#{nJLo6fKdpa5kEPI! zNsqV$1o+8I*DhSRFgX3$j|c(;K00~g7k}+TKltAN`dy#6@WRhKe-BsTC*F5;{o*@r zxnr?LvYa6E43s5oRO4kEaCe9K&uiRS*=??OVmIHXEH)N#M`3r|vFFw`WXy@3R=H`p>+|%#>i{CN){U872bmri~vi> zPu+5GE7@nfQZ(*r9OI+oC*JgHAN;}h{MSGBv9m9J`h{mBqCEM&>-#Uf?fmVsE7)#1 z2mxjwJ>c5pJ5*Cd+#=i2st&~Y+>2iE+h6g*3y^a*<+HP{y$~0M^}R1RcOz# zMJ~Se%9~&Rk)QaZZ+_Eo@Wrn>M?nQa!1aX-hu5CEgb5=TV>-)$`_)3El!)$l$>-I# zy!StSc>BJed+*yEm?Y7oI^s5Ft>9`3^lrwk|2` zNXCPR#?jnz$d3q{_ycO0*rdq2~xx+HqasbcCP0 zbnU|VbJ=y#3bTbpc-}tw@Pohn@BYn?|G*EvVgFgLRIN0&vcT&6`NOLhFG12q16~9b zeXNX9FM_^sddi3=~e>-+dhs z)r%L|Vq(_&y~ zhd_IS1#qG1qzrm2wvd0q(3+**2ZHq3VGL3``D(|Srf?zb=p(?6KGYuGEL(5n+MjK- zuBQvnBLJo^T{^%&y(41oXr-fZJO6U=`DS&R%7$$~$6ZTK_AEg_>yzNkf4mD2x_|dg zIUWAsI0wmMQS}kFKYz)Vl#+-bVRHPhUOuMEzO$((r@a+>r)s?FM;?a6DHUR8%Dxbe z0N9PIOTxFPpf|l;zG`{tV6;k351;b9qn8GFDhFe>!2>rhVJ*aUp8U8Ay*TCqW-tkn zlAd{O2i8VBxg$zQ?Nmevqp--T*f?xIf7{t_490e9BsJ}CMKEqZnYn5ZY=d#hXtZh$ zEKEiG$!UKBRP%&h6Z7UOos|?JU8rKGV@=w3Vn~RGIp_)0>MY{WK;PE4P*`-dkLKT{ zDj6(E(4UqCeq@dxw6LF}JS`Ae zGopq|!Yz4%DL#qMf6j}Idq@DtEPlATt+!ZO5wPV85k;hwGS8D1l?7Y1KEez4 zVaYog1ArcMtCo`a>O+tH>?5~-_xHWvrT4CK8t#0?=Y8`ZzUvIc5##*v$F9IV&-}fg zzn4=wf7`jI-%1Gl>5p7JecCg=?#s^Ia?80_yyj(p{3}=2b&9Y=lb!7iTMQuJLhK*B zDPzoB+;ZR7ecw0zj^{k%45A3`-F5HN_v)ofS6cII4O+b6h&s+1W$;JWkFTEk5ZbT; zF14Ll?y>mlM<2a($Nl&0sfudc2nVlx!EgJ4d(XXSjblob&%N*v%I5SlQxQIW+s8is z{tI9Dzub3t{|Ljd|Li+n^j&vC3WqF0r`JE6?t0DbbT}M5a5(Nu0KX2cFEO#e>RDg) z?Z4-%f8RH~_U^%hJ@iGvmI}d-~kG$-)ue$ZZ zDyN*!Jom!W&*GKGPeinyNQ=?HBS42fL4;Ilo*7{8^VTo@&gZ=BJS;JtK-)AQwh83=#~!_W$Nl%L zEPzz$z2!N-|Ns82uYLYK=Tkz&{k!kIYsHr?U2U!w0T1uH|Bfdg`}h&Za1D-j8B3)w z(w*P?Js1A%k3IazWvG{rE?zkEj1ks%AKrHH=wfxH4rmDwMsfcOpYzJU_N=onSV;z; z;oOT3sccU#iim99{_#(~|H2pim1phWKS<7d&%XWn-}N-k0I0`E6Q#}3htplZ^EN!p z2hTaP+Hb*trwK&V2`H2S0Fm*Y*M8gA{;se8rmwtfL_IPh=bR9!zVO?h_XQ8^AKo^; z_|IyF?ov%7~HZfOO-+TV^4)OA5PAWIl1^f5j_q2;2{rHKv zK8nLczjOdz2=>Ig-}gg5dz=6yo&5CQedwV}MjrQiV$F&CAcaIJ&2Rb1kDveJFZlY` z-ges=+P{1C!tZ+iANXBorEsm{mb90v9&MsS5F$)Oy2k+#L9TuD(Wh>|@0q#Gb~v>F z;=va`?^Qo=&)FBOAOT=L_re31H>Xcj5!t@&{q_ZT)-y_Dg@qE6$!t00R5>o&UTuc=q-|NxjcT!ZO=VV>pKtbye)x% zTs`@ffAyLB{><~g;-!ZN3D$RxFaBc>y!33R9EcF5VJ#j9qx_{ip8c$q12z#6xaI!e z_b0#QE1&nwGnfEq{~7n)wdPBgubQ*clNJu|efAwsKKAkBsIGSqT`NbhkaHqRtGmDN zd(QvNk3IB}OEOEuk1l#vucf_w`pmNT#m|4`|90=$7mR|;jE67S zm-+PciOM3IcYgBI??3;DI||_{X0PV@}5XoQL`J!};#l-jUAloqO)N z^#P(K6upswztnadAQIyGS-jN*ncW?jJ{K7x+f-i>6 zTYllP5a84HzV7e5^fh06;oN{Auy^0NJI}!7&qOJ-hzK0qd*2-wKlX_e=Y*rL7SV;H zj8LQtc|8sy1niqxbsy;R0%6+~{Vfw9fr-H#4lG<$dxU7d)!uAt$q|QgmuyaM&_u+u z$!3lim=4KlTOAu=1w zfjU}?*v;)^i^nAVXE@n#yfJeHGB?b|a|wO=#j#8KaVHnDd+AX(U0~IqDMY(8%kvOf zu17?AkuYG?&9_AoEt}v&ksv`Ee?x06%Q6}TISvOrt@ zd};SD5d6+<_5$##RP=@>8VU=D)us8Dc#2UpggC@DIM+`iCfa;$H{lLADUFs^%hq`V z%XG;D37(5>UTBYPsRe`>8OF-Z!WwimiT}kT)H>I;o}`M8Ep61D^xX-S)8FxKGjgpK zHLhmL>=BFF3K6S$FbO5+YJfV60fJ3t<6YpvHB>xf-WnPAqSA9Nq`G65PhbJ6vHv$L zYA=&Yxl#)VP@+5xX!?jZFk^w9B=kujqy$}TW7MuWs11$VLp+G9UDmDBU1&1WETMhG z5?e%3RAEH1Aj?1KxdRa)JtwdeHlwC;(sWlbW517TLAXX?S9md{Xrv9hvS5I;9IFp@ z$t+dgg*P-3M20BrT~j3!HwrN~Th~fDtiOSw4Y$YQ5Kg1lV7NY+(ETZrLq~JId` zRZ{q013Nj9pF?6xbT$-U5!7^2LLz}k_{GXGy65Vo+L_iVQ`j{E$G66S&ctK4AeqN; zHH<5w4AT|(@44!wk9~OmS@%Bo^B*`^QQ00{`t(C@`^3cw007V3`{L)_wnlmOE57u8 zXW{in-}=@^kAGv&7GZ?eu?oOEfD;G+Adxk*5Mcyg;|)b+5pw3l<`&WI4SFWX0to@Y z2OfEd(tyi@34#Hg3cEs*L6&NV^NB;PCM$^OxmNJEiE$Faf{W&!F%TVH`HBDISD*R= z&-){P?A3SNPS>Bh{MNTT!sJc91g?Mh!$0)XFZ#pZ`077&$X701`-Ok`_J96ltsndF z5C7}KZ~XmV`c;4M^u2HXz+e6A*Z$i7bBKYPIWQMzTHg{zo(`ut_Pc{nJ+jb0U;fA& z-*D@fy!xxYp zO(X#T`S`tWdH-*F&6iyG(Oee)lsT__h}xJZpf&#~;1?uD|@~(Nk(3 zuD$2azw3c-z3=n?!mCzy!uIj&kN=m)76poQ^1&Z|z@A2f98RMA(h9skNn8P|K%NKsy!xKEzU^lx!0eE@^9KtPFZDA&`282JUaKe|)2ILb&%F41|LiLS z=YRaq9xWAUxmwWiMULP7@lV`!*8_j-^ADbth2-R;m)`l89yz`!gCOA1d;jA5?*Eo& zz2tRYu(}hsPaHk|#!n)8W)?)~^n-u*(U<(W`(N{~Uobs&<-zZN*HaI%nRC?;LT@Vu zrs>Qj1OQV`pgYwQK%L(HuP@&7r=IuKckiD(bmiy1>s{|W1w@c1kKg!DAOG$DC)%hR!FIU%2y3Kn&@yWZNe*d?=Xy2G}`CWhIvCY*yBmh2s-=BZa zecyV|OJ4Vdt2=S~`1Qx%@Cm7a>!B1R1W04STc{i`RQ`6nOvs=N139=i4)|MqT`tWc2idS9uvHyH&^j4u)9(&W9ZvT=m|LSl1L#~xS z{SW`chpupTgNl6Xm%sX+x4!LXw*tDU*?M|_orpnEH-{+l4X*FUm-Wbo}67e(1hG z@{E_h?hA)IaQnpdC*Jr;l*(0|K4Lok(CZ(2*`I#am;U4Xr^{C#{$C&5JQNiYjRJwR zRSwHjAOG0Z=jH1kyIeyhKmf}8j(_vSGymlMU-|U?lZUSTr|*8xySD&<^5n@c{_{`2 z^6T#U=0E+M{UO!IHy{3yhkoJh8_uCq^_DOHvS+^K?LRjOWT$^?o-KB4ZMZ6c=qnkU z&GpiZz>#J>F~2J-cQ??z8zfYiAWcFG3nc^S{b`1quM>9yYmSA{kU^W`?BC?_g4$1NSr!dhN?67nkWYo z!JtgHyT>_;MBv#Xe<`;2!GbR_;r5u|i{MRsjd+SL9F#>vjq33jk#<^zrECDuw>E+a zPa9vj+jyUUZT?UJ5(KLCUx#HNO)|EHbXq*En{=Cmy+C^6>CybYM?4zFwF7~{H~zKJ#E2vD;w0Sq&CT3`Y9TwBfk916%KuZvKtt06Q(l zx{*V)eKF?kZ?rU*^rB{E8#I4dbUK6AP%?C8L1yt-2?(U``W1lIJ( zwaBp4NKF?nJf)p6jEkzM<2@pvGgK`#H8HU zKspv+kA@Y1I2DUq*Qw@>U?HEP!xi9~7f8v?{ z@`r!o!6&L^<5Ef*#i}Ieh;4P>(oB!4?7&U}S3vEhGDTx)< zs{OFhQ%Z=jbT1&lT(PZsF*9p5g9v-kTw|1a4UbwqHDpSTwpQa{ic$;qgrRC}gYp#G z!nYcVFxU3In=vzCh$*E+>oc$ZGk^T!`D=gU zO{b;TICuBx$$mFwJE10kgI#t(bD6)PGSP|M2H{C4^tA6{!-#4VATyVFuFP#Lfi%${ zj7UT&CuOl7*6vP$Vog4FbnD%ftAQGkoO2!qu6487pmpzZ*GedK_e;O=J6`+P|N4Kv z;b`{73fnJ>uJmAbhAnNdK+PT6KqrKKjYt-QAPxChjZ*MB22b&y-xZFWU5n#UBKgAa z`19ZMtbh6XfAWDRB%!w$*3U%sY}>VG>#H3;Xyfl96*DHt-u@;jU2MI;XX%lEjwXyV zT0=DHWwH;b8vJ4g#GDc!3Rgs65oK#Egi;~^6y{R2@jUv1Rm1YqslDkb+3~bFr&@WQ z%L1TaTfDAS?6hV?L}F%NccN*U^e)TO>CvaA+UdeqyzaZ7^)G(pCmw!6TwVYXpjb~m zcW;iYh3cGG zxL71!UcK}3B4`BYvON6+70D1<3!5MsIGw{Dia-o9WI&;(IK(%c<7M_8O7B7k6XrfR zSw!znudv|gd@)dfdR98ZIF2Av6rQ5Vq&Rd&J*&q$ubHFf#(GpB;vt*9jA0oNiYNUe zbK&$vE30%3THfd`ugjzK6OGx4^kFgVCY~S&w`4DXFe62;F}qnS*%Oh=7=a6|Fozpd zngqxDeny^tcglC?i>Z?g788YRyDJTeioTqU$6bu?0@ekZK_g?amY@Q7l|8tRK~iTC zi|5$LB0c;Hr|Cr0F6Lo_Ezd}H;+sjY?gs&e;?cqxrEcl_&Lz3YKq$lACT!(4t)(=N*yx&HL`S^CiF5CESg zPWXV7lJ1E4vXHZ+^e~oxt&8@F$Vqvrq)+!W)3r z`%-mnH`y9v3QQ9DqweW8$gWW|v=q2ar*d>HF#m{stmBwN4B|-_0wVyVl!lyb`O=y{ zNQk{vv@|V70jb5CS|9}u508ccp2&19_7wLB2QA!|%G%#{@kf2XI}1zoX=#*7xQaiz z9n(58$~muA>(y$#D+|AsF7zl30~)$JVXnSZUc*FM=K=&oNGWM0y8D6vZ`$Dk^vPD# zh9>od_@R%yAM_;bew(E-%~{t2BS57yTU6emC4~!qpNpXivX>KvB}5-*t(Cbd(@e2V z87)_$r|UJR4zfrR*?tVwd={+`@cfZp-ax}^LA?qNJzQ+k4}rSdL>5-L_uOI`{P57? z=kPV~;O#}sXg2+e?*-iW$+9iH#|Gu{FaFq1ZGYc4eeFHBl09F?58g&3w46PIE4!9U zVq!W#>|n{lm+nA>xL3pxkZ&N{ch zp+BEc>mP%gA6nIgd@%MObxm#K!v1>`ecOX! z4C^a+b@)Unr<7C9DGx&)@-PhJFld(?@;zob<(v|wq?^Wj88g#PBwaR#5-rH&;v*sq zPkZ+7{Ucv<^7sDX8?Q~(>RNSg7gz^nJpx`^-f$_U*3wXQ#Ofwn3wT0au^kX6C@$R< zWY7r?!!QgvCvObo;%$4W%-(PqMv(dPn||!4w!i;>{@u^K71f5dvi9(ch`N)PO~S#4 zA8@n#B(%<4fJ9g;+X3Fq_BX*)I=X4_6Gq7Y1l~E`mA+OkrPfkeri*WQ{ZDOv z-#2~jGj7Ei?nw#gfF>3gK=5hzf88JbA5MP!Cx7v{Hk=HN(NXK&p+;tj>MAE)r&g|u zJ^Q@?C0zfhmzuSSOnZJ@4x_>FuFMV7E9@<0RYj2P6sK$@xGmpTZx|G z{=;&%ZmX8m!T7VgPqU!yE`6ng$7=nR!rhvb>Ly3snB6Y_5uhVZAUu!P^z@HJGz^0t z)LUD(IB-zMrIfkMWu6sXdl%H6D%$9iOD&bFmH3MwQS4>w?4j|7+=(ccQzDfWM9+D- z5=*Zy!BYUy8Vi6t&lONo9^kk3Wz8}onsg)}%&4ij3Ses~x+HA)7!3G!&q5%;C=9QU=|S~#N?X`5jAU=Nc(MKjmE3!XJ)Z3p_pjelu;Kjfqm;`^snn&vm1T; z0T7#YMn^3@RRI9|Gl>O&+=K{Nc3cr)tHoP-+Qx6w>!mN&`$=^`5E6gp1OMWO>q`zr zSiph`1el8*_Z|5G&GhTLd*~J>RhDP^F5)1c4&n`i>0GJk*5BYG0JNjNoH!8GX?{^G z762}l;8P#`mp}TiUwqI*?~bgyzo5td*^j;Zv5Or0_*@{{+syemR8uwS@m0GIx|`y4 z`o%@2A(#dvv3*_g+I(=WRRpYmk2NK9!drY^a~=?&YCqb@XsI#=kwu~i3lURF!#L>4 zow{ZsBDGd8`7pH*0Ferh{*xbh_lGYsLS*{1*{2sSNvy^gm7~Diag%T9>@>)IQv^vJ zu-@^zVA$E}-3WZaBua-6TSOCM006J_LHNvv|JCdN&5IAjSI7`Bs*_SmL~7ME8R{k) z0G20i1mHwO(yo5iBGHrGge0T`tF;OUq3fJfsz_diB$DG&nj1ynd}G%BBEMLn`DRX zb-w62t#GB$!^P44*zUeaLq)L`Zjz6HAk_rVDbyff7hAYAHbQk65kMr?&;VQQd5b|T z(tz0f+p;|%OppE3*T3f@mmoDhFG8VKi4fKWyLYpg*tmX~B!njF9z`8REF*hJyEJ(| zvCu-3YCClXJ^t3{$Vq|-etuDCC3M@67|+_)qI+~9TkS#Ss#q5Qx|DQ#Ab@MAZa9un zHqv&HmUA>tIdY()4+oAW0}v4_fY%u6td{%Zz^RFGj$9j;qopvmi(6&)JI~N{L3()F z7^0(%#bn^LpzDn1#Ki7!S=EL`k&U>Z`j6qr zP2IgCnoD}ik0}q(S)n5*3*mLMOt@_p0q-ZUBM%{y5c1l~VmBdN{9{5APjioXlij}l zQW2KIfW*c}=RU?Gx;cWw%8rvh1W)Q}p$;NB<`Ey2eiK#}5s`%zoj4dmz(`)0*7{|} zKw1J$-`+xaKnMeiVX7V8h~62#6m|py96JbC$V4e>dVkAah$w)fSrT_ne%yN7w&`9F zO&NkM4(i=0A|eoz2JHsXykjqU)$Ru#eOM&By+Z(?gr0>1XnW8_v3_S&lo4USTfAZH zk9AN0ZzR$1nSh2p42X%6K{F7|=A@hgvPChQz7wFGNgVa4;>-9tFb#n_Ju<1a#R>ox zh;2B%!Uwzyw{uhX2TLES4yS3g?Z}I@_Fw0+iNs_4rG~Oi@(B_@@samD$$HpS(!Ch0 zAJNcJgD9@PJ0=WA?D`Mr**l%~>gAZ4M{z&ioJnUj+?+uFI^b|!YWY~&`fVpptWlE1 zO=f&L`s63)pG?v6m+ShjtA=D~p<_cYtL{7uU{EtA2F;qgs8DMiwxHMTFWyIZOxp zIR!B<@#7(|+dt(_LL%<%wLVc&-;#3{zZx0bpJ9FC!|!;aK}Bea99#oGx6&#v403fj z%8-xd(3PQ9DdR*n=i=z1?R#qU6yT*0_Z(S>nNbyNkDNUDk@r3+km7|pC0(&ZL|fg} zN*6!@piV5Mnb74C4{l7{s|(lK+i>MQ1E6NvMZ&o{QgNHy&_pAnOK{Ul6?HfA=<6^* zh|Ex#fgz_9Q4;L_gJ^Y1gnB}%ZCUn_b?gQnCN8a^#Ft*u4H9Kzo5hJl zO)%8Gx;i6W&oUQ=PEUJyvZ&|GlwYtoF#Ewh>t3R&{)^Z{$rx07ISA*5kpf!156g0<*daiaSr#^R7vUE!YL1>LSm%C+rW~`;?jK?G!8++_W6Yh zKp~DiyP*gutZZ8+8cJ}oqkBaq@(z9rC?G8!Y&K}eW}=g-yL>8r!x?bu$l`O7Qqs2m zi!#HYsIKESqZog6NYxnOzTN_P59r)_>tAi7x;+8CrB@h87v}DT-64YA@B44CSv|Bk z)}3v8?k*DAvGxl|Y121f+$LMHlZWbQdXtu+h@JdjXIj4Lyn#s(2*Xo&1lCmG!iTv z+YaXL(6bYO&Y1Ixy(uGW- zL}I&%d(_!m7B_Ppu7b`In$rc*t*^aOfY>2|=#smjrw7*93IN-Un$ZvdZKVZnb?k-U z@XZ+6yO>ENo|r_CEw84KuL>H5nTn`4`b`IpqDB@IN$Cc zF!N$L3pOi$gL~@Yx3+by3Ah7kY{gAB6m96EYEG8NHSnDV!|{mAcM4#b=XQAlZ3>%`LlZR4#~OK&~tpMIt(Oq33WR4u40)2=-j;7xP`S8 z4-o?SE_U_C$9xJ1;8m~ei~q^@<7izBfD47I-hzittRNfS_^p4I!iFJq8G@G z>gJM-x_4I#c@RAPAtp9~SQY!m26zNWmemzKlLrA5W7#y#HVXhSuoU&wU5?qMy2lP3 zNn;dRbU@y5O*|gArfFd$7lsT(1c)#pwXH1(NEBMA44~B4k@=lQd1zh($*qFBfY#o) z-L4@*&W3OOW7b^BG?5Syv`4loAO_3YGN1cJLT$?HW*I@m`Wb}pqgX)2o~~q*75}C5 z)3nkaw>C@aDM)SDP#XpRmYIW&n$Q^)(Ju ztl+D&`QnmxlMAtjlOoy{q3fln^N$Q0Vw+Jg8eDCp{mRJ#-r**IjeSP^*9u+j0E*tE zOD}W5C(}_A#Q0(_L~9}6o~%P|$Go+_QH~&CD-5@)CT{PBh6L5ixV8M;u z4t7&*Tobj@C5gKk>iW#%1*HBK+%cLH=pYp@fx^G7S2OF4sY4|OBDKD@|k$UB&h3>$o2{Br& z4)pr!>1|!v1Gh2}O*t{#Bf4~X+`%3}M@?trq9Xdgcy;gp~i z6gCMl772%}_EOh>k6wQ0tk*Dy%)ILkBTF@D5-*vl(o{2DzJO^@##{L?qxD zj?R57(5(k@@eGM`JbLD}jDYJiN;q~88awdTL=d3m(tRARA8z%Ww&;3-2++1>I3-~@ z=cQcvuR5=7Q+5J3>NSpbm!@v3d0Q`I7ZLEl+kB!l`eS3g=F9vY3_u+wZ2^I_O-ksx z+56{MUH6P^$8`O;I02f)1Ppg?5v=R47j2Sys+2Mj)+!Jrb2jW)=NMWO6&-$~eJ{4L zuS68F1gP!@3&A}nz5@ze45fc=hv7y4bG`=uBA3^O;2y$6rU#%N11u)hxw(#0A#lxH z*bqg4eAUYj)sE=_L?*YRUjR!-4txwP@D2#@EKDZ@$BvjN`;D&tRayrEi zLU+K%h7pc$VHu1Cf$7ZQ_;L9QIab% z(Oyd(ytKrGF^Cx#l-SL8fExqs_PHr6@iV%eVBp1Q?#y9P+vkGRD21Kf1_W40hQyfS zB^XX&7jipM7ip##RyQM$ntJHT7SO7Ofe4EojMJGg5n*8xmE>TZffhx8QB$c&32U_P zb5=B{s~#SX35154w`w{f4kt{CLghr7{qFQo-z%P;!hQ>e*+yWIoQOz1+u<6&RW6CD zWK}SO3Y#}##tx6;zdgRfWLU9vs02e@Pk*(EoSvx9l)Zku+eN8WVZ-SRk>&2Cu zv1)?Ve%Ihw{37C_4*f(oSu_n(3A5fy{)<43whIPq$FKQELTjb2ub5|MuA*f`o>9^U zG}bo4dTYt@ECAKbfRY&4(B}x9v)_RuZPu!*t^V_7LMO4@60Ty2=fFzey~xjBSUz;4md?MOHx5V1_3?;4E>Ei4a&QwDFIg6QY7hC^1$ zur;?QO7U{s$#yTSA0Ux%1(B4qhnYvdC72P`=ZZZqAu22~7y1p$D ziri>_8#NZ=-m%dD-9j!#)m4vigUL1 zL4qcUvyU01^DyixxN=N4TeXNRLLHOhAY^=aiE9&Q_8JVbd2E z0-&v9#rz}|g~TUne?~xwDgymA+F29rjIbCSfyJ$wJ2v0|0f% z#+GEWv}TwTalUKvnpw;1*wixsjty$JwF-JYQ$uf#fZLA}sUqlYl!=|VMyflo!-i~| z4I<{0RR9oCgrT_^=mzHV?_$}GYk?a5lj!9<(8F#9KrJoopX>q0;#|d$pG1V10_vfk z=%-i;qT)cT?Rcn-b#UkUI)&l~tHCDjbRoU57SK3H689xvV zsRYb*gCOXrOxYTOYy#;aYp3{)%K!_Y=2Pp?AbKIC>8CO*5Lj>)I^IFg0$9qY4kQi2bdM8CzJ_Z(JHK*bh$%Dp*=o~1*k~22f%AN)?UWYa)pIiOK4ZIEd#CSVT z+^F1!0E?%%>o%2Ba}!Tqh=P9K2hm~TcjDZJD{cV&;UQu`F^(Wk=c<=imlxDQ_<@)@ zGDCfh<2R66+9UcIwBfbiV*9x_Q{6PscYKP)9jLv7reS{;H?hM*lrDjsFQPI3__#Lsxy^$LM1C)SMq}x8wF{Zt8;aMHM*l?Ffmie00SoJV^~`Y0}eyhIr_@8y~qK8Py)iNc^dFE zTZl(UVk`rowavw zX9z;e*-zSX0;0wPGjA!T0HoH+ zmBaX$Y};#`(f+Jb3i_r$mA<4UiV*O?qa_t&-6-p)VT3M8yQ2-$ey^t;p&qX3Ng`=e z?EP8exl8^ccXkuv#QXZYWbxO9H}Ijk)^r{xNbQ=}nAW*5aDQt|ZTkrkky)5)2xK@* z@;!hM^^0l({55FKvpw0`o`tv|YP!~5>)Q@`;^=+g8%;dxV(D55MQSLn6Dx3F8ctC^ zB4RlX)RRQ5YJfpdte;9liQqKsys!Yo+Y=^46s`hY0hK41u*(}pQUGzcnnkTsmjHlh z!q7fpjB)|KA>t1PHPP^!p>aUK;Td%B%}4|gm8Ko6(K=gulMMzj`pT2^-l-ORawt{E;AA*<5qCHH^bh1X!_&Q3nCT3LyNRnXU1+~k%Z z!kUo(Cdt@nWy0w^#ukByMEXKpO}egso;?g_;BS*QMQ@zw6A_L_s)bNoApK;Tp)!Ia zYH(q$**+9s8#Z5@Vi0!N2ORQ?poPX(fhGucvIlrV%#>zHT<4C1(NGj5j$;_&o?vE- z#}o)GQ11e=#ZCS@iK#J2a<*bfgb^TGR(G#5DRL{dq;9n4iG3gw3tk&t`KSS1R~Po|1kFCb>bxwy4}4! z{_bE~6}|tn+prrf^e!j5r|wt^r-8WkEvC0K)!v;;M%QP%JoflEMYt+|buo?iY%>o982{ppBswD?7wtfsP@CQUp9?@(6TyP0@viCl( z8zrC~+XAk6y{s?%tRfHJ`zReT+~E82iEhyLaYN`t7LjS1YUOjkE;0Xqdtr+K zjFAFSlOh0?xOER{QYdl9j=yos8^GEQjw3s#%nXM@0|`5A#B3U|PQ5N=fZto&}SNp^I=#$s>q5eWi#f82H;H1tt0 zBI=p$V2jo9pq?E&E~;~3zs_iP5tRSXnML!Z2!1jm#)$@?BZ69M3oC8e-%TrZ#ttox zN-2qGS5#yc1ztX)h5ePT4#-FA|EM-tl0gs~oX|#UsU6a!g=qFne+0U)d{%Zg#N#9C z{^aAZM@Zmuf060F-L}lhIquqhZ1?A$9*)_T!~p<3SzWks+BR*qng}x@ddRy!(xNu^ zyC5PI-o=}rs1Z(V8d{+3kJ>D z_+(q;8GJEE-l}ZO?TeLB=zM!6cH?E=M+vDFIRVHxj=g_Hq?B^lHr=AD8N|Lc%-#j) z_4x++#FemP9_rr}yd^>wtyHr8O3enF@J5+4c~@*u|6~)h)hL^fbG(TK~%TkA>|PinU)wUJ^~-(DnMYTn4g5kl?GG8_eT zWrLu_swUqy7Iz7vPSs%s=peZhFfVzw0U%gG0w%9ej=?k^DIKg?E~lH|NH1)KmK!Ts^JUfK_)hjWW}hiNcl z6^6s;AMP_I=%U@v`3AovPMUbXJCbD(rk*8{?muN)wgHIMO=v(bn51^JqqGep%yYCR z^Ui~fIo*gCT7wG-@h~maTE#$zK;49UKji}jfPg)v+rI5V-*POln_9_s$3D`@r`mj%&EEY;&m(Z1z%C8ZIT({=>1GcdJA$%mqflJbdii$y1?kEYvDHIA*%FY5B&E_Sn)n)xtnV~Ysr zx!TkmnR`rOmXIdX4#klP0l|)80zDQ@C!)clsDwomWv*gPNuU`BeI0jXY*bP^8)2js zJ4go>!z%|V+OB@J8rlVE0YE<+vwb80zA6}hXpXmm8$@r#AKY(NN;Ig`j}jsyiEt$E z0x9igAshzCu9@jBPo3{f$tk8@vY~9Vjyd#jv81J zwSc6Jff-`25P;?f!M7!XM?nC-pF?b2Wn7d0*B;$4QkpSBT3S+xQKLtX5RlsF7SNx7 zbjRp{)MyZa(MX4McPZT}f(btRzkjy9+Gj8Bd-tj9I_G;G1p$75?+8nAglXA_(hIj= zwBJwq_UXzMgfhjp&z=HlH>qE`wc2%4y3&e8{qU*Wu49+x_OV|VkN9WBUK!-*zR7U4 zcvP!28z8QUAb#4;Z|5FKXvCKfblmBwR1Gro^#d*A=Lv82d}2mVk7ulg2(o)xeh|w%@PJ0ftVyKX zVG~#yGp3)j=KEMK0UlRC)~PR>R$`0~0MhXpzOoNsf8Malk?_#&BNGjo_w%nYQ90ic zVH9or>i3j4s;7wx*=y|GGs=m~0$$p!@q(Ss@zp!U2(X=ykC4;nv)0Q8!{^7I)FX;lFxiz|NyKu!zNV^j5ly zC2jvX86=Na#M9!Tp{H;v{ktEW<_{JYm_6}}N0>$G&UZ~8@U?_jmeDc?=3MTKGIukq zguH%U7B5A%q6$;JtV`X?HJNVe~?=_B3dn2FM63w(8O%_ z)W}umk-X#fC2{zQN#CN@-_b8U7iE!`M2;_QorpLKEGai8qjpj`h*UckIi1dL7h5Deg3n5v7R z(j=hl`6+YIs4whklEo2l0GqwlBC!DW&2-vlmW_Po=ns5H3TW-B|HRU~kCpUKRG#7x zJ6#B@TTYi1c)vOgt+!0{g>(eITLommw$9Un89c7W}}9< z2^&ovhNUO~9$b=>?{mXws(QSWr3=4&EP0B@(-6$u)W`|45|SDhr+oZy-}`i2{(6t* z-}scKRY;W9cO*U=(%zg7=b(@|$nKg}R z^~b7)%7ZtaJ#zbMB*=Fl|-v4orNQB-7ksWvrxe031AWs~^6YT@s zVqWcjx3bV7@yv$bNRe{rUjE{U?WrFz zt5QaK{{}f?T4g^yi05I7ysU^30~eM?6(tmx(WEp2w{m_%Bz|jwh!gM9fTB7h(YdcgGbu!|A@N^VEB?^Hrg zHGxssBWR`X@wnu4Ms!?aTu@IypeTD@3>23+&d`ahHBtBD?Vbw?%f|$nQpHOa>*wX`>pV z;GAW;GLZJf?I8zO)2T1g@6P@alVS}^-*0NHQ0eOpe76yOWJSZ{{cVLZ)c=hbckw-+ zQo@}~P%$Xdyl`z!iOJ;!UU&g3vRWW)&?|qnnR2ekR<|j+J@Ew-b|QmxW&FR{wD!I? z)qo)5JN z%O@wr1JJgRXX%Exx3Q{7@yz^=q$BzW|X1(ED-eNUEPlom8}ajRWu7E2aD1Mm|~A z*8xM0RipFn-lPQ5HY`Im`-{!?=c|6`{h*P$$Fvowt)SssP)qAH3Q{ha10yWIFzj_u z;7mHmh7;w_b4+p&+&HYZvJ<4Qa0^zGarn&x>Co(LS_+_36pRV)7W3FNLhd@5umCh3 z;+Lv%Ee~_;_$_~!rJC~9TAyRsss)zi9jDX;!dzc|%@pX%Vh04QIDo&v<(XP}_Wt7G zZ+?`IO!VMN7t%Ymr^frPSjcB869C7?wO}LLZoFACiP;9s9?fPv?aTvswD-%ot5D{1 z1Z9{0$d7wyCCnqUyY5;)tffz)T>sgs#jaFAWC!ih?s`n{^K!sTSwj57#lr`dBC;}i zbNvKFZHK{%l?UbK1|cSobkj50{%iZ9K(I_L2=P+bb zMDnF=px$3054?8GKS7oJ5mV&P>$JjuDLD(oky>a5r<(uU5}J;Z4rH!$Q`q%bPK~Bz zSSnCzf2s-)2+hyRQ?*?_)s0_@QBrp44^2Y(NzC-2`3H<2`>w>w@js}8f3#HEpLlF*>{png< zg1K4Z1QZ5_N6%G=X52qV+SS1DMcDsnIp#Z7klYzlqu2^VgIXjK1k2MwoszdjVMSfMic>>*9>Rg|Fa6gKnR5|jC&rI7Z{faQwKQLN1* z#)Tk%^N+_x#DD)%gzr2eSxVVAwru^0TEchOv#f#X_Xwu9D%$9Xhi{+`M7CYPu(S(d zlbErdzcibRzX!t@Z#x{16aPgs@y-uVY~M@zSMwQoQZO?P5d>3mICSQ;k^)uRHUD*ALddu%Ua_`F5(PMgQGEr`Vfi3&Jg`)ym|O z!@O*!>llX+>>2g@&QH=-7Xwd~M<=?&3o^qOgGig>;&?A;Yj4tmKx$RXQ-T14mtS`~ zl2=Yvjr#D7h=%w1M?P|iOpizFhOZKAiIhCqEOu!oXaaEEn-DT2u9XxRhwo3X_C*=j z5inj}exBLo;8e#7cBVysg){2RusQWkW(b<8DYKhAI!*?3IdmBSY!e3LT6ba?8EDL( zr_O_|_U_Ywp1$Mie35jDLN8rU0Hy%d-7oYT|kEnJux8XMYvTnw|ymz+-I-$~bzIX1C7a8ggf~k$0x2 z{_vi91O3HzlgAdwTXg7V$>)=6z|z?kfM2#l54&a-!^W+8rl!7e^8$Y3)Q-5gNT7{O zi16)5)_SZD@c;WnbK}yJWzd|{TX}2{8*x~^L5OGkXBLqg5tl9ZZT?|Dxt-2ouqfK4 ztV@3E&{9L~6O)lCx(e?pTD1wl-cS9W-w^Pb9V52fsK3g zvR$!>)fZ=Gz-SFsny_xSbAANPVSyt`V3Jw@*DS)e$6KkCy;HBx`pWRTI{ja zJSO;uVGL2W-S>W(tydlQE5p0VZ}7hGYKkWI{?uKqTGL?7;YrxSu4a#&hvdv zpAHUwPDvNIc{)VvIg|XW1Zc!o#-rdl^q@g-WcxguhO^7j!7|~k`)8_#*|@g2EnjXs zYHfg8EY&0Rws?w-KF||}QtmCnrO493=MMsD%lzME-R}>7&a0&%R_OP!oDGin${GvM zT*iuhVf(Y@bQ_EnXVwWKBTM?PQ-8G&uP4Kjuum$LY6dc9FG}?iR-7>uS-r+JJ62cF zZXhpt?6pl$dmM`$6M*m&7RSDXiZoAnX{^2KdC~a@R@$nuj%Sx9&bei`uf#pTW}#C6 z%#R8P4zet!Zw=Dw9bJALdmIZ>vyTE0>*ZW(>kdo_T%KAk@5 z`POiQ3_tmeF;xDYp89N^kRGSR{p#b<>uvJ08^iy0mATsG?p%uWE}MN~t(w#+jQ9gf zIc#o!st%9^-GfjycU+t6S}B2KF!6yQwo$g7}lpmG{?TECjgH4=xWPqz*0Bu47$EX^P=A2bJF5o0fNdAyk;18Q2&Or04t> z%4MXdQnI^ELEa}NMg4%?LsYXxir40EecLbP7mm-;zxOdK70U>RPcV~FQnlyh{AaN_ z_3n0+BSa&~w`<|poBYp?JZ6|=_U*+7Zyk#ji3bzf8|UGMT0-+DfmIO;je{+#$!lb_ zH`K|Ox=Vy7t301wN44B}DOOD%%J@T2kap9Ju+0*%)}5**Ta&(i@$;+sNolhmGlblz zHmVojgIRyPVGBRDGEM#A0pBKK3UZdHt2%pqv^G@iEgV~I^!bgwPr6ZN1}iP!Br4FM z&!;&b{UXjpNkqOi9fUOeU_ct#-2bmAOg5n2_{5)uj^BI|(Z;_pm6O}_^Cc_vc8)mZ z*p8Ir)$`+IXNSgq(O%y?Xg(NSr^1&M|4>lSHzjhWdw&wljHIYvsCmwnW z!s-hHl=v7FC{WF5$So#;LKU8iN6JRT#1za6Pg1Rb6cWP4+Dbt<3qlAhDkF_wLQs|A3ztJ_JZ^4yiq@%xvyf z{!WK+Iupdx2V9VR5^7KhhbK&^rJT;`l{y?15!|a>8sJ^;>K5Du{w4~FlML=)gfJX? zyxxtu#n{rVdkpN#Q7EJbObr5c#RVS_K6)~1fqbl0nW4q~+x{XJ-=U{KD&mRMR<-9* zdHKiGJGXEThkEW9l8c1~t>Y`NfaCpfB0zma4tZcqzzIj|S9+r_*xA(|C6Uv%7I|~H94FZ^o2%?}c|wo|I}?m}kSGC! zo{EYJnEzg_d1S&dj3ShM1J)1;TNgh>?jANhYyn|z&Y znqlaa0JY;z`sV*5BiWK$$vqf^|MWI9$4~8WEaebZ-_a8R`Mu&`)i5j#c|j>_^fi@4 zvXi#+yj$?Y;~Iw?8yoogcH|=^m)9&lZ7O{{7@xbv(>LUr(QgQ{rP6VH2(;f4x8BRCU&5RL-^4U!O@{|4QasQ&jrb5>|9a^oVWe`qJ<|M$zh_ z;x?w%(pQAuW8~+IHUFwd7sZ3RAwKP^o|t>ebnerSy_tA$w?Xf3O@yJ{TQ43w*^r98 z<-Ep&A9H)|Fhhh_sNrI_kYnHYY}OwPUH9=-uXgl!+sAhOcFKMU=Tyx$h#fEgScX&C zDc(x+Z0X#*hOVe8-jCOVn zu&gs~nAWe$;~{~BhY$T%klytMF(q=-dr~IH6>u#)n^wq;AY+1a~dzo#?rjOaVuJ8#JT=5f5Ol-fhilyL|wbvHDhY|Cw2r_`B)aMDB+m1aoOhEWb|&Zj=FznZd2>pX@w`9nDwE{4ocrnl(WPSQiJBL z31Ll|6d0>JAFP%eUsJDo^r*-3MGx@aloY-uEjaH$%tZ{#wg8)`Qz5^;(`gK`sevLb zN#nHjO0~?9txco&Olob47s2;HUn$OB(lvE8f=CV{8I`>d8W!EYELk43z$Y=3%e%Nop<@vGxB_CYmSWxnhi@^n;&8=Cojt_`Og#^RJR_>w-9 zs)dmOdN+m&1VjN!g+kK)*g6RravtP?-vA)mzMwq^!B230?_ZhYc=h#*f%xr*h<9Jx z18%>R=-`P=VvB+(wbxf%uV8Gx%5wd^)=nd^YFw>xnOK?iY(9b@(`#di>2~p|*f;k#6DoR%-0osbnZVM7D+iVt`qZMI z=M$(S05E1cU=3uB>tC&_TpeQD@oN`gjG7i_*HDQ^aG+Kl{2M9@=*_J5T1E;MyI(6JvLB%c?UlnZ*)~ zm(j3A%jXPH+R@MzPFAVcWIh?kYB?%aiP*eiE19Us7~`WZHjMa0EkD5b-ppPxgH|en zqA&hK)v_vD6Zs<+zGRSSm*;r+fJ~J~DqahYY7~!-ksq)tSiuhlPzbcWVPy?e1g$@? z6HM)V8T(>N>x!W;pTby5;tWg@_x5G=;5KEC*|E6pzvlG0ADG}`-5tkSolQq*k}+Ce zA+NBikE%q(&byP;uBQR;qpEcCR<+1@q+=!8^VjeDcQ>Jj&Of z$FYm3g*1{X=N}TiA9X8g4V6lEmM;!QIe!fmJ`33JJWJ&$lqE5*$P_kw`TbSk9p+K@ z(XHW=pFh37d^~0$18fC!HiD@PRZKbyo|Mbq*gnIeg} z!T0L5iG}M?_5uT~eccc#3UJYlo7H0_ispOecd_nx#eak@N z@kwE30(<-v@m&u88eKsxQ z4+T|&SC+oS0PJNxO?{CkZZK*(SWr#-$`W#o#^ zswdNa&e)37RZp;y=f~eZUgt?Ia3HUAu#e}A5kr?KLiIXpB0g6)0h^iBz$2w?@*lL# zatXfh)52$0lA`Xia!R6y2j_2fM|RaW{~qzP`@TCQpQ0srEDyK}nzIV1)$NF{CGjlW zr{(HAB08rQKDFce_gLT9#lJqc@0XwmI*yLE%j^62;^8(~Dm`d3^tv7y)x$uo_EWKo z^>gx*7XZLh#9Erl{=#5>h`T81Ti)F%a~09x@FbO{CLeU66=QI8X#o$Pl4={GBXedu zN#f_XR7|tk&-gSwEK?rfaWBW~MfD-o?PT++y1K8>fXZf4-`BPPTA?{Tvtp~@-*#Cs ztCe3$1ys8eYToKIQ@z$770Y>^8icaczw`W30)3n}2;0uLK;rq9i=qWqmk>4ISpd6R zg&c+4eyTo=e)Oe5cB1UXQDGI@W5>4q9LHq-uz!xeMn*l&T0XNTx0 z@?Sn*PdI+vx<2o{c}MdOH){WCN9EtcmFeNAuH-zS%vVz$CU;vZgQK&x^(>>&>#UE0 zF1O=LybbtIWK9C@*FWwW)xAzYSZfo0-x+$dPMH5;-Lr@xFsG@uUX}6+(M4D+*4QIM z@mZ9Ap?BCG3=ZgH3?c-)N(Rd&h`C`E4~eQhI^QO57itHhl8*A@RRFZzM;gy^W6`ln zXuCU+)IXay9cTV4M-4N!Z@ZoZzq$o^A=@dP`!u~4%W6D z@#O<#Ip??8SZ#;`DwOK{SZ{BsM}5s|**R>VDk!*!g@w7d*plg_lCOKUEl6vaTmOjJ zN5Q6BLyA1DGmZuEqke;DI&Q;^@BoAd6)ZE_owVQp(S6z|pQC2gUX4V;J3C?JXv}iP zY&Hkxw--!Jr5r6-DNUIK%bQTj2{C}w-fTCrjw^Y~7K9Yl<)S;5CH3h6=NA`m<^9{? z$?*aQ-D@5VHXr-~UY7Hn)hlqZ4l(Yp`;O(XtY_b1Yy)*KbD&L=yPu-K-PXb)q zR9rC83Z_5t$v;HThxXXjn?Gmey8EJ45uyo&<>k3otFtZ-B8%B|nMNpVlXt;!(JZ9g zeB%L^1075K|3%=GzQ)Z>y7n3kf?GdK2VAcnD9cJNm3N1BT^wNP<)Ls@&CUmv9>+C>}l>UEc`w_D+pshE^}Q zgh}RjR%875tR11@EP~t>XyPFV3ed>pk`04S%RAeeKU6#`@vFvUkK45CWeHpM+A`rW z@Q%lkMYNLxPEI+1O$;$`jJWA1A)E01$-KdvP;6VCy#2289goMbbfS*N!LHN8wQBm^FOx2i0IITpb(!K+8jDVN`78Qb9`Nw+!RMx+? zA-CX+MVpMvOX$|W^lRGkkev)aUb$ zDl139rCaT^?@{n^5x}6_ITw4~%9$^_Ka3jRzwk(M$|Ub-T!t2A5H3e4e*{6v7EA>R zWkq0`7M1pwkV^iC;;#9!)=MHxd6m`E{-QF*tT9>Q%LAlCBG)##iA?XNu5H|_ZD<86 zxeuiEuk)m0+qV5CkTTf{TwGkX-9Pu`sLyVMXx@lj>0g^a@Pt-R1~QNOV%6pkbX^=8 zaNf|iaUqu?PgA=jbdVGU`Y)8Kw5Xr?7LV4SbCI!#{Vh8Omw)}9IAsX)s02<`l`cJ- zdkHq7bXHa|)jDbRBWn@vUhiMO0i&j-!F{Zpuy86tiIt|p32E=gmDerYP{i0?JAU{= z=7o(Ac^y50Zykn2G@>f5JJdA^o-yGkn^3;-3qhn1DrN)IK&478oa zHZG)dtW^7v%qz7^at$#KJ@9%%L&JAA9Zg$aCQuR*k^#S$ei^Y2uf1siNI`$WYo$sw zo_&7BK%mXLn57z=+D=8(i^JW<$!lr-P-tdcISOd6U2(N>k==2KN-<2SK;W06e3>T= zjn!1Dus~zZrq(^ncNTxb&c<(k&)tNquL}tPEz{-jcGF^UI@laJR)p>3Qr?D!sVOOW zA?y}{&N97NNk9cEitj*)vcp^lg$Fv|uG}YSi>R5gaZ!G4W{H$ZpBCf`e1Tn*e9rKZ zv>BkPRti7({(b-ZcZT$7_M)jlpPN$|0L!SuKYQh*JWNp$r)OK`q%->{++8q`9cNJ_ zn6VQV#iX;l9s(wTYeJCV3gQWI)n4uonrTpSPEn`QOkmIBx|KmB`|Xe0nC{?T-{x8v z577(cpc6X9>mad*wM)oq~NV=Fbat^ITCjF1f8T7+;x&r5sv}k`vVOl+dVcV|tzU!$qtABp|6^p=m37Ji22M zCQP9Ml@`~n*YM0=R|lIe5rm`W#VOBjknFK2dT!g^|6b+ugU97-)0MW+Lf!1&ijiz` z(5IRHOw|C!^hG0@J#j;875U)H&97g{FofFR_TJYnJ===%Pn6~53oB~Iv3BnOm~7AS zF_>=Qh;NpkCUfhCWR9BP5#=9}v%x`M=0%Q0gw)$2kEIKLB3e*6_Yqpszpw&^G>ePV z7UbJtRMke6FLQc`Tg*D$T_~KBZ!%wU;t;!m5W+GXI`quzGFKpqC?1a2 z`eNJc&VFUtoVhgTRjTFsPj6h9zaJ8(OfZ8%F$}a7=u+xD_nW=LB)Ph-e^F%){N$8_ z;?%Y1Sa^r|2CIHNvf4innP)Z+I2A8f+J{t0zIDqzQqZTDy5c&2i(7G$^J^Vj8+Nvo z*X#-_4Ji`V6$~uGm;&>tsm*JbR3O;$%A!sKh_=z03lE%Zy1Jqnw7=~|4Gs?8Ao=hG zooVIepUBHA<4TRe+>ZcG0IEX|H;G9^WU-eJ2b;DD$*+XFXygiFdhYISLX}fO@+)dB z-g&iIXHEJtYv3}2RM=Ty-o$PLrDS^sJyE`A9%nl&CT2UX{B^l z$2w=jW-LIyQv4gn6d)e2G5aJI03H)DD^FNNeZvJoD!^DImb4i)kfnRT;?vdkb~)_i zd@ay<1a&C--|vMS_jJ8Mr5Slw2w?Zk-CfVkwj6bw5zb4CDo&1nV__3%u^|npZ%FKX zvlgu&4FUJ^IPQ_^b4caDa4MinS&|s@Y59wbi~5mt;890Wk%xhSp}PZANBC>5JncpO z3Z!}&rpw{aX-)u|bZ)>zu99V7n^@;(X@SNNq(&usa z?WVG;NeXI{38<=cwwzOLoTdDeN*LA1nC^3+FiJ0)3L6DpLu^2Efas-ioTyZ0oMhK39aB==}5|zW47c zMPX(l1PD(|!<|=OhdDgF!!Np;36vNd@54MVo|exau22W#Y!Y9AHy+d0N;bqU;f$nA zJO^jAqW&D;!U>T1Dx-}C?trmD-0Z{QK=VK$Zby-WQBSEC!E2aeeuh^_Q6-|tptQDB zCnLyAV-sEU#P>jl5TaU?NC!3<7vu(6Xhxyv<&=ndYt4yOV2bMTetGUfQuF|B{?9OA z@uK`e9oZ8H1C&ZJN{AG}90!Beg@{c#H;VuMRJe@?M0dDkky|KA$nil2c=Ltk8@*#I zKk0_b(|SEcUMu3MK$1Pk+_clu8V6b@7hDuQ+wgN=J*UG7e1dVU`jE!9xUBv&yiXsI ztskf9=4Xll4wAc{|J2%oXoo{zy1y7)2WGmPku5*3OfDBs;Q{C^w5)klB7(Z8wBM5f zRKkU&q)Ob7=J8PN1*Le;fNaSbfYG=T_4B+VxDaijqEcq8P2S^;c-?3rSe|eqmd7X{ z7eGI!f|4nHeh4d=!Urscssfk};fJt<^=IGxpo{0sfaP&W6h5IKhBBP#`^vZ_9%fk~ z2chUmP4i>#d7+`N%zf!sKi0heh(PQT<3sRltraq&H=Qvq)NNp;-+d3}Gs zeUA%uaH_pxPo{B^g&+bze3f6lzk`dIOuUtlGN?U4TsKR|G+JDB1eI}W3)L1paFA&j zaac@K_jIVw5}v{6EqK@=i;hBW$({L!V92E?z6m9ZNXVWFVU$wJqzxW!E>*_R*nQ1I zHcoDz`@ktE{Ews^Vc(m(H#iI6erH|_|8>6BEF@f6urSrK=GErH6vG{b%y;q3Z^qTV zlw|Y{^UqhJ@=QjqNsgeO+_hH1Lzw69@AHAO4=Xn=_>YDlEAP1UH#|k7(?*oS?Mu_s z{5SzBQI$H#LOjAo`-~+y6pY*uwt&kA)YP|v3pPg+IgjwhzJ4UDcyssCem!5@3_pBa zX@+ACLz2cD!k!gVI*pnRx!RT~LGEHAjaIeDv z`%f}T%>UMa`u-v$KH)fyzfljM6Yovp%WR1teW&o&S9F_p| z6}1tP)D^v!_Jl^Gi~yFobPeXu$E6KTs;|XU1{0Vibyewxpz*PI@iD%WgW{)>xU)O) zeu7e^npCIHYW=#ITv|;MEMKsbFmm%HntIR0jg_ht3j0(u($g&~fmD>`Y-k7?maT|F z{5yO8yRgiSGfyD5`m1DQs`H#+?E`hmS`@13_L<2PxICnlKFn;Q2H&_`$n0^uE-DUEk~sV}9tK-Q5$t4mAyskrhoj@T zn1C@M4LEKQ^pGwBJ$i%8iW6z6#!NEa*y5%I;^X}4o%35;RY~yxbPm&bq@xlS7aS;9 z1sT9{feTmVAZ5tMY;^N<4f3DrPb%$uypoY1o3N3InuyXVZ}Jhv2c;E<()dE?6h%n` zQk&mp^Nr&)a3wLQ1}-ihatr>e&ZL{Gcf5`D(!dN?#CoxFz}ON&MOsSWLA?%mWhjNXVBlZrRH zkQ|0^#u`7~K7=G02}{CLKu5f=ceY(nQj`yt6&E8I{NnmfJ|aXJ0pHRdSF)MS!;Vxf zst%>~n-Rb{xfHOZz7)W(zWE0Y5%BOdjSgmDLkmbyYk=#iL+8veVB~r!Vh5cJ zo*_s3x+m#UP%_Z%5>&79ZGJv(s;FsCj^0F{%)^8mT(Zb?P5{^!DK$o^;FM{ov1yYk z3UpPa6WK!c7)z$yIDtwW@^{b{Ox`O#t3#1eERAR7l^84p;K-F~ROXb6O}(E%C~K~1 z(IEn7C2csODM9U;bt}V|P)JHmpJj9@Hzo=<&*;bLw(F4Z;@bq|2jm{%suMM5V#N&u zQ)+jIPkAu9nY!u{qkzYh1bo&tkFe}1Bn4B%#h?bPek^C^;~7Q(j>Br(fS6j1+jNKb zA>Go%b6~`*V+;S~BTW43;!2j`0As=g6ii8i&?fJUun%lj+=zldJRHCZeW}NST!8bZ zoDk@L)Y7ymgH_qh%OUx#leu(MAuNbnG`Pf(1LmyV|AhK!q;XbO% zFz!f*!wwPx({azVW8y`j0;V zS|&~YS&iWi1`W1J5yE&nwQ8)FY=HxI`CuGH*9>&Tv3N_BQuG+7(Vh23VBGnG{M)9A zr13{d3@Mi}H=^yV*qUn7W_-ZshG|t$#BRGmi6$fSG zvH5X$o@Of8_>hL;EEx>)fr_Y^6!90yE_^&W zacQoOuDzj@{70(NXQ`+8P28#Z8UBK)O-%o$rZbZuj+N2bqGVPQ)ebMW%0QXGKv^)> zm`RZZ=>sJ+nw_BU{=Q$1I@d#3hE`%_udFO{0q1p6Gtoec+AK$BdTR!V4b@(UziasX zlDk&z(hHv#4&L5{be?sM(Q#kCfB*UYyPI~1B^4=Zp;!;+$vt*7>UQ-b7eT@UaWwvH2x4wRy?g8u8^wO+N;ND`0BG~pBq;>4hS_>d##sPM zPZLNb+*^#0g%foX?%VnZVSFcFaX_Cq<)B-Wph|Y%0oW$H8jF-Pdcg^J4-oH#<=CEn9Yq3NGpB1-TTS zr0Y7j2!H5Vj~Qn(Y0kKSz(5GI>;_d+oC=sdhIgP~3L)6cBv*y33TiBst(la;aPz4} zO}T{mg@Vltr{@0ilt1DHPs*gZPFv-g;I0Rk#&86bOrN5%{2X!_mbiX_$}|_kpaIbx z1|~}k-t`B^$8jAMC~E3D4|-#^)&jnF7y~)?^{OUb7|0SJckt53r*W&Itn6$u$tl_Z zTQL0iM9@j(EKGfr)~9r4kDvpA)Tbb|X85ZlI{8#{-^^^8Mvm)*>#m4Y z%-t@T^CbS%DoH$DQg7WKfAR zI`NYLVWf1*AX4VgA$MHl8cl2~_X$xXY;j;e%{#ClU076vGw|^w6=L_EW6j*Q>rIkO zEa@B4L?(XW0_HS1^Bg=CL#n};3tTVe44PCrjzkbG%gBQ9C;xZ5vzwjx>O;tCYA|3H zljFeL0&>i+z%$C3gVtm92FdXV?H7f_X^F?M=3s!Hyen8u4f9t?pR}>Jtqop3uEYb& zJIdV4ya?+09~gSW(c*+@S9%~y_DGPg=`_%NO&x-DJI{{ccK?7VlHL7y>C4U_P4`(Y z>DMIrE>HzvY?!p|VQ?mWfEJcYoW!+t5Y212JMC$+d$$5E)#0w5>>eL17An1=Rv(8~ zjnt)>8A|{xFT}x;VAHu(fA-PA!8Z<;o-`GRt|`IypVb-?6xz*2x0tmisA+IWUJPrw z_mtM&`jV*8?0THtju{}WQ~t-4K`TD%(F-YRLad8XL%47jYo#@y#rZay!hKB7AMQF-ypD z-aYNTTyq{{&0TyW6HZB8R==+YvD~iX)sd6VOis3vMY^JaH5k%FSyz$35lDOn6aCWo zbzPuYXL*EMqPQuPj}FVoWXMe$5jTl3wVn@$i%2zW^h!TZ(*YpsrJ&AGLcOYr2>Z!5 zyyoq;?tE&qe`x7(gCi)|*`!iDYTTrL1Gg%~EbC=4q)ap()TCWMnHA_u7Oq>k#73sh z$kcEaI4=000mn=}m6zvNgF-T(#{P>b73Mu=Utz~$U`X**MuXDnzjaLLM)U{RT_6?; ztr8$0QUzasvoiEa>~~|-b*}I+5J~eO$Z04fGi@TL=8xh&`d@FV*Cl<(8Oxa#u3_;g zK^qT$m=CFiGnX}w)CR7ph4Pj{88Ko3>^^D+Ex)<3@phtHev7nOGyJz){n!O73jWGo zm%5V@PyxCR#j2IV1Lp`NF?xdBSs4K7_o}tNM2vtEzZ*wsSZi7RN?i5>Uf~e_@jO)^ z$b=5Uc-b)tVw7kW#}HD2!)<5@on~K3(fZ09Xbp6j5;6xqPR^%uSp@sI%$Dc!kKu{) znf@T_q*`DHY>JpMFuJD8IyMM&u4%PB{i^g}?)n6%>Qgjv@{w48M%~=KYSgGI#MY_* z)tzKzotL$<-UW!RM&y^hc913*ObR7=ufVg>bQrC5F;6rDul1?^;H=Xl2>|iaRtFx! z$?CGj^H$Q}NM|Od&QG~cTLb3Ej+<<29NRcCx$@3d_!=E6VunnImq=E{?=uM8I$QjxfJa* z0r#(qL0vdbC$8$xBCa_IwK9V7CpYM5CrtY1Rn&|1($n%qFGVmZgD-HMKFJG?a}IWP9PGac!op9;`;}%eCIh)Wrbw?zW^o#+56ET2MQO_ z^8&eUHk*Tkk%+S3RHku7<2V9{!bG*4r<%#NF3()KXaP7QjpJ$@MxvY(Jp0e%)q&$q|Cm&XTI*SZB?X8DWFlt`8%FKXB(>yU3=81?Yan7Q+U(+8|Q{Rc0 zq0|`$QC%#BE2Bsy;!$1Gr3b!5(Q4mwg!;n+T z05b@tG>Cxi3mAqmrBSyuuErH0PZNpgUcB7ZGD{*P6y3PS!ptZvT%l^seWGE=wK9N| zQW!C?!H@^doN_H(nR!;^ky9Rqr2CXLi$@8Dfrf#QSeO$Dl594|*RLO4zkZ}E%X6J; zt$TZW!;leS9M&RGs(?_b8lf?u2n%LSpIKcGpa3utvD8v4A_~+@lv9EPMP{j7rbz(C zaafa@)-+_vpd&RaY%VcwpD|WaJ^n@n~RgL8TIP z#|fkEAXY1Z&KJ*LFaVTVNNn-IH*8|811X#)0!j%9D~qop3(f@w0;nv$&AgP#6_AOn z!dFq?W;3xMVkS)Eh?UDQq#@I4HRP;i$a%Bb9vvNTHrsL3ju1GGsg%0eObYL{O2}MQ zEr?W^Q_5OHr#Vw)?rIpd?4Xv)B#9D1noB8j5r&)xLK^dk0Ex0zaHG~(iFU9CT{F{- znJwDYEV(9zh!Bx|A1exYr<0Z>if=SMfrxc3AV8e7N=vggw!#>i$&9EiTB>#%04vhe z8cF9%_pT_AS3{@06jI9LYL%^mPY_uEO7*m9CMiNWBjE@lAhYhiD^)=!*QzHcu&`po zoQVY~C1x2{<1minI1VEXD)ajAnFo>{}+RngEIYFtFg{6wO^8fz;DJKJw TID#d|00000NkvXXu0mjfV8Urv literal 0 HcmV?d00001 diff --git a/images/pic6.png b/images/pic6.png new file mode 100644 index 0000000000000000000000000000000000000000..5637d47b5214fc9e0b9f5771719523524ccc91ba GIT binary patch literal 528966 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

    Hhw9EAQu~ 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�xz6GvtMXODd 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

    !MWA!#+4w6Y9(bjWeU0wxf;XszeBzPZ^V5kb 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

    (?:\\.|[^\\])*?)#*(?:\n|$)') - - def test(self, parent, block): - return bool(self.RE.search(block)) - - def run(self, parent, blocks): - block = blocks.pop(0) - m = self.RE.search(block) - if m: - before = block[:m.start()] # All lines before header - after = block[m.end():] # All lines after header - if before: - # As the header was not the first line of the block and the - # lines before the header must be parsed first, - # recursively parse this lines as a block. - self.parser.parseBlocks(parent, [before]) - # Create header using named groups from RE - h = etree.SubElement(parent, 'h%d' % len(m.group('level'))) - h.text = m.group('header').strip() - if after: - # Insert remaining lines as first block for future parsing. - blocks.insert(0, after) - else: # pragma: no cover - # This should never happen, but just in case... - logger.warn("We've got a problem header: %r" % block) - - -class SetextHeaderProcessor(BlockProcessor): - """ Process Setext-style Headers. """ - - # Detect Setext-style header. Must be first 2 lines of block. - RE = re.compile(r'^.*?\n[=-]+[ ]*(\n|$)', re.MULTILINE) - - def test(self, parent, block): - return bool(self.RE.match(block)) - - def run(self, parent, blocks): - lines = blocks.pop(0).split('\n') - # Determine level. `=` is 1 and `-` is 2. - if lines[1].startswith('='): - level = 1 - else: - level = 2 - h = etree.SubElement(parent, 'h%d' % level) - h.text = lines[0].strip() - if len(lines) > 2: - # Block contains additional lines. Add to master blocks for later. - blocks.insert(0, '\n'.join(lines[2:])) - - -class HRProcessor(BlockProcessor): - """ Process Horizontal Rules. """ - - # Python's `re` module doesn't officially support atomic grouping. However you can fake it. - # See https://stackoverflow.com/a/13577411/866026 - RE = r'^[ ]{0,3}(?=(?P(-+[ ]{0,2}){3,}|(_+[ ]{0,2}){3,}|(\*+[ ]{0,2}){3,}))(?P=atomicgroup)[ ]*$' - # Detect hr on any line of a block. - SEARCH_RE = re.compile(RE, re.MULTILINE) - - def test(self, parent, block): - m = self.SEARCH_RE.search(block) - if m: - # Save match object on class instance so we can use it later. - self.match = m - return True - return False - - def run(self, parent, blocks): - block = blocks.pop(0) - match = self.match - # Check for lines in block before `hr`. - prelines = block[:match.start()].rstrip('\n') - if prelines: - # Recursively parse lines before `hr` so they get parsed first. - self.parser.parseBlocks(parent, [prelines]) - # create hr - etree.SubElement(parent, 'hr') - # check for lines in block after `hr`. - postlines = block[match.end():].lstrip('\n') - if postlines: - # Add lines after `hr` to master blocks for later parsing. - blocks.insert(0, postlines) - - -class EmptyBlockProcessor(BlockProcessor): - """ Process blocks that are empty or start with an empty line. """ - - def test(self, parent, block): - return not block or block.startswith('\n') - - def run(self, parent, blocks): - block = blocks.pop(0) - filler = '\n\n' - if block: - # Starts with empty line - # Only replace a single line. - filler = '\n' - # Save the rest for later. - theRest = block[1:] - if theRest: - # Add remaining lines to master blocks for later. - blocks.insert(0, theRest) - sibling = self.lastChild(parent) - if (sibling is not None and sibling.tag == 'pre' and - len(sibling) and sibling[0].tag == 'code'): - # Last block is a code block. Append to preserve whitespace. - sibling[0].text = util.AtomicString( - '{}{}'.format(sibling[0].text, filler) - ) - - -class ReferenceProcessor(BlockProcessor): - """ Process link references. """ - RE = re.compile( - r'^[ ]{0,3}\[([^\[\]]*)\]:[ ]*\n?[ ]*([^\s]+)[ ]*(?:\n[ ]*)?((["\'])(.*)\4[ ]*|\((.*)\)[ ]*)?$', re.MULTILINE - ) - - def test(self, parent, block): - return True - - def run(self, parent, blocks): - block = blocks.pop(0) - m = self.RE.search(block) - if m: - id = m.group(1).strip().lower() - link = m.group(2).lstrip('<').rstrip('>') - title = m.group(5) or m.group(6) - self.parser.md.references[id] = (link, title) - if block[m.end():].strip(): - # Add any content after match back to blocks as separate block - blocks.insert(0, block[m.end():].lstrip('\n')) - if block[:m.start()].strip(): - # Add any content before match back to blocks as separate block - blocks.insert(0, block[:m.start()].rstrip('\n')) - return True - # No match. Restore block. - blocks.insert(0, block) - return False - - -class ParagraphProcessor(BlockProcessor): - """ Process Paragraph blocks. """ - - def test(self, parent, block): - return True - - def run(self, parent, blocks): - block = blocks.pop(0) - if block.strip(): - # Not a blank block. Add to parent, otherwise throw it away. - if self.parser.state.isstate('list'): - # The parent is a tight-list. - # - # Check for any children. This will likely only happen in a - # tight-list when a header isn't followed by a blank line. - # For example: - # - # * # Header - # Line 2 of list item - not part of header. - sibling = self.lastChild(parent) - if sibling is not None: - # Insert after sibling. - if sibling.tail: - sibling.tail = '{}\n{}'.format(sibling.tail, block) - else: - sibling.tail = '\n%s' % block - else: - # Append to parent.text - if parent.text: - parent.text = '{}\n{}'.format(parent.text, block) - else: - parent.text = block.lstrip() - else: - # Create a regular paragraph - p = etree.SubElement(parent, 'p') - p.text = block.lstrip() diff --git a/plugins/markdown_preview/markdown/core.py b/plugins/markdown_preview/markdown/core.py deleted file mode 100644 index 6b556b4..0000000 --- a/plugins/markdown_preview/markdown/core.py +++ /dev/null @@ -1,510 +0,0 @@ -# Python Markdown - -# A Python implementation of John Gruber's Markdown. - -# Documentation: https://python-markdown.github.io/ -# GitHub: https://github.com/Python-Markdown/markdown/ -# PyPI: https://pypi.org/project/Markdown/ - -# Started by Manfred Stienstra (http://www.dwerg.net/). -# Maintained for a few years by Yuri Takhteyev (http://www.freewisdom.org). -# Currently maintained by Waylan Limberg (https://github.com/waylan), -# Dmitry Shachnev (https://github.com/mitya57) and Isaac Muse (https://github.com/facelessuser). - -# Copyright 2007-2023 The Python Markdown Project (v. 1.7 and later) -# Copyright 2004, 2005, 2006 Yuri Takhteyev (v. 0.2-1.6b) -# Copyright 2004 Manfred Stienstra (the original version) - -# License: BSD (see LICENSE.md for details). - -from __future__ import annotations - -import codecs -import sys -import logging -import importlib -from typing import TYPE_CHECKING, Any, Callable, ClassVar, Mapping, Sequence, TextIO -from . import util -from .preprocessors import build_preprocessors -from .blockprocessors import build_block_parser -from .treeprocessors import build_treeprocessors -from .inlinepatterns import build_inlinepatterns -from .postprocessors import build_postprocessors -from .extensions import Extension -from .serializers import to_html_string, to_xhtml_string -from .util import BLOCK_LEVEL_ELEMENTS - -if TYPE_CHECKING: # pragma: no cover - from xml.etree.ElementTree import Element - -__all__ = ['Markdown', 'markdown', 'markdownFromFile'] - - -logger = logging.getLogger('MARKDOWN') - - -class Markdown: - """ - A parser which converts Markdown to HTML. - - Attributes: - Markdown.tab_length (int): The number of spaces which correspond to a single tab. Default: `4`. - Markdown.ESCAPED_CHARS (list[str]): List of characters which get the backslash escape treatment. - Markdown.block_level_elements (list[str]): List of HTML tags which get treated as block-level elements. - See [`markdown.util.BLOCK_LEVEL_ELEMENTS`][] for the full list of elements. - Markdown.registeredExtensions (list[Extension]): List of extensions which have called - [`registerExtension`][markdown.Markdown.registerExtension] during setup. - Markdown.doc_tag (str): Element used to wrap document. Default: `div`. - Markdown.stripTopLevelTags (bool): Indicates whether the `doc_tag` should be removed. Default: 'True'. - Markdown.references (dict[str, tuple[str, str]]): A mapping of link references found in a parsed document - where the key is the reference name and the value is a tuple of the URL and title. - Markdown.htmlStash (util.HtmlStash): The instance of the `HtmlStash` used by an instance of this class. - Markdown.output_formats (dict[str, Callable[xml.etree.ElementTree.Element]]): A mapping of known output - formats by name and their respective serializers. Each serializer must be a callable which accepts an - [`Element`][xml.etree.ElementTree.Element] and returns a `str`. - Markdown.output_format (str): The output format set by - [`set_output_format`][markdown.Markdown.set_output_format]. - Markdown.serializer (Callable[xml.etree.ElementTree.Element]): The serializer set by - [`set_output_format`][markdown.Markdown.set_output_format]. - Markdown.preprocessors (util.Registry): A collection of [`preprocessors`][markdown.preprocessors]. - Markdown.parser (blockparser.BlockParser): A collection of [`blockprocessors`][markdown.blockprocessors]. - Markdown.inlinePatterns (util.Registry): A collection of [`inlinepatterns`][markdown.inlinepatterns]. - Markdown.treeprocessors (util.Registry): A collection of [`treeprocessors`][markdown.treeprocessors]. - Markdown.postprocessors (util.Registry): A collection of [`postprocessors`][markdown.postprocessors]. - - """ - - doc_tag = "div" # Element used to wrap document - later removed - - output_formats: ClassVar[dict[str, Callable[[Element], str]]] = { - 'html': to_html_string, - 'xhtml': to_xhtml_string, - } - """ - A mapping of known output formats by name and their respective serializers. Each serializer must be a - callable which accepts an [`Element`][xml.etree.ElementTree.Element] and returns a `str`. - """ - - def __init__(self, **kwargs): - """ - Creates a new Markdown instance. - - Keyword Arguments: - extensions (list[Extension | str]): A list of extensions. - - If an item is an instance of a subclass of [`markdown.extensions.Extension`][], - the instance will be used as-is. If an item is of type `str`, it is passed - to [`build_extension`][markdown.Markdown.build_extension] with its corresponding - `extension_configs` and the returned instance of [`markdown.extensions.Extension`][] - is used. - extension_configs (dict[str, dict[str, Any]]): Configuration settings for extensions. - output_format (str): Format of output. Supported formats are: - - * `xhtml`: Outputs XHTML style tags. Default. - * `html`: Outputs HTML style tags. - tab_length (int): Length of tabs in the source. Default: `4` - - """ - - self.tab_length: int = kwargs.get('tab_length', 4) - - self.ESCAPED_CHARS: list[str] = [ - '\\', '`', '*', '_', '{', '}', '[', ']', '(', ')', '>', '#', '+', '-', '.', '!' - ] - """ List of characters which get the backslash escape treatment. """ - - self.block_level_elements: list[str] = BLOCK_LEVEL_ELEMENTS.copy() - - self.registeredExtensions: list[Extension] = [] - self.docType = "" # TODO: Maybe delete this. It does not appear to be used anymore. - self.stripTopLevelTags: bool = True - - self.build_parser() - - self.references: dict[str, tuple[str, str]] = {} - self.htmlStash: util.HtmlStash = util.HtmlStash() - self.registerExtensions(extensions=kwargs.get('extensions', []), - configs=kwargs.get('extension_configs', {})) - self.set_output_format(kwargs.get('output_format', 'xhtml')) - self.reset() - - def build_parser(self) -> Markdown: - """ - Build the parser from the various parts. - - Assigns a value to each of the following attributes on the class instance: - - * **`Markdown.preprocessors`** ([`Registry`][markdown.util.Registry]) -- A collection of - [`preprocessors`][markdown.preprocessors]. - * **`Markdown.parser`** ([`BlockParser`][markdown.blockparser.BlockParser]) -- A collection of - [`blockprocessors`][markdown.blockprocessors]. - * **`Markdown.inlinePatterns`** ([`Registry`][markdown.util.Registry]) -- A collection of - [`inlinepatterns`][markdown.inlinepatterns]. - * **`Markdown.treeprocessors`** ([`Registry`][markdown.util.Registry]) -- A collection of - [`treeprocessors`][markdown.treeprocessors]. - * **`Markdown.postprocessors`** ([`Registry`][markdown.util.Registry]) -- A collection of - [`postprocessors`][markdown.postprocessors]. - - This method could be redefined in a subclass to build a custom parser which is made up of a different - combination of processors and patterns. - - """ - self.preprocessors = build_preprocessors(self) - self.parser = build_block_parser(self) - self.inlinePatterns = build_inlinepatterns(self) - self.treeprocessors = build_treeprocessors(self) - self.postprocessors = build_postprocessors(self) - return self - - def registerExtensions( - self, - extensions: Sequence[Extension | str], - configs: Mapping[str, Mapping[str, Any]] - ) -> Markdown: - """ - Load a list of extensions into an instance of the `Markdown` class. - - Arguments: - extensions (list[Extension | str]): A list of extensions. - - If an item is an instance of a subclass of [`markdown.extensions.Extension`][], - the instance will be used as-is. If an item is of type `str`, it is passed - to [`build_extension`][markdown.Markdown.build_extension] with its corresponding `configs` and the - returned instance of [`markdown.extensions.Extension`][] is used. - configs (dict[str, dict[str, Any]]): Configuration settings for extensions. - - """ - for ext in extensions: - if isinstance(ext, str): - ext = self.build_extension(ext, configs.get(ext, {})) - if isinstance(ext, Extension): - ext.extendMarkdown(self) - logger.debug( - 'Successfully loaded extension "%s.%s".' - % (ext.__class__.__module__, ext.__class__.__name__) - ) - elif ext is not None: - raise TypeError( - 'Extension "{}.{}" must be of type: "{}.{}"'.format( - ext.__class__.__module__, ext.__class__.__name__, - Extension.__module__, Extension.__name__ - ) - ) - return self - - def build_extension(self, ext_name: str, configs: Mapping[str, Any]) -> Extension: - """ - Build extension from a string name, then return an instance using the given `configs`. - - Arguments: - ext_name: Name of extension as a string. - configs: Configuration settings for extension. - - Returns: - An instance of the extension with the given configuration settings. - - First attempt to load an entry point. The string name must be registered as an entry point in the - `markdown.extensions` group which points to a subclass of the [`markdown.extensions.Extension`][] class. - If multiple distributions have registered the same name, the first one found is returned. - - If no entry point is found, assume dot notation (`path.to.module:ClassName`). Load the specified class and - return an instance. If no class is specified, import the module and call a `makeExtension` function and return - the [`markdown.extensions.Extension`][] instance returned by that function. - """ - configs = dict(configs) - - entry_points = [ep for ep in util.get_installed_extensions() if ep.name == ext_name] - if entry_points: - ext = entry_points[0].load() - return ext(**configs) - - # Get class name (if provided): `path.to.module:ClassName` - ext_name, class_name = ext_name.split(':', 1) if ':' in ext_name else (ext_name, '') - - try: - module = importlib.import_module(ext_name) - logger.debug( - 'Successfully imported extension module "%s".' % ext_name - ) - except ImportError as e: - message = 'Failed loading extension "%s".' % ext_name - e.args = (message,) + e.args[1:] - raise - - if class_name: - # Load given class name from module. - return getattr(module, class_name)(**configs) - else: - # Expect `makeExtension()` function to return a class. - try: - return module.makeExtension(**configs) - except AttributeError as e: - message = e.args[0] - message = "Failed to initiate extension " \ - "'%s': %s" % (ext_name, message) - e.args = (message,) + e.args[1:] - raise - - def registerExtension(self, extension: Extension) -> Markdown: - """ - Register an extension as having a resettable state. - - Arguments: - extension: An instance of the extension to register. - - This should get called once by an extension during setup. A "registered" extension's - `reset` method is called by [`Markdown.reset()`][markdown.Markdown.reset]. Not all extensions have or need a - resettable state, and so it should not be assumed that all extensions are "registered." - - """ - self.registeredExtensions.append(extension) - return self - - def reset(self) -> Markdown: - """ - Resets all state variables to prepare the parser instance for new input. - - Called once upon creation of a class instance. Should be called manually between calls - to [`Markdown.convert`][markdown.Markdown.convert]. - """ - self.htmlStash.reset() - self.references.clear() - - for extension in self.registeredExtensions: - if hasattr(extension, 'reset'): - extension.reset() - - return self - - def set_output_format(self, format: str) -> Markdown: - """ - Set the output format for the class instance. - - Arguments: - format: Must be a known value in `Markdown.output_formats`. - - """ - self.output_format = format.lower().rstrip('145') # ignore number - try: - self.serializer = self.output_formats[self.output_format] - except KeyError as e: - valid_formats = list(self.output_formats.keys()) - valid_formats.sort() - message = 'Invalid Output Format: "%s". Use one of %s.' \ - % (self.output_format, - '"' + '", "'.join(valid_formats) + '"') - e.args = (message,) + e.args[1:] - raise - return self - - # Note: the `tag` argument is type annotated `Any` as ElementTree uses many various objects as tags. - # As there is no standardization in ElementTree, the type of a given tag is unpredictable. - def is_block_level(self, tag: Any) -> bool: - """ - Check if the given `tag` is a block level HTML tag. - - Returns `True` for any string listed in `Markdown.block_level_elements`. A `tag` which is - not a string always returns `False`. - - """ - if isinstance(tag, str): - return tag.lower().rstrip('/') in self.block_level_elements - # Some ElementTree tags are not strings, so return False. - return False - - def convert(self, source: str) -> str: - """ - Convert a Markdown string to a string in the specified output format. - - Arguments: - source: Markdown formatted text as Unicode or ASCII string. - - Returns: - A string in the specified output format. - - Markdown parsing takes place in five steps: - - 1. A bunch of [`preprocessors`][markdown.preprocessors] munge the input text. - 2. A [`BlockParser`][markdown.blockparser.BlockParser] parses the high-level structural elements of the - pre-processed text into an [`ElementTree`][xml.etree.ElementTree.ElementTree] object. - 3. A bunch of [`treeprocessors`][markdown.treeprocessors] are run against the - [`ElementTree`][xml.etree.ElementTree.ElementTree] object. One such `treeprocessor` - ([`markdown.treeprocessors.InlineProcessor`][]) runs [`inlinepatterns`][markdown.inlinepatterns] - against the [`ElementTree`][xml.etree.ElementTree.ElementTree] object, parsing inline markup. - 4. Some [`postprocessors`][markdown.postprocessors] are run against the text after the - [`ElementTree`][xml.etree.ElementTree.ElementTree] object has been serialized into text. - 5. The output is returned as a string. - - """ - - # Fix up the source text - if not source.strip(): - return '' # a blank Unicode string - - try: - source = str(source) - except UnicodeDecodeError as e: # pragma: no cover - # Customize error message while maintaining original traceback - e.reason += '. -- Note: Markdown only accepts Unicode input!' - raise - - # Split into lines and run the line preprocessors. - self.lines = source.split("\n") - for prep in self.preprocessors: - self.lines = prep.run(self.lines) - - # Parse the high-level elements. - root = self.parser.parseDocument(self.lines).getroot() - - # Run the tree-processors - for treeprocessor in self.treeprocessors: - newRoot = treeprocessor.run(root) - if newRoot is not None: - root = newRoot - - # Serialize _properly_. Strip top-level tags. - output = self.serializer(root) - if self.stripTopLevelTags: - try: - start = output.index( - '<%s>' % self.doc_tag) + len(self.doc_tag) + 2 - end = output.rindex('' % self.doc_tag) - output = output[start:end].strip() - except ValueError as e: # pragma: no cover - if output.strip().endswith('<%s />' % self.doc_tag): - # We have an empty document - output = '' - else: - # We have a serious problem - raise ValueError('Markdown failed to strip top-level ' - 'tags. Document=%r' % output.strip()) from e - - # Run the text post-processors - for pp in self.postprocessors: - output = pp.run(output) - - return output.strip() - - def convertFile( - self, - input: str | TextIO | None = None, - output: str | TextIO | None = None, - encoding: str | None = None, - ) -> Markdown: - """ - Converts a Markdown file and returns the HTML as a Unicode string. - - Decodes the file using the provided encoding (defaults to `utf-8`), - passes the file content to markdown, and outputs the HTML to either - the provided stream or the file with provided name, using the same - encoding as the source file. The - [`xmlcharrefreplace`](https://docs.python.org/3/library/codecs.html#error-handlers) - error handler is used when encoding the output. - - **Note:** This is the only place that decoding and encoding of Unicode - takes place in Python-Markdown. (All other code is Unicode-in / - Unicode-out.) - - Arguments: - input: File object or path. Reads from `stdin` if `None`. - output: File object or path. Writes to `stdout` if `None`. - encoding: Encoding of input and output files. Defaults to `utf-8`. - - """ - - encoding = encoding or "utf-8" - - # Read the source - if input: - if isinstance(input, str): - input_file = codecs.open(input, mode="r", encoding=encoding) - else: - input_file = codecs.getreader(encoding)(input) - text = input_file.read() - input_file.close() - else: - text = sys.stdin.read() - if not isinstance(text, str): # pragma: no cover - text = text.decode(encoding) - - text = text.lstrip('\ufeff') # remove the byte-order mark - - # Convert - html = self.convert(text) - - # Write to file or stdout - if output: - if isinstance(output, str): - output_file = codecs.open(output, "w", - encoding=encoding, - errors="xmlcharrefreplace") - output_file.write(html) - output_file.close() - else: - writer = codecs.getwriter(encoding) - output_file = writer(output, errors="xmlcharrefreplace") - output_file.write(html) - # Don't close here. User may want to write more. - else: - # Encode manually and write bytes to stdout. - html = html.encode(encoding, "xmlcharrefreplace") - try: - # Write bytes directly to buffer (Python 3). - sys.stdout.buffer.write(html) - except AttributeError: # pragma: no cover - # Probably Python 2, which works with bytes by default. - sys.stdout.write(html) - - return self - - -""" -EXPORTED FUNCTIONS -============================================================================= - -Those are the two functions we really mean to export: `markdown()` and -`markdownFromFile()`. -""" - - -def markdown(text: str, **kwargs: Any) -> str: - """ - Convert a markdown string to HTML and return HTML as a Unicode string. - - This is a shortcut function for [`Markdown`][markdown.Markdown] class to cover the most - basic use case. It initializes an instance of [`Markdown`][markdown.Markdown], loads the - necessary extensions and runs the parser on the given text. - - Arguments: - text: Markdown formatted text as Unicode or ASCII string. - - Keyword arguments: - **kwargs: Any arguments accepted by the Markdown class. - - Returns: - A string in the specified output format. - - """ - md = Markdown(**kwargs) - return md.convert(text) - - -def markdownFromFile(**kwargs: Any): - """ - Read Markdown text from a file and write output to a file or a stream. - - This is a shortcut function which initializes an instance of [`Markdown`][markdown.Markdown], - and calls the [`convertFile`][markdown.Markdown.convertFile] method rather than - [`convert`][markdown.Markdown.convert]. - - Keyword arguments: - input (str | TextIO): A file name or readable object. - output (str | TextIO): A file name or writable object. - encoding (str): Encoding of input and output. - **kwargs: Any arguments accepted by the `Markdown` class. - - """ - md = Markdown(**kwargs) - md.convertFile(kwargs.get('input', None), - kwargs.get('output', None), - kwargs.get('encoding', None)) diff --git a/plugins/markdown_preview/markdown/extensions/__init__.py b/plugins/markdown_preview/markdown/extensions/__init__.py deleted file mode 100644 index 070c4cc..0000000 --- a/plugins/markdown_preview/markdown/extensions/__init__.py +++ /dev/null @@ -1,145 +0,0 @@ -# Python Markdown - -# A Python implementation of John Gruber's Markdown. - -# Documentation: https://python-markdown.github.io/ -# GitHub: https://github.com/Python-Markdown/markdown/ -# PyPI: https://pypi.org/project/Markdown/ - -# Started by Manfred Stienstra (http://www.dwerg.net/). -# Maintained for a few years by Yuri Takhteyev (http://www.freewisdom.org). -# Currently maintained by Waylan Limberg (https://github.com/waylan), -# Dmitry Shachnev (https://github.com/mitya57) and Isaac Muse (https://github.com/facelessuser). - -# Copyright 2007-2023 The Python Markdown Project (v. 1.7 and later) -# Copyright 2004, 2005, 2006 Yuri Takhteyev (v. 0.2-1.6b) -# Copyright 2004 Manfred Stienstra (the original version) - -# License: BSD (see LICENSE.md for details). - -""" -Markdown accepts an [`Extension`][markdown.extensions.Extension] instance for each extension. Therefore, each extension -must to define a class that extends [`Extension`][markdown.extensions.Extension] and over-rides the -[`extendMarkdown`][markdown.extensions.Extension.extendMarkdown] method. Within this class one can manage configuration -options for their extension and attach the various processors and patterns which make up an extension to the -[`Markdown`][markdown.Markdown] instance. -""" - -from __future__ import annotations - -from typing import TYPE_CHECKING, Any, Mapping, Sequence -from ..util import parseBoolValue - -if TYPE_CHECKING: # pragma: no cover - from markdown import Markdown - - -class Extension: - """ Base class for extensions to subclass. """ - - config: Mapping[str, list] = {} - """ - Default configuration for an extension. - - This attribute is to be defined in a subclass and must be of the following format: - - ``` python - config = { - 'key': ['value', 'description'] - } - ``` - - Note that [`setConfig`][markdown.extensions.Extension.setConfig] will raise a [`KeyError`][] - if a default is not set for each option. - """ - - def __init__(self, **kwargs): - """ Initiate Extension and set up configs. """ - self.setConfigs(kwargs) - - def getConfig(self, key: str, default: Any = '') -> Any: - """ - Return a single configuration option value. - - Arguments: - key: The configuration option name. - default: Default value to return if key is not set. - - Returns: - Value of stored configuration option. - """ - if key in self.config: - return self.config[key][0] - else: - return default - - def getConfigs(self) -> dict[str, Any]: - """ - Return all configuration options. - - Returns: - All configuration options. - """ - return {key: self.getConfig(key) for key in self.config.keys()} - - def getConfigInfo(self) -> list[tuple[str, str]]: - """ - Return descriptions of all configuration options. - - Returns: - All descriptions of configuration options. - """ - return [(key, self.config[key][1]) for key in self.config.keys()] - - def setConfig(self, key: str, value: Any) -> None: - """ - Set a configuration option. - - If the corresponding default value set in [`config`][markdown.extensions.Extension.config] - is a `bool` value or `None`, then `value` is passed through - [`parseBoolValue`][markdown.util.parseBoolValue] before being stored. - - Arguments: - key: Name of configuration option to set. - value: Value to assign to option. - - Raises: - KeyError: If `key` is not known. - """ - if isinstance(self.config[key][0], bool): - value = parseBoolValue(value) - if self.config[key][0] is None: - value = parseBoolValue(value, preserve_none=True) - self.config[key][0] = value - - def setConfigs(self, items: Mapping[str, Any] | Sequence[tuple[str, Any]]): - """ - Loop through a collection of configuration options, passing each to - [`setConfig`][markdown.extensions.Extension.setConfig]. - - Arguments: - items: Collection of configuration options. - - Raises: - KeyError: for any unknown key. - """ - if hasattr(items, 'items'): - # it's a dict - items = items.items() - for key, value in items: - self.setConfig(key, value) - - def extendMarkdown(self, md: Markdown) -> None: - """ - Add the various processors and patterns to the Markdown Instance. - - This method must be overridden by every extension. - - Arguments: - md: The Markdown instance. - - """ - raise NotImplementedError( - 'Extension "%s.%s" must define an "extendMarkdown"' - 'method.' % (self.__class__.__module__, self.__class__.__name__) - ) diff --git a/plugins/markdown_preview/markdown/extensions/abbr.py b/plugins/markdown_preview/markdown/extensions/abbr.py deleted file mode 100644 index c060f47..0000000 --- a/plugins/markdown_preview/markdown/extensions/abbr.py +++ /dev/null @@ -1,105 +0,0 @@ -# Abbreviation Extension for Python-Markdown -# ========================================== - -# This extension adds abbreviation handling to Python-Markdown. - -# See https://Python-Markdown.github.io/extensions/abbreviations -# for documentation. - -# Original code Copyright 2007-2008 [Waylan Limberg](http://achinghead.com/) -# and [Seemant Kulleen](http://www.kulleen.org/) - -# All changes Copyright 2008-2014 The Python Markdown Project - -# License: [BSD](https://opensource.org/licenses/bsd-license.php) - -""" -This extension adds abbreviation handling to Python-Markdown. - -See the [documentation](https://Python-Markdown.github.io/extensions/abbreviations) -for details. -""" - -from __future__ import annotations - -from . import Extension -from ..blockprocessors import BlockProcessor -from ..inlinepatterns import InlineProcessor -from ..util import AtomicString -import re -import xml.etree.ElementTree as etree - - -class AbbrExtension(Extension): - """ Abbreviation Extension for Python-Markdown. """ - - def extendMarkdown(self, md): - """ Insert `AbbrPreprocessor` before `ReferencePreprocessor`. """ - md.parser.blockprocessors.register(AbbrPreprocessor(md.parser), 'abbr', 16) - - -class AbbrPreprocessor(BlockProcessor): - """ Abbreviation Preprocessor - parse text for abbr references. """ - - RE = re.compile(r'^[*]\[(?P[^\]]*)\][ ]?:[ ]*\n?[ ]*(?P.*)$', re.MULTILINE) - - def test(self, parent, block): - return True - - def run(self, parent, blocks): - """ - Find and remove all Abbreviation references from the text. - Each reference is set as a new `AbbrPattern` in the markdown instance. - - """ - block = blocks.pop(0) - m = self.RE.search(block) - if m: - abbr = m.group('abbr').strip() - title = m.group('title').strip() - self.parser.md.inlinePatterns.register( - AbbrInlineProcessor(self._generate_pattern(abbr), title), 'abbr-%s' % abbr, 2 - ) - if block[m.end():].strip(): - # Add any content after match back to blocks as separate block - blocks.insert(0, block[m.end():].lstrip('\n')) - if block[:m.start()].strip(): - # Add any content before match back to blocks as separate block - blocks.insert(0, block[:m.start()].rstrip('\n')) - return True - # No match. Restore block. - blocks.insert(0, block) - return False - - def _generate_pattern(self, text): - """ - Given a string, returns an regex pattern to match that string. - - 'HTML' -> r'(?P<abbr>[H][T][M][L])' - - Note: we force each char as a literal match (in brackets) as we don't - know what they will be beforehand. - - """ - chars = list(text) - for i in range(len(chars)): - chars[i] = r'[%s]' % chars[i] - return r'(?P<abbr>\b%s\b)' % (r''.join(chars)) - - -class AbbrInlineProcessor(InlineProcessor): - """ Abbreviation inline pattern. """ - - def __init__(self, pattern, title): - super().__init__(pattern) - self.title = title - - def handleMatch(self, m, data): - abbr = etree.Element('abbr') - abbr.text = AtomicString(m.group('abbr')) - abbr.set('title', self.title) - return abbr, m.start(0), m.end(0) - - -def makeExtension(**kwargs): # pragma: no cover - return AbbrExtension(**kwargs) diff --git a/plugins/markdown_preview/markdown/extensions/admonition.py b/plugins/markdown_preview/markdown/extensions/admonition.py deleted file mode 100644 index f05d089..0000000 --- a/plugins/markdown_preview/markdown/extensions/admonition.py +++ /dev/null @@ -1,179 +0,0 @@ -# Admonition extension for Python-Markdown -# ======================================== - -# Adds rST-style admonitions. Inspired by [rST][] feature with the same name. - -# [rST]: http://docutils.sourceforge.net/docs/ref/rst/directives.html#specific-admonitions - -# See https://Python-Markdown.github.io/extensions/admonition -# for documentation. - -# Original code Copyright [Tiago Serafim](https://www.tiagoserafim.com/). - -# All changes Copyright The Python Markdown Project - -# License: [BSD](https://opensource.org/licenses/bsd-license.php) - - -""" -Adds rST-style admonitions. Inspired by [rST][] feature with the same name. - -[rST]: http://docutils.sourceforge.net/docs/ref/rst/directives.html#specific-admonitions - -See the [documentation](https://Python-Markdown.github.io/extensions/admonition) -for details. -""" - -from __future__ import annotations - -from . import Extension -from ..blockprocessors import BlockProcessor -import xml.etree.ElementTree as etree -import re - - -class AdmonitionExtension(Extension): - """ Admonition extension for Python-Markdown. """ - - def extendMarkdown(self, md): - """ Add Admonition to Markdown instance. """ - md.registerExtension(self) - - md.parser.blockprocessors.register(AdmonitionProcessor(md.parser), 'admonition', 105) - - -class AdmonitionProcessor(BlockProcessor): - - CLASSNAME = 'admonition' - CLASSNAME_TITLE = 'admonition-title' - RE = re.compile(r'(?:^|\n)!!! ?([\w\-]+(?: +[\w\-]+)*)(?: +"(.*?)")? *(?:\n|$)') - RE_SPACES = re.compile(' +') - - def __init__(self, parser): - """Initialization.""" - - super().__init__(parser) - - self.current_sibling = None - self.content_indention = 0 - - def parse_content(self, parent, block): - """Get sibling admonition. - - Retrieve the appropriate sibling element. This can get tricky when - dealing with lists. - - """ - - old_block = block - the_rest = '' - - # We already acquired the block via test - if self.current_sibling is not None: - sibling = self.current_sibling - block, the_rest = self.detab(block, self.content_indent) - self.current_sibling = None - self.content_indent = 0 - return sibling, block, the_rest - - sibling = self.lastChild(parent) - - if sibling is None or sibling.tag != 'div' or sibling.get('class', '').find(self.CLASSNAME) == -1: - sibling = None - else: - # If the last child is a list and the content is sufficiently indented - # to be under it, then the content's sibling is in the list. - last_child = self.lastChild(sibling) - indent = 0 - while last_child is not None: - if ( - sibling is not None and block.startswith(' ' * self.tab_length * 2) and - last_child is not None and last_child.tag in ('ul', 'ol', 'dl') - ): - - # The expectation is that we'll find an `<li>` or `<dt>`. - # We should get its last child as well. - sibling = self.lastChild(last_child) - last_child = self.lastChild(sibling) if sibling is not None else None - - # Context has been lost at this point, so we must adjust the - # text's indentation level so it will be evaluated correctly - # under the list. - block = block[self.tab_length:] - indent += self.tab_length - else: - last_child = None - - if not block.startswith(' ' * self.tab_length): - sibling = None - - if sibling is not None: - indent += self.tab_length - block, the_rest = self.detab(old_block, indent) - self.current_sibling = sibling - self.content_indent = indent - - return sibling, block, the_rest - - def test(self, parent, block): - - if self.RE.search(block): - return True - else: - return self.parse_content(parent, block)[0] is not None - - def run(self, parent, blocks): - block = blocks.pop(0) - m = self.RE.search(block) - - if m: - if m.start() > 0: - self.parser.parseBlocks(parent, [block[:m.start()]]) - block = block[m.end():] # removes the first line - block, theRest = self.detab(block) - else: - sibling, block, theRest = self.parse_content(parent, block) - - if m: - klass, title = self.get_class_and_title(m) - div = etree.SubElement(parent, 'div') - div.set('class', '{} {}'.format(self.CLASSNAME, klass)) - if title: - p = etree.SubElement(div, 'p') - p.text = title - p.set('class', self.CLASSNAME_TITLE) - else: - # Sibling is a list item, but we need to wrap it's content should be wrapped in <p> - if sibling.tag in ('li', 'dd') and sibling.text: - text = sibling.text - sibling.text = '' - p = etree.SubElement(sibling, 'p') - p.text = text - - div = sibling - - self.parser.parseChunk(div, block) - - if theRest: - # This block contained unindented line(s) after the first indented - # line. Insert these lines as the first block of the master blocks - # list for future processing. - blocks.insert(0, theRest) - - def get_class_and_title(self, match): - klass, title = match.group(1).lower(), match.group(2) - klass = self.RE_SPACES.sub(' ', klass) - if title is None: - # no title was provided, use the capitalized class name as title - # e.g.: `!!! note` will render - # `<p class="admonition-title">Note</p>` - title = klass.split(' ', 1)[0].capitalize() - elif title == '': - # an explicit blank title should not be rendered - # e.g.: `!!! warning ""` will *not* render `p` with a title - title = None - return klass, title - - -def makeExtension(**kwargs): # pragma: no cover - return AdmonitionExtension(**kwargs) diff --git a/plugins/markdown_preview/markdown/extensions/attr_list.py b/plugins/markdown_preview/markdown/extensions/attr_list.py deleted file mode 100644 index 0c317d1..0000000 --- a/plugins/markdown_preview/markdown/extensions/attr_list.py +++ /dev/null @@ -1,179 +0,0 @@ -# Attribute List Extension for Python-Markdown -# ============================================ - -# Adds attribute list syntax. Inspired by -# [Maruku](http://maruku.rubyforge.org/proposal.html#attribute_lists)'s -# feature of the same name. - -# See https://Python-Markdown.github.io/extensions/attr_list -# for documentation. - -# Original code Copyright 2011 [Waylan Limberg](http://achinghead.com/). - -# All changes Copyright 2011-2014 The Python Markdown Project - -# License: [BSD](https://opensource.org/licenses/bsd-license.php) - -""" - Adds attribute list syntax. Inspired by -[Maruku](http://maruku.rubyforge.org/proposal.html#attribute_lists)'s -feature of the same name. - -See the [documentation](https://Python-Markdown.github.io/extensions/attr_list) -for details. -""" - -from __future__ import annotations -from typing import TYPE_CHECKING - -from . import Extension -from ..treeprocessors import Treeprocessor -import re - -if TYPE_CHECKING: # pragma: no cover - from xml.etree.ElementTree import Element - - -def _handle_double_quote(s, t): - k, v = t.split('=', 1) - return k, v.strip('"') - - -def _handle_single_quote(s, t): - k, v = t.split('=', 1) - return k, v.strip("'") - - -def _handle_key_value(s, t): - return t.split('=', 1) - - -def _handle_word(s, t): - if t.startswith('.'): - return '.', t[1:] - if t.startswith('#'): - return 'id', t[1:] - return t, t - - -_scanner = re.Scanner([ - (r'[^ =]+=".*?"', _handle_double_quote), - (r"[^ =]+='.*?'", _handle_single_quote), - (r'[^ =]+=[^ =]+', _handle_key_value), - (r'[^ =]+', _handle_word), - (r' ', None) -]) - - -def get_attrs(str: str) -> list[tuple[str, str]]: - """ Parse attribute list and return a list of attribute tuples. """ - return _scanner.scan(str)[0] - - -def isheader(elem: Element) -> bool: - return elem.tag in ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'] - - -class AttrListTreeprocessor(Treeprocessor): - - BASE_RE = r'\{\:?[ ]*([^\}\n ][^\}\n]*)[ ]*\}' - HEADER_RE = re.compile(r'[ ]+{}[ ]*$'.format(BASE_RE)) - BLOCK_RE = re.compile(r'\n[ ]*{}[ ]*$'.format(BASE_RE)) - INLINE_RE = re.compile(r'^{}'.format(BASE_RE)) - NAME_RE = re.compile(r'[^A-Z_a-z\u00c0-\u00d6\u00d8-\u00f6\u00f8-\u02ff' - r'\u0370-\u037d\u037f-\u1fff\u200c-\u200d' - r'\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff' - r'\uf900-\ufdcf\ufdf0-\ufffd' - r'\:\-\.0-9\u00b7\u0300-\u036f\u203f-\u2040]+') - - def run(self, doc: Element): - for elem in doc.iter(): - if self.md.is_block_level(elem.tag): - # Block level: check for `attrs` on last line of text - RE = self.BLOCK_RE - if isheader(elem) or elem.tag in ['dt', 'td', 'th']: - # header, def-term, or table cell: check for attributes at end of element - RE = self.HEADER_RE - if len(elem) and elem.tag == 'li': - # special case list items. children may include a `ul` or `ol`. - pos = None - # find the `ul` or `ol` position - for i, child in enumerate(elem): - if child.tag in ['ul', 'ol']: - pos = i - break - if pos is None and elem[-1].tail: - # use tail of last child. no `ul` or `ol`. - m = RE.search(elem[-1].tail) - if m: - self.assign_attrs(elem, m.group(1)) - elem[-1].tail = elem[-1].tail[:m.start()] - elif pos is not None and pos > 0 and elem[pos-1].tail: - # use tail of last child before `ul` or `ol` - m = RE.search(elem[pos-1].tail) - if m: - self.assign_attrs(elem, m.group(1)) - elem[pos-1].tail = elem[pos-1].tail[:m.start()] - elif elem.text: - # use text. `ul` is first child. - m = RE.search(elem.text) - if m: - self.assign_attrs(elem, m.group(1)) - elem.text = elem.text[:m.start()] - elif len(elem) and elem[-1].tail: - # has children. Get from tail of last child - m = RE.search(elem[-1].tail) - if m: - self.assign_attrs(elem, m.group(1)) - elem[-1].tail = elem[-1].tail[:m.start()] - if isheader(elem): - # clean up trailing #s - elem[-1].tail = elem[-1].tail.rstrip('#').rstrip() - elif elem.text: - # no children. Get from text. - m = RE.search(elem.text) - if m: - self.assign_attrs(elem, m.group(1)) - elem.text = elem.text[:m.start()] - if isheader(elem): - # clean up trailing #s - elem.text = elem.text.rstrip('#').rstrip() - else: - # inline: check for `attrs` at start of tail - if elem.tail: - m = self.INLINE_RE.match(elem.tail) - if m: - self.assign_attrs(elem, m.group(1)) - elem.tail = elem.tail[m.end():] - - def assign_attrs(self, elem: Element, attrs: str) -> None: - """ Assign `attrs` to element. """ - for k, v in get_attrs(attrs): - if k == '.': - # add to class - cls = elem.get('class') - if cls: - elem.set('class', '{} {}'.format(cls, v)) - else: - elem.set('class', v) - else: - # assign attribute `k` with `v` - elem.set(self.sanitize_name(k), v) - - def sanitize_name(self, name: str) -> str: - """ - Sanitize name as 'an XML Name, minus the ":"'. - See https://www.w3.org/TR/REC-xml-names/#NT-NCName - """ - return self.NAME_RE.sub('_', name) - - -class AttrListExtension(Extension): - """ Attribute List extension for Python-Markdown """ - def extendMarkdown(self, md): - md.treeprocessors.register(AttrListTreeprocessor(md), 'attr_list', 8) - md.registerExtension(self) - - -def makeExtension(**kwargs): # pragma: no cover - return AttrListExtension(**kwargs) diff --git a/plugins/markdown_preview/markdown/extensions/codehilite.py b/plugins/markdown_preview/markdown/extensions/codehilite.py deleted file mode 100644 index f8d25b0..0000000 --- a/plugins/markdown_preview/markdown/extensions/codehilite.py +++ /dev/null @@ -1,338 +0,0 @@ -# CodeHilite Extension for Python-Markdown -# ======================================== - -# Adds code/syntax highlighting to standard Python-Markdown code blocks. - -# See https://Python-Markdown.github.io/extensions/code_hilite -# for documentation. - -# Original code Copyright 2006-2008 [Waylan Limberg](http://achinghead.com/). - -# All changes Copyright 2008-2014 The Python Markdown Project - -# License: [BSD](https://opensource.org/licenses/bsd-license.php) - -""" -Adds code/syntax highlighting to standard Python-Markdown code blocks. - -See the [documentation](https://Python-Markdown.github.io/extensions/code_hilite) -for details. -""" - -from __future__ import annotations - -from . import Extension -from ..treeprocessors import Treeprocessor -from ..util import parseBoolValue - -try: # pragma: no cover - from pygments import highlight - from pygments.lexers import get_lexer_by_name, guess_lexer - from pygments.formatters import get_formatter_by_name - from pygments.util import ClassNotFound - pygments = True -except ImportError: # pragma: no cover - pygments = False - - -def parse_hl_lines(expr: str) -> list[int]: - """Support our syntax for emphasizing certain lines of code. - - `expr` should be like '1 2' to emphasize lines 1 and 2 of a code block. - Returns a list of integers, the line numbers to emphasize. - """ - if not expr: - return [] - - try: - return list(map(int, expr.split())) - except ValueError: # pragma: no cover - return [] - - -# ------------------ The Main CodeHilite Class ---------------------- -class CodeHilite: - """ - Determine language of source code, and pass it on to the Pygments highlighter. - - Usage: - - ```python - code = CodeHilite(src=some_code, lang='python') - html = code.hilite() - ``` - - Arguments: - src: Source string or any object with a `.readline` attribute. - - Keyword arguments: - lang (str): String name of Pygments lexer to use for highlighting. Default: `None`. - guess_lang (bool): Auto-detect which lexer to use. - Ignored if `lang` is set to a valid value. Default: `True`. - use_pygments (bool): Pass code to Pygments for code highlighting. If `False`, the code is - instead wrapped for highlighting by a JavaScript library. Default: `True`. - pygments_formatter (str): The name of a Pygments formatter or a formatter class used for - highlighting the code blocks. Default: `html`. - linenums (bool): An alias to Pygments `linenos` formatter option. Default: `None`. - css_class (str): An alias to Pygments `cssclass` formatter option. Default: 'codehilite'. - lang_prefix (str): Prefix prepended to the language. Default: "language-". - - Other Options: - - Any other options are accepted and passed on to the lexer and formatter. Therefore, - valid options include any options which are accepted by the `html` formatter or - whichever lexer the code's language uses. Note that most lexers do not have any - options. However, a few have very useful options, such as PHP's `startinline` option. - Any invalid options are ignored without error. - - * **Formatter options**: <https://pygments.org/docs/formatters/#HtmlFormatter> - * **Lexer Options**: <https://pygments.org/docs/lexers/> - - Additionally, when Pygments is enabled, the code's language is passed to the - formatter as an extra option `lang_str`, whose value being `{lang_prefix}{lang}`. - This option has no effect to the Pygments' builtin formatters. - - Advanced Usage: - - ```python - code = CodeHilite( - src = some_code, - lang = 'php', - startinline = True, # Lexer option. Snippet does not start with `<?php`. - linenostart = 42, # Formatter option. Snippet starts on line 42. - hl_lines = [45, 49, 50], # Formatter option. Highlight lines 45, 49, and 50. - linenos = 'inline' # Formatter option. Avoid alignment problems. - ) - html = code.hilite() - ``` - - """ - - def __init__(self, src: str, **options): - self.src = src - self.lang = options.pop('lang', None) - self.guess_lang = options.pop('guess_lang', True) - self.use_pygments = options.pop('use_pygments', True) - self.lang_prefix = options.pop('lang_prefix', 'language-') - self.pygments_formatter = options.pop('pygments_formatter', 'html') - - if 'linenos' not in options: - options['linenos'] = options.pop('linenums', None) - if 'cssclass' not in options: - options['cssclass'] = options.pop('css_class', 'codehilite') - if 'wrapcode' not in options: - # Override Pygments default - options['wrapcode'] = True - # Disallow use of `full` option - options['full'] = False - - self.options = options - - def hilite(self, shebang=True) -> str: - """ - Pass code to the [Pygments](https://pygments.org/) highlighter with - optional line numbers. The output should then be styled with CSS to - your liking. No styles are applied by default - only styling hooks - (i.e.: `<span class="k">`). - - returns : A string of html. - - """ - - self.src = self.src.strip('\n') - - if self.lang is None and shebang: - self._parseHeader() - - if pygments and self.use_pygments: - try: - lexer = get_lexer_by_name(self.lang, **self.options) - except ValueError: - try: - if self.guess_lang: - lexer = guess_lexer(self.src, **self.options) - else: - lexer = get_lexer_by_name('text', **self.options) - except ValueError: # pragma: no cover - lexer = get_lexer_by_name('text', **self.options) - if not self.lang: - # Use the guessed lexer's language instead - self.lang = lexer.aliases[0] - lang_str = f'{self.lang_prefix}{self.lang}' - if isinstance(self.pygments_formatter, str): - try: - formatter = get_formatter_by_name(self.pygments_formatter, **self.options) - except ClassNotFound: - formatter = get_formatter_by_name('html', **self.options) - else: - formatter = self.pygments_formatter(lang_str=lang_str, **self.options) - return highlight(self.src, lexer, formatter) - else: - # just escape and build markup usable by JavaScript highlighting libraries - txt = self.src.replace('&', '&') - txt = txt.replace('<', '<') - txt = txt.replace('>', '>') - txt = txt.replace('"', '"') - classes = [] - if self.lang: - classes.append('{}{}'.format(self.lang_prefix, self.lang)) - if self.options['linenos']: - classes.append('linenums') - class_str = '' - if classes: - class_str = ' class="{}"'.format(' '.join(classes)) - return '<pre class="{}"><code{}>{}\n</code></pre>\n'.format( - self.options['cssclass'], - class_str, - txt - ) - - def _parseHeader(self): - """ - Determines language of a code block from shebang line and whether the - said line should be removed or left in place. If the shebang line - contains a path (even a single /) then it is assumed to be a real - shebang line and left alone. However, if no path is given - (e.i.: `#!python` or `:::python`) then it is assumed to be a mock shebang - for language identification of a code fragment and removed from the - code block prior to processing for code highlighting. When a mock - shebang (e.i: `#!python`) is found, line numbering is turned on. When - colons are found in place of a shebang (e.i.: `:::python`), line - numbering is left in the current state - off by default. - - Also parses optional list of highlight lines, like: - - :::python hl_lines="1 3" - """ - - import re - - # split text into lines - lines = self.src.split("\n") - # pull first line to examine - fl = lines.pop(0) - - c = re.compile(r''' - (?:(?:^::+)|(?P<shebang>^[#]!)) # Shebang or 2 or more colons - (?P<path>(?:/\w+)*[/ ])? # Zero or 1 path - (?P<lang>[\w#.+-]*) # The language - \s* # Arbitrary whitespace - # Optional highlight lines, single- or double-quote-delimited - (hl_lines=(?P<quot>"|')(?P<hl_lines>.*?)(?P=quot))? - ''', re.VERBOSE) - # search first line for shebang - m = c.search(fl) - if m: - # we have a match - try: - self.lang = m.group('lang').lower() - except IndexError: # pragma: no cover - self.lang = None - if m.group('path'): - # path exists - restore first line - lines.insert(0, fl) - if self.options['linenos'] is None and m.group('shebang'): - # Overridable and Shebang exists - use line numbers - self.options['linenos'] = True - - self.options['hl_lines'] = parse_hl_lines(m.group('hl_lines')) - else: - # No match - lines.insert(0, fl) - - self.src = "\n".join(lines).strip("\n") - - -# ------------------ The Markdown Extension ------------------------------- - - -class HiliteTreeprocessor(Treeprocessor): - """ Highlight source code in code blocks. """ - - def code_unescape(self, text): - """Unescape code.""" - text = text.replace("<", "<") - text = text.replace(">", ">") - # Escaped '&' should be replaced at the end to avoid - # conflicting with < and >. - text = text.replace("&", "&") - return text - - def run(self, root): - """ Find code blocks and store in `htmlStash`. """ - blocks = root.iter('pre') - for block in blocks: - if len(block) == 1 and block[0].tag == 'code': - local_config = self.config.copy() - code = CodeHilite( - self.code_unescape(block[0].text), - tab_length=self.md.tab_length, - style=local_config.pop('pygments_style', 'default'), - **local_config - ) - placeholder = self.md.htmlStash.store(code.hilite()) - # Clear code block in `etree` instance - block.clear() - # Change to `p` element which will later - # be removed when inserting raw html - block.tag = 'p' - block.text = placeholder - - -class CodeHiliteExtension(Extension): - """ Add source code highlighting to markdown code blocks. """ - - def __init__(self, **kwargs): - # define default configs - self.config = { - 'linenums': [ - None, "Use lines numbers. True|table|inline=yes, False=no, None=auto. Default: `None`." - ], - 'guess_lang': [ - True, "Automatic language detection - Default: `True`." - ], - 'css_class': [ - "codehilite", "Set class name for wrapper <div> - Default: `codehilite`." - ], - 'pygments_style': [ - 'default', 'Pygments HTML Formatter Style (Colorscheme). Default: `default`.' - ], - 'noclasses': [ - False, 'Use inline styles instead of CSS classes - Default `False`.' - ], - 'use_pygments': [ - True, 'Highlight code blocks with pygments. Disable if using a JavaScript library. Default: `True`.' - ], - 'lang_prefix': [ - 'language-', 'Prefix prepended to the language when `use_pygments` is false. Default: `language-`.' - ], - 'pygments_formatter': [ - 'html', 'Use a specific formatter for Pygments highlighting. Default: `html`.' - ], - } - """ Default configuration options. """ - - for key, value in kwargs.items(): - if key in self.config: - self.setConfig(key, value) - else: - # manually set unknown keywords. - if isinstance(value, str): - try: - # Attempt to parse `str` as a boolean value - value = parseBoolValue(value, preserve_none=True) - except ValueError: - pass # Assume it's not a boolean value. Use as-is. - self.config[key] = [value, ''] - - def extendMarkdown(self, md): - """ Add `HilitePostprocessor` to Markdown instance. """ - hiliter = HiliteTreeprocessor(md) - hiliter.config = self.getConfigs() - md.treeprocessors.register(hiliter, 'hilite', 30) - - md.registerExtension(self) - - -def makeExtension(**kwargs): # pragma: no cover - return CodeHiliteExtension(**kwargs) diff --git a/plugins/markdown_preview/markdown/extensions/def_list.py b/plugins/markdown_preview/markdown/extensions/def_list.py deleted file mode 100644 index 54273b6..0000000 --- a/plugins/markdown_preview/markdown/extensions/def_list.py +++ /dev/null @@ -1,119 +0,0 @@ -# Definition List Extension for Python-Markdown -# ============================================= - -# Adds parsing of Definition Lists to Python-Markdown. - -# See https://Python-Markdown.github.io/extensions/definition_lists -# for documentation. - -# Original code Copyright 2008 [Waylan Limberg](http://achinghead.com) - -# All changes Copyright 2008-2014 The Python Markdown Project - -# License: [BSD](https://opensource.org/licenses/bsd-license.php) - -""" -Adds parsing of Definition Lists to Python-Markdown. - -See the [documentation](https://Python-Markdown.github.io/extensions/definition_lists) -for details. -""" - -from __future__ import annotations - -from . import Extension -from ..blockprocessors import BlockProcessor, ListIndentProcessor -import xml.etree.ElementTree as etree -import re - - -class DefListProcessor(BlockProcessor): - """ Process Definition Lists. """ - - RE = re.compile(r'(^|\n)[ ]{0,3}:[ ]{1,3}(.*?)(\n|$)') - NO_INDENT_RE = re.compile(r'^[ ]{0,3}[^ :]') - - def test(self, parent, block): - return bool(self.RE.search(block)) - - def run(self, parent, blocks): - - raw_block = blocks.pop(0) - m = self.RE.search(raw_block) - terms = [term.strip() for term in - raw_block[:m.start()].split('\n') if term.strip()] - block = raw_block[m.end():] - no_indent = self.NO_INDENT_RE.match(block) - if no_indent: - d, theRest = (block, None) - else: - d, theRest = self.detab(block) - if d: - d = '{}\n{}'.format(m.group(2), d) - else: - d = m.group(2) - sibling = self.lastChild(parent) - if not terms and sibling is None: - # This is not a definition item. Most likely a paragraph that - # starts with a colon at the beginning of a document or list. - blocks.insert(0, raw_block) - return False - if not terms and sibling.tag == 'p': - # The previous paragraph contains the terms - state = 'looselist' - terms = sibling.text.split('\n') - parent.remove(sibling) - # Acquire new sibling - sibling = self.lastChild(parent) - else: - state = 'list' - - if sibling is not None and sibling.tag == 'dl': - # This is another item on an existing list - dl = sibling - if not terms and len(dl) and dl[-1].tag == 'dd' and len(dl[-1]): - state = 'looselist' - else: - # This is a new list - dl = etree.SubElement(parent, 'dl') - # Add terms - for term in terms: - dt = etree.SubElement(dl, 'dt') - dt.text = term - # Add definition - self.parser.state.set(state) - dd = etree.SubElement(dl, 'dd') - self.parser.parseBlocks(dd, [d]) - self.parser.state.reset() - - if theRest: - blocks.insert(0, theRest) - - -class DefListIndentProcessor(ListIndentProcessor): - """ Process indented children of definition list items. """ - - # Definition lists need to be aware of all list types - ITEM_TYPES = ['dd', 'li'] - """ Include `dd` in list item types. """ - LIST_TYPES = ['dl', 'ol', 'ul'] - """ Include `dl` is list types. """ - - def create_item(self, parent, block): - """ Create a new `dd` or `li` (depending on parent) and parse the block with it as the parent. """ - - dd = etree.SubElement(parent, 'dd') - self.parser.parseBlocks(dd, [block]) - - -class DefListExtension(Extension): - """ Add definition lists to Markdown. """ - - def extendMarkdown(self, md): - """ Add an instance of `DefListProcessor` to `BlockParser`. """ - md.parser.blockprocessors.register(DefListIndentProcessor(md.parser), 'defindent', 85) - md.parser.blockprocessors.register(DefListProcessor(md.parser), 'deflist', 25) - - -def makeExtension(**kwargs): # pragma: no cover - return DefListExtension(**kwargs) diff --git a/plugins/markdown_preview/markdown/extensions/extra.py b/plugins/markdown_preview/markdown/extensions/extra.py deleted file mode 100644 index 74ebc19..0000000 --- a/plugins/markdown_preview/markdown/extensions/extra.py +++ /dev/null @@ -1,66 +0,0 @@ -# Python-Markdown Extra Extension -# =============================== - -# A compilation of various Python-Markdown extensions that imitates -# [PHP Markdown Extra](http://michelf.com/projects/php-markdown/extra/). - -# See https://Python-Markdown.github.io/extensions/extra -# for documentation. - -# Copyright The Python Markdown Project - -# License: [BSD](https://opensource.org/licenses/bsd-license.php) - -""" -A compilation of various Python-Markdown extensions that imitates -[PHP Markdown Extra](http://michelf.com/projects/php-markdown/extra/). - -Note that each of the individual extensions still need to be available -on your `PYTHONPATH`. This extension simply wraps them all up as a -convenience so that only one extension needs to be listed when -initiating Markdown. See the documentation for each individual -extension for specifics about that extension. - -There may be additional extensions that are distributed with -Python-Markdown that are not included here in Extra. Those extensions -are not part of PHP Markdown Extra, and therefore, not part of -Python-Markdown Extra. If you really would like Extra to include -additional extensions, we suggest creating your own clone of Extra -under a different name. You could also edit the `extensions` global -variable defined below, but be aware that such changes may be lost -when you upgrade to any future version of Python-Markdown. - -See the [documentation](https://Python-Markdown.github.io/extensions/extra) -for details. -""" - -from __future__ import annotations - -from . import Extension - -extensions = [ - 'fenced_code', - 'footnotes', - 'attr_list', - 'def_list', - 'tables', - 'abbr', - 'md_in_html' -] -""" The list of included extensions. """ - - -class ExtraExtension(Extension): - """ Add various extensions to Markdown class.""" - - def __init__(self, **kwargs): - """ `config` is a dumb holder which gets passed to the actual extension later. """ - self.config = kwargs - - def extendMarkdown(self, md): - """ Register extension instances. """ - md.registerExtensions(extensions, self.config) - - -def makeExtension(**kwargs): # pragma: no cover - return ExtraExtension(**kwargs) diff --git a/plugins/markdown_preview/markdown/extensions/fenced_code.py b/plugins/markdown_preview/markdown/extensions/fenced_code.py deleted file mode 100644 index 241bb6d..0000000 --- a/plugins/markdown_preview/markdown/extensions/fenced_code.py +++ /dev/null @@ -1,182 +0,0 @@ -# Fenced Code Extension for Python Markdown -# ========================================= - -# This extension adds Fenced Code Blocks to Python-Markdown. - -# See https://Python-Markdown.github.io/extensions/fenced_code_blocks -# for documentation. - -# Original code Copyright 2007-2008 [Waylan Limberg](http://achinghead.com/). - -# All changes Copyright 2008-2014 The Python Markdown Project - -# License: [BSD](https://opensource.org/licenses/bsd-license.php) - -""" -This extension adds Fenced Code Blocks to Python-Markdown. - -See the [documentation](https://Python-Markdown.github.io/extensions/fenced_code_blocks) -for details. -""" - -from __future__ import annotations - -from textwrap import dedent -from . import Extension -from ..preprocessors import Preprocessor -from .codehilite import CodeHilite, CodeHiliteExtension, parse_hl_lines -from .attr_list import get_attrs, AttrListExtension -from ..util import parseBoolValue -from ..serializers import _escape_attrib_html -import re - - -class FencedCodeExtension(Extension): - def __init__(self, **kwargs): - self.config = { - 'lang_prefix': ['language-', 'Prefix prepended to the language. Default: "language-"'] - } - """ Default configuration options. """ - super().__init__(**kwargs) - - def extendMarkdown(self, md): - """ Add `FencedBlockPreprocessor` to the Markdown instance. """ - md.registerExtension(self) - - md.preprocessors.register(FencedBlockPreprocessor(md, self.getConfigs()), 'fenced_code_block', 25) - - -class FencedBlockPreprocessor(Preprocessor): - """ Find and extract fenced code blocks. """ - - FENCED_BLOCK_RE = re.compile( - dedent(r''' - (?P<fence>^(?:~{3,}|`{3,}))[ ]* # opening fence - ((\{(?P<attrs>[^\}\n]*)\})| # (optional {attrs} or - (\.?(?P<lang>[\w#.+-]*)[ ]*)? # optional (.)lang - (hl_lines=(?P<quot>"|')(?P<hl_lines>.*?)(?P=quot)[ ]*)?) # optional hl_lines) - \n # newline (end of opening fence) - (?P<code>.*?)(?<=\n) # the code block - (?P=fence)[ ]*$ # closing fence - '''), - re.MULTILINE | re.DOTALL | re.VERBOSE - ) - - def __init__(self, md, config): - super().__init__(md) - self.config = config - self.checked_for_deps = False - self.codehilite_conf = {} - self.use_attr_list = False - # List of options to convert to boolean values - self.bool_options = [ - 'linenums', - 'guess_lang', - 'noclasses', - 'use_pygments' - ] - - def run(self, lines): - """ Match and store Fenced Code Blocks in the `HtmlStash`. """ - - # Check for dependent extensions - if not self.checked_for_deps: - for ext in self.md.registeredExtensions: - if isinstance(ext, CodeHiliteExtension): - self.codehilite_conf = ext.getConfigs() - if isinstance(ext, AttrListExtension): - self.use_attr_list = True - - self.checked_for_deps = True - - text = "\n".join(lines) - while 1: - m = self.FENCED_BLOCK_RE.search(text) - if m: - lang, id, classes, config = None, '', [], {} - if m.group('attrs'): - id, classes, config = self.handle_attrs(get_attrs(m.group('attrs'))) - if len(classes): - lang = classes.pop(0) - else: - if m.group('lang'): - lang = m.group('lang') - if m.group('hl_lines'): - # Support `hl_lines` outside of `attrs` for backward-compatibility - config['hl_lines'] = parse_hl_lines(m.group('hl_lines')) - - # If `config` is not empty, then the `codehighlite` extension - # is enabled, so we call it to highlight the code - if self.codehilite_conf and self.codehilite_conf['use_pygments'] and config.get('use_pygments', True): - local_config = self.codehilite_conf.copy() - local_config.update(config) - # Combine classes with `cssclass`. Ensure `cssclass` is at end - # as Pygments appends a suffix under certain circumstances. - # Ignore ID as Pygments does not offer an option to set it. - if classes: - local_config['css_class'] = '{} {}'.format( - ' '.join(classes), - local_config['css_class'] - ) - highliter = CodeHilite( - m.group('code'), - lang=lang, - style=local_config.pop('pygments_style', 'default'), - **local_config - ) - - code = highliter.hilite(shebang=False) - else: - id_attr = lang_attr = class_attr = kv_pairs = '' - if lang: - prefix = self.config.get('lang_prefix', 'language-') - lang_attr = f' class="{prefix}{_escape_attrib_html(lang)}"' - if classes: - class_attr = f' class="{_escape_attrib_html(" ".join(classes))}"' - if id: - id_attr = f' id="{_escape_attrib_html(id)}"' - if self.use_attr_list and config and not config.get('use_pygments', False): - # Only assign key/value pairs to code element if `attr_list` extension is enabled, key/value - # pairs were defined on the code block, and the `use_pygments` key was not set to `True`. The - # `use_pygments` key could be either set to `False` or not defined. It is omitted from output. - kv_pairs = ''.join( - f' {k}="{_escape_attrib_html(v)}"' for k, v in config.items() if k != 'use_pygments' - ) - code = self._escape(m.group('code')) - code = f'<pre{id_attr}{class_attr}><code{lang_attr}{kv_pairs}>{code}</code></pre>' - - placeholder = self.md.htmlStash.store(code) - text = f'{text[:m.start()]}\n{placeholder}\n{text[m.end():]}' - else: - break - return text.split("\n") - - def handle_attrs(self, attrs): - """ Return tuple: `(id, [list, of, classes], {configs})` """ - id = '' - classes = [] - configs = {} - for k, v in attrs: - if k == 'id': - id = v - elif k == '.': - classes.append(v) - elif k == 'hl_lines': - configs[k] = parse_hl_lines(v) - elif k in self.bool_options: - configs[k] = parseBoolValue(v, fail_on_errors=False, preserve_none=True) - else: - configs[k] = v - return id, classes, configs - - def _escape(self, txt): - """ basic html escaping """ - txt = txt.replace('&', '&') - txt = txt.replace('<', '<') - txt = txt.replace('>', '>') - txt = txt.replace('"', '"') - return txt - - -def makeExtension(**kwargs): # pragma: no cover - return FencedCodeExtension(**kwargs) diff --git a/plugins/markdown_preview/markdown/extensions/footnotes.py b/plugins/markdown_preview/markdown/extensions/footnotes.py deleted file mode 100644 index 2424dbc..0000000 --- a/plugins/markdown_preview/markdown/extensions/footnotes.py +++ /dev/null @@ -1,416 +0,0 @@ -# Footnotes Extension for Python-Markdown -# ======================================= - -# Adds footnote handling to Python-Markdown. - -# See https://Python-Markdown.github.io/extensions/footnotes -# for documentation. - -# Copyright The Python Markdown Project - -# License: [BSD](https://opensource.org/licenses/bsd-license.php) - -""" -Adds footnote handling to Python-Markdown. - -See the [documentation](https://Python-Markdown.github.io/extensions/footnotes) -for details. -""" - -from __future__ import annotations - -from . import Extension -from ..blockprocessors import BlockProcessor -from ..inlinepatterns import InlineProcessor -from ..treeprocessors import Treeprocessor -from ..postprocessors import Postprocessor -from .. import util -from collections import OrderedDict -import re -import copy -import xml.etree.ElementTree as etree - -FN_BACKLINK_TEXT = util.STX + "zz1337820767766393qq" + util.ETX -NBSP_PLACEHOLDER = util.STX + "qq3936677670287331zz" + util.ETX -RE_REF_ID = re.compile(r'(fnref)(\d+)') - - -class FootnoteExtension(Extension): - """ Footnote Extension. """ - - def __init__(self, **kwargs): - """ Setup configs. """ - - self.config = { - 'PLACE_MARKER': [ - '///Footnotes Go Here///', 'The text string that marks where the footnotes go' - ], - 'UNIQUE_IDS': [ - False, 'Avoid name collisions across multiple calls to `reset()`.' - ], - 'BACKLINK_TEXT': [ - '↩', "The text string that links from the footnote to the reader's place." - ], - 'SUPERSCRIPT_TEXT': [ - '{}', "The text string that links from the reader's place to the footnote." - ], - 'BACKLINK_TITLE': [ - 'Jump back to footnote %d in the text', - 'The text string used for the title HTML attribute of the backlink. ' - '%d will be replaced by the footnote number.' - ], - 'SEPARATOR': [ - ':', 'Footnote separator.' - ] - } - """ Default configuration options. """ - super().__init__(**kwargs) - - # In multiple invocations, emit links that don't get tangled. - self.unique_prefix = 0 - self.found_refs = {} - self.used_refs = set() - - self.reset() - - def extendMarkdown(self, md): - """ Add pieces to Markdown. """ - md.registerExtension(self) - self.parser = md.parser - self.md = md - # Insert a `blockprocessor` before `ReferencePreprocessor` - md.parser.blockprocessors.register(FootnoteBlockProcessor(self), 'footnote', 17) - - # Insert an inline pattern before `ImageReferencePattern` - FOOTNOTE_RE = r'\[\^([^\]]*)\]' # blah blah [^1] blah - md.inlinePatterns.register(FootnoteInlineProcessor(FOOTNOTE_RE, self), 'footnote', 175) - # Insert a tree-processor that would actually add the footnote div - # This must be before all other tree-processors (i.e., `inline` and - # `codehilite`) so they can run on the the contents of the div. - md.treeprocessors.register(FootnoteTreeprocessor(self), 'footnote', 50) - - # Insert a tree-processor that will run after inline is done. - # In this tree-processor we want to check our duplicate footnote tracker - # And add additional `backrefs` to the footnote pointing back to the - # duplicated references. - md.treeprocessors.register(FootnotePostTreeprocessor(self), 'footnote-duplicate', 15) - - # Insert a postprocessor after amp_substitute processor - md.postprocessors.register(FootnotePostprocessor(self), 'footnote', 25) - - def reset(self) -> None: - """ Clear footnotes on reset, and prepare for distinct document. """ - self.footnotes: OrderedDict[str, str] = OrderedDict() - self.unique_prefix += 1 - self.found_refs = {} - self.used_refs = set() - - def unique_ref(self, reference, found: bool = False): - """ Get a unique reference if there are duplicates. """ - if not found: - return reference - - original_ref = reference - while reference in self.used_refs: - ref, rest = reference.split(self.get_separator(), 1) - m = RE_REF_ID.match(ref) - if m: - reference = '%s%d%s%s' % (m.group(1), int(m.group(2))+1, self.get_separator(), rest) - else: - reference = '%s%d%s%s' % (ref, 2, self.get_separator(), rest) - - self.used_refs.add(reference) - if original_ref in self.found_refs: - self.found_refs[original_ref] += 1 - else: - self.found_refs[original_ref] = 1 - return reference - - def findFootnotesPlaceholder(self, root): - """ Return ElementTree Element that contains Footnote placeholder. """ - def finder(element): - for child in element: - if child.text: - if child.text.find(self.getConfig("PLACE_MARKER")) > -1: - return child, element, True - if child.tail: - if child.tail.find(self.getConfig("PLACE_MARKER")) > -1: - return child, element, False - child_res = finder(child) - if child_res is not None: - return child_res - return None - - res = finder(root) - return res - - def setFootnote(self, id, text) -> None: - """ Store a footnote for later retrieval. """ - self.footnotes[id] = text - - def get_separator(self): - """ Get the footnote separator. """ - return self.getConfig("SEPARATOR") - - def makeFootnoteId(self, id): - """ Return footnote link id. """ - if self.getConfig("UNIQUE_IDS"): - return 'fn%s%d-%s' % (self.get_separator(), self.unique_prefix, id) - else: - return 'fn{}{}'.format(self.get_separator(), id) - - def makeFootnoteRefId(self, id, found: bool = False): - """ Return footnote back-link id. """ - if self.getConfig("UNIQUE_IDS"): - return self.unique_ref('fnref%s%d-%s' % (self.get_separator(), self.unique_prefix, id), found) - else: - return self.unique_ref('fnref{}{}'.format(self.get_separator(), id), found) - - def makeFootnotesDiv(self, root): - """ Return `div` of footnotes as `etree` Element. """ - - if not list(self.footnotes.keys()): - return None - - div = etree.Element("div") - div.set('class', 'footnote') - etree.SubElement(div, "hr") - ol = etree.SubElement(div, "ol") - surrogate_parent = etree.Element("div") - - # Backward compatibility with old '%d' placeholder - backlink_title = self.getConfig("BACKLINK_TITLE").replace("%d", "{}") - - for index, id in enumerate(self.footnotes.keys(), start=1): - li = etree.SubElement(ol, "li") - li.set("id", self.makeFootnoteId(id)) - # Parse footnote with surrogate parent as `li` cannot be used. - # List block handlers have special logic to deal with `li`. - # When we are done parsing, we will copy everything over to `li`. - self.parser.parseChunk(surrogate_parent, self.footnotes[id]) - for el in list(surrogate_parent): - li.append(el) - surrogate_parent.remove(el) - backlink = etree.Element("a") - backlink.set("href", "#" + self.makeFootnoteRefId(id)) - backlink.set("class", "footnote-backref") - backlink.set( - "title", - backlink_title.format(index) - ) - backlink.text = FN_BACKLINK_TEXT - - if len(li): - node = li[-1] - if node.tag == "p": - node.text = node.text + NBSP_PLACEHOLDER - node.append(backlink) - else: - p = etree.SubElement(li, "p") - p.append(backlink) - return div - - -class FootnoteBlockProcessor(BlockProcessor): - """ Find all footnote references and store for later use. """ - - RE = re.compile(r'^[ ]{0,3}\[\^([^\]]*)\]:[ ]*(.*)$', re.MULTILINE) - - def __init__(self, footnotes): - super().__init__(footnotes.parser) - self.footnotes = footnotes - - def test(self, parent, block): - return True - - def run(self, parent, blocks): - """ Find, set, and remove footnote definitions. """ - block = blocks.pop(0) - m = self.RE.search(block) - if m: - id = m.group(1) - fn_blocks = [m.group(2)] - - # Handle rest of block - therest = block[m.end():].lstrip('\n') - m2 = self.RE.search(therest) - if m2: - # Another footnote exists in the rest of this block. - # Any content before match is continuation of this footnote, which may be lazily indented. - before = therest[:m2.start()].rstrip('\n') - fn_blocks[0] = '\n'.join([fn_blocks[0], self.detab(before)]).lstrip('\n') - # Add back to blocks everything from beginning of match forward for next iteration. - blocks.insert(0, therest[m2.start():]) - else: - # All remaining lines of block are continuation of this footnote, which may be lazily indented. - fn_blocks[0] = '\n'.join([fn_blocks[0], self.detab(therest)]).strip('\n') - - # Check for child elements in remaining blocks. - fn_blocks.extend(self.detectTabbed(blocks)) - - footnote = "\n\n".join(fn_blocks) - self.footnotes.setFootnote(id, footnote.rstrip()) - - if block[:m.start()].strip(): - # Add any content before match back to blocks as separate block - blocks.insert(0, block[:m.start()].rstrip('\n')) - return True - # No match. Restore block. - blocks.insert(0, block) - return False - - def detectTabbed(self, blocks) -> list[str]: - """ Find indented text and remove indent before further processing. - - Returns: - A list of blocks with indentation removed. - """ - fn_blocks = [] - while blocks: - if blocks[0].startswith(' '*4): - block = blocks.pop(0) - # Check for new footnotes within this block and split at new footnote. - m = self.RE.search(block) - if m: - # Another footnote exists in this block. - # Any content before match is continuation of this footnote, which may be lazily indented. - before = block[:m.start()].rstrip('\n') - fn_blocks.append(self.detab(before)) - # Add back to blocks everything from beginning of match forward for next iteration. - blocks.insert(0, block[m.start():]) - # End of this footnote. - break - else: - # Entire block is part of this footnote. - fn_blocks.append(self.detab(block)) - else: - # End of this footnote. - break - return fn_blocks - - def detab(self, block): - """ Remove one level of indent from a block. - - Preserve lazily indented blocks by only removing indent from indented lines. - """ - lines = block.split('\n') - for i, line in enumerate(lines): - if line.startswith(' '*4): - lines[i] = line[4:] - return '\n'.join(lines) - - -class FootnoteInlineProcessor(InlineProcessor): - """ `InlineProcessor` for footnote markers in a document's body text. """ - - def __init__(self, pattern, footnotes): - super().__init__(pattern) - self.footnotes = footnotes - - def handleMatch(self, m, data): - id = m.group(1) - if id in self.footnotes.footnotes.keys(): - sup = etree.Element("sup") - a = etree.SubElement(sup, "a") - sup.set('id', self.footnotes.makeFootnoteRefId(id, found=True)) - a.set('href', '#' + self.footnotes.makeFootnoteId(id)) - a.set('class', 'footnote-ref') - a.text = self.footnotes.getConfig("SUPERSCRIPT_TEXT").format( - list(self.footnotes.footnotes.keys()).index(id) + 1 - ) - return sup, m.start(0), m.end(0) - else: - return None, None, None - - -class FootnotePostTreeprocessor(Treeprocessor): - """ Amend footnote div with duplicates. """ - - def __init__(self, footnotes): - self.footnotes = footnotes - - def add_duplicates(self, li, duplicates) -> None: - """ Adjust current `li` and add the duplicates: `fnref2`, `fnref3`, etc. """ - for link in li.iter('a'): - # Find the link that needs to be duplicated. - if link.attrib.get('class', '') == 'footnote-backref': - ref, rest = link.attrib['href'].split(self.footnotes.get_separator(), 1) - # Duplicate link the number of times we need to - # and point the to the appropriate references. - links = [] - for index in range(2, duplicates + 1): - sib_link = copy.deepcopy(link) - sib_link.attrib['href'] = '%s%d%s%s' % (ref, index, self.footnotes.get_separator(), rest) - links.append(sib_link) - self.offset += 1 - # Add all the new duplicate links. - el = list(li)[-1] - for link in links: - el.append(link) - break - - def get_num_duplicates(self, li): - """ Get the number of duplicate refs of the footnote. """ - fn, rest = li.attrib.get('id', '').split(self.footnotes.get_separator(), 1) - link_id = '{}ref{}{}'.format(fn, self.footnotes.get_separator(), rest) - return self.footnotes.found_refs.get(link_id, 0) - - def handle_duplicates(self, parent) -> None: - """ Find duplicate footnotes and format and add the duplicates. """ - for li in list(parent): - # Check number of duplicates footnotes and insert - # additional links if needed. - count = self.get_num_duplicates(li) - if count > 1: - self.add_duplicates(li, count) - - def run(self, root): - """ Crawl the footnote div and add missing duplicate footnotes. """ - self.offset = 0 - for div in root.iter('div'): - if div.attrib.get('class', '') == 'footnote': - # Footnotes should be under the first ordered list under - # the footnote div. So once we find it, quit. - for ol in div.iter('ol'): - self.handle_duplicates(ol) - break - - -class FootnoteTreeprocessor(Treeprocessor): - """ Build and append footnote div to end of document. """ - - def __init__(self, footnotes): - self.footnotes = footnotes - - def run(self, root): - footnotesDiv = self.footnotes.makeFootnotesDiv(root) - if footnotesDiv is not None: - result = self.footnotes.findFootnotesPlaceholder(root) - if result: - child, parent, isText = result - ind = list(parent).index(child) - if isText: - parent.remove(child) - parent.insert(ind, footnotesDiv) - else: - parent.insert(ind + 1, footnotesDiv) - child.tail = None - else: - root.append(footnotesDiv) - - -class FootnotePostprocessor(Postprocessor): - """ Replace placeholders with html entities. """ - def __init__(self, footnotes): - self.footnotes = footnotes - - def run(self, text): - text = text.replace( - FN_BACKLINK_TEXT, self.footnotes.getConfig("BACKLINK_TEXT") - ) - return text.replace(NBSP_PLACEHOLDER, " ") - - -def makeExtension(**kwargs): # pragma: no cover - """ Return an instance of the `FootnoteExtension` """ - return FootnoteExtension(**kwargs) diff --git a/plugins/markdown_preview/markdown/extensions/legacy_attrs.py b/plugins/markdown_preview/markdown/extensions/legacy_attrs.py deleted file mode 100644 index 56ad2e8..0000000 --- a/plugins/markdown_preview/markdown/extensions/legacy_attrs.py +++ /dev/null @@ -1,67 +0,0 @@ -# Python Markdown - -# A Python implementation of John Gruber's Markdown. - -# Documentation: https://python-markdown.github.io/ -# GitHub: https://github.com/Python-Markdown/markdown/ -# PyPI: https://pypi.org/project/Markdown/ - -# Started by Manfred Stienstra (http://www.dwerg.net/). -# Maintained for a few years by Yuri Takhteyev (http://www.freewisdom.org). -# Currently maintained by Waylan Limberg (https://github.com/waylan), -# Dmitry Shachnev (https://github.com/mitya57) and Isaac Muse (https://github.com/facelessuser). - -# Copyright 2007-2023 The Python Markdown Project (v. 1.7 and later) -# Copyright 2004, 2005, 2006 Yuri Takhteyev (v. 0.2-1.6b) -# Copyright 2004 Manfred Stienstra (the original version) - -# License: BSD (see LICENSE.md for details). - -""" -An extension to Python Markdown which implements legacy attributes. - -Prior to Python-Markdown version 3.0, the Markdown class had an `enable_attributes` -keyword which was on by default and provided for attributes to be defined for elements -using the format `{@key=value}`. This extension is provided as a replacement for -backward compatibility. New documents should be authored using `attr_lists`. However, -numerous documents exist which have been using the old attribute format for many -years. This extension can be used to continue to render those documents correctly. -""" - -from __future__ import annotations - -import re -from markdown.treeprocessors import Treeprocessor, isString -from markdown.extensions import Extension - - -ATTR_RE = re.compile(r'\{@([^\}]*)=([^\}]*)}') # {@id=123} - - -class LegacyAttrs(Treeprocessor): - def run(self, doc): - """Find and set values of attributes ({@key=value}). """ - for el in doc.iter(): - alt = el.get('alt', None) - if alt is not None: - el.set('alt', self.handleAttributes(el, alt)) - if el.text and isString(el.text): - el.text = self.handleAttributes(el, el.text) - if el.tail and isString(el.tail): - el.tail = self.handleAttributes(el, el.tail) - - def handleAttributes(self, el, txt): - """ Set attributes and return text without definitions. """ - def attributeCallback(match): - el.set(match.group(1), match.group(2).replace('\n', ' ')) - return ATTR_RE.sub(attributeCallback, txt) - - -class LegacyAttrExtension(Extension): - def extendMarkdown(self, md): - """ Add `LegacyAttrs` to Markdown instance. """ - md.treeprocessors.register(LegacyAttrs(md), 'legacyattrs', 15) - - -def makeExtension(**kwargs): # pragma: no cover - return LegacyAttrExtension(**kwargs) diff --git a/plugins/markdown_preview/markdown/extensions/legacy_em.py b/plugins/markdown_preview/markdown/extensions/legacy_em.py deleted file mode 100644 index a6f67b7..0000000 --- a/plugins/markdown_preview/markdown/extensions/legacy_em.py +++ /dev/null @@ -1,52 +0,0 @@ -# Legacy Em Extension for Python-Markdown -# ======================================= - -# This extension provides legacy behavior for _connected_words_. - -# Copyright 2015-2018 The Python Markdown Project - -# License: [BSD](https://opensource.org/licenses/bsd-license.php) - -""" -This extension provides legacy behavior for _connected_words_. -""" - -from __future__ import annotations - -from . import Extension -from ..inlinepatterns import UnderscoreProcessor, EmStrongItem, EM_STRONG2_RE, STRONG_EM2_RE -import re - -# _emphasis_ -EMPHASIS_RE = r'(_)([^_]+)\1' - -# __strong__ -STRONG_RE = r'(_{2})(.+?)\1' - -# __strong_em___ -STRONG_EM_RE = r'(_)\1(?!\1)([^_]+?)\1(?!\1)(.+?)\1{3}' - - -class LegacyUnderscoreProcessor(UnderscoreProcessor): - """Emphasis processor for handling strong and em matches inside underscores.""" - - PATTERNS = [ - EmStrongItem(re.compile(EM_STRONG2_RE, re.DOTALL | re.UNICODE), 'double', 'strong,em'), - EmStrongItem(re.compile(STRONG_EM2_RE, re.DOTALL | re.UNICODE), 'double', 'em,strong'), - EmStrongItem(re.compile(STRONG_EM_RE, re.DOTALL | re.UNICODE), 'double2', 'strong,em'), - EmStrongItem(re.compile(STRONG_RE, re.DOTALL | re.UNICODE), 'single', 'strong'), - EmStrongItem(re.compile(EMPHASIS_RE, re.DOTALL | re.UNICODE), 'single', 'em') - ] - - -class LegacyEmExtension(Extension): - """ Add legacy_em extension to Markdown class.""" - - def extendMarkdown(self, md): - """ Modify inline patterns. """ - md.inlinePatterns.register(LegacyUnderscoreProcessor(r'_'), 'em_strong2', 50) - - -def makeExtension(**kwargs): # pragma: no cover - """ Return an instance of the `LegacyEmExtension` """ - return LegacyEmExtension(**kwargs) diff --git a/plugins/markdown_preview/markdown/extensions/md_in_html.py b/plugins/markdown_preview/markdown/extensions/md_in_html.py deleted file mode 100644 index 982d603..0000000 --- a/plugins/markdown_preview/markdown/extensions/md_in_html.py +++ /dev/null @@ -1,372 +0,0 @@ -# Python-Markdown Markdown in HTML Extension -# =============================== - -# An implementation of [PHP Markdown Extra](http://michelf.com/projects/php-markdown/extra/)'s -# parsing of Markdown syntax in raw HTML. - -# See https://Python-Markdown.github.io/extensions/raw_html -# for documentation. - -# Copyright The Python Markdown Project - -# License: [BSD](https://opensource.org/licenses/bsd-license.php) - -""" -An implementation of [PHP Markdown Extra](http://michelf.com/projects/php-markdown/extra/)'s -parsing of Markdown syntax in raw HTML. - -See the [documentation](https://Python-Markdown.github.io/extensions/raw_html) -for details. -""" - -from __future__ import annotations - -from . import Extension -from ..blockprocessors import BlockProcessor -from ..preprocessors import Preprocessor -from ..postprocessors import RawHtmlPostprocessor -from .. import util -from ..htmlparser import HTMLExtractor, blank_line_re -import xml.etree.ElementTree as etree - - -class HTMLExtractorExtra(HTMLExtractor): - """ - Override `HTMLExtractor` and create `etree` `Elements` for any elements which should have content parsed as - Markdown. - """ - - def __init__(self, md, *args, **kwargs): - # All block-level tags. - self.block_level_tags = set(md.block_level_elements.copy()) - # Block-level tags in which the content only gets span level parsing - self.span_tags = set( - ['address', 'dd', 'dt', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'legend', 'li', 'p', 'summary', 'td', 'th'] - ) - # Block-level tags which never get their content parsed. - self.raw_tags = set(['canvas', 'math', 'option', 'pre', 'script', 'style', 'textarea']) - - super().__init__(md, *args, **kwargs) - - # Block-level tags in which the content gets parsed as blocks - self.block_tags = set(self.block_level_tags) - (self.span_tags | self.raw_tags | self.empty_tags) - self.span_and_blocks_tags = self.block_tags | self.span_tags - - def reset(self): - """Reset this instance. Loses all unprocessed data.""" - self.mdstack = [] # When markdown=1, stack contains a list of tags - self.treebuilder = etree.TreeBuilder() - self.mdstate = [] # one of 'block', 'span', 'off', or None - super().reset() - - def close(self): - """Handle any buffered data.""" - super().close() - # Handle any unclosed tags. - if self.mdstack: - # Close the outermost parent. `handle_endtag` will close all unclosed children. - self.handle_endtag(self.mdstack[0]) - - def get_element(self): - """ Return element from `treebuilder` and reset `treebuilder` for later use. """ - element = self.treebuilder.close() - self.treebuilder = etree.TreeBuilder() - return element - - def get_state(self, tag, attrs): - """ Return state from tag and `markdown` attribute. One of 'block', 'span', or 'off'. """ - md_attr = attrs.get('markdown', '0') - if md_attr == 'markdown': - # `<tag markdown>` is the same as `<tag markdown='1'>`. - md_attr = '1' - parent_state = self.mdstate[-1] if self.mdstate else None - if parent_state == 'off' or (parent_state == 'span' and md_attr != '0'): - # Only use the parent state if it is more restrictive than the markdown attribute. - md_attr = parent_state - if ((md_attr == '1' and tag in self.block_tags) or - (md_attr == 'block' and tag in self.span_and_blocks_tags)): - return 'block' - elif ((md_attr == '1' and tag in self.span_tags) or - (md_attr == 'span' and tag in self.span_and_blocks_tags)): - return 'span' - elif tag in self.block_level_tags: - return 'off' - else: # pragma: no cover - return None - - def handle_starttag(self, tag, attrs): - # Handle tags that should always be empty and do not specify a closing tag - if tag in self.empty_tags and (self.at_line_start() or self.intail): - attrs = {key: value if value is not None else key for key, value in attrs} - if "markdown" in attrs: - attrs.pop('markdown') - element = etree.Element(tag, attrs) - data = etree.tostring(element, encoding='unicode', method='html') - else: - data = self.get_starttag_text() - self.handle_empty_tag(data, True) - return - - if tag in self.block_level_tags and (self.at_line_start() or self.intail): - # Valueless attribute (ex: `<tag checked>`) results in `[('checked', None)]`. - # Convert to `{'checked': 'checked'}`. - attrs = {key: value if value is not None else key for key, value in attrs} - state = self.get_state(tag, attrs) - if self.inraw or (state in [None, 'off'] and not self.mdstack): - # fall back to default behavior - attrs.pop('markdown', None) - super().handle_starttag(tag, attrs) - else: - if 'p' in self.mdstack and tag in self.block_level_tags: - # Close unclosed 'p' tag - self.handle_endtag('p') - self.mdstate.append(state) - self.mdstack.append(tag) - attrs['markdown'] = state - self.treebuilder.start(tag, attrs) - else: - # Span level tag - if self.inraw: - super().handle_starttag(tag, attrs) - else: - text = self.get_starttag_text() - if self.mdstate and self.mdstate[-1] == "off": - self.handle_data(self.md.htmlStash.store(text)) - else: - self.handle_data(text) - if tag in self.CDATA_CONTENT_ELEMENTS: - # This is presumably a standalone tag in a code span (see #1036). - self.clear_cdata_mode() - - def handle_endtag(self, tag): - if tag in self.block_level_tags: - if self.inraw: - super().handle_endtag(tag) - elif tag in self.mdstack: - # Close element and any unclosed children - while self.mdstack: - item = self.mdstack.pop() - self.mdstate.pop() - self.treebuilder.end(item) - if item == tag: - break - if not self.mdstack: - # Last item in stack is closed. Stash it - element = self.get_element() - # Get last entry to see if it ends in newlines - # If it is an element, assume there is no newlines - item = self.cleandoc[-1] if self.cleandoc else '' - # If we only have one newline before block element, add another - if not item.endswith('\n\n') and item.endswith('\n'): - self.cleandoc.append('\n') - self.cleandoc.append(self.md.htmlStash.store(element)) - self.cleandoc.append('\n\n') - self.state = [] - # Check if element has a tail - if not blank_line_re.match( - self.rawdata[self.line_offset + self.offset + len(self.get_endtag_text(tag)):]): - # More content exists after `endtag`. - self.intail = True - else: - # Treat orphan closing tag as a span level tag. - text = self.get_endtag_text(tag) - if self.mdstate and self.mdstate[-1] == "off": - self.handle_data(self.md.htmlStash.store(text)) - else: - self.handle_data(text) - else: - # Span level tag - if self.inraw: - super().handle_endtag(tag) - else: - text = self.get_endtag_text(tag) - if self.mdstate and self.mdstate[-1] == "off": - self.handle_data(self.md.htmlStash.store(text)) - else: - self.handle_data(text) - - def handle_startendtag(self, tag, attrs): - if tag in self.empty_tags: - attrs = {key: value if value is not None else key for key, value in attrs} - if "markdown" in attrs: - attrs.pop('markdown') - element = etree.Element(tag, attrs) - data = etree.tostring(element, encoding='unicode', method='html') - else: - data = self.get_starttag_text() - else: - data = self.get_starttag_text() - self.handle_empty_tag(data, is_block=self.md.is_block_level(tag)) - - def handle_data(self, data): - if self.intail and '\n' in data: - self.intail = False - if self.inraw or not self.mdstack: - super().handle_data(data) - else: - self.treebuilder.data(data) - - def handle_empty_tag(self, data, is_block): - if self.inraw or not self.mdstack: - super().handle_empty_tag(data, is_block) - else: - if self.at_line_start() and is_block: - self.handle_data('\n' + self.md.htmlStash.store(data) + '\n\n') - else: - self.handle_data(self.md.htmlStash.store(data)) - - def parse_pi(self, i): - if self.at_line_start() or self.intail or self.mdstack: - # The same override exists in `HTMLExtractor` without the check - # for `mdstack`. Therefore, use parent of `HTMLExtractor` instead. - return super(HTMLExtractor, self).parse_pi(i) - # This is not the beginning of a raw block so treat as plain data - # and avoid consuming any tags which may follow (see #1066). - self.handle_data('<?') - return i + 2 - - def parse_html_declaration(self, i): - if self.at_line_start() or self.intail or self.mdstack: - # The same override exists in `HTMLExtractor` without the check - # for `mdstack`. Therefore, use parent of `HTMLExtractor` instead. - return super(HTMLExtractor, self).parse_html_declaration(i) - # This is not the beginning of a raw block so treat as plain data - # and avoid consuming any tags which may follow (see #1066). - self.handle_data('<!') - return i + 2 - - -class HtmlBlockPreprocessor(Preprocessor): - """Remove html blocks from the text and store them for later retrieval.""" - - def run(self, lines): - source = '\n'.join(lines) - parser = HTMLExtractorExtra(self.md) - parser.feed(source) - parser.close() - return ''.join(parser.cleandoc).split('\n') - - -class MarkdownInHtmlProcessor(BlockProcessor): - """Process Markdown Inside HTML Blocks which have been stored in the `HtmlStash`.""" - - def test(self, parent, block): - # Always return True. `run` will return `False` it not a valid match. - return True - - def parse_element_content(self, element): - """ - Recursively parse the text content of an `etree` Element as Markdown. - - Any block level elements generated from the Markdown will be inserted as children of the element in place - of the text content. All `markdown` attributes are removed. For any elements in which Markdown parsing has - been disabled, the text content of it and its children are wrapped in an `AtomicString`. - """ - - md_attr = element.attrib.pop('markdown', 'off') - - if md_attr == 'block': - # Parse content as block level - # The order in which the different parts are parsed (text, children, tails) is important here as the - # order of elements needs to be preserved. We can't be inserting items at a later point in the current - # iteration as we don't want to do raw processing on elements created from parsing Markdown text (for - # example). Therefore, the order of operations is children, tails, text. - - # Recursively parse existing children from raw HTML - for child in list(element): - self.parse_element_content(child) - - # Parse Markdown text in tail of children. Do this separate to avoid raw HTML parsing. - # Save the position of each item to be inserted later in reverse. - tails = [] - for pos, child in enumerate(element): - if child.tail: - block = child.tail.rstrip('\n') - child.tail = '' - # Use a dummy placeholder element. - dummy = etree.Element('div') - self.parser.parseBlocks(dummy, block.split('\n\n')) - children = list(dummy) - children.reverse() - tails.append((pos + 1, children)) - - # Insert the elements created from the tails in reverse. - tails.reverse() - for pos, tail in tails: - for item in tail: - element.insert(pos, item) - - # Parse Markdown text content. Do this last to avoid raw HTML parsing. - if element.text: - block = element.text.rstrip('\n') - element.text = '' - # Use a dummy placeholder element as the content needs to get inserted before existing children. - dummy = etree.Element('div') - self.parser.parseBlocks(dummy, block.split('\n\n')) - children = list(dummy) - children.reverse() - for child in children: - element.insert(0, child) - - elif md_attr == 'span': - # Span level parsing will be handled by inline processors. - # Walk children here to remove any `markdown` attributes. - for child in list(element): - self.parse_element_content(child) - - else: - # Disable inline parsing for everything else - if element.text is None: - element.text = '' - element.text = util.AtomicString(element.text) - for child in list(element): - self.parse_element_content(child) - if child.tail: - child.tail = util.AtomicString(child.tail) - - def run(self, parent, blocks): - m = util.HTML_PLACEHOLDER_RE.match(blocks[0]) - if m: - index = int(m.group(1)) - element = self.parser.md.htmlStash.rawHtmlBlocks[index] - if isinstance(element, etree.Element): - # We have a matched element. Process it. - blocks.pop(0) - self.parse_element_content(element) - parent.append(element) - # Cleanup stash. Replace element with empty string to avoid confusing postprocessor. - self.parser.md.htmlStash.rawHtmlBlocks.pop(index) - self.parser.md.htmlStash.rawHtmlBlocks.insert(index, '') - # Confirm the match to the `blockparser`. - return True - # No match found. - return False - - -class MarkdownInHTMLPostprocessor(RawHtmlPostprocessor): - def stash_to_string(self, text): - """ Override default to handle any `etree` elements still in the stash. """ - if isinstance(text, etree.Element): - return self.md.serializer(text) - else: - return str(text) - - -class MarkdownInHtmlExtension(Extension): - """Add Markdown parsing in HTML to Markdown class.""" - - def extendMarkdown(self, md): - """ Register extension instances. """ - - # Replace raw HTML preprocessor - md.preprocessors.register(HtmlBlockPreprocessor(md), 'html_block', 20) - # Add `blockprocessor` which handles the placeholders for `etree` elements - md.parser.blockprocessors.register( - MarkdownInHtmlProcessor(md.parser), 'markdown_block', 105 - ) - # Replace raw HTML postprocessor - md.postprocessors.register(MarkdownInHTMLPostprocessor(md), 'raw_html', 30) - - -def makeExtension(**kwargs): # pragma: no cover - return MarkdownInHtmlExtension(**kwargs) diff --git a/plugins/markdown_preview/markdown/extensions/meta.py b/plugins/markdown_preview/markdown/extensions/meta.py deleted file mode 100644 index 8217927..0000000 --- a/plugins/markdown_preview/markdown/extensions/meta.py +++ /dev/null @@ -1,85 +0,0 @@ -# Meta Data Extension for Python-Markdown -# ======================================= - -# This extension adds Meta Data handling to markdown. - -# See https://Python-Markdown.github.io/extensions/meta_data -# for documentation. - -# Original code Copyright 2007-2008 [Waylan Limberg](http://achinghead.com). - -# All changes Copyright 2008-2014 The Python Markdown Project - -# License: [BSD](https://opensource.org/licenses/bsd-license.php) - -""" -This extension adds Meta Data handling to markdown. - -See the [documentation](https://Python-Markdown.github.io/extensions/meta_data) -for details. -""" - -from __future__ import annotations - -from . import Extension -from ..preprocessors import Preprocessor -import re -import logging - -log = logging.getLogger('MARKDOWN') - -# Global Vars -META_RE = re.compile(r'^[ ]{0,3}(?P<key>[A-Za-z0-9_-]+):\s*(?P<value>.*)') -META_MORE_RE = re.compile(r'^[ ]{4,}(?P<value>.*)') -BEGIN_RE = re.compile(r'^-{3}(\s.*)?') -END_RE = re.compile(r'^(-{3}|\.{3})(\s.*)?') - - -class MetaExtension (Extension): - """ Meta-Data extension for Python-Markdown. """ - - def extendMarkdown(self, md): - """ Add `MetaPreprocessor` to Markdown instance. """ - md.registerExtension(self) - self.md = md - md.preprocessors.register(MetaPreprocessor(md), 'meta', 27) - - def reset(self) -> None: - self.md.Meta = {} - - -class MetaPreprocessor(Preprocessor): - """ Get Meta-Data. """ - - def run(self, lines): - """ Parse Meta-Data and store in Markdown.Meta. """ - meta = {} - key = None - if lines and BEGIN_RE.match(lines[0]): - lines.pop(0) - while lines: - line = lines.pop(0) - m1 = META_RE.match(line) - if line.strip() == '' or END_RE.match(line): - break # blank line or end of YAML header - done - if m1: - key = m1.group('key').lower().strip() - value = m1.group('value').strip() - try: - meta[key].append(value) - except KeyError: - meta[key] = [value] - else: - m2 = META_MORE_RE.match(line) - if m2 and key: - # Add another line to existing key - meta[key].append(m2.group('value').strip()) - else: - lines.insert(0, line) - break # no meta data - done - self.md.Meta = meta - return lines - - -def makeExtension(**kwargs): # pragma: no cover - return MetaExtension(**kwargs) diff --git a/plugins/markdown_preview/markdown/extensions/nl2br.py b/plugins/markdown_preview/markdown/extensions/nl2br.py deleted file mode 100644 index 177df1e..0000000 --- a/plugins/markdown_preview/markdown/extensions/nl2br.py +++ /dev/null @@ -1,41 +0,0 @@ -# `NL2BR` Extension -# =============== - -# A Python-Markdown extension to treat newlines as hard breaks; like -# GitHub-flavored Markdown does. - -# See https://Python-Markdown.github.io/extensions/nl2br -# for documentation. - -# Original code Copyright 2011 [Brian Neal](https://deathofagremmie.com/) - -# All changes Copyright 2011-2014 The Python Markdown Project - -# License: [BSD](https://opensource.org/licenses/bsd-license.php) - -""" -A Python-Markdown extension to treat newlines as hard breaks; like -GitHub-flavored Markdown does. - -See the [documentation](https://Python-Markdown.github.io/extensions/nl2br) -for details. -""" - -from __future__ import annotations - -from . import Extension -from ..inlinepatterns import SubstituteTagInlineProcessor - -BR_RE = r'\n' - - -class Nl2BrExtension(Extension): - - def extendMarkdown(self, md): - """ Add a `SubstituteTagInlineProcessor` to Markdown. """ - br_tag = SubstituteTagInlineProcessor(BR_RE, 'br') - md.inlinePatterns.register(br_tag, 'nl', 5) - - -def makeExtension(**kwargs): # pragma: no cover - return Nl2BrExtension(**kwargs) diff --git a/plugins/markdown_preview/markdown/extensions/sane_lists.py b/plugins/markdown_preview/markdown/extensions/sane_lists.py deleted file mode 100644 index 305bd99..0000000 --- a/plugins/markdown_preview/markdown/extensions/sane_lists.py +++ /dev/null @@ -1,65 +0,0 @@ -# Sane List Extension for Python-Markdown -# ======================================= - -# Modify the behavior of Lists in Python-Markdown to act in a sane manor. - -# See https://Python-Markdown.github.io/extensions/sane_lists -# for documentation. - -# Original code Copyright 2011 [Waylan Limberg](http://achinghead.com) - -# All changes Copyright 2011-2014 The Python Markdown Project - -# License: [BSD](https://opensource.org/licenses/bsd-license.php) - -""" -Modify the behavior of Lists in Python-Markdown to act in a sane manor. - -See [documentation](https://Python-Markdown.github.io/extensions/sane_lists) -for details. -""" - -from __future__ import annotations - -from . import Extension -from ..blockprocessors import OListProcessor, UListProcessor -import re - - -class SaneOListProcessor(OListProcessor): - """ Override `SIBLING_TAGS` to not include `ul` and set `LAZY_OL` to `False`. """ - - SIBLING_TAGS = ['ol'] - """ Exclude `ul` from list of siblings. """ - LAZY_OL = False - """ Disable lazy list behavior. """ - - def __init__(self, parser): - super().__init__(parser) - self.CHILD_RE = re.compile(r'^[ ]{0,%d}((\d+\.))[ ]+(.*)' % - (self.tab_length - 1)) - - -class SaneUListProcessor(UListProcessor): - """ Override `SIBLING_TAGS` to not include `ol`. """ - - SIBLING_TAGS = ['ul'] - """ Exclude `ol` from list of siblings. """ - - def __init__(self, parser): - super().__init__(parser) - self.CHILD_RE = re.compile(r'^[ ]{0,%d}(([*+-]))[ ]+(.*)' % - (self.tab_length - 1)) - - -class SaneListExtension(Extension): - """ Add sane lists to Markdown. """ - - def extendMarkdown(self, md): - """ Override existing Processors. """ - md.parser.blockprocessors.register(SaneOListProcessor(md.parser), 'olist', 40) - md.parser.blockprocessors.register(SaneUListProcessor(md.parser), 'ulist', 30) - - -def makeExtension(**kwargs): # pragma: no cover - return SaneListExtension(**kwargs) diff --git a/plugins/markdown_preview/markdown/extensions/smarty.py b/plugins/markdown_preview/markdown/extensions/smarty.py deleted file mode 100644 index 3274bf8..0000000 --- a/plugins/markdown_preview/markdown/extensions/smarty.py +++ /dev/null @@ -1,265 +0,0 @@ -# Smarty extension for Python-Markdown -# ==================================== - -# Adds conversion of ASCII dashes, quotes and ellipses to their HTML -# entity equivalents. - -# See https://Python-Markdown.github.io/extensions/smarty -# for documentation. - -# Author: 2013, Dmitry Shachnev <mitya57@gmail.com> - -# All changes Copyright 2013-2014 The Python Markdown Project - -# License: [BSD](https://opensource.org/licenses/bsd-license.php) - -# SmartyPants license: - -# Copyright (c) 2003 John Gruber <https://daringfireball.net/> -# All rights reserved. - -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are -# met: - -# * Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. - -# * Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in -# the documentation and/or other materials provided with the -# distribution. - -# * Neither the name "SmartyPants" nor the names of its contributors -# may be used to endorse or promote products derived from this -# software without specific prior written permission. - -# This software is provided by the copyright holders and contributors "as -# is" and any express or implied warranties, including, but not limited -# to, the implied warranties of merchantability and fitness for a -# particular purpose are disclaimed. In no event shall the copyright -# owner or contributors be liable for any direct, indirect, incidental, -# special, exemplary, or consequential damages (including, but not -# limited to, procurement of substitute goods or services; loss of use, -# data, or profits; or business interruption) however caused and on any -# theory of liability, whether in contract, strict liability, or tort -# (including negligence or otherwise) arising in any way out of the use -# of this software, even if advised of the possibility of such damage. - - -# `smartypants.py` license: - -# `smartypants.py` is a derivative work of SmartyPants. -# Copyright (c) 2004, 2007 Chad Miller <http://web.chad.org/> - -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are -# met: - -# * Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. - -# * Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in -# the documentation and/or other materials provided with the -# distribution. - -# This software is provided by the copyright holders and contributors "as -# is" and any express or implied warranties, including, but not limited -# to, the implied warranties of merchantability and fitness for a -# particular purpose are disclaimed. In no event shall the copyright -# owner or contributors be liable for any direct, indirect, incidental, -# special, exemplary, or consequential damages (including, but not -# limited to, procurement of substitute goods or services; loss of use, -# data, or profits; or business interruption) however caused and on any -# theory of liability, whether in contract, strict liability, or tort -# (including negligence or otherwise) arising in any way out of the use -# of this software, even if advised of the possibility of such damage. - -""" -Adds conversion of ASCII dashes, quotes and ellipses to their HTML -entity equivalents. - -See the [documentation](https://Python-Markdown.github.io/extensions/smarty) -for details. -""" - -from __future__ import annotations - -from . import Extension -from ..inlinepatterns import HtmlInlineProcessor, HTML_RE -from ..treeprocessors import InlineProcessor -from ..util import Registry - - -# Constants for quote education. -punctClass = r"""[!"#\$\%'()*+,-.\/:;<=>?\@\[\\\]\^_`{|}~]""" -endOfWordClass = r"[\s.,;:!?)]" -closeClass = r"[^\ \t\r\n\[\{\(\-\u0002\u0003]" - -openingQuotesBase = ( - r'(\s' # a whitespace char - r'| ' # or a non-breaking space entity - r'|--' # or dashes - r'|–|—' # or Unicode - r'|&[mn]dash;' # or named dash entities - r'|–|—' # or decimal entities - r')' -) - -substitutions = { - 'mdash': '—', - 'ndash': '–', - 'ellipsis': '…', - 'left-angle-quote': '«', - 'right-angle-quote': '»', - 'left-single-quote': '‘', - 'right-single-quote': '’', - 'left-double-quote': '“', - 'right-double-quote': '”', -} - - -# Special case if the very first character is a quote -# followed by punctuation at a non-word-break. Close the quotes by brute force: -singleQuoteStartRe = r"^'(?=%s\B)" % punctClass -doubleQuoteStartRe = r'^"(?=%s\B)' % punctClass - -# Special case for double sets of quotes, e.g.: -# <p>He said, "'Quoted' words in a larger quote."</p> -doubleQuoteSetsRe = r""""'(?=\w)""" -singleQuoteSetsRe = r"""'"(?=\w)""" - -# Special case for decade abbreviations (the '80s): -decadeAbbrRe = r"(?<!\w)'(?=\d{2}s)" - -# Get most opening double quotes: -openingDoubleQuotesRegex = r'%s"(?=\w)' % openingQuotesBase - -# Double closing quotes: -closingDoubleQuotesRegex = r'"(?=\s)' -closingDoubleQuotesRegex2 = '(?<=%s)"' % closeClass - -# Get most opening single quotes: -openingSingleQuotesRegex = r"%s'(?=\w)" % openingQuotesBase - -# Single closing quotes: -closingSingleQuotesRegex = r"(?<=%s)'(?!\s|s\b|\d)" % closeClass -closingSingleQuotesRegex2 = r"'(\s|s\b)" - -# All remaining quotes should be opening ones -remainingSingleQuotesRegex = r"'" -remainingDoubleQuotesRegex = r'"' - -HTML_STRICT_RE = HTML_RE + r'(?!\>)' - - -class SubstituteTextPattern(HtmlInlineProcessor): - def __init__(self, pattern, replace, md): - """ Replaces matches with some text. """ - HtmlInlineProcessor.__init__(self, pattern) - self.replace = replace - self.md = md - - def handleMatch(self, m, data): - result = '' - for part in self.replace: - if isinstance(part, int): - result += m.group(part) - else: - result += self.md.htmlStash.store(part) - return result, m.start(0), m.end(0) - - -class SmartyExtension(Extension): - """ Add Smarty to Markdown. """ - def __init__(self, **kwargs): - self.config = { - 'smart_quotes': [True, 'Educate quotes'], - 'smart_angled_quotes': [False, 'Educate angled quotes'], - 'smart_dashes': [True, 'Educate dashes'], - 'smart_ellipses': [True, 'Educate ellipses'], - 'substitutions': [{}, 'Overwrite default substitutions'], - } - """ Default configuration options. """ - super().__init__(**kwargs) - self.substitutions = dict(substitutions) - self.substitutions.update(self.getConfig('substitutions', default={})) - - def _addPatterns(self, md, patterns, serie, priority): - for ind, pattern in enumerate(patterns): - pattern += (md,) - pattern = SubstituteTextPattern(*pattern) - name = 'smarty-%s-%d' % (serie, ind) - self.inlinePatterns.register(pattern, name, priority-ind) - - def educateDashes(self, md) -> None: - emDashesPattern = SubstituteTextPattern( - r'(?<!-)---(?!-)', (self.substitutions['mdash'],), md - ) - enDashesPattern = SubstituteTextPattern( - r'(?<!-)--(?!-)', (self.substitutions['ndash'],), md - ) - self.inlinePatterns.register(emDashesPattern, 'smarty-em-dashes', 50) - self.inlinePatterns.register(enDashesPattern, 'smarty-en-dashes', 45) - - def educateEllipses(self, md) -> None: - ellipsesPattern = SubstituteTextPattern( - r'(?<!\.)\.{3}(?!\.)', (self.substitutions['ellipsis'],), md - ) - self.inlinePatterns.register(ellipsesPattern, 'smarty-ellipses', 10) - - def educateAngledQuotes(self, md) -> None: - leftAngledQuotePattern = SubstituteTextPattern( - r'\<\<', (self.substitutions['left-angle-quote'],), md - ) - rightAngledQuotePattern = SubstituteTextPattern( - r'\>\>', (self.substitutions['right-angle-quote'],), md - ) - self.inlinePatterns.register(leftAngledQuotePattern, 'smarty-left-angle-quotes', 40) - self.inlinePatterns.register(rightAngledQuotePattern, 'smarty-right-angle-quotes', 35) - - def educateQuotes(self, md) -> None: - lsquo = self.substitutions['left-single-quote'] - rsquo = self.substitutions['right-single-quote'] - ldquo = self.substitutions['left-double-quote'] - rdquo = self.substitutions['right-double-quote'] - patterns = ( - (singleQuoteStartRe, (rsquo,)), - (doubleQuoteStartRe, (rdquo,)), - (doubleQuoteSetsRe, (ldquo + lsquo,)), - (singleQuoteSetsRe, (lsquo + ldquo,)), - (decadeAbbrRe, (rsquo,)), - (openingSingleQuotesRegex, (1, lsquo)), - (closingSingleQuotesRegex, (rsquo,)), - (closingSingleQuotesRegex2, (rsquo, 1)), - (remainingSingleQuotesRegex, (lsquo,)), - (openingDoubleQuotesRegex, (1, ldquo)), - (closingDoubleQuotesRegex, (rdquo,)), - (closingDoubleQuotesRegex2, (rdquo,)), - (remainingDoubleQuotesRegex, (ldquo,)) - ) - self._addPatterns(md, patterns, 'quotes', 30) - - def extendMarkdown(self, md): - configs = self.getConfigs() - self.inlinePatterns: Registry[HtmlInlineProcessor] = Registry() - if configs['smart_ellipses']: - self.educateEllipses(md) - if configs['smart_quotes']: - self.educateQuotes(md) - if configs['smart_angled_quotes']: - self.educateAngledQuotes(md) - # Override `HTML_RE` from `inlinepatterns.py` so that it does not - # process tags with duplicate closing quotes. - md.inlinePatterns.register(HtmlInlineProcessor(HTML_STRICT_RE, md), 'html', 90) - if configs['smart_dashes']: - self.educateDashes(md) - inlineProcessor = InlineProcessor(md) - inlineProcessor.inlinePatterns = self.inlinePatterns - md.treeprocessors.register(inlineProcessor, 'smarty', 2) - md.ESCAPED_CHARS.extend(['"', "'"]) - - -def makeExtension(**kwargs): # pragma: no cover - return SmartyExtension(**kwargs) diff --git a/plugins/markdown_preview/markdown/extensions/tables.py b/plugins/markdown_preview/markdown/extensions/tables.py deleted file mode 100644 index a9e5f13..0000000 --- a/plugins/markdown_preview/markdown/extensions/tables.py +++ /dev/null @@ -1,243 +0,0 @@ -# Tables Extension for Python-Markdown -# ==================================== - -# Added parsing of tables to Python-Markdown. - -# See https://Python-Markdown.github.io/extensions/tables -# for documentation. - -# Original code Copyright 2009 [Waylan Limberg](http://achinghead.com) - -# All changes Copyright 2008-2014 The Python Markdown Project - -# License: [BSD](https://opensource.org/licenses/bsd-license.php) - -""" -Added parsing of tables to Python-Markdown. - -See the [documentation](https://Python-Markdown.github.io/extensions/tables) -for details. -""" - -from __future__ import annotations - -from . import Extension -from ..blockprocessors import BlockProcessor -import xml.etree.ElementTree as etree -import re -PIPE_NONE = 0 -PIPE_LEFT = 1 -PIPE_RIGHT = 2 - - -class TableProcessor(BlockProcessor): - """ Process Tables. """ - - RE_CODE_PIPES = re.compile(r'(?:(\\\\)|(\\`+)|(`+)|(\\\|)|(\|))') - RE_END_BORDER = re.compile(r'(?<!\\)(?:\\\\)*\|$') - - def __init__(self, parser, config): - self.border = False - self.separator = '' - self.config = config - - super().__init__(parser) - - def test(self, parent, block): - """ - Ensure first two rows (column header and separator row) are valid table rows. - - Keep border check and separator row do avoid repeating the work. - """ - is_table = False - rows = [row.strip(' ') for row in block.split('\n')] - if len(rows) > 1: - header0 = rows[0] - self.border = PIPE_NONE - if header0.startswith('|'): - self.border |= PIPE_LEFT - if self.RE_END_BORDER.search(header0) is not None: - self.border |= PIPE_RIGHT - row = self._split_row(header0) - row0_len = len(row) - is_table = row0_len > 1 - - # Each row in a single column table needs at least one pipe. - if not is_table and row0_len == 1 and self.border: - for index in range(1, len(rows)): - is_table = rows[index].startswith('|') - if not is_table: - is_table = self.RE_END_BORDER.search(rows[index]) is not None - if not is_table: - break - - if is_table: - row = self._split_row(rows[1]) - is_table = (len(row) == row0_len) and set(''.join(row)) <= set('|:- ') - if is_table: - self.separator = row - - return is_table - - def run(self, parent, blocks): - """ Parse a table block and build table. """ - block = blocks.pop(0).split('\n') - header = block[0].strip(' ') - rows = [] if len(block) < 3 else block[2:] - - # Get alignment of columns - align = [] - for c in self.separator: - c = c.strip(' ') - if c.startswith(':') and c.endswith(':'): - align.append('center') - elif c.startswith(':'): - align.append('left') - elif c.endswith(':'): - align.append('right') - else: - align.append(None) - - # Build table - table = etree.SubElement(parent, 'table') - thead = etree.SubElement(table, 'thead') - self._build_row(header, thead, align) - tbody = etree.SubElement(table, 'tbody') - if len(rows) == 0: - # Handle empty table - self._build_empty_row(tbody, align) - else: - for row in rows: - self._build_row(row.strip(' '), tbody, align) - - def _build_empty_row(self, parent, align): - """Build an empty row.""" - tr = etree.SubElement(parent, 'tr') - count = len(align) - while count: - etree.SubElement(tr, 'td') - count -= 1 - - def _build_row(self, row, parent, align): - """ Given a row of text, build table cells. """ - tr = etree.SubElement(parent, 'tr') - tag = 'td' - if parent.tag == 'thead': - tag = 'th' - cells = self._split_row(row) - # We use align here rather than cells to ensure every row - # contains the same number of columns. - for i, a in enumerate(align): - c = etree.SubElement(tr, tag) - try: - c.text = cells[i].strip(' ') - except IndexError: # pragma: no cover - c.text = "" - if a: - if self.config['use_align_attribute']: - c.set('align', a) - else: - c.set('style', f'text-align: {a};') - - def _split_row(self, row): - """ split a row of text into list of cells. """ - if self.border: - if row.startswith('|'): - row = row[1:] - row = self.RE_END_BORDER.sub('', row) - return self._split(row) - - def _split(self, row): - """ split a row of text with some code into a list of cells. """ - elements = [] - pipes = [] - tics = [] - tic_points = [] - tic_region = [] - good_pipes = [] - - # Parse row - # Throw out \\, and \| - for m in self.RE_CODE_PIPES.finditer(row): - # Store ` data (len, start_pos, end_pos) - if m.group(2): - # \`+ - # Store length of each tic group: subtract \ - tics.append(len(m.group(2)) - 1) - # Store start of group, end of group, and escape length - tic_points.append((m.start(2), m.end(2) - 1, 1)) - elif m.group(3): - # `+ - # Store length of each tic group - tics.append(len(m.group(3))) - # Store start of group, end of group, and escape length - tic_points.append((m.start(3), m.end(3) - 1, 0)) - # Store pipe location - elif m.group(5): - pipes.append(m.start(5)) - - # Pair up tics according to size if possible - # Subtract the escape length *only* from the opening. - # Walk through tic list and see if tic has a close. - # Store the tic region (start of region, end of region). - pos = 0 - tic_len = len(tics) - while pos < tic_len: - try: - tic_size = tics[pos] - tic_points[pos][2] - if tic_size == 0: - raise ValueError - index = tics[pos + 1:].index(tic_size) + 1 - tic_region.append((tic_points[pos][0], tic_points[pos + index][1])) - pos += index + 1 - except ValueError: - pos += 1 - - # Resolve pipes. Check if they are within a tic pair region. - # Walk through pipes comparing them to each region. - # - If pipe position is less that a region, it isn't in a region - # - If it is within a region, we don't want it, so throw it out - # - If we didn't throw it out, it must be a table pipe - for pipe in pipes: - throw_out = False - for region in tic_region: - if pipe < region[0]: - # Pipe is not in a region - break - elif region[0] <= pipe <= region[1]: - # Pipe is within a code region. Throw it out. - throw_out = True - break - if not throw_out: - good_pipes.append(pipe) - - # Split row according to table delimiters. - pos = 0 - for pipe in good_pipes: - elements.append(row[pos:pipe]) - pos = pipe + 1 - elements.append(row[pos:]) - return elements - - -class TableExtension(Extension): - """ Add tables to Markdown. """ - - def __init__(self, **kwargs): - self.config = { - 'use_align_attribute': [False, 'True to use align attribute instead of style.'], - } - """ Default configuration options. """ - - super().__init__(**kwargs) - - def extendMarkdown(self, md): - """ Add an instance of `TableProcessor` to `BlockParser`. """ - if '|' not in md.ESCAPED_CHARS: - md.ESCAPED_CHARS.append('|') - processor = TableProcessor(md.parser, self.getConfigs()) - md.parser.blockprocessors.register(processor, 'table', 75) - - -def makeExtension(**kwargs): # pragma: no cover - return TableExtension(**kwargs) diff --git a/plugins/markdown_preview/markdown/extensions/toc.py b/plugins/markdown_preview/markdown/extensions/toc.py deleted file mode 100644 index 64c20c8..0000000 --- a/plugins/markdown_preview/markdown/extensions/toc.py +++ /dev/null @@ -1,408 +0,0 @@ -# Table of Contents Extension for Python-Markdown -# =============================================== - -# See https://Python-Markdown.github.io/extensions/toc -# for documentation. - -# Original code Copyright 2008 [Jack Miller](https://codezen.org/) - -# All changes Copyright 2008-2014 The Python Markdown Project - -# License: [BSD](https://opensource.org/licenses/bsd-license.php) - -""" -Add table of contents support to Python-Markdown. - -See the [documentation](https://Python-Markdown.github.io/extensions/toc) -for details. -""" - -from __future__ import annotations - -from . import Extension -from ..treeprocessors import Treeprocessor -from ..util import code_escape, parseBoolValue, AMP_SUBSTITUTE, HTML_PLACEHOLDER_RE, AtomicString -from ..treeprocessors import UnescapeTreeprocessor -import re -import html -import unicodedata -import xml.etree.ElementTree as etree - - -def slugify(value, separator, unicode=False): - """ Slugify a string, to make it URL friendly. """ - if not unicode: - # Replace Extended Latin characters with ASCII, i.e. `žlutý` => `zluty` - value = unicodedata.normalize('NFKD', value) - value = value.encode('ascii', 'ignore').decode('ascii') - value = re.sub(r'[^\w\s-]', '', value).strip().lower() - return re.sub(r'[{}\s]+'.format(separator), separator, value) - - -def slugify_unicode(value, separator): - """ Slugify a string, to make it URL friendly while preserving Unicode characters. """ - return slugify(value, separator, unicode=True) - - -IDCOUNT_RE = re.compile(r'^(.*)_([0-9]+)$') - - -def unique(id, ids): - """ Ensure id is unique in set of ids. Append '_1', '_2'... if not """ - while id in ids or not id: - m = IDCOUNT_RE.match(id) - if m: - id = '%s_%d' % (m.group(1), int(m.group(2))+1) - else: - id = '%s_%d' % (id, 1) - ids.add(id) - return id - - -def get_name(el): - """Get title name.""" - - text = [] - for c in el.itertext(): - if isinstance(c, AtomicString): - text.append(html.unescape(c)) - else: - text.append(c) - return ''.join(text).strip() - - -def stashedHTML2text(text, md, strip_entities: bool = True): - """ Extract raw HTML from stash, reduce to plain text and swap with placeholder. """ - def _html_sub(m): - """ Substitute raw html with plain text. """ - try: - raw = md.htmlStash.rawHtmlBlocks[int(m.group(1))] - except (IndexError, TypeError): # pragma: no cover - return m.group(0) - # Strip out tags and/or entities - leaving text - res = re.sub(r'(<[^>]+>)', '', raw) - if strip_entities: - res = re.sub(r'(&[\#a-zA-Z0-9]+;)', '', res) - return res - - return HTML_PLACEHOLDER_RE.sub(_html_sub, text) - - -def unescape(text): - """ Unescape escaped text. """ - c = UnescapeTreeprocessor() - return c.unescape(text) - - -def nest_toc_tokens(toc_list): - """Given an unsorted list with errors and skips, return a nested one. - - [{'level': 1}, {'level': 2}] - => - [{'level': 1, 'children': [{'level': 2, 'children': []}]}] - - A wrong list is also converted: - - [{'level': 2}, {'level': 1}] - => - [{'level': 2, 'children': []}, {'level': 1, 'children': []}] - """ - - ordered_list = [] - if len(toc_list): - # Initialize everything by processing the first entry - last = toc_list.pop(0) - last['children'] = [] - levels = [last['level']] - ordered_list.append(last) - parents = [] - - # Walk the rest nesting the entries properly - while toc_list: - t = toc_list.pop(0) - current_level = t['level'] - t['children'] = [] - - # Reduce depth if current level < last item's level - if current_level < levels[-1]: - # Pop last level since we know we are less than it - levels.pop() - - # Pop parents and levels we are less than or equal to - to_pop = 0 - for p in reversed(parents): - if current_level <= p['level']: - to_pop += 1 - else: # pragma: no cover - break - if to_pop: - levels = levels[:-to_pop] - parents = parents[:-to_pop] - - # Note current level as last - levels.append(current_level) - - # Level is the same, so append to - # the current parent (if available) - if current_level == levels[-1]: - (parents[-1]['children'] if parents - else ordered_list).append(t) - - # Current level is > last item's level, - # So make last item a parent and append current as child - else: - last['children'].append(t) - parents.append(last) - levels.append(current_level) - last = t - - return ordered_list - - -class TocTreeprocessor(Treeprocessor): - """ Step through document and build TOC. """ - - def __init__(self, md, config): - super().__init__(md) - - self.marker = config["marker"] - self.title = config["title"] - self.base_level = int(config["baselevel"]) - 1 - self.slugify = config["slugify"] - self.sep = config["separator"] - self.toc_class = config["toc_class"] - self.title_class = config["title_class"] - self.use_anchors = parseBoolValue(config["anchorlink"]) - self.anchorlink_class = config["anchorlink_class"] - self.use_permalinks = parseBoolValue(config["permalink"], False) - if self.use_permalinks is None: - self.use_permalinks = config["permalink"] - self.permalink_class = config["permalink_class"] - self.permalink_title = config["permalink_title"] - self.permalink_leading = parseBoolValue(config["permalink_leading"], False) - self.header_rgx = re.compile("[Hh][123456]") - if isinstance(config["toc_depth"], str) and '-' in config["toc_depth"]: - self.toc_top, self.toc_bottom = [int(x) for x in config["toc_depth"].split('-')] - else: - self.toc_top = 1 - self.toc_bottom = int(config["toc_depth"]) - - def iterparent(self, node): - """ Iterator wrapper to get allowed parent and child all at once. """ - - # We do not allow the marker inside a header as that - # would causes an endless loop of placing a new TOC - # inside previously generated TOC. - for child in node: - if not self.header_rgx.match(child.tag) and child.tag not in ['pre', 'code']: - yield node, child - yield from self.iterparent(child) - - def replace_marker(self, root, elem) -> None: - """ Replace marker with elem. """ - for (p, c) in self.iterparent(root): - text = ''.join(c.itertext()).strip() - if not text: - continue - - # To keep the output from screwing up the - # validation by putting a `<div>` inside of a `<p>` - # we actually replace the `<p>` in its entirety. - - # The `<p>` element may contain more than a single text content - # (`nl2br` can introduce a `<br>`). In this situation, `c.text` returns - # the very first content, ignore children contents or tail content. - # `len(c) == 0` is here to ensure there is only text in the `<p>`. - if c.text and c.text.strip() == self.marker and len(c) == 0: - for i in range(len(p)): - if p[i] == c: - p[i] = elem - break - - def set_level(self, elem) -> None: - """ Adjust header level according to base level. """ - level = int(elem.tag[-1]) + self.base_level - if level > 6: - level = 6 - elem.tag = 'h%d' % level - - def add_anchor(self, c, elem_id) -> None: - anchor = etree.Element("a") - anchor.text = c.text - anchor.attrib["href"] = "#" + elem_id - anchor.attrib["class"] = self.anchorlink_class - c.text = "" - for elem in c: - anchor.append(elem) - while len(c): - c.remove(c[0]) - c.append(anchor) - - def add_permalink(self, c, elem_id) -> None: - permalink = etree.Element("a") - permalink.text = ("%spara;" % AMP_SUBSTITUTE - if self.use_permalinks is True - else self.use_permalinks) - permalink.attrib["href"] = "#" + elem_id - permalink.attrib["class"] = self.permalink_class - if self.permalink_title: - permalink.attrib["title"] = self.permalink_title - if self.permalink_leading: - permalink.tail = c.text - c.text = "" - c.insert(0, permalink) - else: - c.append(permalink) - - def build_toc_div(self, toc_list): - """ Return a string div given a toc list. """ - div = etree.Element("div") - div.attrib["class"] = self.toc_class - - # Add title to the div - if self.title: - header = etree.SubElement(div, "span") - if self.title_class: - header.attrib["class"] = self.title_class - header.text = self.title - - def build_etree_ul(toc_list, parent): - ul = etree.SubElement(parent, "ul") - for item in toc_list: - # List item link, to be inserted into the toc div - li = etree.SubElement(ul, "li") - link = etree.SubElement(li, "a") - link.text = item.get('name', '') - link.attrib["href"] = '#' + item.get('id', '') - if item['children']: - build_etree_ul(item['children'], li) - return ul - - build_etree_ul(toc_list, div) - - if 'prettify' in self.md.treeprocessors: - self.md.treeprocessors['prettify'].run(div) - - return div - - def run(self, doc): - # Get a list of id attributes - used_ids = set() - for el in doc.iter(): - if "id" in el.attrib: - used_ids.add(el.attrib["id"]) - - toc_tokens = [] - for el in doc.iter(): - if isinstance(el.tag, str) and self.header_rgx.match(el.tag): - self.set_level(el) - text = get_name(el) - - # Do not override pre-existing ids - if "id" not in el.attrib: - innertext = unescape(stashedHTML2text(text, self.md)) - el.attrib["id"] = unique(self.slugify(innertext, self.sep), used_ids) - - if int(el.tag[-1]) >= self.toc_top and int(el.tag[-1]) <= self.toc_bottom: - toc_tokens.append({ - 'level': int(el.tag[-1]), - 'id': el.attrib["id"], - 'name': unescape(stashedHTML2text( - code_escape(el.attrib.get('data-toc-label', text)), - self.md, strip_entities=False - )) - }) - - # Remove the data-toc-label attribute as it is no longer needed - if 'data-toc-label' in el.attrib: - del el.attrib['data-toc-label'] - - if self.use_anchors: - self.add_anchor(el, el.attrib["id"]) - if self.use_permalinks not in [False, None]: - self.add_permalink(el, el.attrib["id"]) - - toc_tokens = nest_toc_tokens(toc_tokens) - div = self.build_toc_div(toc_tokens) - if self.marker: - self.replace_marker(doc, div) - - # serialize and attach to markdown instance. - toc = self.md.serializer(div) - for pp in self.md.postprocessors: - toc = pp.run(toc) - self.md.toc_tokens = toc_tokens - self.md.toc = toc - - -class TocExtension(Extension): - - TreeProcessorClass = TocTreeprocessor - - def __init__(self, **kwargs): - self.config = { - 'marker': [ - '[TOC]', - 'Text to find and replace with Table of Contents. Set to an empty string to disable. ' - 'Default: `[TOC]`.' - ], - 'title': [ - '', 'Title to insert into TOC `<div>`. Default: an empty string.' - ], - 'title_class': [ - 'toctitle', 'CSS class used for the title. Default: `toctitle`.' - ], - 'toc_class': [ - 'toc', 'CSS class(es) used for the link. Default: `toclink`.' - ], - 'anchorlink': [ - False, 'True if header should be a self link. Default: `False`.' - ], - 'anchorlink_class': [ - 'toclink', 'CSS class(es) used for the link. Defaults: `toclink`.' - ], - 'permalink': [ - 0, 'True or link text if a Sphinx-style permalink should be added. Default: `False`.' - ], - 'permalink_class': [ - 'headerlink', 'CSS class(es) used for the link. Default: `headerlink`.' - ], - 'permalink_title': [ - 'Permanent link', 'Title attribute of the permalink. Default: `Permanent link`.' - ], - 'permalink_leading': [ - False, - 'True if permalinks should be placed at start of the header, rather than end. Default: False.' - ], - 'baselevel': ['1', 'Base level for headers. Default: `1`.'], - 'slugify': [ - slugify, 'Function to generate anchors based on header text. Default: `slugify`.' - ], - 'separator': ['-', 'Word separator. Default: `-`.'], - 'toc_depth': [ - 6, - 'Define the range of section levels to include in the Table of Contents. A single integer ' - '(b) defines the bottom section level (<h1>..<hb>) only. A string consisting of two digits ' - 'separated by a hyphen in between (`2-5`) defines the top (t) and the bottom (b) (<ht>..<hb>). ' - 'Default: `6` (bottom).' - ], - } - """ Default configuration options. """ - - super().__init__(**kwargs) - - def extendMarkdown(self, md): - """ Add TOC tree processor to Markdown. """ - md.registerExtension(self) - self.md = md - self.reset() - tocext = self.TreeProcessorClass(md, self.getConfigs()) - md.treeprocessors.register(tocext, 'toc', 5) - - def reset(self) -> None: - self.md.toc = '' - self.md.toc_tokens = [] - - -def makeExtension(**kwargs): # pragma: no cover - return TocExtension(**kwargs) diff --git a/plugins/markdown_preview/markdown/extensions/wikilinks.py b/plugins/markdown_preview/markdown/extensions/wikilinks.py deleted file mode 100644 index 9d5acfa..0000000 --- a/plugins/markdown_preview/markdown/extensions/wikilinks.py +++ /dev/null @@ -1,96 +0,0 @@ -# WikiLinks Extension for Python-Markdown -# ====================================== - -# Converts [[WikiLinks]] to relative links. - -# See https://Python-Markdown.github.io/extensions/wikilinks -# for documentation. - -# Original code Copyright [Waylan Limberg](http://achinghead.com/). - -# All changes Copyright The Python Markdown Project - -# License: [BSD](https://opensource.org/licenses/bsd-license.php) - -""" -Converts `[[WikiLinks]]` to relative links. - -See the [documentation](https://Python-Markdown.github.io/extensions/wikilinks) -for details. -""" - -from __future__ import annotations - -from . import Extension -from ..inlinepatterns import InlineProcessor -import xml.etree.ElementTree as etree -import re - - -def build_url(label, base, end): - """ Build a URL from the label, a base, and an end. """ - clean_label = re.sub(r'([ ]+_)|(_[ ]+)|([ ]+)', '_', label) - return '{}{}{}'.format(base, clean_label, end) - - -class WikiLinkExtension(Extension): - """ Add inline processor to Markdown. """ - - def __init__(self, **kwargs): - self.config = { - 'base_url': ['/', 'String to append to beginning or URL.'], - 'end_url': ['/', 'String to append to end of URL.'], - 'html_class': ['wikilink', 'CSS hook. Leave blank for none.'], - 'build_url': [build_url, 'Callable formats URL from label.'], - } - """ Default configuration options. """ - super().__init__(**kwargs) - - def extendMarkdown(self, md): - self.md = md - - # append to end of inline patterns - WIKILINK_RE = r'\[\[([\w0-9_ -]+)\]\]' - wikilinkPattern = WikiLinksInlineProcessor(WIKILINK_RE, self.getConfigs()) - wikilinkPattern.md = md - md.inlinePatterns.register(wikilinkPattern, 'wikilink', 75) - - -class WikiLinksInlineProcessor(InlineProcessor): - """ Build link from `wikilink`. """ - - def __init__(self, pattern, config): - super().__init__(pattern) - self.config = config - - def handleMatch(self, m, data): - if m.group(1).strip(): - base_url, end_url, html_class = self._getMeta() - label = m.group(1).strip() - url = self.config['build_url'](label, base_url, end_url) - a = etree.Element('a') - a.text = label - a.set('href', url) - if html_class: - a.set('class', html_class) - else: - a = '' - return a, m.start(0), m.end(0) - - def _getMeta(self): - """ Return meta data or `config` data. """ - base_url = self.config['base_url'] - end_url = self.config['end_url'] - html_class = self.config['html_class'] - if hasattr(self.md, 'Meta'): - if 'wiki_base_url' in self.md.Meta: - base_url = self.md.Meta['wiki_base_url'][0] - if 'wiki_end_url' in self.md.Meta: - end_url = self.md.Meta['wiki_end_url'][0] - if 'wiki_html_class' in self.md.Meta: - html_class = self.md.Meta['wiki_html_class'][0] - return base_url, end_url, html_class - - -def makeExtension(**kwargs): # pragma: no cover - return WikiLinkExtension(**kwargs) diff --git a/plugins/markdown_preview/markdown/htmlparser.py b/plugins/markdown_preview/markdown/htmlparser.py deleted file mode 100644 index 29e2300..0000000 --- a/plugins/markdown_preview/markdown/htmlparser.py +++ /dev/null @@ -1,334 +0,0 @@ -# Python Markdown - -# A Python implementation of John Gruber's Markdown. - -# Documentation: https://python-markdown.github.io/ -# GitHub: https://github.com/Python-Markdown/markdown/ -# PyPI: https://pypi.org/project/Markdown/ - -# Started by Manfred Stienstra (http://www.dwerg.net/). -# Maintained for a few years by Yuri Takhteyev (http://www.freewisdom.org). -# Currently maintained by Waylan Limberg (https://github.com/waylan), -# Dmitry Shachnev (https://github.com/mitya57) and Isaac Muse (https://github.com/facelessuser). - -# Copyright 2007-2023 The Python Markdown Project (v. 1.7 and later) -# Copyright 2004, 2005, 2006 Yuri Takhteyev (v. 0.2-1.6b) -# Copyright 2004 Manfred Stienstra (the original version) - -# License: BSD (see LICENSE.md for details). - -""" -This module imports a copy of [`html.parser.HTMLParser`][] and modifies it heavily through monkey-patches. -A copy is imported rather than the module being directly imported as this ensures that the user can import -and use the unmodified library for their own needs. -""" - -from __future__ import annotations - -import re -import importlib.util -import sys - - -# Import a copy of the html.parser lib as `htmlparser` so we can monkeypatch it. -# Users can still do `from html import parser` and get the default behavior. -spec = importlib.util.find_spec('html.parser') -htmlparser = importlib.util.module_from_spec(spec) -spec.loader.exec_module(htmlparser) -sys.modules['htmlparser'] = htmlparser - -# Monkeypatch `HTMLParser` to only accept `?>` to close Processing Instructions. -htmlparser.piclose = re.compile(r'\?>') -# Monkeypatch `HTMLParser` to only recognize entity references with a closing semicolon. -htmlparser.entityref = re.compile(r'&([a-zA-Z][-.a-zA-Z0-9]*);') -# Monkeypatch `HTMLParser` to no longer support partial entities. We are always feeding a complete block, -# so the 'incomplete' functionality is unnecessary. As the `entityref` regex is run right before incomplete, -# and the two regex are the same, then incomplete will simply never match and we avoid the logic within. -htmlparser.incomplete = htmlparser.entityref -# Monkeypatch `HTMLParser` to not accept a backtick in a tag name, attribute name, or bare value. -htmlparser.locatestarttagend_tolerant = re.compile(r""" - <[a-zA-Z][^`\t\n\r\f />\x00]* # tag name <= added backtick here - (?:[\s/]* # optional whitespace before attribute name - (?:(?<=['"\s/])[^`\s/>][^\s/=>]* # attribute name <= added backtick here - (?:\s*=+\s* # value indicator - (?:'[^']*' # LITA-enclosed value - |"[^"]*" # LIT-enclosed value - |(?!['"])[^`>\s]* # bare value <= added backtick here - ) - (?:\s*,)* # possibly followed by a comma - )?(?:\s|/(?!>))* - )* - )? - \s* # trailing whitespace -""", re.VERBOSE) - -# Match a blank line at the start of a block of text (two newlines). -# The newlines may be preceded by additional whitespace. -blank_line_re = re.compile(r'^([ ]*\n){2}') - - -class HTMLExtractor(htmlparser.HTMLParser): - """ - Extract raw HTML from text. - - The raw HTML is stored in the [`htmlStash`][markdown.util.HtmlStash] of the - [`Markdown`][markdown.Markdown] instance passed to `md` and the remaining text - is stored in `cleandoc` as a list of strings. - """ - - def __init__(self, md, *args, **kwargs): - if 'convert_charrefs' not in kwargs: - kwargs['convert_charrefs'] = False - - # Block tags that should contain no content (self closing) - self.empty_tags = set(['hr']) - - self.lineno_start_cache = [0] - - # This calls self.reset - super().__init__(*args, **kwargs) - self.md = md - - def reset(self): - """Reset this instance. Loses all unprocessed data.""" - self.inraw = False - self.intail = False - self.stack = [] # When `inraw==True`, stack contains a list of tags - self._cache = [] - self.cleandoc = [] - self.lineno_start_cache = [0] - - super().reset() - - def close(self): - """Handle any buffered data.""" - super().close() - if len(self.rawdata): - # Temp fix for https://bugs.python.org/issue41989 - # TODO: remove this when the bug is fixed in all supported Python versions. - if self.convert_charrefs and not self.cdata_elem: # pragma: no cover - self.handle_data(htmlparser.unescape(self.rawdata)) - else: - self.handle_data(self.rawdata) - # Handle any unclosed tags. - if len(self._cache): - self.cleandoc.append(self.md.htmlStash.store(''.join(self._cache))) - self._cache = [] - - @property - def line_offset(self) -> int: - """Returns char index in `self.rawdata` for the start of the current line. """ - for ii in range(len(self.lineno_start_cache)-1, self.lineno-1): - last_line_start_pos = self.lineno_start_cache[ii] - lf_pos = self.rawdata.find('\n', last_line_start_pos) - if lf_pos == -1: - # No more newlines found. Use end of raw data as start of line beyond end. - lf_pos = len(self.rawdata) - self.lineno_start_cache.append(lf_pos+1) - - return self.lineno_start_cache[self.lineno-1] - - def at_line_start(self) -> bool: - """ - Returns True if current position is at start of line. - - Allows for up to three blank spaces at start of line. - """ - if self.offset == 0: - return True - if self.offset > 3: - return False - # Confirm up to first 3 chars are whitespace - return self.rawdata[self.line_offset:self.line_offset + self.offset].strip() == '' - - def get_endtag_text(self, tag: str) -> str: - """ - Returns the text of the end tag. - - If it fails to extract the actual text from the raw data, it builds a closing tag with `tag`. - """ - # Attempt to extract actual tag from raw source text - start = self.line_offset + self.offset - m = htmlparser.endendtag.search(self.rawdata, start) - if m: - return self.rawdata[start:m.end()] - else: # pragma: no cover - # Failed to extract from raw data. Assume well formed and lowercase. - return '</{}>'.format(tag) - - def handle_starttag(self, tag: str, attrs: list[tuple[str, str]]): - # Handle tags that should always be empty and do not specify a closing tag - if tag in self.empty_tags: - self.handle_startendtag(tag, attrs) - return - - if self.md.is_block_level(tag) and (self.intail or (self.at_line_start() and not self.inraw)): - # Started a new raw block. Prepare stack. - self.inraw = True - self.cleandoc.append('\n') - - text = self.get_starttag_text() - if self.inraw: - self.stack.append(tag) - self._cache.append(text) - else: - self.cleandoc.append(text) - if tag in self.CDATA_CONTENT_ELEMENTS: - # This is presumably a standalone tag in a code span (see #1036). - self.clear_cdata_mode() - - def handle_endtag(self, tag: str): - text = self.get_endtag_text(tag) - - if self.inraw: - self._cache.append(text) - if tag in self.stack: - # Remove tag from stack - while self.stack: - if self.stack.pop() == tag: - break - if len(self.stack) == 0: - # End of raw block. - if blank_line_re.match(self.rawdata[self.line_offset + self.offset + len(text):]): - # Preserve blank line and end of raw block. - self._cache.append('\n') - else: - # More content exists after `endtag`. - self.intail = True - # Reset stack. - self.inraw = False - self.cleandoc.append(self.md.htmlStash.store(''.join(self._cache))) - # Insert blank line between this and next line. - self.cleandoc.append('\n\n') - self._cache = [] - else: - self.cleandoc.append(text) - - def handle_data(self, data: str): - if self.intail and '\n' in data: - self.intail = False - if self.inraw: - self._cache.append(data) - else: - self.cleandoc.append(data) - - def handle_empty_tag(self, data: str, is_block: bool): - """ Handle empty tags (`<data>`). """ - if self.inraw or self.intail: - # Append this to the existing raw block - self._cache.append(data) - elif self.at_line_start() and is_block: - # Handle this as a standalone raw block - if blank_line_re.match(self.rawdata[self.line_offset + self.offset + len(data):]): - # Preserve blank line after tag in raw block. - data += '\n' - else: - # More content exists after tag. - self.intail = True - item = self.cleandoc[-1] if self.cleandoc else '' - # If we only have one newline before block element, add another - if not item.endswith('\n\n') and item.endswith('\n'): - self.cleandoc.append('\n') - self.cleandoc.append(self.md.htmlStash.store(data)) - # Insert blank line between this and next line. - self.cleandoc.append('\n\n') - else: - self.cleandoc.append(data) - - def handle_startendtag(self, tag: str, attrs: list[tuple[str, str]]): - self.handle_empty_tag(self.get_starttag_text(), is_block=self.md.is_block_level(tag)) - - def handle_charref(self, name: str): - self.handle_empty_tag('&#{};'.format(name), is_block=False) - - def handle_entityref(self, name: str): - self.handle_empty_tag('&{};'.format(name), is_block=False) - - def handle_comment(self, data: str): - self.handle_empty_tag('<!--{}-->'.format(data), is_block=True) - - def handle_decl(self, data: str): - self.handle_empty_tag('<!{}>'.format(data), is_block=True) - - def handle_pi(self, data: str): - self.handle_empty_tag('<?{}?>'.format(data), is_block=True) - - def unknown_decl(self, data: str): - end = ']]>' if data.startswith('CDATA[') else ']>' - self.handle_empty_tag('<![{}{}'.format(data, end), is_block=True) - - def parse_pi(self, i: int) -> int: - if self.at_line_start() or self.intail: - return super().parse_pi(i) - # This is not the beginning of a raw block so treat as plain data - # and avoid consuming any tags which may follow (see #1066). - self.handle_data('<?') - return i + 2 - - def parse_html_declaration(self, i: int) -> int: - if self.at_line_start() or self.intail: - return super().parse_html_declaration(i) - # This is not the beginning of a raw block so treat as plain data - # and avoid consuming any tags which may follow (see #1066). - self.handle_data('<!') - return i + 2 - - # The rest has been copied from base class in standard lib to address #1036. - # As `__startag_text` is private, all references to it must be in this subclass. - # The last few lines of `parse_starttag` are reversed so that `handle_starttag` - # can override `cdata_mode` in certain situations (in a code span). - __starttag_text: str | None = None - - def get_starttag_text(self) -> str: - """Return full source of start tag: `<...>`.""" - return self.__starttag_text - - def parse_starttag(self, i: int) -> int: # pragma: no cover - self.__starttag_text = None - endpos = self.check_for_whole_start_tag(i) - if endpos < 0: - return endpos - rawdata = self.rawdata - self.__starttag_text = rawdata[i:endpos] - - # Now parse the data between `i+1` and `j` into a tag and `attrs` - attrs = [] - match = htmlparser.tagfind_tolerant.match(rawdata, i+1) - assert match, 'unexpected call to parse_starttag()' - k = match.end() - self.lasttag = tag = match.group(1).lower() - while k < endpos: - m = htmlparser.attrfind_tolerant.match(rawdata, k) - if not m: - break - attrname, rest, attrvalue = m.group(1, 2, 3) - if not rest: - attrvalue = None - elif attrvalue[:1] == '\'' == attrvalue[-1:] or \ - attrvalue[:1] == '"' == attrvalue[-1:]: # noqa: E127 - attrvalue = attrvalue[1:-1] - if attrvalue: - attrvalue = htmlparser.unescape(attrvalue) - attrs.append((attrname.lower(), attrvalue)) - k = m.end() - - end = rawdata[k:endpos].strip() - if end not in (">", "/>"): - lineno, offset = self.getpos() - if "\n" in self.__starttag_text: - lineno = lineno + self.__starttag_text.count("\n") - offset = len(self.__starttag_text) \ - - self.__starttag_text.rfind("\n") # noqa: E127 - else: - offset = offset + len(self.__starttag_text) - self.handle_data(rawdata[i:endpos]) - return endpos - if end.endswith('/>'): - # XHTML-style empty tag: `<span attr="value" />` - self.handle_startendtag(tag, attrs) - else: - # *** set `cdata_mode` first so we can override it in `handle_starttag` (see #1036) *** - if tag in self.CDATA_CONTENT_ELEMENTS: - self.set_cdata_mode(tag) - self.handle_starttag(tag, attrs) - return endpos diff --git a/plugins/markdown_preview/markdown/inlinepatterns.py b/plugins/markdown_preview/markdown/inlinepatterns.py deleted file mode 100644 index 296ab83..0000000 --- a/plugins/markdown_preview/markdown/inlinepatterns.py +++ /dev/null @@ -1,992 +0,0 @@ -# Python Markdown - -# A Python implementation of John Gruber's Markdown. - -# Documentation: https://python-markdown.github.io/ -# GitHub: https://github.com/Python-Markdown/markdown/ -# PyPI: https://pypi.org/project/Markdown/ - -# Started by Manfred Stienstra (http://www.dwerg.net/). -# Maintained for a few years by Yuri Takhteyev (http://www.freewisdom.org). -# Currently maintained by Waylan Limberg (https://github.com/waylan), -# Dmitry Shachnev (https://github.com/mitya57) and Isaac Muse (https://github.com/facelessuser). - -# Copyright 2007-2023 The Python Markdown Project (v. 1.7 and later) -# Copyright 2004, 2005, 2006 Yuri Takhteyev (v. 0.2-1.6b) -# Copyright 2004 Manfred Stienstra (the original version) - -# License: BSD (see LICENSE.md for details). - -""" -In version 3.0, a new, more flexible inline processor was added, [`markdown.inlinepatterns.InlineProcessor`][]. The -original inline patterns, which inherit from [`markdown.inlinepatterns.Pattern`][] or one of its children are still -supported, though users are encouraged to migrate. - -The new `InlineProcessor` provides two major enhancements to `Patterns`: - -1. Inline Processors no longer need to match the entire block, so regular expressions no longer need to start with - `r'^(.*?)'` and end with `r'(.*?)%'`. This runs faster. The returned [`Match`][re.Match] object will only contain - what is explicitly matched in the pattern, and extension pattern groups now start with `m.group(1)`. - -2. The `handleMatch` method now takes an additional input called `data`, which is the entire block under analysis, - not just what is matched with the specified pattern. The method now returns the element *and* the indexes relative - to `data` that the return element is replacing (usually `m.start(0)` and `m.end(0)`). If the boundaries are - returned as `None`, it is assumed that the match did not take place, and nothing will be altered in `data`. - - This allows handling of more complex constructs than regular expressions can handle, e.g., matching nested - brackets, and explicit control of the span "consumed" by the processor. - -""" - -from __future__ import annotations - -from . import util -from typing import TYPE_CHECKING, Any, Collection, NamedTuple -import re -import xml.etree.ElementTree as etree -try: # pragma: no cover - from html import entities -except ImportError: # pragma: no cover - import htmlentitydefs as entities - -if TYPE_CHECKING: # pragma: no cover - from markdown import Markdown - - -def build_inlinepatterns(md: Markdown, **kwargs: Any) -> util.Registry[InlineProcessor]: - """ - Build the default set of inline patterns for Markdown. - - The order in which processors and/or patterns are applied is very important - e.g. if we first replace - `http://.../` links with `<a>` tags and _then_ try to replace inline HTML, we would end up with a mess. So, we - apply the expressions in the following order: - - * backticks and escaped characters have to be handled before everything else so that we can preempt any markdown - patterns by escaping them; - - * then we handle the various types of links (auto-links must be handled before inline HTML); - - * then we handle inline HTML. At this point we will simply replace all inline HTML strings with a placeholder - and add the actual HTML to a stash; - - * finally we apply strong, emphasis, etc. - - """ - inlinePatterns = util.Registry() - inlinePatterns.register(BacktickInlineProcessor(BACKTICK_RE), 'backtick', 190) - inlinePatterns.register(EscapeInlineProcessor(ESCAPE_RE, md), 'escape', 180) - inlinePatterns.register(ReferenceInlineProcessor(REFERENCE_RE, md), 'reference', 170) - inlinePatterns.register(LinkInlineProcessor(LINK_RE, md), 'link', 160) - inlinePatterns.register(ImageInlineProcessor(IMAGE_LINK_RE, md), 'image_link', 150) - inlinePatterns.register( - ImageReferenceInlineProcessor(IMAGE_REFERENCE_RE, md), 'image_reference', 140 - ) - inlinePatterns.register( - ShortReferenceInlineProcessor(REFERENCE_RE, md), 'short_reference', 130 - ) - inlinePatterns.register( - ShortImageReferenceInlineProcessor(IMAGE_REFERENCE_RE, md), 'short_image_ref', 125 - ) - inlinePatterns.register(AutolinkInlineProcessor(AUTOLINK_RE, md), 'autolink', 120) - inlinePatterns.register(AutomailInlineProcessor(AUTOMAIL_RE, md), 'automail', 110) - inlinePatterns.register(SubstituteTagInlineProcessor(LINE_BREAK_RE, 'br'), 'linebreak', 100) - inlinePatterns.register(HtmlInlineProcessor(HTML_RE, md), 'html', 90) - inlinePatterns.register(HtmlInlineProcessor(ENTITY_RE, md), 'entity', 80) - inlinePatterns.register(SimpleTextInlineProcessor(NOT_STRONG_RE), 'not_strong', 70) - inlinePatterns.register(AsteriskProcessor(r'\*'), 'em_strong', 60) - inlinePatterns.register(UnderscoreProcessor(r'_'), 'em_strong2', 50) - return inlinePatterns - - -# The actual regular expressions for patterns -# ----------------------------------------------------------------------------- - -NOIMG = r'(?<!\!)' -""" Match not an image. Partial regular expression which matches if not preceded by `!`. """ - -BACKTICK_RE = r'(?:(?<!\\)((?:\\{2})+)(?=`+)|(?<!\\)(`+)(.+?)(?<!`)\2(?!`))' -""" Match backtick quoted string (`` `e=f()` `` or ``` ``e=f("`")`` ```). """ - -ESCAPE_RE = r'\\(.)' -""" Match a backslash escaped character (`\\<` or `\\*`). """ - -EMPHASIS_RE = r'(\*)([^\*]+)\1' -""" Match emphasis with an asterisk (`*emphasis*`). """ - -STRONG_RE = r'(\*{2})(.+?)\1' -""" Match strong with an asterisk (`**strong**`). """ - -SMART_STRONG_RE = r'(?<!\w)(_{2})(?!_)(.+?)(?<!_)\1(?!\w)' -""" Match strong with underscore while ignoring middle word underscores (`__smart__strong__`). """ - -SMART_EMPHASIS_RE = r'(?<!\w)(_)(?!_)(.+?)(?<!_)\1(?!\w)' -""" Match emphasis with underscore while ignoring middle word underscores (`_smart_emphasis_`). """ - -SMART_STRONG_EM_RE = r'(?<!\w)(\_)\1(?!\1)(.+?)(?<!\w)\1(?!\1)(.+?)\1{3}(?!\w)' -""" Match strong emphasis with underscores (`__strong _em__`). """ - -EM_STRONG_RE = r'(\*)\1{2}(.+?)\1(.*?)\1{2}' -""" Match emphasis strong with asterisk (`***strongem***` or `***em*strong**`). """ - -EM_STRONG2_RE = r'(_)\1{2}(.+?)\1(.*?)\1{2}' -""" Match emphasis strong with underscores (`___emstrong___` or `___em_strong__`). """ - -STRONG_EM_RE = r'(\*)\1{2}(.+?)\1{2}(.*?)\1' -""" Match strong emphasis with asterisk (`***strong**em*`). """ - -STRONG_EM2_RE = r'(_)\1{2}(.+?)\1{2}(.*?)\1' -""" Match strong emphasis with underscores (`___strong__em_`). """ - -STRONG_EM3_RE = r'(\*)\1(?!\1)([^*]+?)\1(?!\1)(.+?)\1{3}' -""" Match strong emphasis with asterisk (`**strong*em***`). """ - -LINK_RE = NOIMG + r'\[' -""" Match start of in-line link (`[text](url)` or `[text](<url>)` or `[text](url "title")`). """ - -IMAGE_LINK_RE = r'\!\[' -""" Match start of in-line image link (`![alttxt](url)` or `![alttxt](<url>)`). """ - -REFERENCE_RE = LINK_RE -""" Match start of reference link (`[Label][3]`). """ - -IMAGE_REFERENCE_RE = IMAGE_LINK_RE -""" Match start of image reference (`![alt text][2]`). """ - -NOT_STRONG_RE = r'((^|(?<=\s))(\*{1,3}|_{1,3})(?=\s|$))' -""" Match a stand-alone `*` or `_`. """ - -AUTOLINK_RE = r'<((?:[Ff]|[Hh][Tt])[Tt][Pp][Ss]?://[^<>]*)>' -""" Match an automatic link (`<http://www.example.com>`). """ - -AUTOMAIL_RE = r'<([^<> !]+@[^@<> ]+)>' -""" Match an automatic email link (`<me@example.com>`). """ - -HTML_RE = r'(<(\/?[a-zA-Z][^<>@ ]*( [^<>]*)?|!--(?:(?!<!--|-->).)*--)>)' -""" Match an HTML tag (`<...>`). """ - -ENTITY_RE = r'(&(?:\#[0-9]+|\#x[0-9a-fA-F]+|[a-zA-Z0-9]+);)' -""" Match an HTML entity (`&` (decimal) or `&` (hex) or `&` (named)). """ - -LINE_BREAK_RE = r' \n' -""" Match two spaces at end of line. """ - - -def dequote(string: str) -> str: - """Remove quotes from around a string.""" - if ((string.startswith('"') and string.endswith('"')) or - (string.startswith("'") and string.endswith("'"))): - return string[1:-1] - else: - return string - - -class EmStrongItem(NamedTuple): - """Emphasis/strong pattern item.""" - pattern: re.Pattern[str] - builder: str - tags: str - - -# The pattern classes -# ----------------------------------------------------------------------------- - - -class Pattern: # pragma: no cover - """ - Base class that inline patterns subclass. - - Inline patterns are handled by means of `Pattern` subclasses, one per regular expression. - Each pattern object uses a single regular expression and must support the following methods: - [`getCompiledRegExp`][markdown.inlinepatterns.Pattern.getCompiledRegExp] and - [`handleMatch`][markdown.inlinepatterns.Pattern.handleMatch]. - - All the regular expressions used by `Pattern` subclasses must capture the whole block. For this - reason, they all start with `^(.*)` and end with `(.*)!`. When passing a regular expression on - class initialization, the `^(.*)` and `(.*)!` are added automatically and the regular expression - is pre-compiled. - - It is strongly suggested that the newer style [`markdown.inlinepatterns.InlineProcessor`][] that - use a more efficient and flexible search approach be used instead. However, the older style - `Pattern` remains for backward compatibility with many existing third-party extensions. - - """ - - ANCESTOR_EXCLUDES: Collection[str] = tuple() - """ - A collection of elements which are undesirable ancestors. The processor will be skipped if it - would cause the content to be a descendant of one of the listed tag names. - """ - - def __init__(self, pattern: str, md: Markdown | None = None): - """ - Create an instant of an inline pattern. - - Arguments: - pattern: A regular expression that matches a pattern. - md: An optional pointer to the instance of `markdown.Markdown` and is available as - `self.md` on the class instance. - - - """ - self.pattern = pattern - self.compiled_re = re.compile(r"^(.*?)%s(.*)$" % pattern, - re.DOTALL | re.UNICODE) - - self.md = md - - def getCompiledRegExp(self) -> re.Pattern: - """ Return a compiled regular expression. """ - return self.compiled_re - - def handleMatch(self, m: re.Match[str]) -> etree.Element | str: - """Return a ElementTree element from the given match. - - Subclasses should override this method. - - Arguments: - m: A match object containing a match of the pattern. - - Returns: An ElementTree Element object. - - """ - pass # pragma: no cover - - def type(self) -> str: - """ Return class name, to define pattern type """ - return self.__class__.__name__ - - def unescape(self, text: str) -> str: - """ Return unescaped text given text with an inline placeholder. """ - try: - stash = self.md.treeprocessors['inline'].stashed_nodes - except KeyError: # pragma: no cover - return text - - def get_stash(m): - id = m.group(1) - if id in stash: - value = stash.get(id) - if isinstance(value, str): - return value - else: - # An `etree` Element - return text content only - return ''.join(value.itertext()) - return util.INLINE_PLACEHOLDER_RE.sub(get_stash, text) - - -class InlineProcessor(Pattern): - """ - Base class that inline processors subclass. - - This is the newer style inline processor that uses a more - efficient and flexible search approach. - - """ - - def __init__(self, pattern: str, md: Markdown | None = None): - """ - Create an instant of an inline processor. - - Arguments: - pattern: A regular expression that matches a pattern. - md: An optional pointer to the instance of `markdown.Markdown` and is available as - `self.md` on the class instance. - - """ - self.pattern = pattern - self.compiled_re = re.compile(pattern, re.DOTALL | re.UNICODE) - - # API for Markdown to pass `safe_mode` into instance - self.safe_mode = False - self.md = md - - def handleMatch(self, m: re.Match[str], data: str) -> tuple[etree.Element | str | None, int | None, int | None]: - """Return a ElementTree element from the given match and the - start and end index of the matched text. - - If `start` and/or `end` are returned as `None`, it will be - assumed that the processor did not find a valid region of text. - - Subclasses should override this method. - - Arguments: - m: A re match object containing a match of the pattern. - data: The buffer currently under analysis. - - Returns: - el: The ElementTree element, text or None. - start: The start of the region that has been matched or None. - end: The end of the region that has been matched or None. - - """ - pass # pragma: no cover - - -class SimpleTextPattern(Pattern): # pragma: no cover - """ Return a simple text of `group(2)` of a Pattern. """ - def handleMatch(self, m: re.Match[str]) -> str: - """ Return string content of `group(2)` of a matching pattern. """ - return m.group(2) - - -class SimpleTextInlineProcessor(InlineProcessor): - """ Return a simple text of `group(1)` of a Pattern. """ - def handleMatch(self, m: re.Match[str], data: str) -> tuple[str, int, int]: - """ Return string content of `group(1)` of a matching pattern. """ - return m.group(1), m.start(0), m.end(0) - - -class EscapeInlineProcessor(InlineProcessor): - """ Return an escaped character. """ - - def handleMatch(self, m: re.Match[str], data: str) -> tuple[str | None, int, int]: - """ - If the character matched by `group(1)` of a pattern is in [`ESCAPED_CHARS`][markdown.Markdown.ESCAPED_CHARS] - then return the integer representing the character's Unicode code point (as returned by [`ord`][]) wrapped - in [`util.STX`][markdown.util.STX] and [`util.ETX`][markdown.util.ETX]. - - If the matched character is not in [`ESCAPED_CHARS`][markdown.Markdown.ESCAPED_CHARS], then return `None`. - """ - - char = m.group(1) - if char in self.md.ESCAPED_CHARS: - return '{}{}{}'.format(util.STX, ord(char), util.ETX), m.start(0), m.end(0) - else: - return None, m.start(0), m.end(0) - - -class SimpleTagPattern(Pattern): # pragma: no cover - """ - Return element of type `tag` with a text attribute of `group(3)` - of a Pattern. - - """ - def __init__(self, pattern: str, tag: str): - """ - Create an instant of an simple tag pattern. - - Arguments: - pattern: A regular expression that matches a pattern. - tag: Tag of element. - - """ - Pattern.__init__(self, pattern) - self.tag = tag - """ The tag of the rendered element. """ - - def handleMatch(self, m: re.Match[str]) -> etree.Element: - """ - Return [`Element`][xml.etree.ElementTree.Element] of type `tag` with the string in `group(3)` of a - matching pattern as the Element's text. - """ - el = etree.Element(self.tag) - el.text = m.group(3) - return el - - -class SimpleTagInlineProcessor(InlineProcessor): - """ - Return element of type `tag` with a text attribute of `group(2)` - of a Pattern. - - """ - def __init__(self, pattern: str, tag: str): - """ - Create an instant of an simple tag processor. - - Arguments: - pattern: A regular expression that matches a pattern. - tag: Tag of element. - - """ - InlineProcessor.__init__(self, pattern) - self.tag = tag - """ The tag of the rendered element. """ - - def handleMatch(self, m: re.Match[str], data: str) -> tuple[etree.Element, int, int]: # pragma: no cover - """ - Return [`Element`][xml.etree.ElementTree.Element] of type `tag` with the string in `group(2)` of a - matching pattern as the Element's text. - """ - el = etree.Element(self.tag) - el.text = m.group(2) - return el, m.start(0), m.end(0) - - -class SubstituteTagPattern(SimpleTagPattern): # pragma: no cover - """ Return an element of type `tag` with no children. """ - def handleMatch(self, m: re.Match[str]) -> etree.Element: - """ Return empty [`Element`][xml.etree.ElementTree.Element] of type `tag`. """ - return etree.Element(self.tag) - - -class SubstituteTagInlineProcessor(SimpleTagInlineProcessor): - """ Return an element of type `tag` with no children. """ - def handleMatch(self, m: re.Match[str], data: str) -> tuple[etree.Element, int, int]: - """ Return empty [`Element`][xml.etree.ElementTree.Element] of type `tag`. """ - return etree.Element(self.tag), m.start(0), m.end(0) - - -class BacktickInlineProcessor(InlineProcessor): - """ Return a `<code>` element containing the escaped matching text. """ - def __init__(self, pattern): - InlineProcessor.__init__(self, pattern) - self.ESCAPED_BSLASH = '{}{}{}'.format(util.STX, ord('\\'), util.ETX) - self.tag = 'code' - """ The tag of the rendered element. """ - - def handleMatch(self, m: re.Match[str], data: str) -> tuple[etree.Element | str, int, int]: - """ - If the match contains `group(3)` of a pattern, then return a `code` - [`Element`][xml.etree.ElementTree.Element] which contains HTML escaped text (with - [`code_escape`][markdown.util.code_escape]) as an [`AtomicString`][markdown.util.AtomicString]. - - If the match does not contain `group(3)` then return the text of `group(1)` backslash escaped. - - """ - if m.group(3): - el = etree.Element(self.tag) - el.text = util.AtomicString(util.code_escape(m.group(3).strip())) - return el, m.start(0), m.end(0) - else: - return m.group(1).replace('\\\\', self.ESCAPED_BSLASH), m.start(0), m.end(0) - - -class DoubleTagPattern(SimpleTagPattern): # pragma: no cover - """Return a ElementTree element nested in tag2 nested in tag1. - - Useful for strong emphasis etc. - - """ - def handleMatch(self, m: re.Match[str]) -> etree.Element: - """ - Return [`Element`][xml.etree.ElementTree.Element] in following format: - `<tag1><tag2>group(3)</tag2>group(4)</tag2>` where `group(4)` is optional. - - """ - tag1, tag2 = self.tag.split(",") - el1 = etree.Element(tag1) - el2 = etree.SubElement(el1, tag2) - el2.text = m.group(3) - if len(m.groups()) == 5: - el2.tail = m.group(4) - return el1 - - -class DoubleTagInlineProcessor(SimpleTagInlineProcessor): - """Return a ElementTree element nested in tag2 nested in tag1. - - Useful for strong emphasis etc. - - """ - def handleMatch(self, m: re.Match[str], data: str) -> tuple[etree.Element, int, int]: # pragma: no cover - """ - Return [`Element`][xml.etree.ElementTree.Element] in following format: - `<tag1><tag2>group(2)</tag2>group(3)</tag2>` where `group(3)` is optional. - - """ - tag1, tag2 = self.tag.split(",") - el1 = etree.Element(tag1) - el2 = etree.SubElement(el1, tag2) - el2.text = m.group(2) - if len(m.groups()) == 3: - el2.tail = m.group(3) - return el1, m.start(0), m.end(0) - - -class HtmlInlineProcessor(InlineProcessor): - """ Store raw inline html and return a placeholder. """ - def handleMatch(self, m: re.Match[str], data: str) -> tuple[str, int, int]: - """ Store the text of `group(1)` of a pattern and return a placeholder string. """ - rawhtml = self.backslash_unescape(self.unescape(m.group(1))) - place_holder = self.md.htmlStash.store(rawhtml) - return place_holder, m.start(0), m.end(0) - - def unescape(self, text): - """ Return unescaped text given text with an inline placeholder. """ - try: - stash = self.md.treeprocessors['inline'].stashed_nodes - except KeyError: # pragma: no cover - return text - - def get_stash(m): - id = m.group(1) - value = stash.get(id) - if value is not None: - try: - return self.md.serializer(value) - except Exception: - return r'\%s' % value - - return util.INLINE_PLACEHOLDER_RE.sub(get_stash, text) - - def backslash_unescape(self, text): - """ Return text with backslash escapes undone (backslashes are restored). """ - try: - RE = self.md.treeprocessors['unescape'].RE - except KeyError: # pragma: no cover - return text - - def _unescape(m): - return chr(int(m.group(1))) - - return RE.sub(_unescape, text) - - -class AsteriskProcessor(InlineProcessor): - """Emphasis processor for handling strong and em matches inside asterisks.""" - - PATTERNS = [ - EmStrongItem(re.compile(EM_STRONG_RE, re.DOTALL | re.UNICODE), 'double', 'strong,em'), - EmStrongItem(re.compile(STRONG_EM_RE, re.DOTALL | re.UNICODE), 'double', 'em,strong'), - EmStrongItem(re.compile(STRONG_EM3_RE, re.DOTALL | re.UNICODE), 'double2', 'strong,em'), - EmStrongItem(re.compile(STRONG_RE, re.DOTALL | re.UNICODE), 'single', 'strong'), - EmStrongItem(re.compile(EMPHASIS_RE, re.DOTALL | re.UNICODE), 'single', 'em') - ] - """ The various strong and emphasis patterns handled by this processor. """ - - def build_single(self, m, tag, idx): - """Return single tag.""" - el1 = etree.Element(tag) - text = m.group(2) - self.parse_sub_patterns(text, el1, None, idx) - return el1 - - def build_double(self, m, tags, idx): - """Return double tag.""" - - tag1, tag2 = tags.split(",") - el1 = etree.Element(tag1) - el2 = etree.Element(tag2) - text = m.group(2) - self.parse_sub_patterns(text, el2, None, idx) - el1.append(el2) - if len(m.groups()) == 3: - text = m.group(3) - self.parse_sub_patterns(text, el1, el2, idx) - return el1 - - def build_double2(self, m, tags, idx): - """Return double tags (variant 2): `<strong>text <em>text</em></strong>`.""" - - tag1, tag2 = tags.split(",") - el1 = etree.Element(tag1) - el2 = etree.Element(tag2) - text = m.group(2) - self.parse_sub_patterns(text, el1, None, idx) - text = m.group(3) - el1.append(el2) - self.parse_sub_patterns(text, el2, None, idx) - return el1 - - def parse_sub_patterns(self, data, parent, last, idx) -> None: - """ - Parses sub patterns. - - `data` (`str`): - text to evaluate. - - `parent` (`etree.Element`): - Parent to attach text and sub elements to. - - `last` (`etree.Element`): - Last appended child to parent. Can also be None if parent has no children. - - `idx` (`int`): - Current pattern index that was used to evaluate the parent. - - """ - - offset = 0 - pos = 0 - - length = len(data) - while pos < length: - # Find the start of potential emphasis or strong tokens - if self.compiled_re.match(data, pos): - matched = False - # See if the we can match an emphasis/strong pattern - for index, item in enumerate(self.PATTERNS): - # Only evaluate patterns that are after what was used on the parent - if index <= idx: - continue - m = item.pattern.match(data, pos) - if m: - # Append child nodes to parent - # Text nodes should be appended to the last - # child if present, and if not, it should - # be added as the parent's text node. - text = data[offset:m.start(0)] - if text: - if last is not None: - last.tail = text - else: - parent.text = text - el = self.build_element(m, item.builder, item.tags, index) - parent.append(el) - last = el - # Move our position past the matched hunk - offset = pos = m.end(0) - matched = True - if not matched: - # We matched nothing, move on to the next character - pos += 1 - else: - # Increment position as no potential emphasis start was found. - pos += 1 - - # Append any leftover text as a text node. - text = data[offset:] - if text: - if last is not None: - last.tail = text - else: - parent.text = text - - def build_element(self, m, builder, tags, index): - """Element builder.""" - - if builder == 'double2': - return self.build_double2(m, tags, index) - elif builder == 'double': - return self.build_double(m, tags, index) - else: - return self.build_single(m, tags, index) - - def handleMatch(self, m: re.Match[str], data: str) -> tuple[etree.Element | None, int | None, int | None]: - """Parse patterns.""" - - el = None - start = None - end = None - - for index, item in enumerate(self.PATTERNS): - m1 = item.pattern.match(data, m.start(0)) - if m1: - start = m1.start(0) - end = m1.end(0) - el = self.build_element(m1, item.builder, item.tags, index) - break - return el, start, end - - -class UnderscoreProcessor(AsteriskProcessor): - """Emphasis processor for handling strong and em matches inside underscores.""" - - PATTERNS = [ - EmStrongItem(re.compile(EM_STRONG2_RE, re.DOTALL | re.UNICODE), 'double', 'strong,em'), - EmStrongItem(re.compile(STRONG_EM2_RE, re.DOTALL | re.UNICODE), 'double', 'em,strong'), - EmStrongItem(re.compile(SMART_STRONG_EM_RE, re.DOTALL | re.UNICODE), 'double2', 'strong,em'), - EmStrongItem(re.compile(SMART_STRONG_RE, re.DOTALL | re.UNICODE), 'single', 'strong'), - EmStrongItem(re.compile(SMART_EMPHASIS_RE, re.DOTALL | re.UNICODE), 'single', 'em') - ] - """ The various strong and emphasis patterns handled by this processor. """ - - -class LinkInlineProcessor(InlineProcessor): - """ Return a link element from the given match. """ - RE_LINK = re.compile(r'''\(\s*(?:(<[^<>]*>)\s*(?:('[^']*'|"[^"]*")\s*)?\))?''', re.DOTALL | re.UNICODE) - RE_TITLE_CLEAN = re.compile(r'\s') - - def handleMatch(self, m: re.Match[str], data: str) -> tuple[etree.Element | None, int | None, int | None]: - """ Return an `a` [`Element`][xml.etree.ElementTree.Element] or `(None, None, None)`. """ - text, index, handled = self.getText(data, m.end(0)) - - if not handled: - return None, None, None - - href, title, index, handled = self.getLink(data, index) - if not handled: - return None, None, None - - el = etree.Element("a") - el.text = text - - el.set("href", href) - - if title is not None: - el.set("title", title) - - return el, m.start(0), index - - def getLink(self, data, index): - """Parse data between `()` of `[Text]()` allowing recursive `()`. """ - - href = '' - title = None - handled = False - - m = self.RE_LINK.match(data, pos=index) - if m and m.group(1): - # Matches [Text](<link> "title") - href = m.group(1)[1:-1].strip() - if m.group(2): - title = m.group(2)[1:-1] - index = m.end(0) - handled = True - elif m: - # Track bracket nesting and index in string - bracket_count = 1 - backtrack_count = 1 - start_index = m.end() - index = start_index - last_bracket = -1 - - # Primary (first found) quote tracking. - quote = None - start_quote = -1 - exit_quote = -1 - ignore_matches = False - - # Secondary (second found) quote tracking. - alt_quote = None - start_alt_quote = -1 - exit_alt_quote = -1 - - # Track last character - last = '' - - for pos in range(index, len(data)): - c = data[pos] - if c == '(': - # Count nested ( - # Don't increment the bracket count if we are sure we're in a title. - if not ignore_matches: - bracket_count += 1 - elif backtrack_count > 0: - backtrack_count -= 1 - elif c == ')': - # Match nested ) to ( - # Don't decrement if we are sure we are in a title that is unclosed. - if ((exit_quote != -1 and quote == last) or (exit_alt_quote != -1 and alt_quote == last)): - bracket_count = 0 - elif not ignore_matches: - bracket_count -= 1 - elif backtrack_count > 0: - backtrack_count -= 1 - # We've found our backup end location if the title doesn't resolve. - if backtrack_count == 0: - last_bracket = index + 1 - - elif c in ("'", '"'): - # Quote has started - if not quote: - # We'll assume we are now in a title. - # Brackets are quoted, so no need to match them (except for the final one). - ignore_matches = True - backtrack_count = bracket_count - bracket_count = 1 - start_quote = index + 1 - quote = c - # Secondary quote (in case the first doesn't resolve): [text](link'"title") - elif c != quote and not alt_quote: - start_alt_quote = index + 1 - alt_quote = c - # Update primary quote match - elif c == quote: - exit_quote = index + 1 - # Update secondary quote match - elif alt_quote and c == alt_quote: - exit_alt_quote = index + 1 - - index += 1 - - # Link is closed, so let's break out of the loop - if bracket_count == 0: - # Get the title if we closed a title string right before link closed - if exit_quote >= 0 and quote == last: - href = data[start_index:start_quote - 1] - title = ''.join(data[start_quote:exit_quote - 1]) - elif exit_alt_quote >= 0 and alt_quote == last: - href = data[start_index:start_alt_quote - 1] - title = ''.join(data[start_alt_quote:exit_alt_quote - 1]) - else: - href = data[start_index:index - 1] - break - - if c != ' ': - last = c - - # We have a scenario: `[test](link"notitle)` - # When we enter a string, we stop tracking bracket resolution in the main counter, - # but we do keep a backup counter up until we discover where we might resolve all brackets - # if the title string fails to resolve. - if bracket_count != 0 and backtrack_count == 0: - href = data[start_index:last_bracket - 1] - index = last_bracket - bracket_count = 0 - - handled = bracket_count == 0 - - if title is not None: - title = self.RE_TITLE_CLEAN.sub(' ', dequote(self.unescape(title.strip()))) - - href = self.unescape(href).strip() - - return href, title, index, handled - - def getText(self, data, index): - """Parse the content between `[]` of the start of an image or link - resolving nested square brackets. - - """ - bracket_count = 1 - text = [] - for pos in range(index, len(data)): - c = data[pos] - if c == ']': - bracket_count -= 1 - elif c == '[': - bracket_count += 1 - index += 1 - if bracket_count == 0: - break - text.append(c) - return ''.join(text), index, bracket_count == 0 - - -class ImageInlineProcessor(LinkInlineProcessor): - """ Return a `img` element from the given match. """ - - def handleMatch(self, m: re.Match[str], data: str) -> tuple[etree.Element | None, int | None, int | None]: - """ Return an `img` [`Element`][xml.etree.ElementTree.Element] or `(None, None, None)`. """ - text, index, handled = self.getText(data, m.end(0)) - if not handled: - return None, None, None - - src, title, index, handled = self.getLink(data, index) - if not handled: - return None, None, None - - el = etree.Element("img") - - el.set("src", src) - - if title is not None: - el.set("title", title) - - el.set('alt', self.unescape(text)) - return el, m.start(0), index - - -class ReferenceInlineProcessor(LinkInlineProcessor): - """ Match to a stored reference and return link element. """ - NEWLINE_CLEANUP_RE = re.compile(r'\s+', re.MULTILINE) - - RE_LINK = re.compile(r'\s?\[([^\]]*)\]', re.DOTALL | re.UNICODE) - - def handleMatch(self, m: re.Match[str], data: str) -> tuple[etree.Element | None, int | None, int | None]: - """ - Return [`Element`][xml.etree.ElementTree.Element] returned by `makeTag` method or `(None, None, None)`. - - """ - text, index, handled = self.getText(data, m.end(0)) - if not handled: - return None, None, None - - id, end, handled = self.evalId(data, index, text) - if not handled: - return None, None, None - - # Clean up line breaks in id - id = self.NEWLINE_CLEANUP_RE.sub(' ', id) - if id not in self.md.references: # ignore undefined refs - return None, m.start(0), end - - href, title = self.md.references[id] - - return self.makeTag(href, title, text), m.start(0), end - - def evalId(self, data, index, text): - """ - Evaluate the id portion of `[ref][id]`. - - If `[ref][]` use `[ref]`. - """ - m = self.RE_LINK.match(data, pos=index) - if not m: - return None, index, False - else: - id = m.group(1).lower() - end = m.end(0) - if not id: - id = text.lower() - return id, end, True - - def makeTag(self, href: str, title: str, text: str) -> etree.Element: - """ Return an `a` [`Element`][xml.etree.ElementTree.Element]. """ - el = etree.Element('a') - - el.set('href', href) - if title: - el.set('title', title) - - el.text = text - return el - - -class ShortReferenceInlineProcessor(ReferenceInlineProcessor): - """Short form of reference: `[google]`. """ - def evalId(self, data, index, text): - """Evaluate the id of `[ref]`. """ - - return text.lower(), index, True - - -class ImageReferenceInlineProcessor(ReferenceInlineProcessor): - """ Match to a stored reference and return `img` element. """ - def makeTag(self, href: str, title: str, text: str) -> etree.Element: - """ Return an `img` [`Element`][xml.etree.ElementTree.Element]. """ - el = etree.Element("img") - el.set("src", href) - if title: - el.set("title", title) - el.set("alt", self.unescape(text)) - return el - - -class ShortImageReferenceInlineProcessor(ImageReferenceInlineProcessor): - """ Short form of image reference: `![ref]`. """ - def evalId(self, data, index, text): - """Evaluate the id of `[ref]`. """ - - return text.lower(), index, True - - -class AutolinkInlineProcessor(InlineProcessor): - """ Return a link Element given an auto-link (`<http://example/com>`). """ - def handleMatch(self, m: re.Match[str], data: str) -> tuple[etree.Element, int, int]: - """ Return an `a` [`Element`][xml.etree.ElementTree.Element] of `group(1)`. """ - el = etree.Element("a") - el.set('href', self.unescape(m.group(1))) - el.text = util.AtomicString(m.group(1)) - return el, m.start(0), m.end(0) - - -class AutomailInlineProcessor(InlineProcessor): - """ - Return a `mailto` link Element given an auto-mail link (`<foo@example.com>`). - """ - def handleMatch(self, m: re.Match[str], data: str) -> tuple[etree.Element, int, int]: - """ Return an [`Element`][xml.etree.ElementTree.Element] containing a `mailto` link of `group(1)`. """ - el = etree.Element('a') - email = self.unescape(m.group(1)) - if email.startswith("mailto:"): - email = email[len("mailto:"):] - - def codepoint2name(code): - """Return entity definition by code, or the code if not defined.""" - entity = entities.codepoint2name.get(code) - if entity: - return "{}{};".format(util.AMP_SUBSTITUTE, entity) - else: - return "%s#%d;" % (util.AMP_SUBSTITUTE, code) - - letters = [codepoint2name(ord(letter)) for letter in email] - el.text = util.AtomicString(''.join(letters)) - - mailto = "mailto:" + email - mailto = "".join([util.AMP_SUBSTITUTE + '#%d;' % - ord(letter) for letter in mailto]) - el.set('href', mailto) - return el, m.start(0), m.end(0) diff --git a/plugins/markdown_preview/markdown/postprocessors.py b/plugins/markdown_preview/markdown/postprocessors.py deleted file mode 100644 index 3da5ee1..0000000 --- a/plugins/markdown_preview/markdown/postprocessors.py +++ /dev/null @@ -1,143 +0,0 @@ -# Python Markdown - -# A Python implementation of John Gruber's Markdown. - -# Documentation: https://python-markdown.github.io/ -# GitHub: https://github.com/Python-Markdown/markdown/ -# PyPI: https://pypi.org/project/Markdown/ - -# Started by Manfred Stienstra (http://www.dwerg.net/). -# Maintained for a few years by Yuri Takhteyev (http://www.freewisdom.org). -# Currently maintained by Waylan Limberg (https://github.com/waylan), -# Dmitry Shachnev (https://github.com/mitya57) and Isaac Muse (https://github.com/facelessuser). - -# Copyright 2007-2023 The Python Markdown Project (v. 1.7 and later) -# Copyright 2004, 2005, 2006 Yuri Takhteyev (v. 0.2-1.6b) -# Copyright 2004 Manfred Stienstra (the original version) - -# License: BSD (see LICENSE.md for details). - -""" - -Post-processors run on the text of the entire document after is has been serialized into a string. -Postprocessors should be used to work with the text just before output. Usually, they are used add -back sections that were extracted in a preprocessor, fix up outgoing encodings, or wrap the whole -document. - -""" - -from __future__ import annotations - -from collections import OrderedDict -from typing import TYPE_CHECKING, Any -from . import util -import re - -if TYPE_CHECKING: # pragma: no cover - from markdown import Markdown - - -def build_postprocessors(md: Markdown, **kwargs: Any) -> util.Registry[Postprocessor]: - """ Build the default postprocessors for Markdown. """ - postprocessors = util.Registry() - postprocessors.register(RawHtmlPostprocessor(md), 'raw_html', 30) - postprocessors.register(AndSubstitutePostprocessor(), 'amp_substitute', 20) - return postprocessors - - -class Postprocessor(util.Processor): - """ - Postprocessors are run after the ElementTree it converted back into text. - - Each Postprocessor implements a `run` method that takes a pointer to a - text string, modifies it as necessary and returns a text string. - - Postprocessors must extend `Postprocessor`. - - """ - - def run(self, text: str) -> str: - """ - Subclasses of `Postprocessor` should implement a `run` method, which - takes the html document as a single text string and returns a - (possibly modified) string. - - """ - pass # pragma: no cover - - -class RawHtmlPostprocessor(Postprocessor): - """ Restore raw html to the document. """ - - BLOCK_LEVEL_REGEX = re.compile(r'^\<\/?([^ >]+)') - - def run(self, text: str): - """ Iterate over html stash and restore html. """ - replacements = OrderedDict() - for i in range(self.md.htmlStash.html_counter): - html = self.stash_to_string(self.md.htmlStash.rawHtmlBlocks[i]) - if self.isblocklevel(html): - replacements["<p>{}</p>".format( - self.md.htmlStash.get_placeholder(i))] = html - replacements[self.md.htmlStash.get_placeholder(i)] = html - - def substitute_match(m): - key = m.group(0) - - if key not in replacements: - if key[3:-4] in replacements: - return f'<p>{ replacements[key[3:-4]] }</p>' - else: - return key - - return replacements[key] - - if replacements: - base_placeholder = util.HTML_PLACEHOLDER % r'([0-9]+)' - pattern = re.compile(f'<p>{ base_placeholder }</p>|{ base_placeholder }') - processed_text = pattern.sub(substitute_match, text) - else: - return text - - if processed_text == text: - return processed_text - else: - return self.run(processed_text) - - def isblocklevel(self, html: str) -> bool: - """ Check is block of HTML is block-level. """ - m = self.BLOCK_LEVEL_REGEX.match(html) - if m: - if m.group(1)[0] in ('!', '?', '@', '%'): - # Comment, PHP etc... - return True - return self.md.is_block_level(m.group(1)) - return False - - def stash_to_string(self, text: str) -> str: - """ Convert a stashed object to a string. """ - return str(text) - - -class AndSubstitutePostprocessor(Postprocessor): - """ Restore valid entities """ - - def run(self, text): - text = text.replace(util.AMP_SUBSTITUTE, "&") - return text - - -@util.deprecated( - "This class is deprecated and will be removed in the future; " - "use [`UnescapeTreeprocessor`][markdown.treeprocessors.UnescapeTreeprocessor] instead." -) -class UnescapePostprocessor(Postprocessor): - """ Restore escaped chars. """ - - RE = re.compile(r'{}(\d+){}'.format(util.STX, util.ETX)) - - def unescape(self, m): - return chr(int(m.group(1))) - - def run(self, text): - return self.RE.sub(self.unescape, text) diff --git a/plugins/markdown_preview/markdown/preprocessors.py b/plugins/markdown_preview/markdown/preprocessors.py deleted file mode 100644 index 0f63cdd..0000000 --- a/plugins/markdown_preview/markdown/preprocessors.py +++ /dev/null @@ -1,91 +0,0 @@ -# Python Markdown - -# A Python implementation of John Gruber's Markdown. - -# Documentation: https://python-markdown.github.io/ -# GitHub: https://github.com/Python-Markdown/markdown/ -# PyPI: https://pypi.org/project/Markdown/ - -# Started by Manfred Stienstra (http://www.dwerg.net/). -# Maintained for a few years by Yuri Takhteyev (http://www.freewisdom.org). -# Currently maintained by Waylan Limberg (https://github.com/waylan), -# Dmitry Shachnev (https://github.com/mitya57) and Isaac Muse (https://github.com/facelessuser). - -# Copyright 2007-2023 The Python Markdown Project (v. 1.7 and later) -# Copyright 2004, 2005, 2006 Yuri Takhteyev (v. 0.2-1.6b) -# Copyright 2004 Manfred Stienstra (the original version) - -# License: BSD (see LICENSE.md for details). - -""" -Preprocessors work on source text before it is broken down into its individual parts. -This is an excellent place to clean up bad characters or to extract portions for later -processing that the parser may otherwise choke on. -""" - -from __future__ import annotations - -from typing import TYPE_CHECKING, Any -from . import util -from .htmlparser import HTMLExtractor -import re - -if TYPE_CHECKING: # pragma: no cover - from markdown import Markdown - - -def build_preprocessors(md: Markdown, **kwargs: Any) -> util.Registry[Preprocessor]: - """ Build and return the default set of preprocessors used by Markdown. """ - preprocessors = util.Registry() - preprocessors.register(NormalizeWhitespace(md), 'normalize_whitespace', 30) - preprocessors.register(HtmlBlockPreprocessor(md), 'html_block', 20) - return preprocessors - - -class Preprocessor(util.Processor): - """ - Preprocessors are run after the text is broken into lines. - - Each preprocessor implements a `run` method that takes a pointer to a - list of lines of the document, modifies it as necessary and returns - either the same pointer or a pointer to a new list. - - Preprocessors must extend `Preprocessor`. - - """ - def run(self, lines: list[str]) -> list[str]: - """ - Each subclass of `Preprocessor` should override the `run` method, which - takes the document as a list of strings split by newlines and returns - the (possibly modified) list of lines. - - """ - pass # pragma: no cover - - -class NormalizeWhitespace(Preprocessor): - """ Normalize whitespace for consistent parsing. """ - - def run(self, lines: list[str]) -> list[str]: - source = '\n'.join(lines) - source = source.replace(util.STX, "").replace(util.ETX, "") - source = source.replace("\r\n", "\n").replace("\r", "\n") + "\n\n" - source = source.expandtabs(self.md.tab_length) - source = re.sub(r'(?<=\n) +\n', '\n', source) - return source.split('\n') - - -class HtmlBlockPreprocessor(Preprocessor): - """ - Remove html blocks from the text and store them for later retrieval. - - The raw HTML is stored in the [`htmlStash`][markdown.util.HtmlStash] of the - [`Markdown`][markdown.Markdown] instance. - """ - - def run(self, lines: list[str]) -> list[str]: - source = '\n'.join(lines) - parser = HTMLExtractor(self.md) - parser.feed(source) - parser.close() - return ''.join(parser.cleandoc).split('\n') diff --git a/plugins/markdown_preview/markdown/serializers.py b/plugins/markdown_preview/markdown/serializers.py deleted file mode 100644 index 5a8818e..0000000 --- a/plugins/markdown_preview/markdown/serializers.py +++ /dev/null @@ -1,193 +0,0 @@ -# Add x/html serialization to `Elementree` -# Taken from ElementTree 1.3 preview with slight modifications -# -# Copyright (c) 1999-2007 by Fredrik Lundh. All rights reserved. -# -# fredrik@pythonware.com -# https://www.pythonware.com/ -# -# -------------------------------------------------------------------- -# The ElementTree toolkit is -# -# Copyright (c) 1999-2007 by Fredrik Lundh -# -# By obtaining, using, and/or copying this software and/or its -# associated documentation, you agree that you have read, understood, -# and will comply with the following terms and conditions: -# -# Permission to use, copy, modify, and distribute this software and -# its associated documentation for any purpose and without fee is -# hereby granted, provided that the above copyright notice appears in -# all copies, and that both that copyright notice and this permission -# notice appear in supporting documentation, and that the name of -# Secret Labs AB or the author not be used in advertising or publicity -# pertaining to distribution of the software without specific, written -# prior permission. -# -# SECRET LABS AB AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD -# TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANT- -# ABILITY AND FITNESS. IN NO EVENT SHALL SECRET LABS AB OR THE AUTHOR -# BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY -# DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, -# WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS -# ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE -# OF THIS SOFTWARE. -# -------------------------------------------------------------------- - -""" -Python-Markdown provides two serializers which render [`ElementTree.Element`][xml.etree.ElementTree.Element] -objects to a string of HTML. Both functions wrap the same underlying code with only a few minor -differences as outlined below: - -1. Empty (self-closing) tags are rendered as `<tag>` for HTML and as `<tag />` for XHTML. -2. Boolean attributes are rendered as `attrname` for HTML and as `attrname="attrname"` for XHTML. -""" - -from __future__ import annotations - -from xml.etree.ElementTree import ProcessingInstruction -from xml.etree.ElementTree import Comment, ElementTree, Element, QName, HTML_EMPTY -import re - -__all__ = ['to_html_string', 'to_xhtml_string'] - -RE_AMP = re.compile(r'&(?!(?:\#[0-9]+|\#x[0-9a-f]+|[0-9a-z]+);)', re.I) - - -def _raise_serialization_error(text): # pragma: no cover - raise TypeError( - "cannot serialize {!r} (type {})".format(text, type(text).__name__) - ) - - -def _escape_cdata(text): - # escape character data - try: - # it's worth avoiding do-nothing calls for strings that are - # shorter than 500 character, or so. assume that's, by far, - # the most common case in most applications. - if "&" in text: - # Only replace & when not part of an entity - text = RE_AMP.sub('&', text) - if "<" in text: - text = text.replace("<", "<") - if ">" in text: - text = text.replace(">", ">") - return text - except (TypeError, AttributeError): # pragma: no cover - _raise_serialization_error(text) - - -def _escape_attrib(text): - # escape attribute value - try: - if "&" in text: - # Only replace & when not part of an entity - text = RE_AMP.sub('&', text) - if "<" in text: - text = text.replace("<", "<") - if ">" in text: - text = text.replace(">", ">") - if "\"" in text: - text = text.replace("\"", """) - if "\n" in text: - text = text.replace("\n", " ") - return text - except (TypeError, AttributeError): # pragma: no cover - _raise_serialization_error(text) - - -def _escape_attrib_html(text): - # escape attribute value - try: - if "&" in text: - # Only replace & when not part of an entity - text = RE_AMP.sub('&', text) - if "<" in text: - text = text.replace("<", "<") - if ">" in text: - text = text.replace(">", ">") - if "\"" in text: - text = text.replace("\"", """) - return text - except (TypeError, AttributeError): # pragma: no cover - _raise_serialization_error(text) - - -def _serialize_html(write, elem, format): - tag = elem.tag - text = elem.text - if tag is Comment: - write("<!--%s-->" % _escape_cdata(text)) - elif tag is ProcessingInstruction: - write("<?%s?>" % _escape_cdata(text)) - elif tag is None: - if text: - write(_escape_cdata(text)) - for e in elem: - _serialize_html(write, e, format) - else: - namespace_uri = None - if isinstance(tag, QName): - # `QNAME` objects store their data as a string: `{uri}tag` - if tag.text[:1] == "{": - namespace_uri, tag = tag.text[1:].split("}", 1) - else: - raise ValueError('QName objects must define a tag.') - write("<" + tag) - items = elem.items() - if items: - items = sorted(items) # lexical order - for k, v in items: - if isinstance(k, QName): - # Assume a text only `QName` - k = k.text - if isinstance(v, QName): - # Assume a text only `QName` - v = v.text - else: - v = _escape_attrib_html(v) - if k == v and format == 'html': - # handle boolean attributes - write(" %s" % v) - else: - write(' {}="{}"'.format(k, v)) - if namespace_uri: - write(' xmlns="%s"' % (_escape_attrib(namespace_uri))) - if format == "xhtml" and tag.lower() in HTML_EMPTY: - write(" />") - else: - write(">") - if text: - if tag.lower() in ["script", "style"]: - write(text) - else: - write(_escape_cdata(text)) - for e in elem: - _serialize_html(write, e, format) - if tag.lower() not in HTML_EMPTY: - write("</" + tag + ">") - if elem.tail: - write(_escape_cdata(elem.tail)) - - -def _write_html(root, format="html"): - assert root is not None - data = [] - write = data.append - _serialize_html(write, root, format) - return "".join(data) - - -# -------------------------------------------------------------------- -# public functions - - -def to_html_string(element: Element) -> str: - """ Serialize element and its children to a string of HTML5. """ - return _write_html(ElementTree(element).getroot(), format="html") - - -def to_xhtml_string(element: Element) -> str: - """ Serialize element and its children to a string of XHTML. """ - return _write_html(ElementTree(element).getroot(), format="xhtml") diff --git a/plugins/markdown_preview/markdown/test_tools.py b/plugins/markdown_preview/markdown/test_tools.py deleted file mode 100644 index 895e44e..0000000 --- a/plugins/markdown_preview/markdown/test_tools.py +++ /dev/null @@ -1,224 +0,0 @@ -# Python Markdown - -# A Python implementation of John Gruber's Markdown. - -# Documentation: https://python-markdown.github.io/ -# GitHub: https://github.com/Python-Markdown/markdown/ -# PyPI: https://pypi.org/project/Markdown/ - -# Started by Manfred Stienstra (http://www.dwerg.net/). -# Maintained for a few years by Yuri Takhteyev (http://www.freewisdom.org). -# Currently maintained by Waylan Limberg (https://github.com/waylan), -# Dmitry Shachnev (https://github.com/mitya57) and Isaac Muse (https://github.com/facelessuser). - -# Copyright 2007-2023 The Python Markdown Project (v. 1.7 and later) -# Copyright 2004, 2005, 2006 Yuri Takhteyev (v. 0.2-1.6b) -# Copyright 2004 Manfred Stienstra (the original version) - -# License: BSD (see LICENSE.md for details). - -""" A collection of tools for testing the Markdown code base and extensions. """ - -from __future__ import annotations - -import os -import sys -import unittest -import textwrap -from typing import Any -from . import markdown, Markdown, util - -try: - import tidylib -except ImportError: - tidylib = None - -__all__ = ['TestCase', 'LegacyTestCase', 'Kwargs'] - - -class TestCase(unittest.TestCase): - """ - A [`unittest.TestCase`][] subclass with helpers for testing Markdown output. - - Define `default_kwargs` as a `dict` of keywords to pass to Markdown for each - test. The defaults can be overridden on individual tests. - - The `assertMarkdownRenders` method accepts the source text, the expected - output, and any keywords to pass to Markdown. The `default_kwargs` are used - except where overridden by `kwargs`. The output and expected output are passed - to `TestCase.assertMultiLineEqual`. An `AssertionError` is raised with a diff - if the actual output does not equal the expected output. - - The `dedent` method is available to dedent triple-quoted strings if - necessary. - - In all other respects, behaves as `unittest.TestCase`. - """ - - default_kwargs: dict[str, Any] = {} - """ Default options to pass to Markdown for each test. """ - - def assertMarkdownRenders(self, source, expected, expected_attrs=None, **kwargs): - """ - Test that source Markdown text renders to expected output with given keywords. - - `expected_attrs` accepts a `dict`. Each key should be the name of an attribute - on the `Markdown` instance and the value should be the expected value after - the source text is parsed by Markdown. After the expected output is tested, - the expected value for each attribute is compared against the actual - attribute of the `Markdown` instance using `TestCase.assertEqual`. - """ - - expected_attrs = expected_attrs or {} - kws = self.default_kwargs.copy() - kws.update(kwargs) - md = Markdown(**kws) - output = md.convert(source) - self.assertMultiLineEqual(output, expected) - for key, value in expected_attrs.items(): - self.assertEqual(getattr(md, key), value) - - def dedent(self, text): - """ - Dedent text. - """ - - # TODO: If/when actual output ends with a newline, then use: - # return textwrap.dedent(text.strip('/n')) - return textwrap.dedent(text).strip() - - -class recursionlimit: - """ - A context manager which temporarily modifies the Python recursion limit. - - The testing framework, coverage, etc. may add an arbitrary number of levels to the depth. To maintain consistency - in the tests, the current stack depth is determined when called, then added to the provided limit. - - Example usage: - - ``` python - with recursionlimit(20): - # test code here - ``` - - See <https://stackoverflow.com/a/50120316/866026>. - """ - - def __init__(self, limit): - self.limit = util._get_stack_depth() + limit - self.old_limit = sys.getrecursionlimit() - - def __enter__(self): - sys.setrecursionlimit(self.limit) - - def __exit__(self, type, value, tb): - sys.setrecursionlimit(self.old_limit) - - -######################### -# Legacy Test Framework # -######################### - - -class Kwargs(dict): - """ A `dict` like class for holding keyword arguments. """ - pass - - -def _normalize_whitespace(text): - """ Normalize whitespace for a string of HTML using `tidylib`. """ - output, errors = tidylib.tidy_fragment(text, options={ - 'drop_empty_paras': 0, - 'fix_backslash': 0, - 'fix_bad_comments': 0, - 'fix_uri': 0, - 'join_styles': 0, - 'lower_literals': 0, - 'merge_divs': 0, - 'output_xhtml': 1, - 'quote_ampersand': 0, - 'newline': 'LF' - }) - return output - - -class LegacyTestMeta(type): - def __new__(cls, name, bases, dct): - - def generate_test(infile, outfile, normalize, kwargs): - def test(self): - with open(infile, encoding="utf-8") as f: - input = f.read() - with open(outfile, encoding="utf-8") as f: - # Normalize line endings - # (on Windows, git may have altered line endings). - expected = f.read().replace("\r\n", "\n") - output = markdown(input, **kwargs) - if tidylib and normalize: - try: - expected = _normalize_whitespace(expected) - output = _normalize_whitespace(output) - except OSError: - self.skipTest("Tidylib's c library not available.") - elif normalize: - self.skipTest('Tidylib not available.') - self.assertMultiLineEqual(output, expected) - return test - - location = dct.get('location', '') - exclude = dct.get('exclude', []) - normalize = dct.get('normalize', False) - input_ext = dct.get('input_ext', '.txt') - output_ext = dct.get('output_ext', '.html') - kwargs = dct.get('default_kwargs', Kwargs()) - - if os.path.isdir(location): - for file in os.listdir(location): - infile = os.path.join(location, file) - if os.path.isfile(infile): - tname, ext = os.path.splitext(file) - if ext == input_ext: - outfile = os.path.join(location, tname + output_ext) - tname = tname.replace(' ', '_').replace('-', '_') - kws = kwargs.copy() - if tname in dct: - kws.update(dct[tname]) - test_name = 'test_%s' % tname - if tname not in exclude: - dct[test_name] = generate_test(infile, outfile, normalize, kws) - else: - dct[test_name] = unittest.skip('Excluded')(lambda: None) - - return type.__new__(cls, name, bases, dct) - - -class LegacyTestCase(unittest.TestCase, metaclass=LegacyTestMeta): - """ - A [`unittest.TestCase`][] subclass for running Markdown's legacy file-based tests. - - A subclass should define various properties which point to a directory of - text-based test files and define various behaviors/defaults for those tests. - The following properties are supported: - - Attributes: - location (str): A path to the directory of test files. An absolute path is preferred. - exclude (list[str]): A list of tests to exclude. Each test name should comprise the filename - without an extension. - normalize (bool): A boolean value indicating if the HTML should be normalized. Default: `False`. - input_ext (str): A string containing the file extension of input files. Default: `.txt`. - output_ext (str): A string containing the file extension of expected output files. Default: `html`. - default_kwargs (Kwargs[str, Any]): The default set of keyword arguments for all test files in the directory. - - In addition, properties can be defined for each individual set of test files within - the directory. The property should be given the name of the file without the file - extension. Any spaces and dashes in the filename should be replaced with - underscores. The value of the property should be a `Kwargs` instance which - contains the keyword arguments that should be passed to `Markdown` for that - test file. The keyword arguments will "update" the `default_kwargs`. - - When the class instance is created, it will walk the given directory and create - a separate `Unitttest` for each set of test files using the naming scheme: - `test_filename`. One `Unittest` will be run for each set of input and output files. - """ - pass diff --git a/plugins/markdown_preview/markdown/treeprocessors.py b/plugins/markdown_preview/markdown/treeprocessors.py deleted file mode 100644 index 59a3eb3..0000000 --- a/plugins/markdown_preview/markdown/treeprocessors.py +++ /dev/null @@ -1,476 +0,0 @@ -# Python Markdown - -# A Python implementation of John Gruber's Markdown. - -# Documentation: https://python-markdown.github.io/ -# GitHub: https://github.com/Python-Markdown/markdown/ -# PyPI: https://pypi.org/project/Markdown/ - -# Started by Manfred Stienstra (http://www.dwerg.net/). -# Maintained for a few years by Yuri Takhteyev (http://www.freewisdom.org). -# Currently maintained by Waylan Limberg (https://github.com/waylan), -# Dmitry Shachnev (https://github.com/mitya57) and Isaac Muse (https://github.com/facelessuser). - -# Copyright 2007-2023 The Python Markdown Project (v. 1.7 and later) -# Copyright 2004, 2005, 2006 Yuri Takhteyev (v. 0.2-1.6b) -# Copyright 2004 Manfred Stienstra (the original version) - -# License: BSD (see LICENSE.md for details). - -""" -Tree processors manipulate the tree created by block processors. They can even create an entirely -new `ElementTree` object. This is an excellent place for creating summaries, adding collected -references, or last minute adjustments. - -""" - -from __future__ import annotations - -import re -import xml.etree.ElementTree as etree -from typing import TYPE_CHECKING, Any -from . import util -from . import inlinepatterns - -if TYPE_CHECKING: # pragma: no cover - from markdown import Markdown - - -def build_treeprocessors(md: Markdown, **kwargs: Any) -> util.Registry[Treeprocessor]: - """ Build the default `treeprocessors` for Markdown. """ - treeprocessors = util.Registry() - treeprocessors.register(InlineProcessor(md), 'inline', 20) - treeprocessors.register(PrettifyTreeprocessor(md), 'prettify', 10) - treeprocessors.register(UnescapeTreeprocessor(md), 'unescape', 0) - return treeprocessors - - -def isString(s: Any) -> bool: - """ Return `True` if object is a string but not an [`AtomicString`][markdown.util.AtomicString]. """ - if not isinstance(s, util.AtomicString): - return isinstance(s, str) - return False - - -class Treeprocessor(util.Processor): - """ - `Treeprocessor`s are run on the `ElementTree` object before serialization. - - Each `Treeprocessor` implements a `run` method that takes a pointer to an - `Element` and modifies it as necessary. - - `Treeprocessors` must extend `markdown.Treeprocessor`. - - """ - def run(self, root: etree.Element) -> etree.Element | None: - """ - Subclasses of `Treeprocessor` should implement a `run` method, which - takes a root `Element`. This method can return another `Element` - object, and the existing root `Element` will be replaced, or it can - modify the current tree and return `None`. - """ - pass # pragma: no cover - - -class InlineProcessor(Treeprocessor): - """ - A `Treeprocessor` that traverses a tree, applying inline patterns. - """ - - def __init__(self, md): - self.__placeholder_prefix = util.INLINE_PLACEHOLDER_PREFIX - self.__placeholder_suffix = util.ETX - self.__placeholder_length = 4 + len(self.__placeholder_prefix) \ - + len(self.__placeholder_suffix) - self.__placeholder_re = util.INLINE_PLACEHOLDER_RE - self.md = md - self.inlinePatterns = md.inlinePatterns - self.ancestors = [] - - def __makePlaceholder(self, type) -> tuple[str, str]: - """ Generate a placeholder """ - id = "%04d" % len(self.stashed_nodes) - hash = util.INLINE_PLACEHOLDER % id - return hash, id - - def __findPlaceholder(self, data: str, index: int) -> tuple[str | None, int]: - """ - Extract id from data string, start from index. - - Arguments: - data: String. - index: Index, from which we start search. - - Returns: - Placeholder id and string index, after the found placeholder. - - """ - m = self.__placeholder_re.search(data, index) - if m: - return m.group(1), m.end() - else: - return None, index + 1 - - def __stashNode(self, node, type) -> str: - """ Add node to stash. """ - placeholder, id = self.__makePlaceholder(type) - self.stashed_nodes[id] = node - return placeholder - - def __handleInline(self, data: str, patternIndex: int = 0) -> str: - """ - Process string with inline patterns and replace it with placeholders. - - Arguments: - data: A line of Markdown text. - patternIndex: The index of the `inlinePattern` to start with. - - Returns: - String with placeholders. - - """ - if not isinstance(data, util.AtomicString): - startIndex = 0 - count = len(self.inlinePatterns) - while patternIndex < count: - data, matched, startIndex = self.__applyPattern( - self.inlinePatterns[patternIndex], data, patternIndex, startIndex - ) - if not matched: - patternIndex += 1 - return data - - def __processElementText(self, node: etree.Element, subnode: etree.Element, isText: bool = True): - """ - Process placeholders in `Element.text` or `Element.tail` - of Elements popped from `self.stashed_nodes`. - - Arguments: - node: Parent node. - subnode: Processing node. - isText: Boolean variable, True - it's text, False - it's a tail. - - """ - if isText: - text = subnode.text - subnode.text = None - else: - text = subnode.tail - subnode.tail = None - - childResult = self.__processPlaceholders(text, subnode, isText) - - if not isText and node is not subnode: - pos = list(node).index(subnode) + 1 - else: - pos = 0 - - childResult.reverse() - for newChild in childResult: - node.insert(pos, newChild[0]) - - def __processPlaceholders( - self, - data: str, - parent: etree.Element, - isText: bool = True - ) -> list[tuple[etree.Element, Any]]: - """ - Process string with placeholders and generate `ElementTree` tree. - - Arguments: - data: String with placeholders instead of `ElementTree` elements. - parent: Element, which contains processing inline data. - isText: Boolean variable, True - it's text, False - it's a tail. - - Returns: - List with `ElementTree` elements with applied inline patterns. - - """ - def linkText(text): - if text: - if result: - if result[-1][0].tail: - result[-1][0].tail += text - else: - result[-1][0].tail = text - elif not isText: - if parent.tail: - parent.tail += text - else: - parent.tail = text - else: - if parent.text: - parent.text += text - else: - parent.text = text - result = [] - strartIndex = 0 - while data: - index = data.find(self.__placeholder_prefix, strartIndex) - if index != -1: - id, phEndIndex = self.__findPlaceholder(data, index) - - if id in self.stashed_nodes: - node = self.stashed_nodes.get(id) - - if index > 0: - text = data[strartIndex:index] - linkText(text) - - if not isString(node): # it's Element - for child in [node] + list(node): - if child.tail: - if child.tail.strip(): - self.__processElementText( - node, child, False - ) - if child.text: - if child.text.strip(): - self.__processElementText(child, child) - else: # it's just a string - linkText(node) - strartIndex = phEndIndex - continue - - strartIndex = phEndIndex - result.append((node, self.ancestors[:])) - - else: # wrong placeholder - end = index + len(self.__placeholder_prefix) - linkText(data[strartIndex:end]) - strartIndex = end - else: - text = data[strartIndex:] - if isinstance(data, util.AtomicString): - # We don't want to loose the `AtomicString` - text = util.AtomicString(text) - linkText(text) - data = "" - - return result - - def __applyPattern( - self, - pattern: inlinepatterns.Pattern, - data: str, - patternIndex: int, - startIndex: int = 0 - ) -> tuple[str, bool, int]: - """ - Check if the line fits the pattern, create the necessary - elements, add it to `stashed_nodes`. - - Arguments: - data: The text to be processed. - pattern: The pattern to be checked. - patternIndex: Index of current pattern. - startIndex: String index, from which we start searching. - - Returns: - String with placeholders instead of `ElementTree` elements. - - """ - new_style = isinstance(pattern, inlinepatterns.InlineProcessor) - - for exclude in pattern.ANCESTOR_EXCLUDES: - if exclude.lower() in self.ancestors: - return data, False, 0 - - if new_style: - match = None - # Since `handleMatch` may reject our first match, - # we iterate over the buffer looking for matches - # until we can't find any more. - for match in pattern.getCompiledRegExp().finditer(data, startIndex): - node, start, end = pattern.handleMatch(match, data) - if start is None or end is None: - startIndex += match.end(0) - match = None - continue - break - else: # pragma: no cover - match = pattern.getCompiledRegExp().match(data[startIndex:]) - leftData = data[:startIndex] - - if not match: - return data, False, 0 - - if not new_style: # pragma: no cover - node = pattern.handleMatch(match) - start = match.start(0) - end = match.end(0) - - if node is None: - return data, True, end - - if not isString(node): - if not isinstance(node.text, util.AtomicString): - # We need to process current node too - for child in [node] + list(node): - if not isString(node): - if child.text: - self.ancestors.append(child.tag.lower()) - child.text = self.__handleInline( - child.text, patternIndex + 1 - ) - self.ancestors.pop() - if child.tail: - child.tail = self.__handleInline( - child.tail, patternIndex - ) - - placeholder = self.__stashNode(node, pattern.type()) - - if new_style: - return "{}{}{}".format(data[:start], - placeholder, data[end:]), True, 0 - else: # pragma: no cover - return "{}{}{}{}".format(leftData, - match.group(1), - placeholder, match.groups()[-1]), True, 0 - - def __build_ancestors(self, parent, parents): - """Build the ancestor list.""" - ancestors = [] - while parent is not None: - if parent is not None: - ancestors.append(parent.tag.lower()) - parent = self.parent_map.get(parent) - ancestors.reverse() - parents.extend(ancestors) - - def run(self, tree: etree.Element, ancestors: list[str] | None = None) -> etree.Element: - """Apply inline patterns to a parsed Markdown tree. - - Iterate over `Element`, find elements with inline tag, apply inline - patterns and append newly created Elements to tree. To avoid further - processing of string with inline patterns, instead of normal string, - use subclass [`AtomicString`][markdown.util.AtomicString]: - - node.text = markdown.util.AtomicString("This will not be processed.") - - Arguments: - tree: `Element` object, representing Markdown tree. - ancestors: List of parent tag names that precede the tree node (if needed). - - Returns: - An element tree object with applied inline patterns. - - """ - self.stashed_nodes: dict[str, etree.Element] = {} - - # Ensure a valid parent list, but copy passed in lists - # to ensure we don't have the user accidentally change it on us. - tree_parents = [] if ancestors is None else ancestors[:] - - self.parent_map = {c: p for p in tree.iter() for c in p} - stack = [(tree, tree_parents)] - - while stack: - currElement, parents = stack.pop() - - self.ancestors = parents - self.__build_ancestors(currElement, self.ancestors) - - insertQueue = [] - for child in currElement: - if child.text and not isinstance( - child.text, util.AtomicString - ): - self.ancestors.append(child.tag.lower()) - text = child.text - child.text = None - lst = self.__processPlaceholders( - self.__handleInline(text), child - ) - for item in lst: - self.parent_map[item[0]] = child - stack += lst - insertQueue.append((child, lst)) - self.ancestors.pop() - if child.tail: - tail = self.__handleInline(child.tail) - dumby = etree.Element('d') - child.tail = None - tailResult = self.__processPlaceholders(tail, dumby, False) - if dumby.tail: - child.tail = dumby.tail - pos = list(currElement).index(child) + 1 - tailResult.reverse() - for newChild in tailResult: - self.parent_map[newChild[0]] = currElement - currElement.insert(pos, newChild[0]) - if len(child): - self.parent_map[child] = currElement - stack.append((child, self.ancestors[:])) - - for element, lst in insertQueue: - for i, obj in enumerate(lst): - newChild = obj[0] - element.insert(i, newChild) - return tree - - -class PrettifyTreeprocessor(Treeprocessor): - """ Add line breaks to the html document. """ - - def _prettifyETree(self, elem): - """ Recursively add line breaks to `ElementTree` children. """ - - i = "\n" - if self.md.is_block_level(elem.tag) and elem.tag not in ['code', 'pre']: - if (not elem.text or not elem.text.strip()) \ - and len(elem) and self.md.is_block_level(elem[0].tag): - elem.text = i - for e in elem: - if self.md.is_block_level(e.tag): - self._prettifyETree(e) - if not elem.tail or not elem.tail.strip(): - elem.tail = i - - def run(self, root: etree.Element) -> None: - """ Add line breaks to `Element` object and its children. """ - - self._prettifyETree(root) - # Do `<br />`'s separately as they are often in the middle of - # inline content and missed by `_prettifyETree`. - brs = root.iter('br') - for br in brs: - if not br.tail or not br.tail.strip(): - br.tail = '\n' - else: - br.tail = '\n%s' % br.tail - # Clean up extra empty lines at end of code blocks. - pres = root.iter('pre') - for pre in pres: - if len(pre) and pre[0].tag == 'code': - code = pre[0] - # Only prettify code containing text only - if not len(code) and code.text is not None: - code.text = util.AtomicString(code.text.rstrip() + '\n') - - -class UnescapeTreeprocessor(Treeprocessor): - """ Restore escaped chars """ - - RE = re.compile(r'{}(\d+){}'.format(util.STX, util.ETX)) - - def _unescape(self, m): - return chr(int(m.group(1))) - - def unescape(self, text: str) -> str: - return self.RE.sub(self._unescape, text) - - def run(self, root): - """ Loop over all elements and unescape all text. """ - for elem in root.iter(): - # Unescape text content - if elem.text and not elem.tag == 'code': - elem.text = self.unescape(elem.text) - # Unescape tail content - if elem.tail: - elem.tail = self.unescape(elem.tail) - # Unescape attribute values - for key, value in elem.items(): - elem.set(key, self.unescape(value)) diff --git a/plugins/markdown_preview/markdown/util.py b/plugins/markdown_preview/markdown/util.py deleted file mode 100644 index 827befd..0000000 --- a/plugins/markdown_preview/markdown/util.py +++ /dev/null @@ -1,399 +0,0 @@ -# Python Markdown - -# A Python implementation of John Gruber's Markdown. - -# Documentation: https://python-markdown.github.io/ -# GitHub: https://github.com/Python-Markdown/markdown/ -# PyPI: https://pypi.org/project/Markdown/ - -# Started by Manfred Stienstra (http://www.dwerg.net/). -# Maintained for a few years by Yuri Takhteyev (http://www.freewisdom.org). -# Currently maintained by Waylan Limberg (https://github.com/waylan), -# Dmitry Shachnev (https://github.com/mitya57) and Isaac Muse (https://github.com/facelessuser). - -# Copyright 2007-2023 The Python Markdown Project (v. 1.7 and later) -# Copyright 2004, 2005, 2006 Yuri Takhteyev (v. 0.2-1.6b) -# Copyright 2004 Manfred Stienstra (the original version) - -# License: BSD (see LICENSE.md for details). - -""" -This module contains various contacts, classes and functions which get referenced and used -throughout the code base. -""" - -from __future__ import annotations - -import re -import sys -import warnings -from functools import wraps, lru_cache -from itertools import count -from typing import TYPE_CHECKING, Generic, Iterator, NamedTuple, TypeVar, overload - -if TYPE_CHECKING: # pragma: no cover - from markdown import Markdown - -_T = TypeVar('_T') - - -""" -Constants you might want to modify ------------------------------------------------------------------------------ -""" - - -BLOCK_LEVEL_ELEMENTS: list[str] = [ - # Elements which are invalid to wrap in a `<p>` tag. - # See https://w3c.github.io/html/grouping-content.html#the-p-element - 'address', 'article', 'aside', 'blockquote', 'details', 'div', 'dl', - 'fieldset', 'figcaption', 'figure', 'footer', 'form', 'h1', 'h2', 'h3', - 'h4', 'h5', 'h6', 'header', 'hgroup', 'hr', 'main', 'menu', 'nav', 'ol', - 'p', 'pre', 'section', 'table', 'ul', - # Other elements which Markdown should not be mucking up the contents of. - 'canvas', 'colgroup', 'dd', 'body', 'dt', 'group', 'html', 'iframe', 'li', 'legend', - 'math', 'map', 'noscript', 'output', 'object', 'option', 'progress', 'script', - 'style', 'summary', 'tbody', 'td', 'textarea', 'tfoot', 'th', 'thead', 'tr', 'video' -] -""" -List of HTML tags which get treated as block-level elements. Same as the `block_level_elements` -attribute of the [`Markdown`][markdown.Markdown] class. Generally one should use the -attribute on the class. This remains for compatibility with older extensions. -""" - -# Placeholders -STX = '\u0002' -""" "Start of Text" marker for placeholder templates. """ -ETX = '\u0003' -""" "End of Text" marker for placeholder templates. """ -INLINE_PLACEHOLDER_PREFIX = STX+"klzzwxh:" -""" Prefix for inline placeholder template. """ -INLINE_PLACEHOLDER = INLINE_PLACEHOLDER_PREFIX + "%s" + ETX -""" Placeholder template for stashed inline text. """ -INLINE_PLACEHOLDER_RE = re.compile(INLINE_PLACEHOLDER % r'([0-9]+)') -""" Regular Expression which matches inline placeholders. """ -AMP_SUBSTITUTE = STX+"amp"+ETX -""" Placeholder template for HTML entities. """ -HTML_PLACEHOLDER = STX + "wzxhzdk:%s" + ETX -""" Placeholder template for raw HTML. """ -HTML_PLACEHOLDER_RE = re.compile(HTML_PLACEHOLDER % r'([0-9]+)') -""" Regular expression which matches HTML placeholders. """ -TAG_PLACEHOLDER = STX + "hzzhzkh:%s" + ETX -""" Placeholder template for tags. """ - - -# Constants you probably do not need to change -# ----------------------------------------------------------------------------- - -RTL_BIDI_RANGES = ( - ('\u0590', '\u07FF'), - # Hebrew (0590-05FF), Arabic (0600-06FF), - # Syriac (0700-074F), Arabic supplement (0750-077F), - # Thaana (0780-07BF), Nko (07C0-07FF). - ('\u2D30', '\u2D7F') # Tifinagh -) - - -# AUXILIARY GLOBAL FUNCTIONS -# ============================================================================= - - -@lru_cache(maxsize=None) -def get_installed_extensions(): - """ Return all entry_points in the `markdown.extensions` group. """ - if sys.version_info >= (3, 10): - from importlib import metadata - else: # `<PY310` use backport - import importlib_metadata as metadata - # Only load extension entry_points once. - return metadata.entry_points(group='markdown.extensions') - - -def deprecated(message: str, stacklevel: int = 2): - """ - Raise a [`DeprecationWarning`][] when wrapped function/method is called. - - Usage: - - ```python - @deprecated("This method will be removed in version X; use Y instead.") - def some_method(): - pass - ``` - """ - def wrapper(func): - @wraps(func) - def deprecated_func(*args, **kwargs): - warnings.warn( - f"'{func.__name__}' is deprecated. {message}", - category=DeprecationWarning, - stacklevel=stacklevel - ) - return func(*args, **kwargs) - return deprecated_func - return wrapper - - -def parseBoolValue(value: str | None, fail_on_errors: bool = True, preserve_none: bool = False) -> bool | None: - """Parses a string representing a boolean value. If parsing was successful, - returns `True` or `False`. If `preserve_none=True`, returns `True`, `False`, - or `None`. If parsing was not successful, raises `ValueError`, or, if - `fail_on_errors=False`, returns `None`.""" - if not isinstance(value, str): - if preserve_none and value is None: - return value - return bool(value) - elif preserve_none and value.lower() == 'none': - return None - elif value.lower() in ('true', 'yes', 'y', 'on', '1'): - return True - elif value.lower() in ('false', 'no', 'n', 'off', '0', 'none'): - return False - elif fail_on_errors: - raise ValueError('Cannot parse bool value: %r' % value) - - -def code_escape(text: str) -> str: - """HTML escape a string of code.""" - if "&" in text: - text = text.replace("&", "&") - if "<" in text: - text = text.replace("<", "<") - if ">" in text: - text = text.replace(">", ">") - return text - - -def _get_stack_depth(size=2): - """Get current stack depth, performantly. - """ - frame = sys._getframe(size) - - for size in count(size): - frame = frame.f_back - if not frame: - return size - - -def nearing_recursion_limit() -> bool: - """Return true if current stack depth is within 100 of maximum limit.""" - return sys.getrecursionlimit() - _get_stack_depth() < 100 - - -# MISC AUXILIARY CLASSES -# ============================================================================= - - -class AtomicString(str): - """A string which should not be further processed.""" - pass - - -class Processor: - """ The base class for all processors. - - Attributes: - Processor.md: The `Markdown` instance passed in an initialization. - - Arguments: - md: The `Markdown` instance this processor is a part of. - - """ - def __init__(self, md: Markdown | None = None): - self.md = md - - -class HtmlStash: - """ - This class is used for stashing HTML objects that we extract - in the beginning and replace with place-holders. - """ - - def __init__(self): - """ Create an `HtmlStash`. """ - self.html_counter = 0 # for counting inline html segments - self.rawHtmlBlocks = [] - self.tag_counter = 0 - self.tag_data = [] # list of dictionaries in the order tags appear - - def store(self, html: str) -> str: - """ - Saves an HTML segment for later reinsertion. Returns a - placeholder string that needs to be inserted into the - document. - - Keyword arguments: - html: An html segment. - - Returns: - A placeholder string. - - """ - self.rawHtmlBlocks.append(html) - placeholder = self.get_placeholder(self.html_counter) - self.html_counter += 1 - return placeholder - - def reset(self) -> None: - """ Clear the stash. """ - self.html_counter = 0 - self.rawHtmlBlocks = [] - - def get_placeholder(self, key: int) -> str: - return HTML_PLACEHOLDER % key - - def store_tag(self, tag: str, attrs: list, left_index: int, right_index: int) -> str: - """Store tag data and return a placeholder.""" - self.tag_data.append({'tag': tag, 'attrs': attrs, - 'left_index': left_index, - 'right_index': right_index}) - placeholder = TAG_PLACEHOLDER % str(self.tag_counter) - self.tag_counter += 1 # equal to the tag's index in `self.tag_data` - return placeholder - - -# Used internally by `Registry` for each item in its sorted list. -# Provides an easier to read API when editing the code later. -# For example, `item.name` is more clear than `item[0]`. -class _PriorityItem(NamedTuple): - name: str - priority: float - - -class Registry(Generic[_T]): - """ - A priority sorted registry. - - A `Registry` instance provides two public methods to alter the data of the - registry: `register` and `deregister`. Use `register` to add items and - `deregister` to remove items. See each method for specifics. - - When registering an item, a "name" and a "priority" must be provided. All - items are automatically sorted by "priority" from highest to lowest. The - "name" is used to remove ("deregister") and get items. - - A `Registry` instance it like a list (which maintains order) when reading - data. You may iterate over the items, get an item and get a count (length) - of all items. You may also check that the registry contains an item. - - When getting an item you may use either the index of the item or the - string-based "name". For example: - - registry = Registry() - registry.register(SomeItem(), 'itemname', 20) - # Get the item by index - item = registry[0] - # Get the item by name - item = registry['itemname'] - - When checking that the registry contains an item, you may use either the - string-based "name", or a reference to the actual item. For example: - - someitem = SomeItem() - registry.register(someitem, 'itemname', 20) - # Contains the name - assert 'itemname' in registry - # Contains the item instance - assert someitem in registry - - The method `get_index_for_name` is also available to obtain the index of - an item using that item's assigned "name". - """ - - def __init__(self): - self._data: dict[str, _T] = {} - self._priority = [] - self._is_sorted = False - - def __contains__(self, item: str | _T) -> bool: - if isinstance(item, str): - # Check if an item exists by this name. - return item in self._data.keys() - # Check if this instance exists. - return item in self._data.values() - - def __iter__(self) -> Iterator[_T]: - self._sort() - return iter([self._data[k] for k, p in self._priority]) - - @overload - def __getitem__(self, key: str | int) -> _T: # pragma: no cover - ... - - @overload - def __getitem__(self, key: slice) -> Registry[_T]: # pragma: no cover - ... - - def __getitem__(self, key: str | int | slice) -> _T | Registry[_T]: - self._sort() - if isinstance(key, slice): - data: Registry[_T] = Registry() - for k, p in self._priority[key]: - data.register(self._data[k], k, p) - return data - if isinstance(key, int): - return self._data[self._priority[key].name] - return self._data[key] - - def __len__(self) -> int: - return len(self._priority) - - def __repr__(self): - return '<{}({})>'.format(self.__class__.__name__, list(self)) - - def get_index_for_name(self, name: str) -> int: - """ - Return the index of the given name. - """ - if name in self: - self._sort() - return self._priority.index( - [x for x in self._priority if x.name == name][0] - ) - raise ValueError('No item named "{}" exists.'.format(name)) - - def register(self, item: _T, name: str, priority: float) -> None: - """ - Add an item to the registry with the given name and priority. - - Arguments: - item: The item being registered. - name: A string used to reference the item. - priority: An integer or float used to sort against all items. - - If an item is registered with a "name" which already exists, the - existing item is replaced with the new item. Treat carefully as the - old item is lost with no way to recover it. The new item will be - sorted according to its priority and will **not** retain the position - of the old item. - """ - if name in self: - # Remove existing item of same name first - self.deregister(name) - self._is_sorted = False - self._data[name] = item - self._priority.append(_PriorityItem(name, priority)) - - def deregister(self, name: str, strict: bool = True) -> None: - """ - Remove an item from the registry. - - Set `strict=False` to fail silently. Otherwise a [`ValueError`][] is raised for an unknown `name`. - """ - try: - index = self.get_index_for_name(name) - del self._priority[index] - del self._data[name] - except ValueError: - if strict: - raise - - def _sort(self): - """ - Sort the registry by priority from highest to lowest. - - This method is called internally and should never be explicitly called. - """ - if not self._is_sorted: - self._priority.sort(key=lambda item: item.priority, reverse=True) - self._is_sorted = True diff --git a/plugins/markdown_preview/markdown_preview.glade b/plugins/markdown_preview/markdown_preview.glade deleted file mode 100644 index 68a45f0..0000000 --- a/plugins/markdown_preview/markdown_preview.glade +++ /dev/null @@ -1,121 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- Generated with glade 3.40.0 --> -<interface> - <requires lib="gtk+" version="3.24"/> - <requires lib="webkit2gtk" version="2.28"/> - <object class="GtkImage" id="settings_img"> - <property name="visible">True</property> - <property name="can-focus">False</property> - <property name="stock">gtk-justify-fill</property> - </object> - <object class="WebKitSettings" type-func="webkit_settings_get_type" id="web_view_settings"> - <property name="enable-offline-web-application-cache">False</property> - <property name="enable-html5-local-storage">False</property> - <property name="enable-html5-database">False</property> - <property name="enable-xss-auditor">False</property> - <property name="enable-hyperlink-auditing">False</property> - <property name="enable-tabs-to-links">False</property> - <property name="enable-fullscreen">False</property> - <property name="print-backgrounds">False</property> - <property name="enable-webaudio">False</property> - <property name="enable-page-cache">False</property> - <property name="user-agent">Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.0 Safari/605.1.15</property> - <property name="enable-accelerated-2d-canvas">True</property> - <property name="allow-file-access-from-file-urls">True</property> - <property name="allow-universal-access-from-file-urls">True</property> - <property name="enable-webrtc">True</property> - </object> - <object class="GtkPopover" id="markdown_preview_dialog"> - <property name="width-request">620</property> - <property name="height-request">480</property> - <property name="can-focus">False</property> - <property name="vexpand">True</property> - <property name="position">left</property> - <property name="modal">False</property> - <property name="transitions-enabled">False</property> - <property name="constrain-to">none</property> - <child> - <object class="GtkBox"> - <property name="visible">True</property> - <property name="can-focus">False</property> - <property name="hexpand">True</property> - <property name="vexpand">True</property> - <property name="orientation">vertical</property> - <child> - <object class="GtkButtonBox"> - <property name="visible">True</property> - <property name="can-focus">False</property> - <property name="layout-style">end</property> - <child> - <object class="GtkToggleButton"> - <property name="label">gtk-media-pause</property> - <property name="visible">True</property> - <property name="can-focus">True</property> - <property name="receives-default">True</property> - <property name="use-stock">True</property> - <property name="always-show-image">True</property> - <signal name="toggled" handler="_tggle_preview_updates" swapped="no"/> - </object> - <packing> - <property name="expand">True</property> - <property name="fill">True</property> - <property name="position">0</property> - </packing> - </child> - <child> - <object class="GtkButton"> - <property name="visible">True</property> - <property name="sensitive">False</property> - <property name="can-focus">True</property> - <property name="receives-default">True</property> - <property name="image">settings_img</property> - <signal name="clicked" handler="_handle_settings" swapped="no"/> - </object> - <packing> - <property name="expand">True</property> - <property name="fill">True</property> - <property name="position">1</property> - </packing> - </child> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">True</property> - <property name="position">0</property> - </packing> - </child> - <child> - <object class="GtkScrolledWindow"> - <property name="visible">True</property> - <property name="can-focus">True</property> - <property name="shadow-type">in</property> - <child> - <object class="GtkViewport"> - <property name="visible">True</property> - <property name="can-focus">False</property> - <child> - <object class="WebKitWebView" type-func="webkit_web_view_get_type" id="markdown_view"> - <property name="visible">True</property> - <property name="can-focus">False</property> - <property name="settings">web_view_settings</property> - <property name="is-ephemeral">True</property> - <property name="is-muted">True</property> - <property name="default-content-security-policy">*</property> - <child> - <placeholder/> - </child> - </object> - </child> - </object> - </child> - </object> - <packing> - <property name="expand">True</property> - <property name="fill">True</property> - <property name="position">1</property> - </packing> - </child> - </object> - </child> - </object> -</interface> diff --git a/plugins/markdown_preview/markdown_template_mixin.py b/plugins/markdown_preview/markdown_template_mixin.py deleted file mode 100644 index 710db12..0000000 --- a/plugins/markdown_preview/markdown_template_mixin.py +++ /dev/null @@ -1,42 +0,0 @@ -# Python imports - -# Lib imports - -# Application imports - - - -class MarkdownTemplateMixin: - def wrap_html_to_body(self, html): - return f"""\ -<!DOCTYPE html> -<html lang="en" dir="ltr"> -<head> - <meta charset="utf-8"> - <title>Markdown View - - - - {html} - - - -""" \ No newline at end of file diff --git a/plugins/markdown_preview/plugin.py b/plugins/markdown_preview/plugin.py deleted file mode 100644 index b363acb..0000000 --- a/plugins/markdown_preview/plugin.py +++ /dev/null @@ -1,114 +0,0 @@ -# Python imports -import os - -# Lib imports -import gi -gi.require_version('Gtk', '3.0') -gi.require_version('Gdk', '3.0') -gi.require_version('WebKit2', '4.0') -from gi.repository import Gtk -from gi.repository import Gdk -from gi.repository import WebKit2 - -# Application imports -from . import markdown -from .markdown_template_mixin import MarkdownTemplateMixin -from plugins.plugin_base import PluginBase - - - -class Plugin(MarkdownTemplateMixin, PluginBase): - def __init__(self): - super().__init__() - - self.name = "Markdown Preview" # NOTE: Need to remove after establishing private bidirectional 1-1 message bus - # where self.name should not be needed for message comms - self.path = os.path.dirname(os.path.realpath(__file__)) - self._GLADE_FILE = f"{self.path}/markdown_preview.glade" - - self.is_preview_paused = False - self.is_md_file = False - - - def run(self): - WebKit2.WebView() # Need one initialized for webview to work from glade file - - self._builder = Gtk.Builder() - self._builder.add_from_file(self._GLADE_FILE) - self._connect_builder_signals(self, self._builder) - - separator_right = self._ui_objects[0] - self._markdown_dialog = self._builder.get_object("markdown_preview_dialog") - self._markdown_view = self._builder.get_object("markdown_view") - self._web_view_settings = self._builder.get_object("web_view_settings") - - self._markdown_dialog.set_relative_to(separator_right) - self._markdown_view.set_settings(self._web_view_settings) - self._markdown_view.set_background_color(Gdk.RGBA(0, 0, 0, 0.0)) - - - def generate_reference_ui_element(self): - ... - - def subscribe_to_events(self): - self._event_system.subscribe("tggle_markdown_preview", self._tggle_markdown_preview) - self._event_system.subscribe("set_active_src_view", self._set_active_src_view) - self._event_system.subscribe("buffer_changed", self._do_markdown_translate) - - def _buffer_changed_first_load(self, buffer): - self._buffer = buffer - - self._do_markdown_translate(buffer) - - def _set_active_src_view(self, source_view): - self._active_src_view = source_view - self._buffer = self._active_src_view.get_buffer() - - self._do_markdown_translate(self._buffer) - - def _handle_settings(self, widget = None, eve = None): - ... - - def _tggle_preview_updates(self, widget = None, eve = None): - self.is_preview_paused = not self.is_preview_paused - widget.set_active(self.is_preview_paused) - - if not self.is_preview_paused: - self._do_markdown_translate(self._buffer) - - def _tggle_markdown_preview(self, widget = None, eve = None): - if not self._active_src_view: return - - is_visible = self._markdown_dialog.is_visible() - buffer = self._active_src_view.get_buffer() - data = None - - if not is_visible: - self._markdown_dialog.popup(); - self._do_markdown_translate(buffer) - elif not data and is_visible: - self._markdown_dialog.popdown() - - def _do_markdown_translate(self, buffer): - if self.is_preview_paused: return - - self.is_markdown_check() - is_visible = self._markdown_dialog.is_visible() - if not is_visible or not self.is_md_file: return - self.render_markdown(buffer) - - def render_markdown(self, buffer): - start_iter = buffer.get_start_iter() - end_iter = buffer.get_end_iter() - text = buffer.get_text(start_iter, end_iter, include_hidden_chars = False) - html = markdown.markdown(text) - - path = self._active_src_view.get_current_file().get_parent().get_path() - data = self.wrap_html_to_body(html) - self._markdown_view.load_html(content = data, base_uri = f"file://{path}/") - - def is_markdown_check(self): - self.is_md_file = self._active_src_view.get_filetype() == "markdown" - if not self.is_md_file: - data = self.wrap_html_to_body("

    Not a Markdown file...

    ") - self._markdown_view.load_html(content = data, base_uri = None) \ No newline at end of file diff --git a/plugins/search_replace/__init__.py b/plugins/search_replace/__init__.py deleted file mode 100644 index d36fa8c..0000000 --- a/plugins/search_replace/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -""" - Pligin Module -""" diff --git a/plugins/search_replace/__main__.py b/plugins/search_replace/__main__.py deleted file mode 100644 index a576329..0000000 --- a/plugins/search_replace/__main__.py +++ /dev/null @@ -1,3 +0,0 @@ -""" - Pligin Package -""" diff --git a/plugins/search_replace/manifest.json b/plugins/search_replace/manifest.json deleted file mode 100644 index a98cc50..0000000 --- a/plugins/search_replace/manifest.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "manifest": { - "name": "Search/Replace", - "author": "ITDominator", - "version": "0.0.1", - "support": "", - "requests": { - "pass_events": "true", - "pass_ui_objects": ["separator_botton"], - "bind_keys": ["Search/Replace||tggl_search_replace:f"] - - } - } -} diff --git a/plugins/search_replace/plugin.py b/plugins/search_replace/plugin.py deleted file mode 100644 index b387f07..0000000 --- a/plugins/search_replace/plugin.py +++ /dev/null @@ -1,221 +0,0 @@ -# Python imports -import os -import re -import threading - -# Lib imports -import gi -gi.require_version('Gtk', '3.0') -gi.require_version('Gdk', '3.0') -from gi.repository import Gtk -from gi.repository import Gdk -from gi.repository import GLib - -# Application imports -from plugins.plugin_base import PluginBase -from .styling_mixin import StylingMixin -from .replace_mixin import ReplaceMixin - - - -class Plugin(StylingMixin, ReplaceMixin, PluginBase): - def __init__(self): - super().__init__() - - self.name = "Search/Replace" # NOTE: Need to remove after establishing private bidirectional 1-1 message bus - # where self.name should not be needed for message comms - self.path = os.path.dirname(os.path.realpath(__file__)) - self._GLADE_FILE = f"{self.path}/search_replace.glade" - - self._search_replace_dialog = None - self._find_entry = None - self._replace_entry = None - self._active_src_view = None - self._buffer = None - self._tag_table = None - - self.use_regex = False - self.use_case_sensitive = False - self.search_only_in_selection = False - self.use_whole_word_search = False - - self.timer = None - self.search_time = 0.35 - self.find_text = "" - self.search_tag = "search_tag" - self.highlight_color = "#FBF719" - self.text_color = "#000000" - self.alpha_num_under = re.compile(r"[a-zA-Z0-9_]") - - - def run(self): - self._builder = Gtk.Builder() - self._builder.add_from_file(self._GLADE_FILE) - self._connect_builder_signals(self, self._builder) - - separator_botton = self._ui_objects[0] - self._search_replace_dialog = self._builder.get_object("search_replace_dialog") - self._find_status_lbl = self._builder.get_object("find_status_lbl") - self._find_options_lbl = self._builder.get_object("find_options_lbl") - - self._find_entry = self._builder.get_object("find_entry") - self._replace_entry = self._builder.get_object("replace_entry") - - self._search_replace_dialog.set_relative_to(separator_botton) - self._search_replace_dialog.set_hexpand(True) - - def generate_reference_ui_element(self): - ... - - def subscribe_to_events(self): - self._event_system.subscribe("tggl_search_replace", self._tggl_search_replace) - self._event_system.subscribe("set_active_src_view", self._set_active_src_view) - - def _set_active_src_view(self, source_view): - self._active_src_view = source_view - self._buffer = self._active_src_view.get_buffer() - self._tag_table = self._buffer.get_tag_table() - self.search_for_string(self._find_entry) - - def _show_search_replace(self, widget = None, eve = None): - self._search_replace_dialog.popup() - - def _tggl_search_replace(self, widget = None, eve = None): - is_visible = self._search_replace_dialog.is_visible() - buffer = self._active_src_view.get_buffer() - data = None - - if buffer.get_has_selection(): - start, end = buffer.get_selection_bounds() - data = buffer.get_text(start, end, include_hidden_chars = False) - - if data: - self._find_entry.set_text(data) - - if not is_visible: - self._search_replace_dialog.popup(); - self._find_entry.grab_focus() - elif not data and is_visible: - self._search_replace_dialog.popdown() - self._find_entry.set_text("") - else: - self._find_entry.grab_focus() - - - def get_search_tag(self, buffer): - tag_table = buffer.get_tag_table() - search_tag = tag_table.lookup(self.search_tag) - if not search_tag: - search_tag = buffer.create_tag(self.search_tag, background = self.highlight_color, foreground = self.text_color) - - buffer.remove_tag_by_name(self.search_tag, buffer.get_start_iter(), buffer.get_end_iter()) - return search_tag - - - def cancel_timer(self): - if self.timer: - self.timer.cancel() - GLib.idle_remove_by_data(None) - - def delay_search_glib(self): - GLib.idle_add(self._do_highlight) - - def delay_search(self): - wait_time = self.search_time / len(self.find_text) - wait_time = max(wait_time, 0.05) - - self.timer = threading.Timer(wait_time, self.delay_search_glib) - self.timer.daemon = True - self.timer.start() - - - def on_enter_search(self, widget, eve): - text = widget.get_text() - if not text: return - - keyname = Gdk.keyval_name(eve.keyval) - if keyname == "Return": - self.find_next(widget) - - def search_for_string(self, widget): - self.cancel_timer() - - self.find_text = widget.get_text() - if len(self.find_text) > 0 and len(self.find_text) < 5: - self.delay_search() - else: - self._do_highlight(self.find_text) - - - def _do_highlight(self, query = None): - query = self.find_text if not query else query - buffer = self._active_src_view.get_buffer() - # Also clears tag from buffer so if no query we're clean in ui - search_tag = self.get_search_tag(buffer) - - self.update_style(1) - if not query: - self._find_status_lbl.set_label(f"Find in current buffer") - self.update_style(0) - return - - start_itr = buffer.get_start_iter() - end_itr = buffer.get_end_iter() - - results, total_count = self.search(start_itr, query) - self._update_status_lbl(total_count, query) - for start, end in results: - buffer.apply_tag(search_tag, start, end) - - def search(self, start_itr = None, query = None, limit = None): - if not start_itr or not query: return None, None - - flags = Gtk.TextSearchFlags.VISIBLE_ONLY | Gtk.TextSearchFlags.TEXT_ONLY - if not self.use_case_sensitive: - flags = flags | Gtk.TextSearchFlags.CASE_INSENSITIVE - - if self.search_only_in_selection and self._buffer.get_has_selection(): - start_itr, limit = self._buffer.get_selection_bounds() - - _results = [] - while True: - result = start_itr.forward_search(query, flags, limit) - if not result: break - - _results.append(result) - start_itr = result[1] - - results = self.apply_filters(_results, query) - return results, len(results) - - def apply_filters(self, _results, query): - results = [] - for start, end in _results: - text = self._buffer.get_slice(start, end, include_hidden_chars = False) - if self.use_whole_word_search: - if not self.is_whole_word(start, end): - continue - - results.append([start, end]) - - return results - - def find_next(self, widget, eve = None, use_data = None): - mark = self._buffer.get_insert() - iter = self._buffer.get_iter_at_mark(mark) - iter.forward_line() - - search_tag = self._tag_table.lookup(self.search_tag) - next_tag_found = iter.forward_to_tag_toggle(search_tag) - if not next_tag_found: - self._buffer.place_cursor( self._buffer.get_start_iter() ) - mark = self._buffer.get_insert() - iter = self._buffer.get_iter_at_mark(mark) - iter.forward_to_tag_toggle(search_tag) - - self._buffer.place_cursor(iter) - self._active_src_view.scroll_to_mark( self._buffer.get_insert(), 0.0, True, 0.0, 0.0 ) - - - def find_all(self, widget): - ... \ No newline at end of file diff --git a/plugins/search_replace/replace_mixin.py b/plugins/search_replace/replace_mixin.py deleted file mode 100644 index 9d5a2f0..0000000 --- a/plugins/search_replace/replace_mixin.py +++ /dev/null @@ -1,94 +0,0 @@ -# Python imports - -# Lib imports - -# Application imports - - - -class ReplaceMixin: - def replace(self, widget): - replace_text = self._replace_entry.get_text() - if self.find_text and replace_text: - self._buffer.begin_user_action() - - iter = self._buffer.get_start_iter() - search_tag = self._tag_table.lookup(self.search_tag) - - iter.forward_to_tag_toggle(search_tag) - self._do_replace(iter, replace_text) - self._active_src_view.scroll_to_iter( iter, 0.0, True, 0.0, 0.0 ) - - self._buffer.end_user_action() - - def replace_all(self, widget): - replace_text = self._replace_entry.get_text() - if self.find_text: - self._buffer.begin_user_action() - - mark = self._buffer.get_insert() - iter = self._buffer.get_start_iter() - search_tag = self._tag_table.lookup(self.search_tag) - - while iter.forward_to_tag_toggle(search_tag): - self._do_replace(iter, replace_text) - iter = self._buffer.get_start_iter() - - self._buffer.end_user_action() - - - def _do_replace(self, iter, text): - start, end = self.get_start_end(iter) - self.replace_in_buffer(start, end, text) - - def replace_in_buffer(self, start, end, text): - pos_mark = self._buffer.create_mark("find-replace", end, True) - self._buffer.delete(start, end) - replace_iter = self._buffer.get_iter_at_mark(pos_mark) - self._buffer.insert(replace_iter, text) - - def get_start_end(self, iter): - start = iter.copy() - end = None - - while True: - iter.forward_char() - tags = iter.get_tags() - valid = False - for tag in tags: - if tag.props.name and self.search_tag in tag.props.name: - valid = True - break - - if valid: - continue - - end = iter.copy() - break - - return start, end - - # NOTE: Below, lovingly taken from Hamad Al Marri's Gamma text editor. - # Link: https://gitlab.com/hamadmarri/gamma-text-editor - def is_whole_word(self, match_start, match_end): - is_prev_a_char = True - is_next_a_char = True - - prev_iter = match_start.copy() - next_iter = match_end.copy() - if not prev_iter.backward_char(): - is_prev_a_char = False - else: - c = prev_iter.get_char() - is_prev_a_char = (c.isalpha() or c.isdigit()) - - if not next_iter: - is_next_a_char = False - else: - c = next_iter.get_char() - is_next_a_char = (c.isalpha() or c.isdigit()) - - is_word = (not is_prev_a_char and not is_next_a_char) - - # Note: Both must be false to be a word... - return is_word diff --git a/plugins/search_replace/search_replace.glade b/plugins/search_replace/search_replace.glade deleted file mode 100644 index ccab6c8..0000000 --- a/plugins/search_replace/search_replace.glade +++ /dev/null @@ -1,299 +0,0 @@ - - - - - - True - False - gtk-close - - - True - False - ../../icons/only-in-selection.png - - - True - False - ../../icons/whole-word.png - - - False - False - False - none - - - True - False - vertical - - - True - False - - - True - False - 5 - Find in Current Buffer - 0 - - - True - True - 0 - - - - - True - False - - - True - False - 20 - Finding with Options: Case Insensitive - 0 - - - False - True - 0 - - - - - True - False - start - - - .* - True - False - True - False - True - Use Regex - - - - True - True - 0 - - - - - Aa - True - True - False - True - Match Case - - - - True - True - 1 - - - - - True - True - False - True - Only In Selection - only-in-selection - True - - - - True - True - 2 - - - - - True - True - False - True - Whole Word - whole-word - True - - - - True - True - 3 - - - - - True - True - False - True - Close Panel - close_img - True - - - - True - True - 4 - - - - - False - True - 1 - - - - - False - True - 1 - - - - - False - True - 0 - - - - - - True - False - True - - - Replace All - True - True - False - True - Replace All - 5 - 5 - 5 - 5 - - - - 9 - 1 - - - - - Replace - True - True - False - True - Replace Next - 5 - 10 - 5 - 5 - - - - 8 - 1 - - - - - Find All - True - True - False - True - 5 - 5 - 5 - 5 - - - - 9 - 0 - - - - - Find - True - True - False - True - 5 - 5 - 5 - 5 - - - - 8 - 0 - - - - - True - True - edit-find-symbolic - False - False - Find in current buffer - - - - - 0 - 0 - 8 - - - - - True - True - edit-find-symbolic - False - False - Replace in current buffer - - - 0 - 1 - 8 - - - - - False - True - 10 - 3 - - - - - - diff --git a/plugins/search_replace/styling_mixin.py b/plugins/search_replace/styling_mixin.py deleted file mode 100644 index 1baf8a5..0000000 --- a/plugins/search_replace/styling_mixin.py +++ /dev/null @@ -1,66 +0,0 @@ -# Python imports - -# Lib imports - -# Application imports - - - -class StylingMixin: - def tggle_regex(self, widget): - self.use_regex = not widget.get_active() - self._set_find_options_lbl() - self.search_for_string(self._find_entry) - - def tggle_case_sensitive(self, widget): - self.use_case_sensitive = widget.get_active() - self._set_find_options_lbl() - self.search_for_string(self._find_entry) - - def tggle_selection_only_scan(self, widget): - self.search_only_in_selection = widget.get_active() - self._set_find_options_lbl() - self.search_for_string(self._find_entry) - - def tggle_whole_word_search(self, widget): - self.use_whole_word_search = widget.get_active() - self._set_find_options_lbl() - self.search_for_string(self._find_entry) - - def _set_find_options_lbl(self): - find_options = "Finding with Options: " - - if self.use_regex: - find_options += "Regex" - - find_options += ", " if self.use_regex else "" - find_options += "Case Sensitive" if self.use_case_sensitive else "Case Inensitive" - - if self.search_only_in_selection: - find_options += ", Within Current Selection" - - if self.use_whole_word_search: - find_options += ", Whole Word" - - self._find_options_lbl.set_label(find_options) - - def update_style(self, state): - self._find_entry.get_style_context().remove_class("searching") - self._find_entry.get_style_context().remove_class("search_success") - self._find_entry.get_style_context().remove_class("search_fail") - - if state == 0: - self._find_entry.get_style_context().add_class("searching") - elif state == 1: - self._find_entry.get_style_context().add_class("search_success") - elif state == 2: - self._find_entry.get_style_context().add_class("search_fail") - - def _update_status_lbl(self, total_count: int = 0, query: str = None): - if not query: return - - count = total_count if total_count > 0 else "No" - plural = "s" if total_count > 1 else "" - - if total_count == 0: self.update_style(2) - self._find_status_lbl.set_label(f"{count} results{plural} found for '{query}'") diff --git a/plugins/snippets/__init__.py b/plugins/snippets/__init__.py deleted file mode 100644 index d36fa8c..0000000 --- a/plugins/snippets/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -""" - Pligin Module -""" diff --git a/plugins/snippets/__main__.py b/plugins/snippets/__main__.py deleted file mode 100644 index a576329..0000000 --- a/plugins/snippets/__main__.py +++ /dev/null @@ -1,3 +0,0 @@ -""" - Pligin Package -""" diff --git a/plugins/snippets/cson/__init__.py b/plugins/snippets/cson/__init__.py deleted file mode 100644 index 0fda134..0000000 --- a/plugins/snippets/cson/__init__.py +++ /dev/null @@ -1,8 +0,0 @@ -""" -A Coffescript Object Notation (CSON) parser for Python 2 and Python 3. -See documentation at https://github.com/avaka/pycson -""" - -from .parser import load, loads -from .writer import dump, dumps -from .speg import ParseError \ No newline at end of file diff --git a/plugins/snippets/cson/parser.py b/plugins/snippets/cson/parser.py deleted file mode 100644 index 36dc594..0000000 --- a/plugins/snippets/cson/parser.py +++ /dev/null @@ -1,295 +0,0 @@ -from .speg import peg -import re, sys - -if sys.version_info[0] == 2: - _chr = unichr -else: - _chr = chr - -def load(fin): - return loads(fin.read()) - -def loads(s): - if isinstance(s, bytes): - s = s.decode('utf-8') - if s.startswith(u'\ufeff'): - s = s[1:] - return peg(s.replace('\r\n', '\n'), _p_root) - -def _p_ws(p): - p('[ \t]*') - -def _p_nl(p): - p(r'([ \t]*(?:#[^\n]*)?\r?\n)+') - -def _p_ews(p): - with p: - p(_p_nl) - p(_p_ws) - -def _p_id(p): - return p(r'[$a-zA-Z_][$0-9a-zA-Z_]*') - -_escape_table = { - 'r': '\r', - 'n': '\n', - 't': '\t', - 'f': '\f', - 'b': '\b', -} -def _p_unescape(p): - esc = p('\\\\(?:u[0-9a-fA-F]{4}|[^\n])') - if esc[1] == 'u': - return _chr(int(esc[2:], 16)) - return _escape_table.get(esc[1:], esc[1:]) - -_re_indent = re.compile(r'[ \t]*') -def _p_block_str(p, c): - p(r'{c}{c}{c}'.format(c=c)) - lines = [['']] - with p: - while True: - s = p(r'(?:{c}(?!{c}{c})|[^{c}\\])*'.format(c=c)) - l = s.split('\n') - lines[-1].append(l[0]) - lines.extend([x] for x in l[1:]) - if p(r'(?:\\\n[ \t]*)*'): - continue - p.commit() - lines[-1].append(p(_p_unescape)) - p(r'{c}{c}{c}'.format(c=c)) - - lines = [''.join(l) for l in lines] - strip_ws = len(lines) > 1 - if strip_ws and all(c in ' \t' for c in lines[-1]): - lines.pop() - - indent = None - for line in lines[1:]: - if not line: - continue - if indent is None: - indent = _re_indent.match(line).group(0) - continue - for i, (c1, c2) in enumerate(zip(indent, line)): - if c1 != c2: - indent = indent[:i] - break - - ind_len = len(indent or '') - if strip_ws and all(c in ' \t' for c in lines[0]): - lines = [line[ind_len:] for line in lines[1:]] - else: - lines[1:] = [line[ind_len:] for line in lines[1:]] - - return '\n'.join(lines) - -_re_mstr_nl = re.compile(r'(?:[ \t]*\n)+[ \t]*') -_re_mstr_trailing_nl = re.compile(_re_mstr_nl.pattern + r'\Z') -def _p_multiline_str(p, c): - p('{c}(?!{c}{c})(?:[ \t]*\n[ \t]*)?'.format(c=c)) - string_parts = [] - with p: - while True: - string_parts.append(p(r'[^{c}\\]*'.format(c=c))) - if p(r'(?:\\\n[ \t]*)*'): - string_parts.append('') - continue - p.commit() - string_parts.append(p(_p_unescape)) - p(c) - string_parts[-1] = _re_mstr_trailing_nl.sub('', string_parts[-1]) - string_parts[::2] = [_re_mstr_nl.sub(' ', part) for part in string_parts[::2]] - return ''.join(string_parts) - -def _p_string(p): - with p: - return p(_p_block_str, '"') - with p: - return p(_p_block_str, "'") - with p: - return p(_p_multiline_str, '"') - return p(_p_multiline_str, "'") - -def _p_array_value(p): - with p: - p(_p_nl) - return p(_p_object) - with p: - p(_p_ws) - return p(_p_line_object) - p(_p_ews) - return p(_p_simple_value) - -def _p_key(p): - with p: - return p(_p_id) - return p(_p_string) - -def _p_flow_kv(p): - k = p(_p_key) - p(_p_ews) - p(':') - with p: - p(_p_nl) - return k, p(_p_object) - with p: - p(_p_ws) - return k, p(_p_line_object) - p(_p_ews) - return k, p(_p_simple_value) - -def _p_flow_obj_sep(p): - with p: - p(_p_ews) - p(',') - p(_p_ews) - return - - p(_p_nl) - p(_p_ws) - -def _p_simple_value(p): - with p: - p('null') - return None - - with p: - p('false') - return False - with p: - p('true') - return True - - with p: - return int(p('0b[01]+')[2:], 2) - with p: - return int(p('0o[0-7]+')[2:], 8) - with p: - return int(p('0x[0-9a-fA-F]+')[2:], 16) - with p: - return float(p(r'-?(?:[1-9][0-9]*|0)?\.[0-9]+(?:[Ee][\+-]?[0-9]+)?|(?:[1-9][0-9]*|0)(?:\.[0-9]+)?[Ee][\+-]?[0-9]+')) - with p: - return int(p('-?[1-9][0-9]*|0'), 10) - - with p: - return p(_p_string) - - with p: - p(r'\[') - r = [] - with p: - p.set('I', '') - r.append(p(_p_array_value)) - with p: - while True: - with p: - p(_p_ews) - p(',') - rr = p(_p_array_value) - if not p: - p(_p_nl) - with p: - rr = p(_p_object) - if not p: - p(_p_ews) - rr = p(_p_simple_value) - r.append(rr) - p.commit() - with p: - p(_p_ews) - p(',') - p(_p_ews) - p(r'\]') - return r - - p(r'\{') - - r = {} - p(_p_ews) - with p: - p.set('I', '') - k, v = p(_p_flow_kv) - r[k] = v - with p: - while True: - p(_p_flow_obj_sep) - k, v = p(_p_flow_kv) - r[k] = v - p.commit() - p(_p_ews) - with p: - p(',') - p(_p_ews) - p(r'\}') - return r - -def _p_line_kv(p): - k = p(_p_key) - p(_p_ws) - p(':') - p(_p_ws) - with p: - p(_p_nl) - p(p.get('I')) - return k, p(_p_indented_object) - with p: - return k, p(_p_line_object) - with p: - return k, p(_p_simple_value) - p(_p_nl) - p(p.get('I')) - p('[ \t]') - p(_p_ws) - return k, p(_p_simple_value) - -def _p_line_object(p): - k, v = p(_p_line_kv) - r = { k: v } - with p: - while True: - p(_p_ws) - p(',') - p(_p_ws) - k, v = p(_p_line_kv) - r[k] = v # uniqueness - p.commit() - return r - -def _p_object(p): - p.set('I', p.get('I') + p('[ \t]*')) - r = p(_p_line_object) - with p: - while True: - p(_p_ws) - with p: - p(',') - p(_p_nl) - p(p.get('I')) - rr = p(_p_line_object) - r.update(rr) # unqueness - p.commit() - return r - -def _p_indented_object(p): - p.set('I', p.get('I') + p('[ \t]')) - return p(_p_object) - -def _p_root(p): - with p: - p(_p_nl) - - with p: - p.set('I', '') - r = p(_p_object) - p(_p_ws) - with p: - p(',') - - if not p: - p(_p_ws) - r = p(_p_simple_value) - - p(_p_ews) - p(p.eof) - return r \ No newline at end of file diff --git a/plugins/snippets/cson/speg/__init__.py b/plugins/snippets/cson/speg/__init__.py deleted file mode 100644 index 650c80f..0000000 --- a/plugins/snippets/cson/speg/__init__.py +++ /dev/null @@ -1,15 +0,0 @@ -from .errors import ParseError, ExpectedExpr, UnexpectedExpr, SemanticFailure -from .peg import Parser -from .rules import eof - -def peg(text, root_rule): - p = Parser(text) - return p(root_rule) - -def parse(text, root_rule): - p = Parser(text) - return p.parse(root_rule) - -def hidden(fn): - fn._speg_hidden = True - return fn \ No newline at end of file diff --git a/plugins/snippets/cson/speg/errors.py b/plugins/snippets/cson/speg/errors.py deleted file mode 100644 index 994a91b..0000000 --- a/plugins/snippets/cson/speg/errors.py +++ /dev/null @@ -1,66 +0,0 @@ -from .rules import rule_to_str - -class ExpectedExpr: - def __init__(self, expr, callstack): - self.expr = expr - self.callstack = callstack - -class UnexpectedExpr: - def __init__(self, end_pos, rule, callstack): - self.end_pos = end_pos - self.rule = rule - self.callstack = callstack - -class SemanticFailure: - def __init__(self, args, kw, callstack): - self.args = args - self.kw = kw - self.callstack = callstack - -class ParseError(RuntimeError): - def __init__(self, message, text, start_pos, end_pos, failures): - self.message = message - self.text = text - self.start_pos = start_pos - self.end_pos = end_pos - self.failures = failures - - def __str__(self): - return 'at {}:{}: {}'.format( - self.start_pos.line, self.start_pos.col, self.message) - -def _first(iterable): - return next(iterable, None) - -def raise_parsing_error(text, position, failures): - end_pos = position - msg = [] - - sema = _first(f for f in failures if isinstance(f, SemanticFailure)) - if sema is not None: - msg.append(sema.args[0]) - else: - unexps = [f for f in failures if isinstance(f, UnexpectedExpr)] - if unexps: - unexp = min(unexps, - key=lambda f: f.end_pos.offset - position.offset) - end_pos = unexp.end_pos - msg.append('unexpected {}'.format(rule_to_str(unexp.rule))) - - exps = [f for f in failures if isinstance(f, ExpectedExpr)] - if exps: - exp_syms = set() - for f in exps: - r = _first(se.fn for se in f.callstack - if se.position == position and not getattr(se.fn, '_speg_hidden', False)) - if r is None: - r = f.expr - exp_syms.add(rule_to_str(r)) - exp_strs = sorted(exp_syms) - - if len(exp_strs) == 1: - msg.append('expected {}'.format(exp_strs[0])) - else: - msg.append('expected one of {}'.format(', '.join(exp_strs))) - - raise ParseError('; '.join(msg), text, position, end_pos, failures) diff --git a/plugins/snippets/cson/speg/peg.py b/plugins/snippets/cson/speg/peg.py deleted file mode 100644 index a355a1e..0000000 --- a/plugins/snippets/cson/speg/peg.py +++ /dev/null @@ -1,195 +0,0 @@ -import re -import sys - -import six - -from .errors import ExpectedExpr, UnexpectedExpr, SemanticFailure, raise_parsing_error -from .position import Position, get_line_at_position -from .rules import eof - -class _ParseBacktrackError(BaseException): - pass - -class _PegState: - def __init__(self, position): - self.position = position - self.vars = {} - self.committed = False - self.failure_pos = None - self.failures = None - -class Node: - def __init__(self, value, start_pos, end_pos): - self.value = value - self.start_pos = start_pos - self.end_pos = end_pos - -class Parser: - def __init__(self, text): - self._text = text - - def __call__(self, r, *args, **kw): - return self._parse(lambda p: p(r, *args, **kw)) - - def parse(self, r, *args, **kw): - return self._parse(lambda p: p.consume(r, *args, **kw)) - - def _parse(self, fn): - p = ParsingState(self._text) - try: - return fn(p) - except _ParseBacktrackError: - assert len(p._states) == 1 - assert p._states[0].failure_pos is not None - raise_parsing_error(self._text, p._states[0].failure_pos, p._states[0].failures) - -class CallstackEntry: - def __init__(self, position, fn, args, kw): - self.position = position - self.fn = fn - self.args = args - self.kw = kw - - def __repr__(self): - return '{} at {}:{}'.format(self.fn.__name__, self.position.line, self.position.col) - -class ParsingState(object): - def __init__(self, s): - self._s = s - self._states = [_PegState(Position())] - self._re_cache = {} - self._callstack = [] - - def __call__(self, r, *args, **kw): - st = self._states[-1] - if r is eof: - if st.position.offset != len(self._s): - self._raise(ExpectedExpr, eof) - return '' - elif isinstance(r, six.string_types): - flags = args[0] if args else 0 - compiled = self._re_cache.get((r, flags)) - if not compiled: - compiled = re.compile(r, flags) - self._re_cache[r, flags] = compiled - m = compiled.match(self._s[st.position.offset:]) - if not m: - self._raise(ExpectedExpr, r) - - ms = m.group(0) - st.position = st.position.advanced_by(ms) - return ms - else: - kw.pop('err', None) - self._callstack.append(CallstackEntry(st.position, r, args, kw)) - try: - return r(self, *args, **kw) - finally: - self._callstack.pop() - - def consume(self, r, *args, **kw): - start_pos = self.position() - value = self(r, *args, **kw) - end_pos = self.position() - return Node(value, start_pos, end_pos) - - def position(self): - return self._states[-1].position - - def __repr__(self): - line, line_offs = get_line_at_position(self._s, self._states[-1].position) - return ''.format('{}*{}'.format(line[:line_offs], line[line_offs:])) - - @staticmethod - def eof(p): - return p(eof) - - def error(self, *args, **kw): - if not args: - args = ['semantic error'] - self._raise(SemanticFailure, args, kw) - - def _raise(self, failure_type, *args): - st = self._states[-1] - if st.failure_pos is None or st.failure_pos <= st.position: - failure = failure_type(*args, callstack=tuple(self._callstack)) - if st.failure_pos != st.position: - st.failure_pos = st.position - st.failures = set([failure]) - else: - st.failures.add(failure) - raise _ParseBacktrackError() - - def get(self, key, default=None): - for state in self._states[::-1]: - if key in state.vars: - return state.vars[key][0] - return default - - def set(self, key, value): - self._states[-1].vars[key] = value, False - - def set_global(self, key, value): - self._states[-1].vars[key] = value, True - - def opt(self, *args, **kw): - with self: - return self(*args, **kw) - - def not_(self, r, *args, **kw): - self._states.append(_PegState(self._states[-1].position)) - try: - n = self.consume(r) - except _ParseBacktrackError: - consumed = False - else: - consumed = True - finally: - self._states.pop() - - if consumed: - self._raise(UnexpectedExpr, n.end_pos, r) - - def __enter__(self): - self._states[-1].committed = False - self._states.append(_PegState(self._states[-1].position)) - - def __exit__(self, type, value, traceback): - if type is None: - self.commit() - else: - cur = self._states[-1] - prev = self._states[-2] - assert cur.failure_pos is not None - - if prev.failure_pos is None or prev.failure_pos < cur.failure_pos: - prev.failure_pos = cur.failure_pos - prev.failures = cur.failures - elif prev.failure_pos == cur.failure_pos: - prev.failures.update(cur.failures) - - self._states.pop() - return type is _ParseBacktrackError - - def commit(self): - cur = self._states[-1] - prev = self._states[-2] - - for key in cur.vars: - val, g = cur.vars[key] - if not g: - continue - if key in prev.vars: - prev.vars[key] = val, prev.vars[key][1] - else: - prev.vars[key] = val, True - - cur.failure_pos = None - - prev.position = cur.position - prev.committed = True - - def __nonzero__(self): - return self._states[-1].committed - - __bool__ = __nonzero__ diff --git a/plugins/snippets/cson/speg/position.py b/plugins/snippets/cson/speg/position.py deleted file mode 100644 index f9222d7..0000000 --- a/plugins/snippets/cson/speg/position.py +++ /dev/null @@ -1,48 +0,0 @@ -from functools import total_ordering - -@total_ordering -class Position(object): - def __init__(self, offset=0, line=1, col=1): - self.offset = offset - self.line = line - self.col = col - - def advanced_by(self, text): - text_len = len(text) - offset = self.offset + text_len - nl_pos = text.rfind('\n') - if nl_pos < 0: - line = self.line - col = self.col + text_len - else: - line = self.line + text[:nl_pos].count('\n') + 1 - col = text_len - nl_pos - return Position(offset, line, col) - - def __eq__(self, other): - if not isinstance(other, Position): - return NotImplemented - return self.offset == other.offset - - def __ne__(self, other): - return not self == other - - def __hash__(self): - return hash(self.offset) - - def __lt__(self, other): - if not isinstance(other, Position): - return NotImplemented - return self.offset < other.offset - - def __repr__(self): - return '{}({!r}, {!r}, {!r})'.format(Position.__name__, - self.offset, self.line, self.col) - -def get_line_at_position(text, pos): - suffix = text[pos.offset - pos.col + 1:] - stop = suffix.find('\n') - if stop == -1: - return suffix, pos.col - 1 - else: - return suffix[:stop], pos.col - 1 diff --git a/plugins/snippets/cson/speg/rules.py b/plugins/snippets/cson/speg/rules.py deleted file mode 100644 index 9ce0aed..0000000 --- a/plugins/snippets/cson/speg/rules.py +++ /dev/null @@ -1,14 +0,0 @@ -from six import string_types - -class Eof: pass -eof = Eof() - -def rule_to_str(rule): - if rule is eof: - return 'eof' - if isinstance(rule, string_types): - return repr(rule) - fn_name = rule.__name__ - if fn_name.startswith('_'): - fn_name = fn_name[1:] - return '<{}>'.format(fn_name.replace('_', ' ')) diff --git a/plugins/snippets/cson/writer.py b/plugins/snippets/cson/writer.py deleted file mode 100644 index 391bd44..0000000 --- a/plugins/snippets/cson/writer.py +++ /dev/null @@ -1,191 +0,0 @@ -import re, json, sys - -if sys.version_info[0] == 2: - def _is_num(o): - return isinstance(o, int) or isinstance(o, long) or isinstance(o, float) - def _stringify(o): - if isinstance(o, str): - return unicode(o) - if isinstance(o, unicode): - return o - return None -else: - def _is_num(o): - return isinstance(o, int) or isinstance(o, float) - def _stringify(o): - if isinstance(o, bytes): - return o.decode() - if isinstance(o, str): - return o - return None - -_id_re = re.compile(r'[$a-zA-Z_][$0-9a-zA-Z_]*\Z') - -class CSONEncoder: - def __init__(self, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, sort_keys=False, - indent=None, default=None): - self._skipkeys = skipkeys - self._ensure_ascii = ensure_ascii - self._allow_nan = allow_nan - self._sort_keys = sort_keys - self._indent = ' ' * (indent or 4) - self._default = default - if check_circular: - self._obj_stack = set() - else: - self._obj_stack = None - - def _format_simple_val(self, o): - if o is None: - return 'null' - if isinstance(o, bool): - return 'true' if o else 'false' - if _is_num(o): - return str(o) - s = _stringify(o) - if s is not None: - return self._escape_string(s) - return None - - def _escape_string(self, s): - r = json.dumps(s, ensure_ascii=self._ensure_ascii) - return u"'{}'".format(r[1:-1].replace("'", r"\'")) - - def _escape_key(self, s): - if s is None or isinstance(s, bool) or _is_num(s): - s = str(s) - s = _stringify(s) - if s is None: - if self._skipkeys: - return None - raise TypeError('keys must be a string') - if not _id_re.match(s): - return self._escape_string(s) - return s - - def _push_obj(self, o): - if self._obj_stack is not None: - if id(o) in self._obj_stack: - raise ValueError('Circular reference detected') - self._obj_stack.add(id(o)) - - def _pop_obj(self, o): - if self._obj_stack is not None: - self._obj_stack.remove(id(o)) - - def _encode(self, o, obj_val=False, indent='', force_flow=False): - if isinstance(o, list): - if not o: - if obj_val: - yield ' []\n' - else: - yield indent - yield '[]\n' - else: - if obj_val: - yield ' [\n' - else: - yield indent - yield '[\n' - indent = indent + self._indent - self._push_obj(o) - for v in o: - for chunk in self._encode(v, obj_val=False, indent=indent, force_flow=True): - yield chunk - self._pop_obj(o) - yield indent[:-len(self._indent)] - yield ']\n' - elif isinstance(o, dict): - items = [(self._escape_key(k), v) for k, v in o.items()] - if self._skipkeys: - items = [(k, v) for k, v in items if k is not None] - if self._sort_keys: - items.sort() - if force_flow or not items: - if not items: - if obj_val: - yield ' {}\n' - else: - yield indent - yield '{}\n' - else: - if obj_val: - yield ' {\n' - else: - yield indent - yield '{\n' - indent = indent + self._indent - self._push_obj(o) - for k, v in items: - yield indent - yield k - yield ':' - for chunk in self._encode(v, obj_val=True, indent=indent + self._indent, force_flow=False): - yield chunk - self._pop_obj(o) - yield indent[:-len(self._indent)] - yield '}\n' - else: - if obj_val: - yield '\n' - self._push_obj(o) - for k, v in items: - yield indent - yield k - yield ':' - for chunk in self._encode(v, obj_val=True, indent=indent + self._indent, force_flow=False): - yield chunk - self._pop_obj(o) - else: - v = self._format_simple_val(o) - if v is None: - self._push_obj(o) - v = self.default(o) - for chunk in self._encode(v, obj_val=obj_val, indent=indent, force_flow=force_flow): - yield chunk - self._pop_obj(o) - else: - if obj_val: - yield ' ' - else: - yield indent - yield v - yield '\n' - - def iterencode(self, o): - return self._encode(o) - - def encode(self, o): - return ''.join(self.iterencode(o)) - - def default(self, o): - if self._default is None: - raise TypeError('Cannot serialize an object of type {}'.format(type(o).__name__)) - return self._default(o) - -def dump(obj, fp, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, - indent=None, default=None, sort_keys=False, **kw): - if indent is None and cls is None: - return json.dump(obj, fp, skipkeys=skipkeys, ensure_ascii=ensure_ascii, check_circular=check_circular, - allow_nan=allow_nan, default=default, sort_keys=sort_keys, separators=(',', ':')) - - if cls is None: - cls = CSONEncoder - encoder = cls(skipkeys=skipkeys, ensure_ascii=ensure_ascii, check_circular=check_circular, - allow_nan=allow_nan, sort_keys=sort_keys, indent=indent, default=default, **kw) - - for chunk in encoder.iterencode(obj): - fp.write(chunk) - -def dumps(obj, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, - default=None, sort_keys=False, **kw): - if indent is None and cls is None: - return json.dumps(obj, skipkeys=skipkeys, ensure_ascii=ensure_ascii, check_circular=check_circular, - allow_nan=allow_nan, default=default, sort_keys=sort_keys, separators=(',', ':')) - - if cls is None: - cls = CSONEncoder - encoder = cls(skipkeys=skipkeys, ensure_ascii=ensure_ascii, check_circular=check_circular, - allow_nan=allow_nan, sort_keys=sort_keys, indent=indent, default=default, **kw) - - return encoder.encode(obj) diff --git a/plugins/snippets/manifest.json b/plugins/snippets/manifest.json deleted file mode 100644 index 0cbf907..0000000 --- a/plugins/snippets/manifest.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "manifest": { - "name": "Snippets", - "author": "ITDominator", - "version": "0.0.1", - "support": "", - "requests": { - "pass_events": "true", - "bind_keys": ["Snippets||show_snippets_ui:i"] - } - } -} \ No newline at end of file diff --git a/plugins/snippets/plugin.py b/plugins/snippets/plugin.py deleted file mode 100644 index 9a5877b..0000000 --- a/plugins/snippets/plugin.py +++ /dev/null @@ -1,103 +0,0 @@ -# Python imports - -# Lib imports -import gi -gi.require_version('Gtk', '3.0') -from gi.repository import Gtk - -# Application imports -from plugins.plugin_base import PluginBase -from . import cson - - - -class Plugin(PluginBase): - def __init__(self): - super().__init__() - - self.name = "Snippets" # NOTE: Need to remove after establishing private bidirectional 1-1 message bus - # where self.name should not be needed for message comms - self.snippet_data = None - self._file_type = None - self.active_snippit_group = None - self.snippit_groups = [] - self.snippit_prefixes = [] - self.snippit_group_keys = [] - - - def generate_reference_ui_element(self): - ... - - def run(self): - with open('snippets.cson', 'rb') as f: - self.snippet_data = cson.load(f) - self.snippit_groups = self.snippet_data.keys() - - def subscribe_to_events(self): - self._event_system.subscribe("set_active_src_view", self._set_active_src_view) - self._event_system.subscribe("show_snippets_ui", self._show_snippets_ui) - self._event_system.subscribe("buffer_changed_first_load", self._buffer_changed_first_load) - self._event_system.subscribe("buffer_changed", self._buffer_changed) - - - def _set_active_src_view(self, source_view): - self._active_src_view = source_view - self._buffer = source_view.get_buffer() - self._file_type = source_view.get_filetype() - self._tag_table = self._buffer.get_tag_table() - - self.load_target_snippt_group() - - def load_target_snippt_group(self): - self.active_snippit_group = None - for group in self.snippit_groups: - if group in self._file_type: - self.active_snippit_group = group - break - - if self.active_snippit_group: - self.snippit_prefixes.clear() - keys = self.snippet_data[self.active_snippit_group].keys() - - self.snippit_group_keys.clear() - for key in keys: - self.snippit_group_keys.append(key) - prefix = self.snippet_data[self.active_snippit_group][key]["prefix"] - self.snippit_prefixes.append(prefix) - - def _buffer_changed_first_load(self, buffer): - self._buffer = buffer - self._handle_update(buffer) - - def _buffer_changed(self, buffer): - self._event_system.emit("pause_event_processing") - self._handle_update(buffer) - self._event_system.emit("resume_event_processing") - - - def _show_snippets_ui(self): - print(f"Data: {self.snippit_groups}") - - def _handle_update(self, buffer): - if not self.active_snippit_group: return - - end_iter = buffer.get_iter_at_mark( buffer.get_insert() ) - start_iter = end_iter.copy() - start_iter.backward_word_start() - - matches = [] - text = buffer.get_text(start_iter, end_iter, include_hidden_chars = False) - for prefix in self.snippit_prefixes: - if text in prefix: - matches.append(prefix) - - snippits = [] - for _match in matches: - for key in self.snippit_group_keys: - prefix = self.snippet_data[self.active_snippit_group][key]["prefix"] - if prefix == _match: - body = self.snippet_data[self.active_snippit_group][key]["body"] - snippits.append(body) - - # print(snippits) - print("Snippits Plugin: _handle_update > results > stub...") \ No newline at end of file diff --git a/plugins/snippets/snippets.cson b/plugins/snippets/snippets.cson deleted file mode 100644 index cf61d58..0000000 --- a/plugins/snippets/snippets.cson +++ /dev/null @@ -1,614 +0,0 @@ -# Your snippets -# -# Atom snippets allow you to enter a simple prefix in the editor and hit tab to -# expand the prefix into a larger code block with templated values. -# -# You can create a new snippet in this file by typing "snip" and then hitting -# tab. -# -# An example CoffeeScript snippet to expand log to console.log: -# -# '.source.coffee': -# 'Console log': -# 'prefix': 'log' -# 'body': 'console.log $1' -# -# Each scope (e.g. '.source.coffee' above) can only be declared once. -# -# This file uses CoffeeScript Object Notation (CSON). -# If you are unfamiliar with CSON, you can read more about it in the -# Atom Flight Manual: -# http://flight-manual.atom.io/using-atom/sections/basic-customization/#_cson - - -### HTML SNIPPETS ### -'html': - - 'HTML Template': - 'prefix': 'html' - 'body': """ - - - - - - - - - - - - - - - - - - - -""" - - 'Canvas Tag': - 'prefix': 'canvas' - 'body': """""" - - 'Img Tag': - 'prefix': 'img' - 'body': """""" - - 'Br Tag': - 'prefix': 'br' - 'body': """
    """ - - 'Hr Tag': - 'prefix': 'hr' - 'body': """
    """ - - 'Server Side Events': - 'prefix': 'sse' - 'body': """// SSE events if supported -if(typeof(EventSource) !== "undefined") { - let source = new EventSource("resources/php/sse.php"); - source.onmessage = (event) => { - if (event.data === "") { - // code here - } - }; -} else { - console.log("SSE Not Supported In Browser..."); -} -""" - - 'AJAX Template Function': - 'prefix': 'ajax template' - 'body': """const doAjax = async (actionPath, data) => { - let xhttp = new XMLHttpRequest(); - - xhttp.onreadystatechange = function() { - if (this.readyState === 4 && this.status === 200) { - if (this.responseText != null) { // this.responseXML if getting XML fata - handleReturnData(JSON.parse(this.responseText)); - } else { - console.log("No content returned. Check the file path."); - } - } - }; - - xhttp.open("POST", actionPath, true); - xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); - // Force return to be JSON NOTE: Use application/xml to force XML - xhttp.overrideMimeType('application/json'); - xhttp.send(data); -} -""" - - 'CSS Message Colors': - 'prefix': 'css colors' - 'body': """.error { color: rgb(255, 0, 0); } - .warning { color: rgb(255, 168, 0); } - .success { color: rgb(136, 204, 39); } - """ - - -### JS SNIPPETS ### -'js': - - 'Server Side Events': - 'prefix': 'sse' - 'body': """// SSE events if supported -if(typeof(EventSource) !== "undefined") { - let source = new EventSource("resources/php/sse.php"); - source.onmessage = (event) => { - if (event.data === "") { - // code here - } - }; -} else { - console.log("SSE Not Supported In Browser..."); -} -""" - - 'AJAX Template Function': - 'prefix': 'ajax template' - 'body': """const doAjax = async (actionPath, data) => { - let xhttp = new XMLHttpRequest(); - - xhttp.onreadystatechange = function() { - if (this.readyState === 4 && this.status === 200) { - if (this.responseText != null) { // this.responseXML if getting XML fata - handleReturnData(JSON.parse(this.responseText)); - } else { - console.log("No content returned. Check the file path."); - } - } - }; - - xhttp.open("POST", actionPath, true); - xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); - // Force return to be JSON NOTE: Use application/xml to force XML - xhttp.overrideMimeType('application/json'); - xhttp.send(data); -} -""" - - 'SE6 Function': - 'prefix': 'function se6' - 'body': """const funcName = (arg = "") => { - - } -""" - -### CSS SNIPPETS ### -'css': - - 'CSS Message Colors': - 'prefix': 'css colors' - 'body': """.error { color: rgb(255, 0, 0); } - .warning { color: rgb(255, 168, 0); } - .success { color: rgb(136, 204, 39); } - """ - -### PHP SNIPPETS ### -'php': - - 'SSE PHP': - 'prefix': 'sse php' - 'body': """ - """ - - 'PHP Template': - 'prefix': 'php' - 'body': """ Illegal Access Method!"; - serverMessage("error", $message); -} -?> -""" - 'HTML Template': - 'prefix': 'html' - 'body': """ - - - - - - - - - - - - - - - - - - - -""" - - -### BASH SNIPPETS ### -'bash': - - 'Bash or Shell Template': - 'prefix': 'bash template' - 'body': """#!/bin/bash - -# . CONFIG.sh - -# set -o xtrace ## To debug scripts -# set -o errexit ## To exit on error -# set -o errunset ## To exit if a variable is referenced but not set - - -function main() { - cd "$(dirname "$0")" - echo "Working Dir: " $(pwd) - - file="$1" - if [ -z "${file}" ]; then - echo "ERROR: No file argument supplied..." - exit - fi - - if [[ -f "${file}" ]]; then - echo "SUCCESS: The path and file exists!" - else - echo "ERROR: The path or file '${file}' does NOT exist..." - fi -} -main "$@"; - """ - - - 'Bash or Shell Config': - 'prefix': 'bash config' - 'body': """#!/bin/bash - - shopt -s expand_aliases - - alias echo="echo -e" - """ - - -### PYTHON SNIPPETS ### -'python': - - 'Glade __main__ Class Template': - 'prefix': 'glade __main__ class' - 'body': """#!/usr/bin/python3 - - -# Python imports -import argparse -import faulthandler -import traceback -import signal -from setproctitle import setproctitle - -# Lib imports -import gi -gi.require_version('Gtk', '3.0') -from gi.repository import Gtk -from gi.repository import GLib - -# Application imports -from app import Application - - -def run(): - try: - setproctitle('') - faulthandler.enable() # For better debug info - - GLib.unix_signal_add(GLib.PRIORITY_DEFAULT, signal.SIGINT, Gtk.main_quit) - - parser = argparse.ArgumentParser() - # Add long and short arguments - parser.add_argument("--debug", "-d", default="false", help="Do extra console messaging.") - parser.add_argument("--trace-debug", "-td", default="false", help="Disable saves, ignore IPC lock, do extra console messaging.") - parser.add_argument("--no-plugins", "-np", default="false", help="Do not load plugins.") - - parser.add_argument("--new-tab", "-t", default="", help="Open a file into new tab.") - parser.add_argument("--new-window", "-w", default="", help="Open a file into a new window.") - - # Read arguments (If any...) - args, unknownargs = parser.parse_known_args() - - main = Application(args, unknownargs) - Gtk.main() - except Exception as e: - traceback.print_exc() - quit() - - -if __name__ == "__main__": - ''' Set process title, get arguments, and create GTK main thread. ''' - run() - - - """ - - - 'Glade __main__ Testing Template': - 'prefix': 'glade testing class' - 'body': """#!/usr/bin/python3 - - -# Python imports -import traceback -import faulthandler -import signal - -# Lib imports -import gi -gi.require_version('Gtk', '3.0') -from gi.repository import Gtk -from gi.repository import GLib - -# Application imports - - -app_name = "Gtk Quick Test" - - -class Application(Gtk.ApplicationWindow): - def __init__(self): - super(Application, self).__init__() - self._setup_styling() - self._setup_signals() - self._load_widgets() - - self.add(Gtk.Box()) - - self.show_all() - - - def _setup_styling(self): - self.set_default_size(1670, 830) - self.set_title(f"{app_name}") - # self.set_icon_from_file( settings.get_window_icon() ) - self.set_gravity(5) # 5 = CENTER - self.set_position(1) # 1 = CENTER, 4 = CENTER_ALWAYS - - def _setup_signals(self): - self.connect("delete-event", Gtk.main_quit) - - - def _load_widgets(self): - ... - - - - -def run(): - try: - faulthandler.enable() # For better debug info - GLib.unix_signal_add(GLib.PRIORITY_DEFAULT, signal.SIGINT, Gtk.main_quit) - - main = Application() - Gtk.main() - except Exception as e: - traceback.print_exc() - quit() - - -if __name__ == "__main__": - ''' Set process title, get arguments, and create GTK main thread. ''' - run() - - - """ - - - 'Glade _init_ Class Template': - 'prefix': 'glade __init__ class' - 'body': """# Python imports -import inspect - - -# Lib imports - - -# Application imports -from utils import Settings -from signal_classes import CrossClassSignals - - -class Main: - def __init__(self, args): - settings = Settings() - builder = settings.returnBuilder() - - # Gets the methods from the classes and sets to handler. - # Then, builder connects to any signals it needs. - classes = [CrossClassSignals(settings)] - - handlers = {} - for c in classes: - methods = inspect.getmembers(c, predicate=inspect.ismethod) - handlers.update(methods) - - builder.connect_signals(handlers) - window = settings.createWindow() - window.show() - - """ - - 'Class Method': - 'prefix': 'def1' - 'body': """ - def fname(self): - ... - """ - - 'Gtk Class Method': - 'prefix': 'def2' - 'body': """ - def fname(self, widget, eve): - ... - """ - - - 'Python Glade Settings Template': - 'prefix': 'glade settings class' - 'body': """# Python imports - import os - - # Lib imports - import gi, cairo - gi.require_version('Gtk', '3.0') - gi.require_version('Gdk', '3.0') - - from gi.repository import Gtk - from gi.repository import Gdk - - - # Application imports - - - class Settings: - def __init__(self): - self.SCRIPT_PTH = os.path.dirname(os.path.realpath(__file__)) + "/" - self.builder = Gtk.Builder() - self.builder.add_from_file(self.SCRIPT_PTH + "../resources/Main_Window.glade") - - # 'Filters' - self.office = ('.doc', '.docx', '.xls', '.xlsx', '.xlt', '.xltx', '.xlm', - '.ppt', 'pptx', '.pps', '.ppsx', '.odt', '.rtf') - self.vids = ('.mkv', '.avi', '.flv', '.mov', '.m4v', '.mpg', '.wmv', - '.mpeg', '.mp4', '.webm') - self.txt = ('.txt', '.text', '.sh', '.cfg', '.conf') - self.music = ('.psf', '.mp3', '.ogg' , '.flac') - self.images = ('.png', '.jpg', '.jpeg', '.gif') - self.pdf = ('.pdf') - - - def createWindow(self): - # Get window and connect signals - window = self.builder.get_object("Main_Window") - window.connect("delete-event", gtk.main_quit) - self.setWindowData(window, False) - return window - - def setWindowData(self, window, paintable): - screen = window.get_screen() - visual = screen.get_rgba_visual() - - if visual != None and screen.is_composited(): - window.set_visual(visual) - - # bind css file - cssProvider = gtk.CssProvider() - cssProvider.load_from_path(self.SCRIPT_PTH + '../resources/stylesheet.css') - screen = Gdk.Screen.get_default() - styleContext = Gtk.StyleContext() - styleContext.add_provider_for_screen(screen, cssProvider, gtk.STYLE_PROVIDER_PRIORITY_USER) - - window.set_app_paintable(paintable) - if paintable: - window.connect("draw", self.area_draw) - - def getMonitorData(self): - screen = self.builder.get_object("Main_Window").get_screen() - monitors = [] - for m in range(screen.get_n_monitors()): - monitors.append(screen.get_monitor_geometry(m)) - - for monitor in monitors: - print(str(monitor.width) + "x" + str(monitor.height) + "+" + str(monitor.x) + "+" + str(monitor.y)) - - return monitors - - def area_draw(self, widget, cr): - cr.set_source_rgba(0, 0, 0, 0.54) - cr.set_operator(cairo.OPERATOR_SOURCE) - cr.paint() - cr.set_operator(cairo.OPERATOR_OVER) - - - def returnBuilder(self): return self.builder - - # Filter returns - def returnOfficeFilter(self): return self.office - def returnVidsFilter(self): return self.vids - def returnTextFilter(self): return self.txt - def returnMusicFilter(self): return self.music - def returnImagesFilter(self): return self.images - def returnPdfFilter(self): return self.pdf - - """ - - 'Python Glade CrossClassSignals Template': - 'prefix': 'glade crossClassSignals class' - 'body': """# Python imports - import threading - import subprocess - import os - - # Lib imports - - # Application imports - - - def threaded(fn): - def wrapper(*args, **kwargs): - threading.Thread(target=fn, args=args, kwargs=kwargs).start() - - return wrapper - - - class CrossClassSignals: - def __init__(self, settings): - self.settings = settings - self.builder = self.settings.returnBuilder() - - - def getClipboardData(self): - proc = subprocess.Popen(['xclip','-selection', 'clipboard', '-o'], stdout=subprocess.PIPE) - retcode = proc.wait() - data = proc.stdout.read() - return data.decode("utf-8").strip() - - def setClipboardData(self, data): - proc = subprocess.Popen(['xclip','-selection','clipboard'], stdin=subprocess.PIPE) - proc.stdin.write(data) - proc.stdin.close() - retcode = proc.wait() - - """ - - - 'Python Glade Generic Template': - 'prefix': 'glade generic class' - 'body': """# Python imports - - # Lib imports - - # Application imports - - - class GenericClass: - def __init__(self): - super(GenericClass, self).__init__() - - self._setup_styling() - self._setup_signals() - self._subscribe_to_events() - self._load_widgets() - - - def _setup_styling(self): - ... - - def _setup_signals(self): - ... - - def _subscribe_to_events(self): - event_system.subscribe("handle_file_from_ipc", self.handle_file_from_ipc) - - def _load_widgets(self): - ... - - """ \ No newline at end of file diff --git a/plugins/template/__init__.py b/plugins/template/__init__.py deleted file mode 100644 index d36fa8c..0000000 --- a/plugins/template/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -""" - Pligin Module -""" diff --git a/plugins/template/__main__.py b/plugins/template/__main__.py deleted file mode 100644 index a576329..0000000 --- a/plugins/template/__main__.py +++ /dev/null @@ -1,3 +0,0 @@ -""" - Pligin Package -""" diff --git a/plugins/template/manifest.json b/plugins/template/manifest.json deleted file mode 100644 index 1f8c8a5..0000000 --- a/plugins/template/manifest.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "manifest": { - "name": "Example Plugin", - "author": "John Doe", - "version": "0.0.1", - "support": "", - "requests": { - "ui_target": "plugin_control_list", - "pass_events": "true", - "bind_keys": ["Example Plugin||send_message:f"] - } - } -} diff --git a/plugins/template/plugin.py b/plugins/template/plugin.py deleted file mode 100644 index c52c0ff..0000000 --- a/plugins/template/plugin.py +++ /dev/null @@ -1,51 +0,0 @@ -# Python imports -import os -import threading -import subprocess -import time - -# Lib imports -import gi -gi.require_version('Gtk', '3.0') -from gi.repository import Gtk - -# Application imports -from plugins.plugin_base import PluginBase - - - - -# NOTE: Threads WILL NOT die with parent's destruction. -def threaded(fn): - def wrapper(*args, **kwargs): - threading.Thread(target=fn, args=args, kwargs=kwargs, daemon=False).start() - return wrapper - -# NOTE: Threads WILL die with parent's destruction. -def daemon_threaded(fn): - def wrapper(*args, **kwargs): - threading.Thread(target=fn, args=args, kwargs=kwargs, daemon=True).start() - return wrapper - - - - -class Plugin(PluginBase): - def __init__(self): - super().__init__() - - self.name = "Example Plugin" # NOTE: Need to remove after establishing private bidirectional 1-1 message bus - # where self.name should not be needed for message comms - - - def generate_reference_ui_element(self): - button = Gtk.Button(label=self.name) - button.connect("button-release-event", self.send_message) - return button - - def run(self): - ... - - def send_message(self, widget=None, eve=None): - message = "Hello, World!" - event_system.emit("display_message", ("warning", message, None)) diff --git a/src/__builtins__.py b/src/__builtins__.py deleted file mode 100644 index 38aa521..0000000 --- a/src/__builtins__.py +++ /dev/null @@ -1,50 +0,0 @@ -# Python imports -import builtins -import threading - -# Lib imports - -# Application imports -from libs.event_system import EventSystem -from libs.endpoint_registry import EndpointRegistry -from libs.keybindings import Keybindings -from libs.logger import Logger -from libs.settings_manager.manager import SettingsManager - - -class BuiltinsException(Exception): - ... - - - -# NOTE: Threads WILL NOT die with parent's destruction. -def threaded_wrapper(fn): - def wrapper(*args, **kwargs): - threading.Thread(target=fn, args=args, kwargs=kwargs, daemon=False).start() - return wrapper - -# NOTE: Threads WILL die with parent's destruction. -def daemon_threaded_wrapper(fn): - def wrapper(*args, **kwargs): - threading.Thread(target=fn, args=args, kwargs=kwargs, daemon=True).start() - return wrapper - - - -# NOTE: Just reminding myself we can add to builtins two different ways... -# __builtins__.update({"event_system": Builtins()}) -builtins.app_name = "Newton" -builtins.keybindings = Keybindings() -builtins.event_system = EventSystem() -builtins.endpoint_registry = EndpointRegistry() -builtins.settings_manager = SettingsManager() - -settings_manager.load_settings() - -builtins.settings = settings_manager.settings -builtins.logger = Logger(settings_manager.get_home_config_path(), \ - _ch_log_lvl=settings.debugging.ch_log_lvl, \ - _fh_log_lvl=settings.debugging.fh_log_lvl).get_logger() - -builtins.threaded = threaded_wrapper -builtins.daemon_threaded = daemon_threaded_wrapper \ No newline at end of file diff --git a/src/__init__.py b/src/__init__.py deleted file mode 100644 index 90dc8da..0000000 --- a/src/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -""" - Start of package. -""" diff --git a/src/__main__.py b/src/__main__.py deleted file mode 100644 index 5bbe908..0000000 --- a/src/__main__.py +++ /dev/null @@ -1,53 +0,0 @@ -#!/usr/bin/python3 - -# Python imports -import argparse -import faulthandler -import traceback -from setproctitle import setproctitle - -import tracemalloc -tracemalloc.start() - -# Lib imports -import gi -gi.require_version('Gtk', '3.0') -from gi.repository import Gtk - -# Application imports -from __builtins__ import * -from app import Application - - - - -if __name__ == "__main__": - ''' Set process title, get arguments, and create GTK main thread. ''' - - try: - setproctitle(f'{app_name}') - faulthandler.enable() # For better debug info - - parser = argparse.ArgumentParser() - # Add long and short arguments - parser.add_argument("--debug", "-d", default="false", help="Do extra console messaging.") - parser.add_argument("--trace-debug", "-td", default="false", help="Disable saves, ignore IPC lock, do extra console messaging.") - parser.add_argument("--no-plugins", "-np", default="false", help="Do not load plugins.") - parser.add_argument("--new-tab", "-t", default="", help="Open a file into new tab.") - parser.add_argument("--new-window", "-w", default="", help="Open a file into a new window.") - - # Read arguments (If any...) - args, unknownargs = parser.parse_known_args() - - if args.debug == "true": - settings_manager.set_debug(True) - - if args.trace_debug == "true": - settings_manager.set_trace_debug(True) - - settings_manager.do_dirty_start_check() - Application(args, unknownargs) - Gtk.main() - except Exception as e: - traceback.print_exc() - quit() \ No newline at end of file diff --git a/src/app.py b/src/app.py deleted file mode 100644 index e00fc89..0000000 --- a/src/app.py +++ /dev/null @@ -1,60 +0,0 @@ -# Python imports -import signal -import os - -# Lib imports - -# Application imports -from libs.debugging import debug_signal_handler -from libs.ipc_server import IPCServer -from core.window import Window - - - -class AppLaunchException(Exception): - ... - - - -class Application(IPCServer): - """ docstring for Application. """ - - def __init__(self, args, unknownargs): - super(Application, self).__init__() - - if not settings_manager.is_trace_debug(): - self.socket_realization_check() - - if not self.is_ipc_alive: - for arg in unknownargs + [args.new_tab,]: - if os.path.isfile(arg): - message = f"FILE|{arg}" - self.send_ipc_message(message) - - raise AppLaunchException(f"{app_name} IPC Server Exists: Have sent path(s) to it and closing...") - - self.setup_debug_hook() - Window(args, unknownargs) - - - def socket_realization_check(self): - try: - self.create_ipc_listener() - except Exception: - self.send_test_ipc_message() - - try: - self.create_ipc_listener() - except Exception as e: - ... - - def setup_debug_hook(self): - try: - # kill -SIGUSR2 from Linux/Unix or SIGBREAK signal from Windows - signal.signal( - vars(signal).get("SIGBREAK") or vars(signal).get("SIGUSR1"), - debug_signal_handler - ) - except ValueError: - # Typically: ValueError: signal only works in main thread - ... \ No newline at end of file diff --git a/src/core/__init__.py b/src/core/__init__.py deleted file mode 100644 index 90cfadc..0000000 --- a/src/core/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -""" - Gtk Bound Signal Module -""" diff --git a/src/core/containers/__init__.py b/src/core/containers/__init__.py deleted file mode 100644 index 4efd4b9..0000000 --- a/src/core/containers/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -""" - Containers Module -""" diff --git a/src/core/containers/core_widget.py b/src/core/containers/core_widget.py deleted file mode 100644 index e04841e..0000000 --- a/src/core/containers/core_widget.py +++ /dev/null @@ -1,58 +0,0 @@ -# Python imports - -# Lib imports -import gi -gi.require_version('Gtk', '3.0') -from gi.repository import Gtk - -# Application imports -from ..widgets.separator_widget import Separator -from ..widgets.save_file_dialog import SaveFileDialog -from ..widgets.base.general_info_widget import GeneralInfoWidget -from ..widgets.base.banner_controls import BannerControls -from .editors_container import EditorsContainer - - - -class CoreWidget(Gtk.Box): - def __init__(self): - super(CoreWidget, self).__init__() - - builder = settings_manager.get_builder() - self.ctx = self.get_style_context() - builder.expose_object("core_widget", self) - - - self._setup_styling() - self._setup_signals() - self._subscribe_to_events() - self._load_widgets() - - self.show() - - - def _setup_styling(self): - self.ctx.add_class("main-window") - self.set_orientation(1) # VERTICAL = 1 - - def _setup_signals(self): - ... - - def _subscribe_to_events(self): - event_system.subscribe("update_transparency", self._update_transparency) - event_system.subscribe("remove_transparency", self._remove_transparency) - - def _load_widgets(self): - SaveFileDialog() - GeneralInfoWidget() - - self.add(BannerControls()) - self.add(Separator("separator_top")) - self.add(EditorsContainer()) - self.add(Separator("separator_botton")) - - def _update_transparency(self): - self.ctx.add_class(f"mw_transparency_{settings.theming.transparency}") - - def _remove_transparency(self): - self.ctx.remove_class(f"mw_transparency_{settings.theming.transparency}") \ No newline at end of file diff --git a/src/core/containers/editors_container.py b/src/core/containers/editors_container.py deleted file mode 100644 index e24554e..0000000 --- a/src/core/containers/editors_container.py +++ /dev/null @@ -1,79 +0,0 @@ -# Python imports - -# Lib imports -import gi -gi.require_version('Gtk', '3.0') -from gi.repository import Gtk - -# Application imports -from ..widgets.separator_widget import Separator -from ..widgets.miniview_widget import MiniViewWidget -from ..widgets.base.notebook.editor_notebook import EditorNotebook - - - -class EditorsPaned(Gtk.Paned): - def __init__(self): - super(EditorsPaned, self).__init__() - - self._setup_styling() - self._setup_signals() - self._subscribe_to_events() - self._load_widgets() - - self.show() - - - def _setup_styling(self): - self.set_wide_handle(True) - - def _setup_signals(self): - ... - - def _subscribe_to_events(self): - event_system.subscribe("update_paned_handle", self._update_paned_handle) - - def _load_widgets(self): - self.add1(EditorNotebook()) - self.add2(EditorNotebook()) - - def _update_paned_handle(self): - rect = self.get_allocation() - pos = -1 - - try: - size = rect.width / 2 - pos = int(size) - except: - ... - - self.set_position(size) - - -class EditorsContainer(Gtk.Box): - def __init__(self): - super(EditorsContainer, self).__init__() - - self._setup_styling() - self._setup_signals() - self._subscribe_to_events() - self._load_widgets() - - self.show() - - - def _setup_styling(self): - ... - - def _setup_signals(self): - ... - - def _subscribe_to_events(self): - ... - - def _load_widgets(self): - miniview = MiniViewWidget() - self.add(Separator("separator_left")) - self.add(EditorsPaned()) - self.add(Separator("separator_right")) - self.add(miniview) \ No newline at end of file diff --git a/src/core/controller.py b/src/core/controller.py deleted file mode 100644 index 27f15e2..0000000 --- a/src/core/controller.py +++ /dev/null @@ -1,68 +0,0 @@ -# Python imports -import os - -# Lib imports -import gi -gi.require_version('Gtk', '3.0') -gi.require_version('Gdk', '3.0') -from gi.repository import Gtk -from gi.repository import Gdk -from gi.repository import GLib - -# Application imports -from .controller_data import ControllerData -from .containers.core_widget import CoreWidget -from .mixins.signals_mixins import SignalsMixins - - - -class Controller(SignalsMixins, ControllerData): - def __init__(self, args, unknownargs): - messages = [] - for arg in unknownargs + [args.new_tab,]: - # NOTE: If passing line number with file split against : - if os.path.isfile(arg.replace("file://", "").split(":")[0]): - messages.append(f"FILE|{arg.replace('file://', '')}") - - if len(messages) > 0: - settings_manager.set_is_starting_with_file(True) - - self.setup_controller_data() - - self._setup_styling() - self._setup_signals() - self._subscribe_to_events() - - if args.no_plugins == "false": - self.plugins.launch_plugins() - - for message in messages: - event_system.emit("post_file_to_ipc", message) - - - def _setup_styling(self): - ... - - def _setup_signals(self): - self.window.connect("focus-out-event", self.unset_keys_and_data) - self.window.connect("key-press-event", self.on_global_key_press_controller) - self.window.connect("key-release-event", self.on_global_key_release_controller) - - def _subscribe_to_events(self): - event_system.subscribe("shutting_down", lambda: print("Shutting down...")) - event_system.subscribe("handle_file_from_ipc", self.handle_file_from_ipc) - event_system.subscribe("set_active_src_view", self.set_active_src_view) - event_system.subscribe("get_active_src_view", self.get_active_src_view) - - def load_glade_file(self): - self.builder = Gtk.Builder() - self.builder.add_from_file(settings_manager.get_glade_file()) - self.builder.expose_object("main_window", self.window) - - settings_manager.set_builder(self.builder) - self.core_widget = CoreWidget() - - settings_manager.register_signals_to_builder([self, self.core_widget]) - - def get_core_widget(self): - return self.core_widget \ No newline at end of file diff --git a/src/core/controller_data.py b/src/core/controller_data.py deleted file mode 100644 index def6d80..0000000 --- a/src/core/controller_data.py +++ /dev/null @@ -1,93 +0,0 @@ -# Python imports -import os -import subprocess - -# Lib imports - -# Application imports -from plugins.plugins_controller import PluginsController - - - - -class ControllerData: - ''' ControllerData contains most of the state of the app at ay given time. It also has some support methods. ''' - - def setup_controller_data(self) -> None: - self.window = settings_manager.get_main_window() - self.builder = None - self.core_widget = None - self.was_midified_key = False - self.ctrl_down = False - self.shift_down = False - self.alt_down = False - self.active_src_view = None - - self.load_glade_file() - self.plugins = PluginsController() - - def set_active_src_view(self, source_view): - if self.active_src_view: - old_notebook = self.active_src_view.get_parent().get_parent() - old_notebook.is_editor_focused = False - - ctx = old_notebook.get_style_context() - ctx.remove_class("notebook-selected-focus") - - notebook = source_view.get_parent().get_parent() - ctx = notebook.get_style_context() - ctx.add_class("notebook-selected-focus") - - file = source_view.get_current_file() - if file: - source_view.set_bottom_labels(file) - else: - event_system.emit("set_bottom_labels") - - self.active_src_view = source_view - - def get_active_src_view(self): - return self.active_src_view - - - def clear_console(self) -> None: - ''' Clears the terminal screen. ''' - os.system('cls' if os.name == 'nt' else 'clear') - - def call_method(self, _method_name: str, data: type) -> type: - ''' - Calls a method from scope of class. - - Parameters: - a (obj): self - b (str): method name to be called - c (*): Data (if any) to be passed to the method. - Note: It must be structured according to the given methods requirements. - - Returns: - Return data is that which the calling method gives. - ''' - method_name = str(_method_name) - method = getattr(self, method_name, lambda data: f"No valid key passed...\nkey={method_name}\nargs={data}") - return method(*data) if data else method() - - def has_method(self, obj: type, method: type) -> type: - ''' Checks if a given method exists. ''' - return callable(getattr(obj, method, None)) - - def clear_children(self, widget: type) -> None: - ''' Clear children of a gtk widget. ''' - for child in widget.get_children(): - widget.remove(child) - - def get_clipboard_data(self, encoding="utf-8") -> str: - proc = subprocess.Popen(['xclip','-selection', 'clipboard', '-o'], stdout=subprocess.PIPE) - retcode = proc.wait() - data = proc.stdout.read() - return data.decode(encoding).strip() - - def set_clipboard_data(self, data: type, encoding="utf-8") -> None: - proc = subprocess.Popen(['xclip','-selection','clipboard'], stdin=subprocess.PIPE) - proc.stdin.write(data.encode(encoding)) - proc.stdin.close() - retcode = proc.wait() \ No newline at end of file diff --git a/src/core/mixins/__init__.py b/src/core/mixins/__init__.py deleted file mode 100644 index 636992f..0000000 --- a/src/core/mixins/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -""" - Mixins module -""" diff --git a/src/core/mixins/signals/__init__.py b/src/core/mixins/signals/__init__.py deleted file mode 100644 index 03c3ec2..0000000 --- a/src/core/mixins/signals/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -""" - Signals module -""" diff --git a/src/core/mixins/signals/ipc_signals_mixin.py b/src/core/mixins/signals/ipc_signals_mixin.py deleted file mode 100644 index acd4717..0000000 --- a/src/core/mixins/signals/ipc_signals_mixin.py +++ /dev/null @@ -1,17 +0,0 @@ -# Python imports - -# Lib imports - -# Application imports - - - -class IPCSignalsMixin: - """ IPCSignalsMixin handle messages from another starting solarfm process. """ - - def print_to_console(self, message=None): - print(message) - - def handle_file_from_ipc(self, path: any) -> None: - logger.debug(f"Path From IPC: {path}") - event_system.emit("create_view", (path,)) diff --git a/src/core/mixins/signals/keyboard_signals_mixin.py b/src/core/mixins/signals/keyboard_signals_mixin.py deleted file mode 100644 index c8582f8..0000000 --- a/src/core/mixins/signals/keyboard_signals_mixin.py +++ /dev/null @@ -1,89 +0,0 @@ -# Python imports -import re - -# Lib imports -import gi -gi.require_version('Gtk', '3.0') -gi.require_version('Gdk', '3.0') -from gi.repository import Gtk -from gi.repository import Gdk - -# Application imports - - - -valid_keyvalue_pat = re.compile(r"[a-z0-9A-Z-_\[\]\(\)\| ]") - - - -class KeyboardSignalsMixin: - """ KeyboardSignalsMixin keyboard hooks controller. """ - - # TODO: Need to set methods that use this to somehow check the keybindings state instead. - def unset_keys_and_data(self, widget=None, eve=None): - self.ctrl_down = False - self.shift_down = False - self.alt_down = False - - def on_global_key_press_controller(self, eve, user_data): - keyname = Gdk.keyval_name(user_data.keyval).lower() - modifiers = Gdk.ModifierType(user_data.get_state() & ~Gdk.ModifierType.LOCK_MASK) - - self.was_midified_key = True if modifiers != 0 else False - - if keyname.replace("_l", "").replace("_r", "") in ["control", "alt", "shift"]: - if "control" in keyname: - self.ctrl_down = True - if "shift" in keyname: - self.shift_down = True - if "alt" in keyname: - self.alt_down = True - - def on_global_key_release_controller(self, widget, event): - """ Handler for keyboard events """ - keyname = Gdk.keyval_name(event.keyval).lower() - modifiers = Gdk.ModifierType(event.get_state() & ~Gdk.ModifierType.LOCK_MASK) - - if keyname.replace("_l", "").replace("_r", "") in ["control", "alt", "shift"]: - should_return = self.was_midified_key and (self.ctrl_down or self.shift_down or self.alt_down) - - if "control" in keyname: - self.ctrl_down = False - if "shift" in keyname: - self.shift_down = False - if "alt" in keyname: - self.alt_down = False - - # NOTE: In effect a filter after releasing a modifier and we have a modifier mapped - if should_return: - self.was_midified_key = False - return - - mapping = keybindings.lookup(event) - logger.debug(f"on_global_key_release_controller > key > {keyname}") - logger.debug(f"on_global_key_release_controller > keyval > {event.keyval}") - logger.debug(f"on_global_key_release_controller > mapping > {mapping}") - - if mapping: - # See if in controller scope - try: - getattr(self, mapping)() - return True - except Exception: - # Must be plugins scope, event call, OR we forgot to add method to controller scope - if "||" in mapping: - sender, eve_type = mapping.split("||") - else: - sender = "" - eve_type = mapping - - self.handle_key_event_system(sender, eve_type) - else: - if self.ctrl_down: - if not keyname in ["1", "kp_1", "2", "kp_2", "3", "kp_3", "4", "kp_4"]: - self.handle_key_event_system(None, mapping) - else: - ... - - def handle_key_event_system(self, sender, eve_type): - event_system.emit(eve_type) diff --git a/src/core/mixins/signals_mixins.py b/src/core/mixins/signals_mixins.py deleted file mode 100644 index 76515f6..0000000 --- a/src/core/mixins/signals_mixins.py +++ /dev/null @@ -1,13 +0,0 @@ -# Python imports - -# Lib imports -from .signals.ipc_signals_mixin import IPCSignalsMixin -from .signals.keyboard_signals_mixin import KeyboardSignalsMixin - -# Application imports - - - - -class SignalsMixins(KeyboardSignalsMixin, IPCSignalsMixin): - ... diff --git a/src/core/widgets/__init__.py b/src/core/widgets/__init__.py deleted file mode 100644 index 72b072b..0000000 --- a/src/core/widgets/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -""" - Widgets Module -""" diff --git a/src/core/widgets/base/__init__.py b/src/core/widgets/base/__init__.py deleted file mode 100644 index 729cb64..0000000 --- a/src/core/widgets/base/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -""" - Widgets.Base Module -""" diff --git a/src/core/widgets/base/banner_controls.py b/src/core/widgets/base/banner_controls.py deleted file mode 100644 index 3100424..0000000 --- a/src/core/widgets/base/banner_controls.py +++ /dev/null @@ -1,61 +0,0 @@ -# Python imports - -# Lib imports -import gi -gi.require_version('Gtk', '3.0') -from gi.repository import Gtk - -# Application imports -from ..controls.open_file_button import OpenFileButton -from ..controls.save_as_button import SaveAsButton -from ..controls.scale_up_button import ScaleUpButton -from ..controls.scale_down_button import ScaleDownButton -from ..controls.toggle_line_highlight import ToggleLineHighlight -from ..controls.transparency_scale import TransparencyScale -from ..controls.theme_button import ThemeButton - - - -class BannerControls(Gtk.Box): - def __init__(self): - super(BannerControls, self).__init__() - - self._setup_styling() - self._setup_signals() - self._subscribe_to_events() - self._load_widgets() - - self.show_all() - self.hide() - - - def _setup_styling(self): - self.set_orientation(0) - self.set_margin_top(5) - self.set_margin_bottom(5) - - def _setup_signals(self): - ... - - def _subscribe_to_events(self): - event_system.subscribe("tggl_top_main_menubar", self._tggl_top_main_menubar) - - def _load_widgets(self): - self.pack_start(OpenFileButton(), False, False, 0) - self.pack_start(SaveAsButton(), False, False, 0) - - center_box = Gtk.ButtonBox() - center_box.add(ScaleUpButton()) - center_box.add(ScaleDownButton()) - center_box.add(ToggleLineHighlight()) - center_box.add(TransparencyScale()) - - center_box.set_margin_left(15) - center_box.set_margin_right(15) - self.set_center_widget(center_box) - - self.pack_end(ThemeButton(), False, False, 0) - - - def _tggl_top_main_menubar(self): - self.show() if not self.is_visible() else self.hide() diff --git a/src/core/widgets/base/general_info_widget.py b/src/core/widgets/base/general_info_widget.py deleted file mode 100644 index f34ff9b..0000000 --- a/src/core/widgets/base/general_info_widget.py +++ /dev/null @@ -1,97 +0,0 @@ -# Python imports - -# Lib imports -import gi -gi.require_version('Gtk', '3.0') -from gi.repository import Gtk -from gi.repository import Gio - -# Application imports - - -# NOTE: https://github.com/rwaldron/gtksourceview/blob/master/tests/test-widget.py - - -class GeneralInfoWidget: - """ docstring for StatusInfoWidget. """ - - def __init__(self): - super(GeneralInfoWidget, self).__init__() - - _GLADE_FILE = f"{settings_manager.get_ui_widgets_path()}/general_info_ui.glade" - self._builder = Gtk.Builder() - self._builder.add_from_file(_GLADE_FILE) - - self._setup_styling() - self._setup_signals() - self._subscribe_to_events() - self._load_widgets() - - - def _setup_styling(self): - ... - - def _setup_signals(self): - ... - - def _subscribe_to_events(self): - event_system.subscribe("set_bottom_labels", self.set_bottom_labels) - event_system.subscribe("set_path_label", self._set_path_label) - event_system.subscribe("set_encoding_label", self._set_encoding_label) - event_system.subscribe("set_line_char_label", self._set_line_char_label) - event_system.subscribe("set_file_type_label", self._set_file_type_label) - - - def _load_widgets(self): - builder = settings_manager.get_builder() - - self.bottom_status_info = self._builder.get_object("general_info") - self.bottom_path_label = self._builder.get_object("path_label") - self.bottom_encoding_label = self._builder.get_object("encoding_label") - self.bottom_line_char_label = self._builder.get_object("line_char_label") - self.bottom_file_type_label = self._builder.get_object("file_type_label") - - builder.expose_object(f"bottom_status_info", self.bottom_status_info) - builder.expose_object(f"bottom_path_label", self.bottom_path_label) - builder.expose_object(f"bottom_encoding_label", self.bottom_encoding_label) - builder.expose_object(f"bottom_line_char_label", self.bottom_line_char_label) - builder.expose_object(f"bottom_file_type_label", self.bottom_file_type_label) - - self.bottom_path_label.set_hexpand(True) - self._set_line_char_label() - - builder.get_object("core_widget").add(self.bottom_status_info) - - - def set_bottom_labels(self, path = None, line_char = None, file_type = None, encoding_type = None): - self._set_path_label(path) - self._set_line_char_label(line_char) - self._set_file_type_label(file_type) - self._set_encoding_label(encoding_type) - - def _set_path_label(self, gfile = ""): - gfile = "" if not gfile else gfile - - if isinstance(gfile, str): - self.bottom_path_label.set_text( gfile ) - self.bottom_path_label.set_tooltip_text( gfile ) - else: - self.bottom_path_label.set_text( gfile.get_path() ) - self.bottom_path_label.set_tooltip_text( gfile.get_path() ) - - def _set_line_char_label(self, line_char = "1:1"): - line_char = "1:1" if not line_char else line_char - - self.bottom_line_char_label.set_text(line_char) - - def _set_file_type_label(self, file_type = "buffer"): - file_type = "buffer" if not file_type else file_type - - self.bottom_file_type_label.set_text(file_type) - - def _set_encoding_label(self, encoding_type = "utf-8"): - encoding_type = "utf-8" if not encoding_type else encoding_type - - self.bottom_encoding_label.set_text(encoding_type) - - diff --git a/src/core/widgets/base/notebook/__init__.py b/src/core/widgets/base/notebook/__init__.py deleted file mode 100644 index dc54ccc..0000000 --- a/src/core/widgets/base/notebook/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -""" - Notebook Module -""" diff --git a/src/core/widgets/base/notebook/editor_controller.py b/src/core/widgets/base/notebook/editor_controller.py deleted file mode 100644 index 8ada7a0..0000000 --- a/src/core/widgets/base/notebook/editor_controller.py +++ /dev/null @@ -1,33 +0,0 @@ -# Python imports - -# Lib imports - -# Application imports -from .key_input_controller import KeyInputController -from .editor_events import EditorEventsMixin - - - -class EditorControllerMixin(KeyInputController, EditorEventsMixin): - def get_active_view(self): - page_num = self.get_current_page() - container = self.get_nth_page( page_num ) - source_view = container.get_source_view() - return page_num, container, source_view - - def action_controller(self, action = "", query = ""): - # NOTE: Not efficent here as multiple same calls - if not self.is_editor_focused: # TODO: Find way to converge this - return - - page_num, container, source_view = self.get_active_view() - - # NOTE: These feel bad being here man... - if action == "scale_up_text": - self.scale_up_text(source_view) - if action == "scale_down_text": - self.scale_down_text(source_view) - if action == "set_buffer_language": - self.set_buffer_language(source_view, query) - if action == "set_buffer_style": - self.set_buffer_style(source_view, query) \ No newline at end of file diff --git a/src/core/widgets/base/notebook/editor_events.py b/src/core/widgets/base/notebook/editor_events.py deleted file mode 100644 index 4e9a82c..0000000 --- a/src/core/widgets/base/notebook/editor_events.py +++ /dev/null @@ -1,160 +0,0 @@ -# Python imports - -# Lib imports - -# Application imports -from ..sourceview_container import SourceViewContainer - - - -class EditorEventsMixin: - def create_view(self, widget = None, eve = None, gfile = None, line: int = 0): - container = SourceViewContainer(self.close_tab) - page_num = self.append_page(container, container.get_tab_widget()) - - self.set_tab_detachable(container, True) - self.set_tab_reorderable(container, True) - - self.show_all() - self.set_current_page(page_num) - - if gfile: - source_view = container.get_source_view() - source_view.open_file(gfile, line) - source_view.grab_focus() - - def open_file(self, gfile): - page_num = self.get_current_page() - container = self.get_nth_page( page_num ) - source_view = container.get_source_view() - - if source_view._current_filename == "": - source_view.open_file(gfile) - else: - self.create_view(None, None, gfile) - - # Note: Need to get parent instead given we pass the close_tab method - # from a potentially former notebook. - def close_tab(self, button, container, source_view, eve = None): - notebook = container.get_parent() - if notebook.NAME == "notebook_1" and notebook.get_n_pages() == 1: - return - - file_type = source_view.get_filetype() - if not file_type == "buffer": - uri = source_view.get_current_file().get_uri() - event_system.emit("textDocument/didClose", (file_type, uri,)) - - page_num = notebook.page_num(container) - source_view._cancel_current_file_watchers() - notebook.remove_page(page_num) - - if notebook.NAME == "notebook_2" and notebook.get_n_pages() == 0: - notebook.hide() - event_system.emit("focused_target_changed", ("notebook_1",)) - - def keyboard_prev_tab(self, page_num): - page_num = self.get_n_pages() - 1 if page_num == 0 else page_num - 1 - self.set_current_page(page_num) - - def keyboard_next_tab(self, page_num): - page_num = 0 if self.get_n_pages() - 1 == page_num else page_num + 1 - self.set_current_page(page_num) - - def keyboard_focus_1st_pane(self): - if self.NAME == "notebook_1": - return - - notebook = self.builder.get_object("notebook_1") - i = notebook.get_current_page() - page = notebook.get_nth_page(i) - - self.set_page_focus(page, notebook, self) - - def keyboard_focus_2nd_pane(self): - if self.NAME == "notebook_2": - return - - notebook = self.builder.get_object("notebook_2") - if not notebook.is_visible(): - notebook.show() - notebook.create_view() - event_system.emit("update_paned_handle") - - i = notebook.get_current_page() - page = notebook.get_nth_page(i) - - self.set_page_focus(page, notebook, self) - - def keyboard_move_tab_to_1(self, page_num): - if self.NAME == "notebook_1": return - - notebook = self.builder.get_object("notebook_1") - page = self.get_nth_page(page_num) - tab = page.get_tab_widget() - - self.detach_tab(page) - notebook.show() - notebook.insert_page(page, tab, -1) - - if self.get_n_pages() == 0: - self.hide() - - self.set_page_focus(page, notebook, self) - - def keyboard_move_tab_to_2(self, page_num): - if self.NAME == "notebook_2": - return - - if self.NAME == "notebook_1" and self.get_n_pages() == 1: - return - - notebook = self.builder.get_object("notebook_2") - page = self.get_nth_page(page_num) - tab = page.get_tab_widget() - - self.detach_tab(page) - if not notebook.is_visible(): - notebook.show() - event_system.emit("update_paned_handle") - - notebook.insert_page(page, tab, -1) - - self.set_page_focus(page, notebook, self) - - def set_page_focus(self, page, notebook, old_notebook): - old_notebook.is_editor_focused = False - notebook.set_current_page(-1) - page.get_children()[0].grab_focus() - notebook.is_editor_focused = True - - ctx = old_notebook.get_style_context() - ctx.remove_class("notebook-selected-focus") - - ctx = notebook.get_style_context() - ctx.add_class("notebook-selected-focus") - - def keyboard_move_tab_left(self, page_num): - page = self.get_nth_page(page_num) - page_num = self.get_n_pages() - 1 if page_num == 0 else page_num - 1 - self.reorder_child(page, page_num) - - def keyboard_move_tab_right(self, page_num): - page = self.get_nth_page(page_num) - page_num = 0 if self.get_n_pages() - 1 == page_num else page_num + 1 - self.reorder_child(page, page_num) - - - # NOTE: These feel bad being here man... - def scale_up_text(self, source_view): - source_view.scale_up_text() - - def scale_down_text(self, source_view): - source_view.scale_down_text() - - def set_buffer_language(self, source_view, language = "python3"): - source_view.set_buffer_language(language) - - def set_buffer_style(self, source_view, style = settings.theming.syntax_theme): - buffer = source_view.get_buffer() - source_view.set_buffer_style(buffer, style) \ No newline at end of file diff --git a/src/core/widgets/base/notebook/editor_notebook.py b/src/core/widgets/base/notebook/editor_notebook.py deleted file mode 100644 index afc3d95..0000000 --- a/src/core/widgets/base/notebook/editor_notebook.py +++ /dev/null @@ -1,142 +0,0 @@ -# Python imports - -# Lib imports -import gi -gi.require_version('Gtk', '3.0') -gi.require_version('Gdk', '3.0') -from gi.repository import Gtk -from gi.repository import Gdk -from gi.repository import Gio - -# Application imports -from .editor_controller import EditorControllerMixin - - - -# NOTE: https://github.com/Axel-Erfurt/TextEdit/tree/b65f09be945196eb05bef83d81a6abcd129b4eb0 -class EditorNotebook(EditorControllerMixin, Gtk.Notebook): - ccount = 0 - - def __new__(cls, *args, **kwargs): - obj = super(EditorNotebook, cls).__new__(cls) - cls.ccount += 1 - - return obj - - def __init__(self): - super(EditorNotebook, self).__init__() - - self.NAME = f"notebook_{self.ccount}" - self.builder = settings_manager.get_builder() - self.is_editor_focused = False - - self.set_group_name("editor_widget") - self.builder.expose_object(self.NAME, self) - - self._setup_styling() - self._setup_signals() - self._subscribe_to_events() - self._load_widgets() - - self.show_all() - - if self.NAME == "notebook_1": - self.is_editor_focused = True - - if self.NAME == "notebook_2": - self.hide() - - - def _setup_styling(self): - self.set_scrollable(True) - self.set_vexpand(True) - self.set_hexpand(True) - - def _setup_signals(self): - self.connect("switch-page", self._switch_page_update) - self.connect("key-press-event", self._key_press_event) - self.connect("key-release-event", self._key_release_event) - - def _subscribe_to_events(self): - event_system.subscribe("create_view", self._create_view) - event_system.subscribe("set_buffer_style", self.action_controller) - event_system.subscribe("set_buffer_language", self.action_controller) - event_system.subscribe("focused_target_changed", self._focused_target_changed) - - event_system.subscribe("keyboard_open_file", self._keyboard_open_file) - event_system.subscribe("keyboard_scale_up_text", self._keyboard_scale_up_text) - event_system.subscribe("keyboard_scale_down_text", self._keyboard_scale_down_text) - event_system.subscribe("keyboard_focus_1st_pane", self.keyboard_focus_1st_pane) - event_system.subscribe("keyboard_focus_2nd_pane", self.keyboard_focus_2nd_pane) - - def _load_widgets(self): - self._add_action_widgets() - if self.NAME == "notebook_1" and not settings_manager.is_starting_with_file(): - self.create_view() - - def _dbl_click_create_view(self, notebook, eve): - if eve.type == Gdk.EventType.DOUBLE_BUTTON_PRESS and eve.button == 1: # l-click - ... - - def _focused_target_changed(self, target): - self.is_editor_focused = True if target == self.NAME else False - if self.is_editor_focused: - self.grab_focus() - - def _add_action_widgets(self): - start_box = Gtk.Box() - end_box = Gtk.Box() - - add_btn = Gtk.Button() - add_btn.set_image( Gtk.Image.new_from_icon_name("add", 4) ) - add_btn.set_always_show_image(True) - add_btn.connect("released", self.create_view) - - end_box.add(add_btn) - - start_box.show_all() - end_box.show_all() - - # PACKTYPE: 0 Start, 1 = End - self.set_action_widget(start_box, 0) - self.set_action_widget(end_box, 1) - - def _switch_page_update(self, notebook, page, page_num): - source_view = page.get_source_view() - gfile = source_view.get_current_file() - - if not gfile: - event_system.emit("set_path_label", ("",)) - event_system.emit("set_file_type_label", (source_view._current_filetype,)) - else: - source_view.load_file_info(gfile) - source_view.update_cursor_position() - source_view.set_bottom_labels(gfile) - - event_system.emit(f"set_source_view", (source_view,)) - - def _create_view(self, gfile = None, line: int = 0): - if not self.is_editor_focused: # TODO: Find way to converge this - return - - if isinstance(gfile, str): - parts = gfile.split(":") - gfile = Gio.File.new_for_path(parts[0]) - try: - line = int(parts[1]) if len(parts) > 1 else 0 - except Exception: - ... - - self.create_view(None, None, gfile, line) - - def _keyboard_open_file(self, gfile): - if not self.is_editor_focused: # TODO: Find way to converge this - return - - self.open_file(gfile) - - def _keyboard_scale_up_text(self): - self.action_controller("scale_up_text") - - def _keyboard_scale_down_text(self): - self.action_controller("scale_down_text") \ No newline at end of file diff --git a/src/core/widgets/base/notebook/key_input_controller.py b/src/core/widgets/base/notebook/key_input_controller.py deleted file mode 100644 index 21f21be..0000000 --- a/src/core/widgets/base/notebook/key_input_controller.py +++ /dev/null @@ -1,69 +0,0 @@ -# Python imports - -# Lib imports -import gi -gi.require_version('Gdk', '3.0') -from gi.repository import Gdk - -# Application imports - - - -class KeyInputController: - def _key_press_event(self, widget, eve): - keyname = Gdk.keyval_name(eve.keyval) - modifiers = Gdk.ModifierType(eve.get_state() & ~Gdk.ModifierType.LOCK_MASK) - is_control = True if modifiers & Gdk.ModifierType.CONTROL_MASK else False - is_shift = True if modifiers & Gdk.ModifierType.SHIFT_MASK else False - - try: - is_alt = True if modifiers & Gdk.ModifierType.ALT_MASK else False - except Exception: - is_alt = True if modifiers & Gdk.ModifierType.MOD1_MASK else False - - - def _key_release_event(self, widget, eve): - keyname = Gdk.keyval_name(eve.keyval) - modifiers = Gdk.ModifierType(eve.get_state() & ~Gdk.ModifierType.LOCK_MASK) - is_control = True if modifiers & Gdk.ModifierType.CONTROL_MASK else False - is_shift = True if modifiers & Gdk.ModifierType.SHIFT_MASK else False - - try: - is_alt = True if modifiers & Gdk.ModifierType.ALT_MASK else False - except Exception: - is_alt = True if modifiers & Gdk.ModifierType.MOD1_MASK else False - - page_num, container, source_view = self.get_active_view() - if is_control: - if is_shift: - if keyname in ["Up", "Down"]: - if keyname == "Up": - self.keyboard_move_tab_to_1(page_num) - if keyname == "Down": - self.keyboard_move_tab_to_2(page_num) - - return True - - if keyname in ["w", "t", "o"]: - if keyname == "w": - self.close_tab(None, container, source_view) - if keyname == "t": - self._create_view() - if keyname == "o": - page_num, container, source_view = self.get_active_view() - event_system.emit("open_files", (source_view,)) - - return True - - if is_alt: - if keyname in ["Up", "Down", "Left", "Right"]: - if keyname == "Up": - self.keyboard_prev_tab(page_num) - if keyname == "Down": - self.keyboard_next_tab(page_num) - if keyname == "Left": - self.keyboard_move_tab_left(page_num) - if keyname == "Right": - self.keyboard_move_tab_right(page_num) - - return True \ No newline at end of file diff --git a/src/core/widgets/base/sourceview/__init__.py b/src/core/widgets/base/sourceview/__init__.py deleted file mode 100644 index 619f9a0..0000000 --- a/src/core/widgets/base/sourceview/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -""" - SourceView Module -""" diff --git a/src/core/widgets/base/sourceview/custom_completion_providers/__init__.py b/src/core/widgets/base/sourceview/custom_completion_providers/__init__.py deleted file mode 100644 index fdff2e4..0000000 --- a/src/core/widgets/base/sourceview/custom_completion_providers/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -""" - Custom Completion Providers Module -""" diff --git a/src/core/widgets/base/sourceview/custom_completion_providers/example_completion_provider.py b/src/core/widgets/base/sourceview/custom_completion_providers/example_completion_provider.py deleted file mode 100644 index a363516..0000000 --- a/src/core/widgets/base/sourceview/custom_completion_providers/example_completion_provider.py +++ /dev/null @@ -1,74 +0,0 @@ -# Python imports -import re - -# Lib imports -import gi -gi.require_version('Gtk', '3.0') -gi.require_version('GtkSource', '4') - -from gi.repository import Gtk -from gi.repository import GtkSource -from gi.repository import GObject - -# Application imports - - - -class ExampleCompletionProvider(GObject.GObject, GtkSource.CompletionProvider): - """ - This is a custom Completion Example Provider. - # NOTE: used information from here --> https://warroom.rsmus.com/do-that-auto-complete/ - """ - __gtype_name__ = 'CustomProvider' - - def __init__(self): - GObject.Object.__init__(self) - - def do_get_name(self): - """ Returns: a new string containing the name of the provider. """ - return _('ExampleProvider') - - def do_match(self, context): - """ Get whether the provider match the context of completion detailed in context. """ - # NOTE: True for debugging but context needs to normally get checked for actual usage needs. - # TODO: Fix me - return True - - def do_populate(self, context): - """ - In this instance, it will do 2 things: - 1) always provide Hello World! (Not ideal but an option so its in the example) - 2) Utilizes the Gtk.TextIter from the TextBuffer to determine if there is a jinja - example of '{{ custom.' if so it will provide you with the options of foo and bar. - If selected it will insert foo }} or bar }}, completing your syntax... - - PLEASE NOTE the GtkTextIter Logic and regex are really rough and should be adjusted and tuned - """ - - proposals = [ - # GtkSource.CompletionItem(label='Hello World!', text = 'Hello World!', icon = None, info = None) # NOTE: Always proposed... - ] - - # Gtk Versions differ on get_iter responses... - end_iter = context.get_iter() - if not isinstance(end_iter, Gtk.TextIter): - _, end_iter = context.get_iter() - - if end_iter: - buf = end_iter.get_buffer() - mov_iter = end_iter.copy() - if mov_iter.backward_search('{{', Gtk.TextSearchFlags.VISIBLE_ONLY): - mov_iter, _ = mov_iter.backward_search('{{', Gtk.TextSearchFlags.VISIBLE_ONLY) - left_text = buf.get_text(mov_iter, end_iter, True) - else: - left_text = '' - - if re.match(r'.*\{\{\s*custom\.$', left_text): - proposals.append( - GtkSource.CompletionItem(label='foo', text='foo }}') # optionally proposed based on left search via regex - ) - proposals.append( - GtkSource.CompletionItem(label='bar', text='bar }}') # optionally proposed based on left search via regex - ) - - context.add_proposals(self, proposals, True) \ No newline at end of file diff --git a/src/core/widgets/base/sourceview/custom_completion_providers/lsp_completion_provider.py b/src/core/widgets/base/sourceview/custom_completion_providers/lsp_completion_provider.py deleted file mode 100644 index 652cdae..0000000 --- a/src/core/widgets/base/sourceview/custom_completion_providers/lsp_completion_provider.py +++ /dev/null @@ -1,91 +0,0 @@ -# Python imports - -# Lib imports -import gi -gi.require_version('Gtk', '3.0') -gi.require_version('GtkSource', '4') - -from gi.repository import Gtk -from gi.repository import GtkSource -from gi.repository import GObject - -# Application imports - - - -class LSPCompletionProvider(GObject.Object, GtkSource.CompletionProvider): - """ - This code is an LSP code completion plugin for Newton. - # NOTE: Some code pulled/referenced from here --> https://github.com/isamert/gedi - """ - __gtype_name__ = 'LSPProvider' - - def __init__(self, source_view): - GObject.Object.__init__(self) - - self._theme = Gtk.IconTheme.get_default() - self._source_view = source_view - - - def do_get_name(self): - return "LSP Code Completion" - - def get_iter_correctly(self, context): - return context.get_iter()[1] if isinstance(context.get_iter(), tuple) else context.get_iter() - - def do_match(self, context): - iter = self.get_iter_correctly(context) - buffer = iter.get_buffer() - if buffer.get_context_classes_at_iter(iter) != ['no-spell-check']: - return False - - event_system.emit("textDocument/completion", (self._source_view, context, self.do_populate)) - return True - - def do_get_priority(self): - return 1 - - def do_get_activation(self): - return GtkSource.CompletionActivation.INTERACTIVE - - def do_populate(self, context, result = None): - proposals = [] - if result: - if not result.items is None: - for item in result.items: - proposals.append( self.create_completion_item(item) ) - else: - proposals.append( self.create_completion_item(result) ) - - context.add_proposals(self, proposals, True) - - def get_icon_for_type(self, _type): - try: - return self._theme.load_icon(icon_names[_type.lower()], 16, 0) - except: - ... - - try: - return self._theme.load_icon(Gtk.STOCK_ADD, 16, 0) - except: - ... - - return None - - def create_completion_item(self, item): - comp_item = GtkSource.CompletionItem.new() - comp_item.set_label(item.label) - - if item.textEdit: - if isinstance(item.textEdit, dict): - comp_item.set_text(item.textEdit["newText"]) - else: - comp_item.set_text(item.textEdit) - else: - comp_item.set_text(item.insertText) - - comp_item.set_icon( self.get_icon_for_type(item.kind) ) - comp_item.set_info(item.documentation) - - - return comp_item diff --git a/src/core/widgets/base/sourceview/custom_completion_providers/python_completion_provider.py b/src/core/widgets/base/sourceview/custom_completion_providers/python_completion_provider.py deleted file mode 100644 index d8268fe..0000000 --- a/src/core/widgets/base/sourceview/custom_completion_providers/python_completion_provider.py +++ /dev/null @@ -1,108 +0,0 @@ -# Python imports - -# Lib imports -import gi -gi.require_version('Gtk', '3.0') -gi.require_version('GtkSource', '4') - -from gi.repository import Gtk -from gi.repository import GtkSource -from gi.repository import GObject - -import jedi -from jedi.api import Script - -# Application imports - - - -# FIXME: Find real icon names... -icon_names = { - 'import': '', - 'module': '', - 'class': '', - 'function': '', - 'statement': '', - 'param': '' -} - - -class Jedi: - def get_script(file, doc_text): - return Script(code = doc_text, path = file) - - -class PythonCompletionProvider(GObject.Object, GtkSource.CompletionProvider): - """ - This code is A python code completion plugin for Newton. - # NOTE: Some code pulled/referenced from here --> https://github.com/isamert/gedi - """ - __gtype_name__ = 'PythonProvider' - - def __init__(self, file): - GObject.Object.__init__(self) - self._theme = Gtk.IconTheme.get_default() - self._file = file - - def do_get_name(self): - return "Python Code Completion" - - def get_iter_correctly(self, context): - return context.get_iter()[1] if isinstance(context.get_iter(), tuple) else context.get_iter() - - def do_match(self, context): - iter = self.get_iter_correctly(context) - iter.backward_char() - - buffer = iter.get_buffer() - if buffer.get_context_classes_at_iter(iter) != ['no-spell-check']: - return False - - ch = iter.get_char() - # NOTE: Look to re-add or apply supprting logic to use spaces - # As is it slows down the editor in certain contexts... - # if not (ch in ('_', '.', ' ') or ch.isalnum()): - if not (ch in ('_', '.') or ch.isalnum()): - return False - - return True - - def do_get_priority(self): - return 1 - - def do_get_activation(self): - return GtkSource.CompletionActivation.INTERACTIVE - - def do_populate(self, context): - # TODO: Maybe convert async? - it = self.get_iter_correctly(context) - buffer = it.get_buffer() - proposals = [] - - doc_text = buffer.get_text(buffer.get_start_iter(), buffer.get_end_iter(), False) - iter_cursor = buffer.get_iter_at_mark(buffer.get_insert()) - linenum = iter_cursor.get_line() + 1 - charnum = iter_cursor.get_line_index() - - def create_generator(): - for completion in Jedi.get_script(self._file, doc_text).complete(line = linenum, column = None, fuzzy = False): - comp_item = GtkSource.CompletionItem.new() - comp_item.set_label(completion.name) - comp_item.set_text(completion.name) - comp_item.set_icon(self.get_icon_for_type(completion.type)) - comp_item.set_info(completion.docstring()) - yield comp_item - - for item in create_generator(): - proposals.append(item) - - context.add_proposals(self, proposals, True) - - def get_icon_for_type(self, _type): - try: - return self._theme.load_icon(icon_names[_type.lower()], 16, 0) - except: - try: - return self._theme.load_icon(Gtk.STOCK_ADD, 16, 0) - except: - return None \ No newline at end of file diff --git a/src/core/widgets/base/sourceview/key_input_controller.py b/src/core/widgets/base/sourceview/key_input_controller.py deleted file mode 100644 index a9384a3..0000000 --- a/src/core/widgets/base/sourceview/key_input_controller.py +++ /dev/null @@ -1,145 +0,0 @@ -# Python imports - -# Lib imports -import gi -gi.require_version('Gdk', '3.0') -from gi.repository import Gdk -from gi.repository import GLib - -# Application imports - - - -class KeyInputController: - - # NOTE: Mostly sinking pre-bound keys here to let our keybinder control instead... - def _key_press_event(self, widget, eve): - keyname = Gdk.keyval_name(eve.keyval) - modifiers = Gdk.ModifierType(eve.get_state() & ~Gdk.ModifierType.LOCK_MASK) - is_control = True if modifiers & Gdk.ModifierType.CONTROL_MASK else False - is_shift = True if modifiers & Gdk.ModifierType.SHIFT_MASK else False - buffer = self.get_buffer() - - try: - is_alt = True if modifiers & Gdk.ModifierType.ALT_MASK else False - except Exception: - is_alt = True if modifiers & Gdk.ModifierType.MOD1_MASK else False - - if is_control: - if is_shift: - if keyname in [ "Up", "Down" ]: - return True - - if keyname in [ "slash", "Up", "Down", "m", "z", "y" ]: - return True - - if is_alt: - if keyname in [ "Up", "Down", "Left", "Right" ]: - return True - - - if len(self._multi_insert_marks) > 0: - if keyname == "BackSpace": - self.begin_user_action(buffer) - - with buffer.freeze_notify(): - GLib.idle_add(self._delete_on_multi_line_markers, *(buffer,)) - - self.end_user_action(buffer) - - return True - - # NOTE: if a plugin recieves the call and handles, it will be the final decider for propigation - return event_system.emit_and_await("autopairs", (keyname, is_control, is_alt, is_shift)) - - - - def _key_release_event(self, widget, eve): - if self.freeze_multi_line_insert: return - - keyname = Gdk.keyval_name(eve.keyval) - modifiers = Gdk.ModifierType(eve.get_state() & ~Gdk.ModifierType.LOCK_MASK) - is_control = True if modifiers & Gdk.ModifierType.CONTROL_MASK else False - is_shift = True if modifiers & Gdk.ModifierType.SHIFT_MASK else False - buffer = self.get_buffer() - - try: - is_alt = True if modifiers & Gdk.ModifierType.ALT_MASK else False - except Exception: - is_alt = True if modifiers & Gdk.ModifierType.MOD1_MASK else False - - can_continue = self.can_proceed(keyname, is_control, is_shift, is_alt) - if not can_continue: - return can_continue - - - if is_control: - if is_shift: - if keyname in ["S"]: - if keyname == "S": - self.save_file_as() - - return True - - if keyname in ["z", "y", "m", "s", "h", "g", "equal", "minus", "Up", "Down"]: - if keyname == "z": - self.keyboard_undo() - if keyname == "y": - self.keyboard_redo() - if keyname == "m": - self.keyboard_insert_mark() - if keyname == "s": - self.save_file() - if keyname == "h": - self.toggle_highlight_line() - if keyname == "g": - self.go_to_call() - - if keyname == "equal": - self.scale_up_text() - if keyname == "minus": - self.scale_down_text() - - if keyname == "Up": - self.keyboard_move_lines_up() - if keyname == "Down": - self.keyboard_move_lines_down() - - return True - - # Note: Sink these requets - if keyname in ["Slash"]: - return True - - if is_alt: - if keyname == "m": - self.keyboard_clear_marks() - - - if keyname in {"Return", "Enter"}: - if len(self._multi_insert_marks) > 0: - self.begin_user_action(buffer) - with buffer.freeze_notify(): - GLib.idle_add(self._new_line_on_multi_line_markers, *(buffer,)) - - return - - has_selection = buffer.get_has_selection() - if not has_selection: - return self.insert_indent_handler(buffer) - - - def can_proceed(self, keyname, is_control, is_shift, is_alt): - if is_control: - if is_shift: - if keyname in ["Up", "Down"]: - return False - - if keyname in ["w", "t", "o"]: - return False - - if is_alt: - if keyname in ["Up", "Down", "Left", "Right"]: - return False - - return True \ No newline at end of file diff --git a/src/core/widgets/base/sourceview/mixins/__init__.py b/src/core/widgets/base/sourceview/mixins/__init__.py deleted file mode 100644 index c418b14..0000000 --- a/src/core/widgets/base/sourceview/mixins/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -""" - SourceView Mixins Module -""" \ No newline at end of file diff --git a/src/core/widgets/base/sourceview/mixins/source_file_events_mixin.py b/src/core/widgets/base/sourceview/mixins/source_file_events_mixin.py deleted file mode 100644 index 1affe10..0000000 --- a/src/core/widgets/base/sourceview/mixins/source_file_events_mixin.py +++ /dev/null @@ -1,157 +0,0 @@ -# Python imports -import random - -# Lib imports -import gi -gi.require_version('Gtk', '3.0') -gi.require_version('GtkSource', '4') -from gi.repository import Gtk -from gi.repository import Gio -from gi.repository import GtkSource - -# Application imports -from ..custom_completion_providers.lsp_completion_provider import LSPCompletionProvider - - - -class FileEventsMixin: - - def get_current_file(self): - return self._current_file - - def open_file(self, gfile, line: int = 0, *args): - self._current_file = gfile - self._loading_file = True - - self.load_file_info(gfile) - self.load_file_async(gfile, line) - self._create_file_watcher(gfile) - - def save_file(self): - self._skip_file_load = True - gfile = event_system.emit_and_await("save_file_dialog", (self._current_filename, self._current_file)) if not self._current_file else self._current_file - - if not gfile: - self._skip_file_load = False - return - - self.open_file( self._write_file(gfile) ) - self._skip_file_load = False - - def save_file_as(self): - gfile = event_system.emit_and_await("save_file_dialog", (self._current_filename, self._current_file)) - self._write_file(gfile, True) - if gfile: event_system.emit("create_view", (gfile,)) - - def load_file_info(self, gfile): - info = gfile.query_info("standard::*", 0, cancellable=None) - content_type = info.get_content_type() - display_name = info.get_display_name() - self._current_filename = display_name - - try: - lm = self._language_manager.guess_language(None, content_type) - self._current_filetype = lm.get_id() - self.set_buffer_language(self._current_filetype) - except Exception as e: - ... - - logger.debug(f"Detected Content Type: {content_type}") - if self._current_filetype == "buffer": - self._current_filetype = info.get_content_type() - - def load_file_async(self, gfile, line: int = 0): - if self._skip_file_load: - self.update_labels(gfile) - return - - file = GtkSource.File() - buffer = self.get_buffer() - file.set_location(gfile) - self._file_loader = GtkSource.FileLoader.new(buffer, file) - - event_system.emit("pause_event_processing") - def finish_load_callback(obj, res, user_data = None): - event_system.emit("resume_event_processing") - - self._file_loader.load_finish(res) - self._document_loaded(line) - self.update_labels(gfile) - self._loading_file = False - - self._file_loader.load_async(io_priority = 80, - cancellable = None, - progress_callback = None, - progress_callback_data = None, - callback = finish_load_callback, - user_data = (None)) - - def _create_file_watcher(self, gfile = None): - if not gfile: return - - self._cancel_current_file_watchers() - self._file_change_watcher = gfile.monitor(Gio.FileMonitorFlags.NONE, Gio.Cancellable()) - self._file_change_watcher.connect("changed", self._file_monitor) - - def _file_monitor(self, file_monitor, file, other_file = None, eve_type = None, data = None): - if not file.get_path() == self._current_file.get_path(): return - - if eve_type in [Gio.FileMonitorEvent.CREATED, - Gio.FileMonitorEvent.DELETED, - Gio.FileMonitorEvent.RENAMED, - Gio.FileMonitorEvent.MOVED_IN, - Gio.FileMonitorEvent.MOVED_OUT]: - buffer = self.get_buffer() - buffer.set_modified(True) - - if eve_type in [ Gio.FileMonitorEvent.CHANGES_DONE_HINT ]: - if self._ignore_internal_change: - self._ignore_internal_change = False - return - - # TODO: Any better way to load the difference?? - if self._current_file.query_exists(): - self.load_file_async(self._current_file) - - def _cancel_current_file_watchers(self): - if self._file_change_watcher: - self._file_change_watcher.cancel() - self._file_change_watcher = None - - def _write_file(self, gfile, save_as = False): - if not gfile: return - - buffer = self.get_buffer() - with open(gfile.get_path(), 'w') as f: - if not save_as: - self._ignore_internal_change = True - - start_itr = buffer.get_start_iter() - end_itr = buffer.get_end_iter() - text = buffer.get_text(start_itr, end_itr, True) - - f.write(text) - - buffer.set_modified(False) - return gfile - - - def _document_loaded(self, line: int = 0): - for provider in self._completion.get_providers(): - self._completion.remove_provider(provider) - - uri = self._current_file.get_uri() - buffer = self.get_buffer() - - event_system.emit("textDocument/didOpen", (self._current_filetype, uri,)) - - word_completion = GtkSource.CompletionWords.new("word_completion") - word_completion.register(buffer) - self._completion.add_provider(word_completion) - - lsp_completion_provider = LSPCompletionProvider(self) - self._completion.add_provider(lsp_completion_provider) - - self.got_to_line(buffer, line) - - diff --git a/src/core/widgets/base/sourceview/mixins/source_mark_events_mixin.py b/src/core/widgets/base/sourceview/mixins/source_mark_events_mixin.py deleted file mode 100644 index d5be743..0000000 --- a/src/core/widgets/base/sourceview/mixins/source_mark_events_mixin.py +++ /dev/null @@ -1,151 +0,0 @@ -# Python imports -import random - -# Lib imports -import gi -gi.require_version('Gtk', '3.0') -from gi.repository import Gtk - -# Application imports - - - -class MarkEventsMixin: - - def keyboard_insert_mark(self, target_iter = None, is_keyboard_insert = True): - buffer = self.get_buffer() - - if not target_iter: - target_iter = buffer.get_iter_at_mark( buffer.get_insert() ) - - found_mark = self.check_for_insert_marks(target_iter, is_keyboard_insert) - if not found_mark: - random_bits = random.getrandbits(128) - hash = "%032x" % random_bits - mark = Gtk.TextMark.new(name = f"multi_insert_{hash}", left_gravity = False) - - buffer.add_mark(mark, target_iter) - self._multi_insert_marks.append(mark) - mark.set_visible(True) - - def button_press_insert_mark(self, eve): - data = self.window_to_buffer_coords(Gtk.TextWindowType.TEXT , eve.x, eve.y) - is_over_text, target_iter, is_trailing = self.get_iter_at_position(data.buffer_x, data.buffer_y) - - if not is_over_text: - # NOTE: Trying to put at very end of line if not over text (aka, clicking right of text) - target_iter.forward_visible_line() - target_iter.backward_char() - - self.keyboard_insert_mark(target_iter, is_keyboard_insert = False) - - def check_for_insert_marks(self, target_iter, is_keyboard_insert): - marks = target_iter.get_marks() - buffer = self.get_buffer() - found_mark = False - - for mark in marks: - for _mark in self._multi_insert_marks: - if _mark == mark: - mark.set_visible(False) - buffer.delete_mark(mark) - found_mark = True - break - - if found_mark: - self._multi_insert_marks.remove(mark) - break - - if not is_keyboard_insert: - for mark in marks: - if "insert" in mark.get_name(): - found_mark = True - - return found_mark - - def keyboard_clear_marks(self): - buffer = self.get_buffer() - - buffer.begin_user_action() - - for mark in self._multi_insert_marks: - mark.set_visible(False) - buffer.delete_mark(mark) - - self._multi_insert_marks.clear() - buffer.end_user_action() - - - def _update_multi_line_markers(self, buffer, text_str): - for mark in self._multi_insert_marks: - iter = buffer.get_iter_at_mark(mark) - buffer.insert(iter, text_str, -1) - - self.end_user_action(buffer) - - def _delete_on_multi_line_markers(self, buffer): - iter = buffer.get_iter_at_mark( buffer.get_insert() ) - buffer.backspace(iter, interactive = True, default_editable = True) - - for mark in self._multi_insert_marks: - iter = buffer.get_iter_at_mark(mark) - buffer.backspace(iter, interactive = True, default_editable = True) - - self.end_user_action(buffer) - - def _new_line_on_multi_line_markers(self, buffer): - iter = buffer.get_iter_at_mark( buffer.get_insert() ) - self._base_indent(buffer, iter) - self.insert_indent_handler(buffer, iter) - - for mark in self._multi_insert_marks: - iter = buffer.get_iter_at_mark(mark) - self._base_indent(buffer, iter) - self.insert_indent_handler(buffer, iter) - - def insert_indent_handler(self, buffer, iter = None): - if not iter: - iter = buffer.get_iter_at_mark( buffer.get_insert() ) - - iter_copy = iter.copy() - iter_copy.backward_sentence_start() - iter_copy.forward_sentence_end() - iter_copy.backward_char() - - # Note: Need to compare line nums too because backward_sentence_start - # and forward_sentence_end can go farther back if just spaces inbetween... - line_start = iter.get_line() - line_end = iter_copy.get_line() - - _char = iter_copy.get_char() - if _char in ["{", ":"] and (line_start - line_end) == 1: - self._indent_deeper(buffer, iter) - - def _base_indent(self, buffer, iter): - line_num = iter.get_line() - iter_copy = buffer.get_iter_at_line(line_num) - - spaces = "" - _char = iter_copy.get_char() - while _char == " ": - spaces += " " - iter_copy.forward_char() - _char = iter_copy.get_char() - - buffer.insert(iter, f"\n{spaces}") - - - def _indent_deeper(self, buffer, iter): - buffer.insert(iter, " ") - - - - def begin_user_action(self, buffer): - if len(self._multi_insert_marks) > 0: - buffer.begin_user_action() - self.freeze_multi_line_insert = True - - def end_user_action(self, buffer): - if len(self._multi_insert_marks) > 0: - buffer.end_user_action() - self.freeze_multi_line_insert = False \ No newline at end of file diff --git a/src/core/widgets/base/sourceview/mixins/source_view_dnd_mixin.py b/src/core/widgets/base/sourceview/mixins/source_view_dnd_mixin.py deleted file mode 100644 index 6f23e4e..0000000 --- a/src/core/widgets/base/sourceview/mixins/source_view_dnd_mixin.py +++ /dev/null @@ -1,45 +0,0 @@ -# Python imports - -# Lib imports -import gi -gi.require_version('Gtk', '3.0') -from gi.repository import Gtk -from gi.repository import Gio - -# Application imports - - - -class SourceViewDnDMixin: - - def _set_up_dnd(self): - PLAIN_TEXT_TARGET_TYPE = 70 - URI_TARGET_TYPE = 80 - text_target = Gtk.TargetEntry.new('text/plain', Gtk.TargetFlags(0), PLAIN_TEXT_TARGET_TYPE) - uri_target = Gtk.TargetEntry.new('text/uri-list', Gtk.TargetFlags(0), URI_TARGET_TYPE) - targets = [ text_target, uri_target ] - self.drag_dest_set_target_list(targets) - - def _on_drag_data_received(self, widget, drag_context, x, y, data, info, time): - if info == 70: return - - if info == 80: - buffer = self.get_buffer() - uris = data.get_uris() - - if len(uris) == 0: - uris = data.get_text().split("\n") - - if not self._current_file and not buffer.get_modified(): - gfile = Gio.File.new_for_uri(uris[0]) - self.open_file(gfile) - uris.pop(0) - - for uri in uris: - gfile = None - try: - gfile = Gio.File.new_for_uri(uri) - except Exception as e: - gfile = Gio.File.new_for_path(uri) - - event_system.emit('create_view', (gfile,)) diff --git a/src/core/widgets/base/sourceview/source_view.py b/src/core/widgets/base/sourceview/source_view.py deleted file mode 100644 index f089bff..0000000 --- a/src/core/widgets/base/sourceview/source_view.py +++ /dev/null @@ -1,98 +0,0 @@ -# Python imports - -# Lib imports -import gi -gi.require_version('Gtk', '3.0') -gi.require_version('GtkSource', '4') -gi.require_version('Gdk', '3.0') -from gi.repository import Gtk -from gi.repository import Gdk -from gi.repository import GLib -from gi.repository import Gio -from gi.repository import GtkSource - -# Application imports -from .source_view_controller import SourceViewControllerMixin - -# from .custom_completion_providers.example_completion_provider import ExampleCompletionProvider -# from .custom_completion_providers.python_completion_provider import PythonCompletionProvider - - - -class SourceView(SourceViewControllerMixin, GtkSource.View): - def __init__(self): - super(SourceView, self).__init__() - - self._language_manager = GtkSource.LanguageManager() - self._style_scheme_manager = GtkSource.StyleSchemeManager() - - self._file_loader = None - self._file_change_watcher = None - self._current_file: Gio.File = None - - self._current_filename: str = "" - self._current_filepath: str = None - self._current_filetype: str = "buffer" - - self._skip_file_load = False - self._ignore_internal_change = False - self._loading_file = False - self._completion = self.get_completion() - self._px_value = settings.theming.default_zoom - - self._multi_insert_marks = [] - self.freeze_multi_line_insert = False - - self._setup_styling() - self._setup_signals() - self._subscribe_to_events() - self._load_widgets() - - - def _setup_styling(self): - ctx = self.get_style_context() - ctx.add_class("source-view") - ctx.add_class(f"px{self._px_value}") - - self.set_vexpand(True) - - self.set_show_line_marks(True) - self.set_show_line_numbers(True) - self.set_smart_backspace(True) - self.set_indent_on_tab(True) - self.set_insert_spaces_instead_of_tabs(True) - self.set_auto_indent(True) - self.set_monospace(True) - self.set_tab_width(4) - self.set_show_right_margin(True) - self.set_right_margin_position(80) - self.set_background_pattern(0) # 0 = None, 1 = Grid - - buffer = self.get_buffer() - self._create_default_tag(buffer) - self.set_buffer_language(buffer) - self.set_buffer_style(buffer) - - - def _setup_signals(self): - self.connect("focus", self._on_widget_focus) - self.connect("focus-in-event", self._focus_in_event) - - self.connect("drag-data-received", self._on_drag_data_received) - self.connect("key-press-event", self._key_press_event) - self.connect("key-release-event", self._key_release_event) - self.connect("button-press-event", self._button_press_event) - self.connect("scroll-event", self._scroll_event) - - buffer = self.get_buffer() - buffer.connect('changed', self._is_modified) - buffer.connect("mark-set", self._on_cursor_move) - buffer.connect('insert-text', self._insert_text) - buffer.connect('modified-changed', self._buffer_modified_changed) - - - def _subscribe_to_events(self): - ... - - def _load_widgets(self): - self._set_up_dnd() \ No newline at end of file diff --git a/src/core/widgets/base/sourceview/source_view_controller.py b/src/core/widgets/base/sourceview/source_view_controller.py deleted file mode 100644 index a173524..0000000 --- a/src/core/widgets/base/sourceview/source_view_controller.py +++ /dev/null @@ -1,138 +0,0 @@ -# Python imports - -# Lib imports -import gi -gi.require_version('Gtk', '3.0') -from gi.repository import Gtk -from gi.repository import GLib - -# Application imports -from .key_input_controller import KeyInputController -from .source_view_events import SourceViewEvents - - - -class SourceViewControllerMixin(KeyInputController, SourceViewEvents): - def get_current_file(self): - return self._current_file - - def get_filetype(self): - return self._current_filetype - - def set_buffer_language(self, buffer, language = "python3"): - buffer.set_language( self._language_manager.get_language(language) ) - - def set_buffer_style(self, buffer, style = settings.theming.syntax_theme): - buffer.set_style_scheme( self._style_scheme_manager.get_scheme(style) ) - - def go_to_call(self): - buffer = self.get_buffer() - iter = buffer.get_iter_at_mark( buffer.get_insert() ) - line = iter.get_line() - offset = iter.get_line_offset() - uri = self.get_current_file().get_uri() - - event_system.emit("textDocument/definition", (self.get_filetype(), uri, line, offset,)) - - - def update_cursor_position(self, buffer = None): - buffer = self.get_buffer() if not buffer else buffer - iter = buffer.get_iter_at_mark( buffer.get_insert() ) - chars = iter.get_offset() - row = iter.get_line() + 1 - col = self.get_visual_column(iter) + 1 - - event_system.emit("set_line_char_label", (f"{row}:{col}",)) - - def update_labels(self, gfile = None): - if not gfile: return - - tab_widget = self.get_parent().get_tab_widget() - tab_widget.set_tab_label(self._current_filename) - self.set_bottom_labels(gfile) - - def set_bottom_labels(self, gfile = None): - if not gfile: return - - event_system.emit("set_bottom_labels", (gfile, None, self._current_filetype, None)) - self.update_cursor_position() - - def got_to_line(self, buffer = None, line: int = 0): - buffer = self.get_buffer() if not buffer else buffer - line_itr = buffer.get_iter_at_line(line) - char_iter = buffer.get_iter_at_line_offset(line, line_itr.get_bytes_in_line()) - - buffer.place_cursor(char_iter) - # Note: scroll_to_iter and scroll_to_mark depend on an idle recalculate of buffers after load to work - GLib.idle_add(self.scroll_to_mark, buffer.get_insert(), 0.1, True, 0.0, 0.1) - - def toggle_highlight_line(self, widget = None, eve = None): - self.set_highlight_current_line( not self.get_highlight_current_line() ) - - def scale_up_text(self, buffer = None, scale_step = 10): - if not buffer: - buffer = self.get_buffer() - - ctx = self.get_style_context() - - if self._px_value < 99: - self._px_value += 1 - ctx.add_class(f"px{self._px_value}") - - # NOTE: Hope to bring this or similar back after we decouple scaling issues coupled with the miniview. - # tag_table = buffer.get_tag_table() - # start_itr = buffer.get_start_iter() - # end_itr = buffer.get_end_iter() - # tag = tag_table.lookup('general_style') - # - # tag.set_property('scale', tag.get_property('scale') + scale_step) - # buffer.apply_tag(tag, start_itr, end_itr) - - def scale_down_text(self, buffer = None, scale_step = 10): - if not buffer: - buffer = self.get_buffer() - - ctx = self.get_style_context() - - if self._px_value > 1: - ctx.remove_class(f"px{self._px_value}") - self._px_value -= 1 - ctx.add_class(f"px{self._px_value}") - - # NOTE: Hope to bring this or similar back after we decouple scaling issues coupled with the miniview. - # tag_table = buffer.get_tag_table() - # start_itr = buffer.get_start_iter() - # end_itr = buffer.get_end_iter() - # tag = tag_table.lookup('general_style') - # - # tag.set_property('scale', tag.get_property('scale') - scale_step) - # buffer.apply_tag(tag, start_itr, end_itr) - - def keyboard_undo(self): - buffer = self.get_buffer() - buffer.undo() - - def keyboard_redo(self): - buffer = self.get_buffer() - buffer.redo() - - def keyboard_move_lines_up(self): - buffer = self.get_buffer() - - self.begin_user_action(buffer) - - self.emit("move-lines", *(False,)) - # unindent_lines - # self.emit("move-words", *(self, 4,)) - - self.end_user_action(buffer) - - def keyboard_move_lines_down(self): - buffer = self.get_buffer() - - self.begin_user_action(buffer) - - self.emit("move-lines", *(True,)) - # self.emit("move-words", *(self, -4,)) - - self.end_user_action(buffer) \ No newline at end of file diff --git a/src/core/widgets/base/sourceview/source_view_events.py b/src/core/widgets/base/sourceview/source_view_events.py deleted file mode 100644 index acb7ace..0000000 --- a/src/core/widgets/base/sourceview/source_view_events.py +++ /dev/null @@ -1,102 +0,0 @@ -# Python imports - -# Lib imports -import gi -gi.require_version('Gtk', '3.0') -gi.require_version('Gdk', '3.0') -from gi.repository import Gtk -from gi.repository import Gdk -from gi.repository import GLib - -# Application imports -from .mixins.source_view_dnd_mixin import SourceViewDnDMixin -from .mixins.source_file_events_mixin import FileEventsMixin -from .mixins.source_mark_events_mixin import MarkEventsMixin - - -class SourceViewEvents(SourceViewDnDMixin, MarkEventsMixin, FileEventsMixin): - def _create_default_tag(self, buffer): - general_style_tag = buffer.create_tag('general_style') - general_style_tag.set_property('size', 100) - general_style_tag.set_property('scale', 100) - - def _is_modified(self, *args): - buffer = self.get_buffer() - file_type = self.get_filetype() - - if not self._loading_file: - event_system.emit("buffer_changed", (buffer, )) - event_system.emit("textDocument/didChange", (file_type, buffer, )) - else: - event_system.emit("buffer_changed_first_load", (buffer, )) - - self.update_cursor_position(buffer) - - def _insert_text(self, buffer, location_itr, text_str, len_int): - if self.freeze_multi_line_insert: return - - self.begin_user_action(buffer) - with buffer.freeze_notify(): - GLib.idle_add(self._update_multi_line_markers, *(buffer, text_str,)) - - def _buffer_modified_changed(self, buffer): - tab_widget = self.get_parent().get_tab_widget() - tab_widget.set_status(changed = True if buffer.get_modified() else False) - - - def _button_press_event(self, widget = None, eve = None, user_data = None): - if eve.type == Gdk.EventType.BUTTON_PRESS and eve.button == 1 : # l-click - if eve.state & Gdk.ModifierType.CONTROL_MASK: - self.button_press_insert_mark(eve) - return True - else: - self.keyboard_clear_marks() - elif eve.type == Gdk.EventType.BUTTON_RELEASE and eve.button == 3: # r-click - ... - - def _scroll_event(self, widget, eve): - accel_mask = Gtk.accelerator_get_default_mod_mask() - x, y, z = eve.get_scroll_deltas() - if eve.state & accel_mask == Gdk.ModifierType.CONTROL_MASK: - buffer = self.get_buffer() - if z > 0: - self.scale_down_text(buffer) - else: - self.scale_up_text(buffer) - - return True - - if eve.state & accel_mask == Gdk.ModifierType.SHIFT_MASK: - adjustment = self.get_hadjustment() - current_val = adjustment.get_value() - step_val = adjustment.get_step_increment() - - if z > 0: # NOTE: scroll left - adjustment.set_value(current_val - step_val * 2) - else: # NOTE: scroll right - adjustment.set_value(current_val + step_val * 2) - - return True - - def _focus_in_event(self, widget, eve = None): - event_system.emit("set_active_src_view", (self,)) - self.get_parent().get_parent().is_editor_focused = True - - def _on_widget_focus(self, widget, eve = None): - tab_view = self.get_parent().get_parent() - path = self._current_file if self._current_file else "" - - event_system.emit('focused_target_changed', (tab_view.NAME,)) - event_system.emit("set_path_label", (path,)) - event_system.emit("set_encoding_label") - event_system.emit("set_file_type_label", (self._current_filetype,)) - - return False - - def _on_cursor_move(self, buffer, cursor_iter, mark, user_data = None): - if mark != buffer.get_insert(): return - - self.update_cursor_position(buffer) - - # NOTE: Not sure but this might not be efficient if the map reloads the same view... - event_system.emit(f"set_source_view", (self,)) \ No newline at end of file diff --git a/src/core/widgets/base/sourceview_container.py b/src/core/widgets/base/sourceview_container.py deleted file mode 100644 index ce40588..0000000 --- a/src/core/widgets/base/sourceview_container.py +++ /dev/null @@ -1,46 +0,0 @@ -# Python imports - -# Lib imports -import gi -gi.require_version('Gtk', '3.0') -from gi.repository import Gtk - -# Application imports -from ..tab_header_widget import TabHeaderWidget -from .sourceview.source_view import SourceView - - - -class SourceViewContainer(Gtk.ScrolledWindow): - def __init__(self, close_tab): - super(SourceViewContainer, self).__init__() - - self._close_tab: function = close_tab - self._source_view: SourceView = None - self._tab_widget: TabHeaderWidget = None - - self._setup_styling() - self._setup_signals() - self._subscribe_to_events() - self._load_widgets() - - - def _setup_styling(self): - ... - - def _setup_signals(self): - ... - - def _subscribe_to_events(self): - ... - - def _load_widgets(self): - self._source_view = SourceView() - self._tab_widget = TabHeaderWidget(self, self._source_view, self._close_tab) - self.add(self._source_view) - - def get_tab_widget(self): - return self._tab_widget - - def get_source_view(self): - return self._source_view \ No newline at end of file diff --git a/src/core/widgets/controls/__init__.py b/src/core/widgets/controls/__init__.py deleted file mode 100644 index f53f627..0000000 --- a/src/core/widgets/controls/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -""" - Widgets.Controls Module -""" diff --git a/src/core/widgets/controls/open_file_button.py b/src/core/widgets/controls/open_file_button.py deleted file mode 100644 index 3b98d65..0000000 --- a/src/core/widgets/controls/open_file_button.py +++ /dev/null @@ -1,64 +0,0 @@ -# Python imports -import os - -# Lib imports -import gi -gi.require_version('Gtk', '3.0') -gi.require_version('Gdk', '3.0') -from gi.repository import Gtk -from gi.repository import Gdk -from gi.repository import Gio - -# Application imports - - - -class OpenFileButton(Gtk.Button): - """docstring for OpenFileButton.""" - - def __init__(self): - super(OpenFileButton, self).__init__() - - self._setup_styling() - self._setup_signals() - self._subscribe_to_events() - self._load_widgets() - - - def _setup_styling(self): - self.set_label("Open File(s)...") - self.set_image( Gtk.Image.new_from_icon_name("gtk-open", 4) ) - self.set_always_show_image(True) - self.set_image_position(1) # Left - 0, Right = 1 - self.set_hexpand(False) - - def _setup_signals(self): - self.connect("button-release-event", self._open_files) - - def _subscribe_to_events(self): - event_system.subscribe("open_files", self._open_files) - - def _load_widgets(self): - ... - - def _open_files(self, widget = None, eve = None): - chooser = Gtk.FileChooserDialog("Open File...", None, - Gtk.FileChooserAction.OPEN, - (Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL, - Gtk.STOCK_OPEN, Gtk.ResponseType.OK)) - - try: - folder = widget.get_current_file().get_parent() - chooser.set_current_folder( folder.get_uri() ) - except Exception as e: - ... - - response = chooser.run() - if response == Gtk.ResponseType.OK: - filename = chooser.get_filename() - if filename: - path = filename if os.path.isabs(filename) else os.path.abspath(filename) - _gfile = Gio.File.new_for_path(path) - event_system.emit("keyboard_open_file", (_gfile,)) - - chooser.destroy() \ No newline at end of file diff --git a/src/core/widgets/controls/save_as_button.py b/src/core/widgets/controls/save_as_button.py deleted file mode 100644 index 163131b..0000000 --- a/src/core/widgets/controls/save_as_button.py +++ /dev/null @@ -1,39 +0,0 @@ -# Python imports - -# Lib imports -import gi -gi.require_version('Gtk', '3.0') -from gi.repository import Gtk - -# Application imports - - - -class SaveAsButton(Gtk.Button): - def __init__(self): - super(SaveAsButton, self).__init__() - - self._setup_styling() - self._setup_signals() - self._subscribe_to_events() - self._load_widgets() - - - def _setup_styling(self): - self.set_label("Save As") - self.set_image( Gtk.Image.new_from_icon_name("gtk-save-as", 4) ) - self.set_always_show_image(True) - self.set_image_position(1) # Left - 0, Right = 1 - self.set_hexpand(False) - - def _setup_signals(self): - self.connect("released", self._emit_save_as_eve) - - def _subscribe_to_events(self): - ... - - def _load_widgets(self): - ... - - def _emit_save_as_eve(self, widget, eve = None): - event_system.emit('keyboard_save_file') diff --git a/src/core/widgets/controls/scale_down_button.py b/src/core/widgets/controls/scale_down_button.py deleted file mode 100644 index 49399d5..0000000 --- a/src/core/widgets/controls/scale_down_button.py +++ /dev/null @@ -1,39 +0,0 @@ -# Python imports - -# Lib imports -import gi -gi.require_version('Gtk', '3.0') -from gi.repository import Gtk - -# Application imports - - - -class ScaleDownButton(Gtk.Button): - def __init__(self): - super(ScaleDownButton, self).__init__() - - self._setup_styling() - self._setup_signals() - self._subscribe_to_events() - self._load_widgets() - - - def _setup_styling(self): - self.set_label("Zoom") - self.set_image( Gtk.Image.new_from_icon_name("gtk-zoom-out", 4) ) - self.set_always_show_image(True) - self.set_image_position(1) # Left - 0, Right = 1 - self.set_hexpand(False) - - def _setup_signals(self): - self.connect("released", self._emit_scale_eve) - - def _subscribe_to_events(self): - ... - - def _load_widgets(self): - ... - - def _emit_scale_eve(self, widget, eve = None): - event_system.emit('keyboard_scale_down_text') diff --git a/src/core/widgets/controls/scale_up_button.py b/src/core/widgets/controls/scale_up_button.py deleted file mode 100644 index b090dfe..0000000 --- a/src/core/widgets/controls/scale_up_button.py +++ /dev/null @@ -1,39 +0,0 @@ -# Python imports - -# Lib imports -import gi -gi.require_version('Gtk', '3.0') -from gi.repository import Gtk - -# Application imports - - - -class ScaleUpButton(Gtk.Button): - def __init__(self): - super(ScaleUpButton, self).__init__() - - self._setup_styling() - self._setup_signals() - self._subscribe_to_events() - self._load_widgets() - - - def _setup_styling(self): - self.set_label("Zoom") - self.set_image( Gtk.Image.new_from_icon_name("gtk-zoom-in", 4) ) - self.set_always_show_image(True) - self.set_image_position(1) # Left - 0, Right = 1 - self.set_hexpand(False) - - def _setup_signals(self): - self.connect("released", self._emit_scale_eve) - - def _subscribe_to_events(self): - ... - - def _load_widgets(self): - ... - - def _emit_scale_eve(self, widget, eve = None): - event_system.emit('keyboard_scale_up_text') diff --git a/src/core/widgets/controls/theme_button.py b/src/core/widgets/controls/theme_button.py deleted file mode 100644 index f166d2a..0000000 --- a/src/core/widgets/controls/theme_button.py +++ /dev/null @@ -1,89 +0,0 @@ -# Python imports - -# Lib imports -import gi -gi.require_version('Gtk', '3.0') -gi.require_version('GtkSource', '4') -from gi.repository import Gtk -from gi.repository import GtkSource - -# Application imports - - - -class ThemePopover(Gtk.Popover): - """docstring for ThemePopover.""" - - def __init__(self): - super(ThemePopover, self).__init__() - - self._style_choser = None - - self._setup_styling() - self._setup_signals() - self._load_widgets() - - - def _setup_styling(self): - self.set_modal(True) - self.set_position(Gtk.PositionType.BOTTOM) - self.set_size_request(320, 280) - - def _setup_signals(self): - event_system.subscribe("show_theme_popup", self._show_theme_popup) - - def _load_widgets(self): - manager = GtkSource.StyleSchemeManager() - style_scheme = manager.get_scheme(settings.theming.syntax_theme) - - self._style_choser = GtkSource.StyleSchemeChooserWidget() - self._style_choser.set_style_scheme(style_scheme) - self._style_choser.show_all() - self._style_choser.connect("button-release-event", self._set_theme) - - self.add(self._style_choser) - - - def _show_theme_popup(self, widget = None, eve = None): - self.popup() - - def _set_theme(self, widget = None, eve = None): - style_scheme = widget.get_style_scheme() - id = style_scheme.get_id() - settings.theming.syntax_theme = id.lower() - - event_system.emit('set_buffer_style', ("set_buffer_style", id.lower(),)) - - - -class ThemeButton(Gtk.Button): - def __init__(self): - super(ThemeButton, self).__init__() - - self._setup_styling() - self._setup_signals() - self._subscribe_to_events() - self._load_widgets() - - - def _setup_styling(self): - self.set_label("Themes") - self.set_image( Gtk.Image.new_from_icon_name("gtk-page-setup", 4) ) - self.set_always_show_image(True) - self.set_image_position(1) # Left - 0, Right = 1 - self.set_margin_left(5) - # self.set_margin_right(5) - - def _setup_signals(self): - self.connect("clicked", self._show_popover) - - def _subscribe_to_events(self): - ... - - def _load_widgets(self): - popover = ThemePopover() - popover.set_relative_to(self) - - - def _show_popover(self, widget, eve = None): - event_system.emit("show_theme_popup") diff --git a/src/core/widgets/controls/toggle_line_highlight.py b/src/core/widgets/controls/toggle_line_highlight.py deleted file mode 100644 index 4218044..0000000 --- a/src/core/widgets/controls/toggle_line_highlight.py +++ /dev/null @@ -1,39 +0,0 @@ -# Python imports - -# Lib imports -import gi -gi.require_version('Gtk', '3.0') -from gi.repository import Gtk - -# Application imports - - - -class ToggleLineHighlight(Gtk.Button): - def __init__(self): - super(ToggleLineHighlight, self).__init__() - - self._setup_styling() - self._setup_signals() - self._subscribe_to_events() - self._load_widgets() - - - def _setup_styling(self): - self.set_label("Line Highlight") - self.set_image( Gtk.Image.new_from_icon_name("gtk-select-font", 4) ) - self.set_always_show_image(True) - self.set_image_position(1) # Left - 0, Right = 1 - self.set_hexpand(False) - - def _setup_signals(self): - self.connect("released", self._emit_toggle_eve) - - def _subscribe_to_events(self): - ... - - def _load_widgets(self): - ... - - def _emit_toggle_eve(self, widget, eve = None): - event_system.emit('toggle_highlight_line') diff --git a/src/core/widgets/controls/transparency_scale.py b/src/core/widgets/controls/transparency_scale.py deleted file mode 100644 index 3e0fc9f..0000000 --- a/src/core/widgets/controls/transparency_scale.py +++ /dev/null @@ -1,51 +0,0 @@ -# Python imports - -# Lib imports -import gi -gi.require_version('Gtk', '3.0') -from gi.repository import Gtk - -# Application imports - - - -class TransparencyScale(Gtk.Scale): - def __init__(self): - super(TransparencyScale, self).__init__() - - - self._setup_styling() - self._setup_signals() - self._subscribe_to_events() - self._load_widgets() - - self.show_all() - - - def _setup_styling(self): - self.set_digits(0) - self.set_hexpand(True) - self.set_size_request(240, -1) - self.set_value_pos(Gtk.PositionType.RIGHT) - self.add_mark(0.0, Gtk.PositionType.TOP, "Transparency:") - self.add_mark(50.0, Gtk.PositionType.TOP, "50%") - - - def _setup_signals(self): - self.connect("value-changed", self._update_transparency) - - def _subscribe_to_events(self): - ... - - def _load_widgets(self): - adjust = self.get_adjustment() - adjust.set_lower(0) - adjust.set_upper(99) - adjust.set_value(settings.theming.transparency) - adjust.set_step_increment(1.0) - - def _update_transparency(self, range): - event_system.emit("remove_transparency") - tp = int(range.get_value()) - settings.theming.transparency = tp - event_system.emit("update_transparency") diff --git a/src/core/widgets/miniview_widget.py b/src/core/widgets/miniview_widget.py deleted file mode 100644 index a0e1dca..0000000 --- a/src/core/widgets/miniview_widget.py +++ /dev/null @@ -1,40 +0,0 @@ -# Python imports - -# Lib imports -import gi -gi.require_version('GtkSource', '4') -from gi.repository.GtkSource import Map - - -# Application imports - - - -class MiniViewWidget(Map): - def __init__(self): - super(MiniViewWidget, self).__init__() - - self._setup_styling() - self._setup_signals() - self._subscribe_to_events() - self._load_widgets() - - self.show_all() - - - def _setup_styling(self): - self.set_hexpand(False) - ctx = self.get_style_context() - ctx.add_class("mini-view") - - def _setup_signals(self): - ... - - def _subscribe_to_events(self): - event_system.subscribe(f"set_source_view", self.set_source_view) - - def _load_widgets(self): - ... - - def set_source_view(self, source_view): - self.set_view(source_view) \ No newline at end of file diff --git a/src/core/widgets/save_file_dialog.py b/src/core/widgets/save_file_dialog.py deleted file mode 100644 index 75edede..0000000 --- a/src/core/widgets/save_file_dialog.py +++ /dev/null @@ -1,67 +0,0 @@ -# Python imports - -# Lib imports -import gi -gi.require_version('Gtk', '3.0') -from gi.repository import Gtk -from gi.repository import Gio - -# Application imports - - - -class SaveFileDialog: - """docstring for SaveFileDialog.""" - - def __init__(self): - super(SaveFileDialog, self).__init__() - - self._setup_styling() - self._setup_signals() - self._subscribe_to_events() - self._load_widgets() - - - def _setup_styling(self): - ... - - def _setup_signals(self): - ... - - def _subscribe_to_events(self): - event_system.subscribe("save_file_dialog", self.save_file_dialog) - - def _load_widgets(self): - self._file_filter_text = Gtk.FileFilter() - self._file_filter_text.set_name("Code Files") - - for p in settings.filters.code: - self._file_filter_text.add_pattern(p) - - self._file_filter_all = Gtk.FileFilter() - self._file_filter_all.set_name("All Files") - self._file_filter_all.add_pattern("*.*") - - - def save_file_dialog(self, current_filename: str = "", current_file: Gio.File = None) -> str: - # TODO: Move Chooser logic to own widget - dlg = Gtk.FileChooserDialog(title = "Please choose a file...", parent = None, action = 1) - - dlg.add_buttons("Cancel", Gtk.ResponseType.CANCEL, "Save", Gtk.ResponseType.OK) - dlg.set_do_overwrite_confirmation(True) - dlg.add_filter(self._file_filter_text) - dlg.add_filter(self._file_filter_all) - - if current_filename == "": - import os - dlg.set_current_name("new.txt") - dlg.set_current_folder(os.path.expanduser('~')) - else: - dlg.set_current_folder(current_file.get_parent().get_uri()) - dlg.set_current_name(current_filename) - - response = dlg.run() - file = dlg.get_filename() if response == Gtk.ResponseType.OK else "" - dlg.destroy() - - return Gio.File.new_for_path(file) if not file == "" else None \ No newline at end of file diff --git a/src/core/widgets/separator_widget.py b/src/core/widgets/separator_widget.py deleted file mode 100644 index 7725b21..0000000 --- a/src/core/widgets/separator_widget.py +++ /dev/null @@ -1,37 +0,0 @@ -# Python imports - -# Lib imports -import gi -gi.require_version('Gtk', '3.0') -from gi.repository import Gtk - -# Application imports - - - -class Separator(Gtk.Separator): - def __init__(self, id: str = None, ORIENTATION: int = 0): - super(Separator, self).__init__() - - builder = settings_manager.get_builder() - if id: - builder.expose_object(id, self) - - self.ORIENTATION = ORIENTATION - self._setup_styling() - self._setup_signals() - self._load_widgets() - - self.show() - - - def _setup_styling(self): - # HORIZONTAL = 0, VERTICAL = 1 - self.set_orientation(self.ORIENTATION) - - - def _setup_signals(self): - ... - - def _load_widgets(self): - ... diff --git a/src/core/widgets/tab_header_widget.py b/src/core/widgets/tab_header_widget.py deleted file mode 100644 index d8f69ff..0000000 --- a/src/core/widgets/tab_header_widget.py +++ /dev/null @@ -1,76 +0,0 @@ -# Python imports - -# Lib imports -import gi -gi.require_version('Gtk', '3.0') -from gi.repository import Gtk - -# Application imports - - - -class TabHeaderWidget(Gtk.Box): - """ docstring for TabHeaderWidget """ - - ccount = 0 - def __new__(cls, *args, **kwargs): - obj = super(TabHeaderWidget, cls).__new__(cls) - cls.ccount += 1 - return obj - - - def __init__(self, scroll_view, source_view, close_tab): - super(TabHeaderWidget, self).__init__() - - self.INDEX = self.ccount - self.NAME = f"tab_{self.INDEX}" - self._scroll_view = scroll_view - self._source_view = source_view - self._close_tab = close_tab # NOTE: Close method in tab_mixin - - self._setup_styling() - self._setup_signals() - self._subscribe_to_events() - self._load_widgets() - - self.set_tab_label() - self.show_all() - - - def _setup_styling(self): - self.set_orientation(0) - self.set_hexpand(False) - - def _setup_signals(self): - ... - - def _subscribe_to_events(self): - ... - - def _load_widgets(self): - label = Gtk.Label() - close = Gtk.Button() - icon = Gtk.Image(stock = Gtk.STOCK_CLOSE) - - # NOTE: Setup with settings and from file - label.set_xalign(0.0) - label.set_margin_left(25) - label.set_margin_right(25) - label.set_hexpand(True) - - close.set_always_show_image(True) - close.set_hexpand(False) - close.set_image( Gtk.Image.new_from_icon_name("gtk-close", 4) ) - close.connect("released", self._close_tab, *(self._scroll_view, self._source_view,)) - - self.add(label) - self.add(close) - - def set_tab_label(self, label = "untitled"): - self.get_children()[0].set_label(label) - - def set_status(self, changed = False): - label = self.get_children()[0] - ctx = label.get_style_context() - - ctx.add_class("buffer_changed") if changed else ctx.remove_class("buffer_changed") diff --git a/src/core/window.py b/src/core/window.py deleted file mode 100644 index 66b374a..0000000 --- a/src/core/window.py +++ /dev/null @@ -1,118 +0,0 @@ -# Python imports -import time -import signal - -# Lib imports -import gi -import cairo -gi.require_version('Gtk', '3.0') -gi.require_version('Gdk', '3.0') -from gi.repository import Gtk -from gi.repository import Gdk -from gi.repository import GLib - -# Application imports -from core.controller import Controller - - -class ControllerStartExceptiom(Exception): - ... - - - - -class Window(Gtk.ApplicationWindow): - """docstring for Window.""" - - def __init__(self, args, unknownargs): - super(Window, self).__init__() - settings_manager.set_main_window(self) - - self._controller = None - - self._set_window_data() - self._setup_styling() - self._setup_signals() - self._subscribe_to_events() - - self._load_widgets(args, unknownargs) - self._set_size_constraints() - - self.show() - - - def _setup_styling(self): - self.set_title(f"{app_name}") - self.set_icon_from_file( settings_manager.get_window_icon() ) - self.set_gravity(5) # 5 = CENTER - self.set_position(1) # 1 = CENTER, 4 = CENTER_ALWAYS - - ctx = self.get_style_context() - ctx.add_class("main-window") - - def _setup_signals(self): - self.connect("delete-event", self._tear_down) - GLib.unix_signal_add(GLib.PRIORITY_DEFAULT, signal.SIGINT, self._tear_down) - - def _subscribe_to_events(self): - event_system.subscribe("tear_down", self._tear_down) - - def _load_widgets(self, args, unknownargs): - if settings_manager.is_debug(): - self.set_interactive_debugging(True) - - self._controller = Controller(args, unknownargs) - if not self._controller: - raise ControllerStartException("Controller exited and doesn't exist...") - - self.add( self._controller.get_core_widget() ) - - def _set_size_constraints(self): - _window_x = settings.config.main_window_x - _window_y = settings.config.main_window_y - _min_width = settings.config.main_window_min_width - _min_height = settings.config.main_window_min_height - _width = settings.config.main_window_width - _height = settings.config.main_window_height - - self.move(_window_x, _window_y - 28) - self.set_size_request(_min_width, _min_height) - self.set_default_size(_width, _height) - - def _set_window_data(self) -> None: - screen = self.get_screen() - visual = screen.get_rgba_visual() - - if visual != None and screen.is_composited(): - self.set_visual(visual) - self.set_app_paintable(True) - self.connect("draw", self._area_draw) - - # bind css file - cssProvider = Gtk.CssProvider() - cssProvider.load_from_path( settings_manager.get_css_file() ) - screen = Gdk.Screen.get_default() - styleContext = Gtk.StyleContext() - styleContext.add_provider_for_screen(screen, cssProvider, Gtk.STYLE_PROVIDER_PRIORITY_USER) - - def _area_draw(self, widget: Gtk.ApplicationWindow, cr: cairo.Context) -> None: - cr.set_source_rgba( *settings_manager.get_paint_bg_color() ) - cr.set_operator(cairo.OPERATOR_SOURCE) - cr.paint() - cr.set_operator(cairo.OPERATOR_OVER) - - - def _tear_down(self, widget = None, eve = None): - event_system.emit("shutting_down") - - size = self.get_size() - pos = self.get_position() - - settings_manager.set_main_window_width(size.width) - settings_manager.set_main_window_height(size.height) - settings_manager.set_main_window_x(pos.root_x) - settings_manager.set_main_window_y(pos.root_y) - settings_manager.save_settings() - - settings_manager.clear_pid() - Gtk.main_quit() diff --git a/src/libs/__init__.py b/src/libs/__init__.py deleted file mode 100644 index a8e5edd..0000000 --- a/src/libs/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -""" - Utils module -""" diff --git a/src/libs/debugging.py b/src/libs/debugging.py deleted file mode 100644 index b84193a..0000000 --- a/src/libs/debugging.py +++ /dev/null @@ -1,52 +0,0 @@ -# Python imports - -# Lib imports - -# Application imports - - - -# Break into a Python console upon SIGUSR1 (Linux) or SIGBREAK (Windows: -# CTRL+Pause/Break). To be included in all production code, just in case. -def debug_signal_handler(signal, frame): - del signal - del frame - - try: - import rpdb2 - logger.debug("\n\nStarting embedded RPDB2 debugger. Password is 'foobar'\n\n") - rpdb2.start_embedded_debugger("foobar", True, True) - rpdb2.setbreak(depth=1) - return - except StandardError: - ... - - try: - from rfoo.utils import rconsole - logger.debug("\n\nStarting embedded rconsole debugger...\n\n") - rconsole.spawn_server() - return - except StandardError as ex: - ... - - try: - from pudb import set_trace - logger.debug("\n\nStarting PuDB debugger...\n\n") - set_trace(paused = True) - return - except StandardError as ex: - ... - - try: - import pdb - logger.debug("\n\nStarting embedded PDB debugger...\n\n") - pdb.Pdb(skip=['gi.*']).set_trace() - return - except StandardError as ex: - ... - - try: - import code - code.interact() - except StandardError as ex: - logger.debug(f"{ex}, returning to normal program flow...") diff --git a/src/libs/endpoint_registry.py b/src/libs/endpoint_registry.py deleted file mode 100644 index 15ffa9e..0000000 --- a/src/libs/endpoint_registry.py +++ /dev/null @@ -1,22 +0,0 @@ -# Python imports - -# Lib imports - -# Application imports - - - - -class EndpointRegistry(): - def __init__(self): - self._endpoints = {} - - def register(self, rule, **options): - def decorator(f): - self._endpoints[rule] = f - return f - - return decorator - - def get_endpoints(self): - return self._endpoints diff --git a/src/libs/event_system.py b/src/libs/event_system.py deleted file mode 100644 index cd6975f..0000000 --- a/src/libs/event_system.py +++ /dev/null @@ -1,73 +0,0 @@ -# Python imports -from collections import defaultdict - -# Lib imports - -# Application imports -from .singleton import Singleton - - - -class EventSystem(Singleton): - """ Create event system. """ - - def __init__(self): - self.subscribers = defaultdict(list) - self._is_paused = False - - self._subscribe_to_events() - - - def _subscribe_to_events(self): - self.subscribe("pause_event_processing", self._pause_processing_events) - self.subscribe("resume_event_processing", self._resume_processing_events) - - def _pause_processing_events(self): - self._is_paused = True - - def _resume_processing_events(self): - self._is_paused = False - - def subscribe(self, event_type, fn): - self.subscribers[event_type].append(fn) - - def unsubscribe(self, event_type, fn): - self.subscribers[event_type].remove(fn) - - def unsubscribe_all(self, event_type): - self.subscribers.pop(event_type, None) - - def emit(self, event_type, data = None): - if self._is_paused and event_type != "resume_event_processing": - return - - if event_type in self.subscribers: - for fn in self.subscribers[event_type]: - if data: - if hasattr(data, '__iter__') and not type(data) is str: - fn(*data) - else: - fn(data) - else: - fn() - - def emit_and_await(self, event_type, data = None): - if self._is_paused and event_type != "resume_event_processing": - return - - """ NOTE: Should be used when signal has only one listener and vis-a-vis """ - if event_type in self.subscribers: - response = None - for fn in self.subscribers[event_type]: - if data: - if hasattr(data, '__iter__') and not type(data) is str: - response = fn(*data) - else: - response = fn(data) - else: - response = fn() - - if not response in (None, ''): - break - - return response diff --git a/src/libs/ipc_server.py b/src/libs/ipc_server.py deleted file mode 100644 index 848044e..0000000 --- a/src/libs/ipc_server.py +++ /dev/null @@ -1,126 +0,0 @@ -# Python imports -import os -import threading -import time -from multiprocessing.connection import Client -from multiprocessing.connection import Listener - -# Lib imports -from gi.repository import GLib - -# Application imports - - - - -class IPCServer: - """ Create a listener so that other {app_name} instances send requests back to existing instance. """ - def __init__(self, ipc_address: str = '127.0.0.1', conn_type: str = "socket"): - self.is_ipc_alive = False - self._ipc_port = 4848 - self._ipc_address = ipc_address - self._conn_type = conn_type - self._ipc_authkey = b'' + bytes(f'{app_name}-ipc', 'utf-8') - self._ipc_timeout = 15.0 - - if conn_type == "socket": - self._ipc_address = f'/tmp/{app_name}-ipc.sock' - elif conn_type == "full_network": - self._ipc_address = '0.0.0.0' - elif conn_type == "full_network_unsecured": - self._ipc_authkey = None - self._ipc_address = '0.0.0.0' - elif conn_type == "local_network_unsecured": - self._ipc_authkey = None - - self._subscribe_to_events() - - def _subscribe_to_events(self): - event_system.subscribe("post_file_to_ipc", self.send_ipc_message) - - - def create_ipc_listener(self) -> None: - if self._conn_type == "socket": - if os.path.exists(self._ipc_address) and settings_manager.is_dirty_start(): - os.unlink(self._ipc_address) - - listener = Listener(address = self._ipc_address, family = "AF_UNIX", authkey = self._ipc_authkey) - elif "unsecured" not in self._conn_type: - listener = Listener((self._ipc_address, self._ipc_port), authkey = self._ipc_authkey) - else: - listener = Listener((self._ipc_address, self._ipc_port)) - - self.is_ipc_alive = True - self._run_ipc_loop(listener) - - @daemon_threaded - def _run_ipc_loop(self, listener) -> None: - while True: - try: - conn = listener.accept() - start_time = time.perf_counter() - GLib.idle_add(self._handle_ipc_message, *(conn, start_time,)) - except Exception as e: - logger.debug( repr(e) ) - - listener.close() - - def _handle_ipc_message(self, conn, start_time) -> None: - while True: - msg = conn.recv() - logger.debug(msg) - - if "FILE|" in msg: - file = msg.split("FILE|")[1].strip() - if file: - event_system.emit("handle_file_from_ipc", file) - - conn.close() - break - - - if msg in ['close connection', 'close server']: - conn.close() - break - - # NOTE: Not perfect but insures we don't lock up the connection for too long. - end_time = time.perf_counter() - if (end_time - start_time) > self._ipc_timeout: - conn.close() - break - - - def send_ipc_message(self, message: str = "Empty Data...") -> None: - try: - if self._conn_type == "socket": - conn = Client(address=self._ipc_address, family="AF_UNIX", authkey=self._ipc_authkey) - elif "unsecured" not in self._conn_type: - conn = Client((self._ipc_address, self._ipc_port), authkey=self._ipc_authkey) - else: - conn = Client((self._ipc_address, self._ipc_port)) - - conn.send(message) - conn.close() - except ConnectionRefusedError as e: - logger.error("Connection refused...") - except Exception as e: - logger.error( repr(e) ) - - - def send_test_ipc_message(self, message: str = "Empty Data...") -> None: - try: - if self._conn_type == "socket": - conn = Client(address=self._ipc_address, family="AF_UNIX", authkey=self._ipc_authkey) - elif "unsecured" not in self._conn_type: - conn = Client((self._ipc_address, self._ipc_port), authkey=self._ipc_authkey) - else: - conn = Client((self._ipc_address, self._ipc_port)) - - conn.send(message) - conn.close() - except ConnectionRefusedError as e: - if self._conn_type == "socket": - logger.error("IPC Socket no longer valid.... Removing.") - os.unlink(self._ipc_address) - except Exception as e: - logger.error( repr(e) ) \ No newline at end of file diff --git a/src/libs/keybindings.py b/src/libs/keybindings.py deleted file mode 100644 index 3571207..0000000 --- a/src/libs/keybindings.py +++ /dev/null @@ -1,138 +0,0 @@ -# Python imports -import re - -# Lib imports -import gi -gi.require_version('Gdk', '3.0') -from gi.repository import Gdk - -# Application imports - - - - -def logger(log = ""): - print(log) - - -class KeymapError(Exception): - """ Custom exception for errors in keybinding configurations """ - -MODIFIER = re.compile('<([^<]+)>') -class Keybindings: - """ Class to handle loading and lookup of Terminator keybindings """ - - modifiers = { - 'ctrl': Gdk.ModifierType.CONTROL_MASK, - 'control': Gdk.ModifierType.CONTROL_MASK, - 'primary': Gdk.ModifierType.CONTROL_MASK, - 'shift': Gdk.ModifierType.SHIFT_MASK, - 'alt': Gdk.ModifierType.MOD1_MASK, - 'super': Gdk.ModifierType.SUPER_MASK, - 'hyper': Gdk.ModifierType.HYPER_MASK, - 'mod2': Gdk.ModifierType.MOD2_MASK - } - - empty = {} - keys = None - _masks = None - _lookup = None - - def __init__(self): - self.keymap = Gdk.Keymap.get_default() - self.configure({}) - - def print_keys(self): - print(self.keys) - - def append_bindings(self, combos): - """ Accept new binding(s) and reload """ - for item in combos: - method, keys = item.split(":") - self.keys[method] = keys - - self.reload() - - def configure(self, bindings): - """ Accept new bindings and reconfigure with them """ - self.keys = bindings - self.reload() - - def reload(self): - """ Parse bindings and mangle into an appropriate form """ - self._lookup = {} - self._masks = 0 - - for action, bindings in list(self.keys.items()): - if isinstance(bindings, list): - bindings = (*bindings,) - elif not isinstance(bindings, tuple): - bindings = (bindings,) - - - for binding in bindings: - if not binding or binding == "None": - continue - - try: - keyval, mask = self._parsebinding(binding) - # Does much the same, but with worse error handling. - # keyval, mask = Gtk.accelerator_parse(binding) - except KeymapError as e: - logger(f"Keybinding reload failed to parse binding '{binding}': {e}") - else: - if mask & Gdk.ModifierType.SHIFT_MASK: - if keyval == Gdk.KEY_Tab: - keyval = Gdk.KEY_ISO_Left_Tab - mask &= ~Gdk.ModifierType.SHIFT_MASK - else: - keyvals = Gdk.keyval_convert_case(keyval) - if keyvals[0] != keyvals[1]: - keyval = keyvals[1] - mask &= ~Gdk.ModifierType.SHIFT_MASK - else: - keyval = Gdk.keyval_to_lower(keyval) - - self._lookup.setdefault(mask, {}) - self._lookup[mask][keyval] = action - self._masks |= mask - - def _parsebinding(self, binding): - """ Parse an individual binding using Gtk's binding function """ - mask = 0 - modifiers = re.findall(MODIFIER, binding) - - if modifiers: - for modifier in modifiers: - mask |= self._lookup_modifier(modifier) - - key = re.sub(MODIFIER, '', binding) - if key == '': - raise KeymapError('No key found!') - - keyval = Gdk.keyval_from_name(key) - - if keyval == 0: - raise KeymapError(f"Key '{key}' is unrecognised...") - return (keyval, mask) - - def _lookup_modifier(self, modifier): - """ Map modifier names to gtk values """ - try: - return self.modifiers[modifier.lower()] - except KeyError: - raise KeymapError(f"Unhandled modifier '<{modifier}>'") - - def lookup(self, event): - """ Translate a keyboard event into a mapped key """ - try: - _found, keyval, _egp, _lvl, consumed = self.keymap.translate_keyboard_state( - event.hardware_keycode, - Gdk.ModifierType(event.get_state() & ~Gdk.ModifierType.LOCK_MASK), - event.group) - except TypeError: - logger(f"Keybinding lookup failed to translate keyboard event: {dir(event)}") - return None - - mask = (event.get_state() & ~consumed) & self._masks - return self._lookup.get(mask, self.empty).get(keyval, None) diff --git a/src/libs/logger.py b/src/libs/logger.py deleted file mode 100644 index 6ca2add..0000000 --- a/src/libs/logger.py +++ /dev/null @@ -1,61 +0,0 @@ -# Python imports -import os -import logging - -# Lib imports - -# Application imports - - - - -class Logger: - """ - Create a new logging object and return it. - :note: - NOSET # Don't know the actual log level of this... (defaulting or literally none?) - Log Levels (From least to most) - Type Value - CRITICAL 50 - ERROR 40 - WARNING 30 - INFO 20 - DEBUG 10 - :param loggerName: Sets the name of the logger object. (Used in log lines) - :param createFile: Whether we create a log file or just pump to terminal - - :return: the logging object we created - """ - - def __init__(self, config_path: str, _ch_log_lvl = logging.CRITICAL, _fh_log_lvl = logging.INFO): - self._CONFIG_PATH = config_path - self.global_lvl = logging.DEBUG # Keep this at highest so that handlers can filter to their desired levels - self.ch_log_lvl = _ch_log_lvl # Prety much the only one we ever change - self.fh_log_lvl = _fh_log_lvl - - def get_logger(self, loggerName: str = "NO_LOGGER_NAME_PASSED", createFile: bool = True) -> logging.Logger: - log = logging.getLogger(loggerName) - log.setLevel(self.global_lvl) - - # Set our log output styles - fFormatter = logging.Formatter('[%(asctime)s] %(pathname)s:%(lineno)d %(levelname)s - %(message)s', '%m-%d %H:%M:%S') - cFormatter = logging.Formatter('%(pathname)s:%(lineno)d] %(levelname)s - %(message)s') - - ch = logging.StreamHandler() - ch.setLevel(level=self.ch_log_lvl) - ch.setFormatter(cFormatter) - log.addHandler(ch) - - if createFile: - folder = self._CONFIG_PATH - file = f"{folder}/application.log" - - if not os.path.exists(folder): - os.mkdir(folder) - - fh = logging.FileHandler(file) - fh.setLevel(level=self.fh_log_lvl) - fh.setFormatter(fFormatter) - log.addHandler(fh) - - return log diff --git a/src/libs/settings_manager/__init__.py b/src/libs/settings_manager/__init__.py deleted file mode 100644 index a0b3452..0000000 --- a/src/libs/settings_manager/__init__.py +++ /dev/null @@ -1,4 +0,0 @@ -""" - Settings module -""" -from .manager import SettingsManager diff --git a/src/libs/settings_manager/manager.py b/src/libs/settings_manager/manager.py deleted file mode 100644 index b37b78c..0000000 --- a/src/libs/settings_manager/manager.py +++ /dev/null @@ -1,174 +0,0 @@ -# Python imports -import inspect -import json -from os import path -from os import mkdir - -# Lib imports - -# Application imports -from ..singleton import Singleton -from .start_check_mixin import StartCheckMixin -from .options.settings import Settings - - - -class MissingConfigError(Exception): - pass - - - -class SettingsManager(StartCheckMixin, Singleton): - def __init__(self): - self._SCRIPT_PTH = path.dirname(path.realpath(__file__)) - self._USER_HOME = path.expanduser('~') - self._HOME_CONFIG_PATH = f"{self._USER_HOME}/.config/{app_name.lower()}" - self._USR_PATH = f"/usr/share/{app_name.lower()}" - self._USR_CONFIG_FILE = f"{self._USR_PATH}/settings.json" - - self._PLUGINS_PATH = f"{self._HOME_CONFIG_PATH}/plugins" - self._DEFAULT_ICONS = f"{self._HOME_CONFIG_PATH}/icons" - self._CONFIG_FILE = f"{self._HOME_CONFIG_PATH}/settings.json" - self._GLADE_FILE = f"{self._HOME_CONFIG_PATH}/Main_Window.glade" - self._CSS_FILE = f"{self._HOME_CONFIG_PATH}/stylesheet.css" - self._KEY_BINDINGS_FILE = f"{self._HOME_CONFIG_PATH}/key-bindings.json" - self._PID_FILE = f"{self._HOME_CONFIG_PATH}/{app_name.lower()}.pid" - self._UI_WIDEGTS_PATH = f"{self._HOME_CONFIG_PATH}/ui_widgets" - self._CONTEXT_MENU = f"{self._HOME_CONFIG_PATH}/contexct_menu.json" - self._WINDOW_ICON = f"{self._DEFAULT_ICONS}/{app_name.lower()}.png" - - if not path.exists(self._HOME_CONFIG_PATH): - mkdir(self._HOME_CONFIG_PATH) - if not path.exists(self._PLUGINS_PATH): - mkdir(self._PLUGINS_PATH) - - if not path.exists(self._DEFAULT_ICONS): - self._DEFAULT_ICONS = f"{self._USR_PATH}/icons" - if not path.exists(self._DEFAULT_ICONS): - raise MissingConfigError("Unable to find the application icons directory.") - if not path.exists(self._GLADE_FILE): - self._GLADE_FILE = f"{self._USR_PATH}/Main_Window.glade" - if not path.exists(self._GLADE_FILE): - raise MissingConfigError("Unable to find the application Glade file.") - if not path.exists(self._KEY_BINDINGS_FILE): - self._KEY_BINDINGS_FILE = f"{self._USR_PATH}/key-bindings.json" - if not path.exists(self._KEY_BINDINGS_FILE): - raise MissingConfigError("Unable to find the application Keybindings file.") - if not path.exists(self._CSS_FILE): - self._CSS_FILE = f"{self._USR_PATH}/stylesheet.css" - if not path.exists(self._CSS_FILE): - raise MissingConfigError("Unable to find the application Stylesheet file.") - if not path.exists(self._WINDOW_ICON): - self._WINDOW_ICON = f"{self._USR_PATH}/icons/{app_name.lower()}.png" - if not path.exists(self._WINDOW_ICON): - raise MissingConfigError("Unable to find the application icon.") - if not path.exists(self._UI_WIDEGTS_PATH): - self._UI_WIDEGTS_PATH = f"{self._USR_PATH}/ui_widgets" - if not path.exists(self._CONTEXT_MENU): - self._CONTEXT_MENU = f"{self._USR_PATH}/contexct_menu.json" - - - try: - with open(self._KEY_BINDINGS_FILE) as file: - bindings = json.load(file)["keybindings"] - keybindings.configure(bindings) - except Exception as e: - print( f"Settings Manager: {self._KEY_BINDINGS_FILE}\n\t\t{repr(e)}" ) - - try: - with open(self._CONTEXT_MENU) as file: - self._context_menu_data = json.load(file) - except Exception as e: - print( f"Settings Manager: {self._CONTEXT_MENU}\n\t\t{repr(e)}" ) - - - self.settings: Settings = None - self._main_window = None - self._builder = None - self.PAINT_BG_COLOR = (0, 0, 0, 0.0) - - self._trace_debug = False - self._debug = False - self._dirty_start = False - self._passed_in_file = False - - - def register_signals_to_builder(self, classes=None): - handlers = {} - - for c in classes: - methods = None - try: - methods = inspect.getmembers(c, predicate=inspect.ismethod) - handlers.update(methods) - except Exception as e: - ... - - self._builder.connect_signals(handlers) - - def set_main_window(self, window): self._main_window = window - def set_builder(self, builder) -> any: self._builder = builder - - - def get_monitor_data(self) -> list: - screen = self._main_window.get_screen() - monitors = [] - for m in range(screen.get_n_monitors()): - monitors.append(screen.get_monitor_geometry(m)) - print("{}x{}+{}+{}".format(monitor.width, monitor.height, monitor.x, monitor.y)) - - return monitors - - def get_main_window(self) -> any: return self._main_window - def get_builder(self) -> any: return self._builder - def get_paint_bg_color(self) -> any: return self.PAINT_BG_COLOR - def get_glade_file(self) -> str: return self._GLADE_FILE - def get_ui_widgets_path(self) -> str: return self._UI_WIDEGTS_PATH - def get_context_menu_data(self) -> str: return self._context_menu_data - - def get_plugins_path(self) -> str: return self._PLUGINS_PATH - def get_icon_theme(self) -> str: return self._ICON_THEME - def get_css_file(self) -> str: return self._CSS_FILE - def get_home_config_path(self) -> str: return self._HOME_CONFIG_PATH - def get_window_icon(self) -> str: return self._WINDOW_ICON - def get_home_path(self) -> str: return self._USER_HOME - - def is_trace_debug(self) -> str: return self._trace_debug - def is_debug(self) -> str: return self._debug - def is_starting_with_file(self) -> bool: return self._passed_in_file - - def call_method(self, target_class = None, _method_name = None, data = None): - method_name = str(_method_name) - method = getattr(target_class, method_name, lambda data: f"No valid key passed...\nkey={method_name}\nargs={data}") - return method(data) if data else method() - - def set_main_window_x(self, x = 0): self.settings.config.main_window_x = x - def set_main_window_y(self, y = 0): self.settings.config.main_window_y = y - def set_main_window_width(self, width = 800): self.settings.config.main_window_width = width - def set_main_window_height(self, height = 600): self.settings.config.main_window_height = height - def set_main_window_min_width(self, width = 720): self.settings.config.main_window_min_width = width - def set_main_window_min_height(self, height = 480): self.settings.config.main_window_min_height = height - - def set_trace_debug(self, trace_debug): - self._trace_debug = trace_debug - - def set_debug(self, debug): - self._debug = debug - - def set_is_starting_with_file(self, is_passed_in_file: False): - self._passed_in_file = is_passed_in_file - - - def load_settings(self): - if not path.exists(self._CONFIG_FILE): - self.settings = Settings() - return - - with open(self._CONFIG_FILE) as file: - data = json.load(file) - data["load_defaults"] = False - self.settings = Settings(**data) - - def save_settings(self): - with open(self._CONFIG_FILE, 'w') as outfile: - json.dump(self.settings.as_dict(), outfile, separators=(',', ':'), indent=4) diff --git a/src/libs/settings_manager/options/__init__.py b/src/libs/settings_manager/options/__init__.py deleted file mode 100644 index 0046efd..0000000 --- a/src/libs/settings_manager/options/__init__.py +++ /dev/null @@ -1,8 +0,0 @@ -""" - Options module -""" -from .settings import Settings -from .config import Config -from .filters import Filters -from .theming import Theming -from .debugging import Debugging diff --git a/src/libs/settings_manager/options/config.py b/src/libs/settings_manager/options/config.py deleted file mode 100644 index 049d02e..0000000 --- a/src/libs/settings_manager/options/config.py +++ /dev/null @@ -1,35 +0,0 @@ -# Python imports -from dataclasses import dataclass, field - -# Lib imports - -# Application imports - - -@dataclass -class Config: - base_of_home: str = "" - hide_hidden_files: str = "true" - thumbnailer_path: str = "ffmpegthumbnailer" - blender_thumbnailer_path: str = "" - go_past_home: str = "true" - lock_folder: str = "false" - locked_folders: list = field(default_factory=lambda: [ "venv", "flasks" ]) - mplayer_options: str = "-quiet -really-quiet -xy 1600 -geometry 50%:50%", - music_app: str = "/opt/deadbeef/bin/deadbeef" - media_app: str = "mpv" - image_app: str = "mirage" - office_app: str = "libreoffice" - pdf_app: str = "evince" - code_app: str = "atom" - text_app: str = "leafpad" - file_manager_app: str = "solarfm" - terminal_app: str = "terminator" - remux_folder_max_disk_usage: str = "8589934592" - make_transparent: int = 0 - main_window_x: int = 721 - main_window_y: int = 465 - main_window_min_width: int = 720 - main_window_min_height: int = 480 - main_window_width: int = 800 - main_window_height: int = 600 diff --git a/src/libs/settings_manager/options/debugging.py b/src/libs/settings_manager/options/debugging.py deleted file mode 100644 index 3fc605d..0000000 --- a/src/libs/settings_manager/options/debugging.py +++ /dev/null @@ -1,12 +0,0 @@ -# Python imports -from dataclasses import dataclass - -# Lib imports - -# Application imports - - -@dataclass -class Debugging: - ch_log_lvl: int = 10 - fh_log_lvl: int = 20 diff --git a/src/libs/settings_manager/options/filters.py b/src/libs/settings_manager/options/filters.py deleted file mode 100644 index 34e06f1..0000000 --- a/src/libs/settings_manager/options/filters.py +++ /dev/null @@ -1,90 +0,0 @@ -# Python imports -from dataclasses import dataclass, field - -# Lib imports - -# Application imports - - -@dataclass -class Filters: - meshs: list = field(default_factory=lambda: [ - ".blend", - ".dae", - ".fbx", - ".gltf", - ".obj", - ".stl" - ]) - code: list = field(default_factory=lambda: [ - ".txt", - ".py", - ".c", - ".h", - ".cpp", - ".csv", - ".m3*", - ".lua", - ".js", - ".toml", - ".xml", - ".pom", - ".htm", - ".md", - ".vala", - ".tsv", - ".css", - ".html", - ".json", - ".java", - ".go", - ".php", - ".ts", - ".rs" - ]) - videos: list = field(default_factory=lambda:[ - ".mkv", - ".mp4", - ".webm", - ".avi", - ".mov", - ".m4v", - ".mpg", - ".mpeg", - ".wmv", - ".flv" - ]) - office: list = field(default_factory=lambda: [ - ".doc", - ".docx", - ".xls", - ".xlsx", - ".xlt", - ".xltx", - ".xlm", - ".ppt", - ".pptx", - ".pps", - ".ppsx", - ".odt", - ".rtf" - ]) - images: list = field(default_factory=lambda: [ - ".png", - ".jpg", - ".jpeg", - ".gif", - ".ico", - ".tga", - ".webp" - ]) - music: list = field(default_factory=lambda: [ - ".psf", - ".mp3", - ".ogg", - ".flac", - ".m4a" - ]) - pdf: list = field(default_factory=lambda: [ - ".pdf" - ]) diff --git a/src/libs/settings_manager/options/settings.py b/src/libs/settings_manager/options/settings.py deleted file mode 100644 index 0e3597b..0000000 --- a/src/libs/settings_manager/options/settings.py +++ /dev/null @@ -1,31 +0,0 @@ -# Python imports -from dataclasses import dataclass, field -from dataclasses import asdict - -# Gtk imports - -# Application imports -from .config import Config -from .filters import Filters -from .theming import Theming -from .debugging import Debugging - - -@dataclass -class Settings: - load_defaults: bool = True - config: Config = field(default_factory=lambda: Config()) - filters: Filters = field(default_factory=lambda: Filters()) - theming: Theming = field(default_factory=lambda: Theming()) - debugging: Debugging = field(default_factory=lambda: Debugging()) - - def __post_init__(self): - if not self.load_defaults: - self.load_defaults = False - self.config = Config(**self.config) - self.filters = Filters(**self.filters) - self.theming = Theming(**self.theming) - self.debugging = Debugging(**self.debugging) - - def as_dict(self): - return asdict(self) diff --git a/src/libs/settings_manager/options/theming.py b/src/libs/settings_manager/options/theming.py deleted file mode 100644 index 12efaf6..0000000 --- a/src/libs/settings_manager/options/theming.py +++ /dev/null @@ -1,16 +0,0 @@ -# Python imports -from dataclasses import dataclass - -# Lib imports - -# Application imports - - -@dataclass -class Theming: - transparency: int = 62 - default_zoom: int = 12 - syntax_theme: str = "tango" - success_color: str = "#88cc27" - warning_color: str = "#ffa800" - error_color: str = "#ff0000" diff --git a/src/libs/settings_manager/start_check_mixin.py b/src/libs/settings_manager/start_check_mixin.py deleted file mode 100644 index 688da36..0000000 --- a/src/libs/settings_manager/start_check_mixin.py +++ /dev/null @@ -1,51 +0,0 @@ -# Python imports -import os -import json -import inspect - -# Lib imports - -# Application imports - - - - -class StartCheckMixin: - def is_dirty_start(self) -> bool: return self._dirty_start - def clear_pid(self): self._clean_pid() - - def do_dirty_start_check(self): - if not os.path.exists(self._PID_FILE): - self._write_new_pid() - else: - with open(self._PID_FILE, "r") as _pid: - pid = _pid.readline().strip() - if pid not in ("", None): - self._check_alive_status(int(pid)) - else: - self._write_new_pid() - - """ Check For the existence of a unix pid. """ - def _check_alive_status(self, pid): - print(f"PID Found: {pid}") - try: - os.kill(pid, 0) - except OSError: - print(f"{app_name} is starting dirty...") - self._dirty_start = True - self._write_new_pid() - return - - print("PID is alive... Let downstream errors (sans debug args) handle app closure propigation.") - - def _write_new_pid(self): - pid = os.getpid() - self._write_pid(pid) - print(f"{app_name} PID: {pid}") - - def _clean_pid(self): - os.unlink(self._PID_FILE) - - def _write_pid(self, pid): - with open(self._PID_FILE, "w") as _pid: - _pid.write(f"{pid}") diff --git a/src/libs/singleton.py b/src/libs/singleton.py deleted file mode 100644 index ee85368..0000000 --- a/src/libs/singleton.py +++ /dev/null @@ -1,23 +0,0 @@ -# Python imports - -# Lib imports - -# Application imports - - -class SingletonError(Exception): - pass - - - -class Singleton: - ccount = 0 - - def __new__(cls, *args, **kwargs): - obj = super(Singleton, cls).__new__(cls) - cls.ccount += 1 - - if cls.ccount == 2: - raise SingletonError(f"Exceeded {cls.__name__} instantiation limit...") - - return obj diff --git a/src/plugins/__init__.py b/src/plugins/__init__.py deleted file mode 100644 index 5624b32..0000000 --- a/src/plugins/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -""" - Gtk Bound Plugins Module -""" diff --git a/src/plugins/manifest.py b/src/plugins/manifest.py deleted file mode 100644 index 1b93f34..0000000 --- a/src/plugins/manifest.py +++ /dev/null @@ -1,68 +0,0 @@ -# Python imports -import os -import json -from os.path import join - -# Lib imports - -# Application imports - - - - -class ManifestProcessor(Exception): - ... - - -class Plugin: - path: str = None - name: str = None - author: str = None - version: str = None - support: str = None - requests:{} = None - reference: type = None - - -class ManifestProcessor: - def __init__(self, path, builder): - manifest = join(path, "manifest.json") - if not os.path.exists(manifest): - raise Exception("Invalid Plugin Structure: Plugin doesn't have 'manifest.json'. Aboarting load...") - - self._path = path - self._builder = builder - with open(manifest) as f: - data = json.load(f) - self._manifest = data["manifest"] - self._plugin = self.collect_info() - - def collect_info(self) -> Plugin: - plugin = Plugin() - plugin.path = self._path - plugin.name = self._manifest["name"] - plugin.author = self._manifest["author"] - plugin.version = self._manifest["version"] - plugin.support = self._manifest["support"] - plugin.requests = self._manifest["requests"] - - return plugin - - def get_loading_data(self): - loading_data = {} - requests = self._plugin.requests - keys = requests.keys() - - if "pass_events" in keys: - if requests["pass_events"] in ["true"]: - loading_data["pass_events"] = True - - if "bind_keys" in keys: - if isinstance(requests["bind_keys"], list): - loading_data["bind_keys"] = requests["bind_keys"] - - if "pass_ui_objects" in keys: - if isinstance(requests["pass_ui_objects"], list): - loading_data["pass_ui_objects"] = [ self._builder.get_object(obj) for obj in requests["pass_ui_objects"] ] - - return self._plugin, loading_data diff --git a/src/plugins/plugin_base.py b/src/plugins/plugin_base.py deleted file mode 100644 index 3650495..0000000 --- a/src/plugins/plugin_base.py +++ /dev/null @@ -1,92 +0,0 @@ -# Python imports -import os -import time -import inspect - -# Lib imports - -# Application imports - - -class PluginBaseException(Exception): - ... - - -class PluginBase: - def __init__(self, **kwargs): - super().__init__(**kwargs) - self.name = "Example Plugin" # NOTE: Need to remove after establishing private bidirectional 1-1 message bus - # where self.name should not be needed for message comms - - self._builder = None - self._ui_objects = None - self._event_system = None - - - def run(self): - """ - Must define regardless if needed and can 'pass' if plugin doesn't need it. - Is intended to be used to setup internal signals or custom Gtk Builders/UI logic. - """ - raise PluginBaseException("Method hasn't been overriden...") - - def generate_reference_ui_element(self): - """ - Requests Key: 'ui_target': "plugin_control_list", - Must define regardless if needed and can 'pass' if plugin doesn't use it. - Must return a widget if "ui_target" is set. - """ - raise PluginBaseException("Method hasn't been overriden...") - - def set_ui_object_collection(self, ui_objects): - """ - Requests Key: "pass_ui_objects": [""] - Request reference to a UI component. Will be passed back as array to plugin. - Must define in plugin if set and an array of valid glade UI IDs is given. - """ - self._ui_objects = ui_objects - - def set_event_system(self, event_system): - """ - Requests Key: 'pass_events': "true" - Must define in plugin if "pass_events" is set to "true" string. - """ - self._event_system = event_system - - def subscribe_to_events(self): - ... - - def _connect_builder_signals(self, caller_class, builder): - classes = [caller_class] - handlers = {} - for c in classes: - methods = None - try: - methods = inspect.getmembers(c, predicate=inspect.ismethod) - handlers.update(methods) - except Exception as e: - logger.debug(repr(e)) - - builder.connect_signals(handlers) - - def reload_package(self, plugin_path, module_dict_main=locals()): - import importlib - from pathlib import Path - - def reload_package_recursive(current_dir, module_dict): - for path in current_dir.iterdir(): - if "__init__" in str(path) or path.stem not in module_dict: - continue - - if path.is_file() and path.suffix == ".py": - importlib.reload(module_dict[path.stem]) - elif path.is_dir(): - reload_package_recursive(path, module_dict[path.stem].__dict__) - - reload_package_recursive(Path(plugin_path).parent, module_dict_main["module_dict_main"]) - - - def clear_children(self, widget: type) -> None: - """ Clear children of a gtk widget. """ - for child in widget.get_children(): - widget.remove(child) diff --git a/src/plugins/plugins_controller.py b/src/plugins/plugins_controller.py deleted file mode 100644 index 1b88ab5..0000000 --- a/src/plugins/plugins_controller.py +++ /dev/null @@ -1,119 +0,0 @@ -# Python imports -import os -import sys -import importlib -import traceback -from os.path import join -from os.path import isdir - -# Lib imports -import gi -gi.require_version('Gtk', '3.0') -from gi.repository import Gtk -from gi.repository import Gio - -# Application imports -from .manifest import Plugin -from .manifest import ManifestProcessor - - - - -class InvalidPluginException(Exception): - ... - - -class PluginsController: - """PluginsController controller""" - - def __init__(self): - path = os.path.dirname(os.path.realpath(__file__)) - sys.path.insert(0, path) # NOTE: I think I'm not using this correctly... - - self._builder = settings_manager.get_builder() - self._plugins_path = settings_manager.get_plugins_path() - - self._plugins_dir_watcher = None - self._plugin_collection = [] - - - def launch_plugins(self) -> None: - self._set_plugins_watcher() - self.load_plugins() - - def _set_plugins_watcher(self) -> None: - self._plugins_dir_watcher = Gio.File.new_for_path(self._plugins_path) \ - .monitor_directory(Gio.FileMonitorFlags.WATCH_MOVES, Gio.Cancellable()) - self._plugins_dir_watcher.connect("changed", self._on_plugins_changed, ()) - - def _on_plugins_changed(self, file_monitor, file, other_file=None, eve_type=None, data=None): - if eve_type in [Gio.FileMonitorEvent.CREATED, Gio.FileMonitorEvent.DELETED, - Gio.FileMonitorEvent.RENAMED, Gio.FileMonitorEvent.MOVED_IN, - Gio.FileMonitorEvent.MOVED_OUT]: - self.reload_plugins(file) - - def load_plugins(self, file: str = None) -> None: - logger.info(f"Loading plugins...") - parent_path = os.getcwd() - - for path, folder in [[join(self._plugins_path, item), item] if os.path.isdir(join(self._plugins_path, item)) else None for item in os.listdir(self._plugins_path)]: - try: - target = join(path, "plugin.py") - manifest = ManifestProcessor(path, self._builder) - - if not os.path.exists(target): - raise InvalidPluginException("Invalid Plugin Structure: Plugin doesn't have 'plugin.py'. Aboarting load...") - - plugin, loading_data = manifest.get_loading_data() - module = self.load_plugin_module(path, folder, target) - self.execute_plugin(module, plugin, loading_data) - except Exception as e: - logger.info(f"Malformed Plugin: Not loading -->: '{folder}' !") - logger.debug("Trace: ", traceback.print_exc()) - - os.chdir(parent_path) - - - def load_plugin_module(self, path, folder, target): - os.chdir(path) - - locations = [] - self.collect_search_locations(path, locations) - - spec = importlib.util.spec_from_file_location(folder, target, submodule_search_locations = locations) - module = importlib.util.module_from_spec(spec) - sys.modules[folder] = module - spec.loader.exec_module(module) - - return module - - def collect_search_locations(self, path, locations): - locations.append(path) - for file in os.listdir(path): - _path = os.path.join(path, file) - if os.path.isdir(_path): - self.collect_search_locations(_path, locations) - - def execute_plugin(self, module: type, plugin: Plugin, loading_data: []): - plugin.reference = module.Plugin() - keys = loading_data.keys() - - if "ui_target" in keys: - loading_data["ui_target"].add( plugin.reference.generate_reference_ui_element() ) - loading_data["ui_target"].show_all() - - if "pass_ui_objects" in keys: - plugin.reference.set_ui_object_collection( loading_data["pass_ui_objects"] ) - - if "pass_events" in keys: - plugin.reference.set_event_system(event_system) - plugin.reference.subscribe_to_events() - - if "bind_keys" in keys: - keybindings.append_bindings( loading_data["bind_keys"] ) - - plugin.reference.run() - self._plugin_collection.append(plugin) - - def reload_plugins(self, file: str = None) -> None: - logger.info(f"Reloading plugins... stub.") diff --git a/user_config/bin/newton b/user_config/bin/newton deleted file mode 100755 index 5eed8c6..0000000 --- a/user_config/bin/newton +++ /dev/null @@ -1,24 +0,0 @@ -#!/bin/bash - -# . CONFIG.sh - -# set -o xtrace ## To debug scripts -# set -o errexit ## To exit on error -# set -o errunset ## To exit if a variable is referenced but not set - - -function main() { - call_path=`pwd` - - files=() - for f in "$@"; do - target=$(readlink -f "${f}") - i="${#files[@]}" - size=$(($i + 1)) - files[$size]="${target}" - done - - cd "/opt/" - python /opt/newton.zip "${files[@]}" -} -main "$@"; diff --git a/user_config/local/share/gtksourceview-4/language-specs/c.lang b/user_config/local/share/gtksourceview-4/language-specs/c.lang deleted file mode 100644 index 8dcf2dd..0000000 --- a/user_config/local/share/gtksourceview-4/language-specs/c.lang +++ /dev/null @@ -1,388 +0,0 @@ - - - - - text/x-c;text/x-csrc;image/x-xpixmap - *.c - // - /* - */ - .c - - - -

    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 GG4_ApXiV|| literal 0 HcmV?d00001 diff --git a/plugins/README.txt b/plugins/README.txt deleted file mode 100644 index 4173ddd..0000000 --- a/plugins/README.txt +++ /dev/null @@ -1,2 +0,0 @@ -### Note -Copy the example and rename it to your desired name. The Main class and passed in arguments are required. You don't necessarily need to use the passed in socket_id or event_system. diff --git a/plugins/autopairs/__init__.py b/plugins/autopairs/__init__.py deleted file mode 100644 index d36fa8c..0000000 --- a/plugins/autopairs/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -""" - Pligin Module -""" diff --git a/plugins/autopairs/__main__.py b/plugins/autopairs/__main__.py deleted file mode 100644 index a576329..0000000 --- a/plugins/autopairs/__main__.py +++ /dev/null @@ -1,3 +0,0 @@ -""" - Pligin Package -""" diff --git a/plugins/autopairs/manifest.json b/plugins/autopairs/manifest.json deleted file mode 100644 index 9f4c039..0000000 --- a/plugins/autopairs/manifest.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "manifest": { - "name": "Autopairs", - "author": "ITDominator", - "credit": "Hamad Al Marri", - "version": "0.0.1", - "support": "", - "requests": { - "pass_events": "true" - } - } -} \ No newline at end of file diff --git a/plugins/autopairs/plugin.py b/plugins/autopairs/plugin.py deleted file mode 100644 index 848c84e..0000000 --- a/plugins/autopairs/plugin.py +++ /dev/null @@ -1,140 +0,0 @@ -# Python imports -import os -import threading -import subprocess -import time - -# Lib imports -import gi -gi.require_version('Gtk', '3.0') -from gi.repository import Gtk - -# Application imports -from plugins.plugin_base import PluginBase - - - - -# NOTE: Threads WILL NOT die with parent's destruction. -def threaded(fn): - def wrapper(*args, **kwargs): - threading.Thread(target=fn, args=args, kwargs=kwargs, daemon=False).start() - return wrapper - -# NOTE: Threads WILL die with parent's destruction. -def daemon_threaded(fn): - def wrapper(*args, **kwargs): - threading.Thread(target=fn, args=args, kwargs=kwargs, daemon=True).start() - return wrapper - - - - -class Plugin(PluginBase): - def __init__(self): - super().__init__() - - self.name = "Autopairs" # NOTE: Need to remove after establishing private bidirectional 1-1 message bus - # where self.name should not be needed for message comms - - self.chars = { - "quotedbl": "\"", - "apostrophe": "'", - "parenleft": "(", - "bracketleft": "[", - "braceleft": "{", - "less": "<", - "grave": "`", - } - - self.close = { - "\"": "\"", - "'": "'", - "(": ")", - "[": "]", - "{": "}", - "<": ">", - "`": "`", - } - - def generate_reference_ui_element(self): - ... - - def run(self): - ... - - def subscribe_to_events(self): - self._event_system.subscribe("set_active_src_view", self._set_active_src_view) - self._event_system.subscribe("autopairs", self._autopairs) - - def _set_active_src_view(self, source_view): - self._active_src_view = source_view - self._buffer = self._active_src_view.get_buffer() - self._tag_table = self._buffer.get_tag_table() - - def _autopairs(self, keyval_name, ctrl, alt, shift): - if keyval_name in self.chars: - return self.text_insert(self._buffer, keyval_name) - - # NOTE: All of below to EOF, lovingly taken from Hamad Al Marri's Gamma - # text editor. I did do some cleanup of comments but otherwise pretty - # much the same code just fitted to my plugin architecture. - # Link: https://gitlab.com/hamadmarri/gamma-text-editor - def text_insert(self, buffer, text): - selection = buffer.get_selection_bounds() - if selection == (): - return self.add_close(buffer, text, ) - else: - return self.add_enclose(buffer, text, selection) - - def add_close(self, buffer, text): - text = self.chars[text] - text += self.close[text] - - position = buffer.get_iter_at_mark( buffer.get_insert() ) - - c = position.get_char() - if not c in (" ", "", ";", ":", "\t", ",", ".", "\n", "\r") \ - and not c in list(self.close.values()): - return False - - buffer.insert(position, text) - - position = buffer.get_iter_at_mark(buffer.get_insert()) - position.backward_char() - buffer.place_cursor(position) - - return True - - def add_enclose(self, buffer, text, selection): - (start, end) = selection - selected = buffer.get_text(start, end, False) - if len(selected) <= 3 and selected in ("<", ">", ">>>" - "<<", ">>", - "\"", "'", "`", - "(", ")", - "[", "]", - "{", "}", - "=", "==", - "!=", "==="): - return False - - start_mark = buffer.create_mark("startclose", start, False) - end_mark = buffer.create_mark("endclose", end, False) - - buffer.begin_user_action() - - t = self.chars[text] - buffer.insert(start, t) - end = buffer.get_iter_at_mark(end_mark) - t = self.close[t] - buffer.insert(end, t) - - start = buffer.get_iter_at_mark(start_mark) - end = buffer.get_iter_at_mark(end_mark) - end.backward_char() - buffer.select_range(start, end) - - buffer.end_user_action() - - return True \ No newline at end of file diff --git a/plugins/colorize/__init__.py b/plugins/colorize/__init__.py deleted file mode 100644 index d36fa8c..0000000 --- a/plugins/colorize/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -""" - Pligin Module -""" diff --git a/plugins/colorize/__main__.py b/plugins/colorize/__main__.py deleted file mode 100644 index a576329..0000000 --- a/plugins/colorize/__main__.py +++ /dev/null @@ -1,3 +0,0 @@ -""" - Pligin Package -""" diff --git a/plugins/colorize/color_converter_mixin.py b/plugins/colorize/color_converter_mixin.py deleted file mode 100644 index 0e8cd39..0000000 --- a/plugins/colorize/color_converter_mixin.py +++ /dev/null @@ -1,107 +0,0 @@ -# Python imports -import colorsys - -# Lib imports - -# Application imports - - -class ColorConverterMixin: - # NOTE: HSV HSL, and Hex Alpha parsing are available in Gtk 4.0- not lower. - # So, for compatability we're gunna convert to rgba string ourselves... - def get_color_text(self, buffer, start, end): - text = buffer.get_text(start, end, include_hidden_chars = False) - - try: - if "hsl" in text: - text = self.hsl_to_rgb(text) - - if "hsv" in text: - text = self.hsv_to_rgb(text) - - if "#" == text[0]: - hex = text[1:] - size = len(hex) - if size in [4, 8, 16]: - rgba = self.hex_to_rgba(hex, size) - print(rgba) - - except Exception as e: - ... - - return text - - def hex_to_rgba(self, hex, size): - rgba = [] - slots = None - step = 2 - bytes = 16 - - if size == 4: # NOTE: RGBA - step = 1 - slots = (0, 1, 2, 3) - - if size == 6: # NOTE: RR GG BB - slots = (0, 2, 4) - - if size == 8: # NOTE: RR GG BB AA - step = 2 - slots = (0, 2, 4, 6) - - if size == 16: # NOTE: RRRR GGGG BBBB AAAA - step = 4 - slots = (0, 4, 8, 12) - - for i in slots: - v = int(hex[i : i + step], bytes) - rgba.append(v) - - - rgb_sub = ','.join(map(str, tuple(rgba))) - - return f"rgba({rgb_sub})" - - # return tuple(rgba) - - - - def hsl_to_rgb(self, text): - _h, _s , _l = text.replace("hsl", "") \ - .replace("deg", "") \ - .replace("(", "") \ - .replace(")", "") \ - .replace("%", "") \ - .replace(" ", "") \ - .split(",") - - h = None - s = None - l = None - - h, s , l = int(_h) / 360, float(_s) / 100, float(_l) / 100 - - rgb = tuple(round(i * 255) for i in colorsys.hls_to_rgb(h, l, s)) - rgb_sub = ','.join(map(str, rgb)) - - return f"rgb({rgb_sub})" - - - def hsv_to_rgb(self, text): - _h, _s , _v = text.replace("hsv", "") \ - .replace("deg", "") \ - .replace("(", "") \ - .replace(")", "") \ - .replace("%", "") \ - .replace(" ", "") \ - .split(",") - - h = None - s = None - v = None - - h, s , v = int(_h) / 360, float(_s) / 100, float(_v) / 100 - - rgb = tuple(round(i * 255) for i in colorsys.hsv_to_rgb(h,s,v)) - rgb_sub = ','.join(map(str, rgb)) - - return f"rgb({rgb_sub})" diff --git a/plugins/colorize/manifest.json b/plugins/colorize/manifest.json deleted file mode 100644 index cba5e3d..0000000 --- a/plugins/colorize/manifest.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "manifest": { - "name": "Colorize", - "author": "ITDominator", - "version": "0.0.1", - "support": "", - "requests": { - "pass_events": "true" - } - } -} \ No newline at end of file diff --git a/plugins/colorize/plugin.py b/plugins/colorize/plugin.py deleted file mode 100644 index ba16125..0000000 --- a/plugins/colorize/plugin.py +++ /dev/null @@ -1,228 +0,0 @@ -# Python imports -import random - -# Lib imports -import gi -gi.require_version('Gtk', '3.0') -gi.require_version('Gdk', '3.0') -from gi.repository import Gtk -from gi.repository import Gdk - -# Application imports -from plugins.plugin_base import PluginBase -from .color_converter_mixin import ColorConverterMixin - - - -class Plugin(ColorConverterMixin, PluginBase): - def __init__(self): - super().__init__() - - self.name = "Colorize" # NOTE: Need to remove after establishing private bidirectional 1-1 message bus - # where self.name should not be needed for message comms - self.tag_stub_name = "colorize_tag" - self._buffer = None - - - def run(self): - ... - - def generate_reference_ui_element(self): - ... - - def subscribe_to_events(self): - self._event_system.subscribe("set_active_src_view", self._set_active_src_view) - self._event_system.subscribe("buffer_changed_first_load", self._buffer_changed_first_load) - self._event_system.subscribe("buffer_changed", self._buffer_changed) - - - def _set_active_src_view(self, source_view): - self._active_src_view = source_view - - - def _buffer_changed_first_load(self, buffer): - self._buffer = buffer - self._do_colorize(buffer) - - def _buffer_changed(self, buffer): - self._event_system.emit("pause_event_processing") - self._handle_colorize(buffer) - self._event_system.emit("resume_event_processing") - - def _handle_colorize(self, buffer): - self._buffer = buffer - tag_table = buffer.get_tag_table() - mark = buffer.get_insert() - start = None - end = buffer.get_iter_at_mark(mark) - - i = 0 - walker_iter = end.copy() - working_tag = self.find_working_tag(walker_iter, i) - if working_tag: - start = self.find_start_range(walker_iter, working_tag) - - self.find_end_range(end, working_tag) - buffer.remove_tag(working_tag, start, end) - else: - start = self.traverse_backward_25_or_less(walker_iter) - self.traverse_forward_25_or_less(end) - - self._do_colorize(buffer, start, end) - - - - def find_working_tag(self, walker_iter, i): - tags = walker_iter.get_tags() - for tag in tags: - if tag.props.name and self.tag_stub_name in tag.props.name: - return tag - - res = walker_iter.backward_char() - - if not res: return - if i > 25: return - return self.find_working_tag(walker_iter, i + 1) - - def find_start_range(self, walker_iter, working_tag): - tags = walker_iter.get_tags() - for tag in tags: - if tag.props.name and working_tag.props.name in tag.props.name: - res = walker_iter.backward_char() - if res: - self.find_start_range(walker_iter, working_tag) - - return walker_iter - - def find_end_range(self, end, working_tag): - tags = end.get_tags() - for tag in tags: - if tag.props.name and working_tag.props.name in tag.props.name: - res = end.forward_char() - if res: - self.find_end_range(end, working_tag) - - def traverse_backward_25_or_less(self, walker_iter): - i = 1 - while i <= 25: - res = walker_iter.backward_char() - if not res: break - i += 1 - - def traverse_forward_25_or_less(self, end): - i = 1 - while i <= 25: - res = end.forward_char() - if not res: break - i += 1 - - def _do_colorize(self, buffer = None, start_itr = None, end_itr = None): - # rgb(a), hsl, hsv - results = self.finalize_non_hex_matches( self.collect_preliminary_results(buffer, start_itr, end_itr) ) - self.process_results(buffer, results) - - # hex color search - results = self.finalize_hex_matches( self.collect_preliminary_hex_results(buffer, start_itr, end_itr) ) - self.process_results(buffer, results) - - - def collect_preliminary_results(self, buffer = None, start_itr = None, end_itr = None): - if not buffer: return [] - - if not start_itr: - start_itr = buffer.get_start_iter() - - results1 = self.search(start_itr, end_itr, "rgb") - results2 = self.search(start_itr, end_itr, "hsl") - results3 = self.search(start_itr, end_itr, "hsv") - - return results1 + results2 + results3 - - def collect_preliminary_hex_results(self, buffer = None, start_itr = None, end_itr = None): - if not buffer: return [] - - if not start_itr: - start_itr = buffer.get_start_iter() - - results1 = self.search(start_itr, end_itr, "#") - - return results1 - - def search(self, start_itr = None, end_itr = None, query = None): - if not start_itr or not query: return None, None - - results = [] - flags = Gtk.TextSearchFlags.VISIBLE_ONLY | Gtk.TextSearchFlags.TEXT_ONLY - while True: - result = start_itr.forward_search(query, flags, end_itr) - if not result: break - - results.append(result) - start_itr = result[1] - - return results - - def finalize_non_hex_matches(self, result_hits: [] = []): - results = [] - - for start, end in result_hits: - if end.get_char() == "a": - end.forward_char() - - if end.get_char() != "(": - continue - - end.forward_chars(21) - if end.get_char() == ")": - end.forward_char() - results.append([start, end]) - continue - - while end.get_char() != "(": - if end.get_char() == ")": - end.forward_char() - results.append([start, end]) - break - - end.forward_chars(-1) - - return results - - def finalize_hex_matches(self, result_hits: [] = []): - results = [] - - for start, end in result_hits: - i = 0 - _ch = end.get_char() - ch = ord(end.get_char()) if _ch else -1 - - while ((ch >= 48 and ch <= 57) or (ch >= 65 and ch <= 70) or (ch >= 97 and ch <= 102)): - if i > 16: break - - i += 1 - end.forward_char() - _ch = end.get_char() - ch = ord(end.get_char()) if _ch else -1 - - if i in [3, 4, 6, 8, 9, 12, 16]: - results.append([start, end]) - - return results - - def process_results(self, buffer, results): - for start, end in results: - text = self.get_color_text(buffer, start, end) - color = Gdk.RGBA() - - if color.parse(text): - tag = self.get_colorized_tag(buffer, text, color) - buffer.apply_tag(tag, start, end) - - def get_colorized_tag(self, buffer, tag, color: Gdk.RGBA): - tag_table = buffer.get_tag_table() - colorize_tag = f"{self.tag_stub_name}_{tag}" - search_tag = tag_table.lookup(colorize_tag) - if not search_tag: - search_tag = buffer.create_tag(colorize_tag, background_rgba = color) - - return search_tag diff --git a/plugins/commentzar/__init__.py b/plugins/commentzar/__init__.py deleted file mode 100644 index d36fa8c..0000000 --- a/plugins/commentzar/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -""" - Pligin Module -""" diff --git a/plugins/commentzar/__main__.py b/plugins/commentzar/__main__.py deleted file mode 100644 index a576329..0000000 --- a/plugins/commentzar/__main__.py +++ /dev/null @@ -1,3 +0,0 @@ -""" - Pligin Package -""" diff --git a/plugins/commentzar/add_comment_mixin.py b/plugins/commentzar/add_comment_mixin.py deleted file mode 100755 index 6e123f3..0000000 --- a/plugins/commentzar/add_comment_mixin.py +++ /dev/null @@ -1,66 +0,0 @@ -# Python imports - -# Lib imports - -# Application imports - - - -class AddCommentMixin: - def add_comment_characters(self, buffer, start_tag, end_tag, start, end, deselect, oldPos): - smark = buffer.create_mark("start", start, False) - imark = buffer.create_mark("iter", start, False) - emark = buffer.create_mark("end", end, False) - number_lines = end.get_line() - start.get_line() + 1 - comment_pos_iter = None - count = 0 - - buffer.begin_user_action() - - for i in range(0, number_lines): - iter = buffer.get_iter_at_mark(imark) - if not comment_pos_iter: - (comment_pos_iter, count) = self.discard_white_spaces(iter) - - if self.is_commented(comment_pos_iter, start_tag): - new_code = self.remove_comment_characters(buffer, start_tag, end_tag, start, end) - return - else: - comment_pos_iter = iter - for i in range(count): - c = iter.get_char() - if not c in (" ", "\t"): - break - - iter.forward_char() - - buffer.insert(comment_pos_iter, start_tag) - buffer.insert(comment_pos_iter, " ") - - if end_tag: - if i != number_lines -1: - iter = buffer.get_iter_at_mark(imark) - iter.forward_to_line_end() - buffer.insert(iter, end_tag) - else: - iter = buffer.get_iter_at_mark(emark) - buffer.insert(iter, end_tag) - - iter = buffer.get_iter_at_mark(imark) - iter.forward_line() - buffer.delete_mark(imark) - imark = buffer.create_mark("iter", iter, True) - - buffer.end_user_action() - - buffer.delete_mark(imark) - new_start = buffer.get_iter_at_mark(smark) - new_end = buffer.get_iter_at_mark(emark) - - buffer.select_range(new_start, new_end) - buffer.delete_mark(smark) - buffer.delete_mark(emark) - - if deselect: - oldPosIter = buffer.get_iter_at_offset(oldPos + 2) - buffer.place_cursor(oldPosIter) diff --git a/plugins/commentzar/codecomment_tags.py b/plugins/commentzar/codecomment_tags.py deleted file mode 100755 index ac7d110..0000000 --- a/plugins/commentzar/codecomment_tags.py +++ /dev/null @@ -1,30 +0,0 @@ -# Python imports - -# Lib imports - -# Application imports - - - -class CodeCommentTags: - def get_comment_tags(self, lang): - (s, e) = self.get_line_comment_tags(lang) - if (s, e) == (None, None): - (s, e) = self.get_block_comment_tags(lang) - - return (s, e) - - def get_block_comment_tags(self, lang): - start_tag = lang.get_metadata('block-comment-start') - end_tag = lang.get_metadata('block-comment-end') - if start_tag and end_tag: - return (start_tag, end_tag) - - return (None, None) - - def get_line_comment_tags(self, lang): - start_tag = lang.get_metadata('line-comment-start') - if start_tag: - return (start_tag, None) - - return (None, None) diff --git a/plugins/commentzar/manifest.json b/plugins/commentzar/manifest.json deleted file mode 100644 index cd1d1f7..0000000 --- a/plugins/commentzar/manifest.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "manifest": { - "name": "Commentzar", - "author": "ITDominator", - "credit": "Hamad Al Marri", - "version": "0.0.1", - "support": "", - "requests": { - "pass_events": "true", - "bind_keys": ["Commentzar||keyboard_tggl_comment:slash"] - } - } -} diff --git a/plugins/commentzar/plugin.py b/plugins/commentzar/plugin.py deleted file mode 100644 index cbf41bf..0000000 --- a/plugins/commentzar/plugin.py +++ /dev/null @@ -1,118 +0,0 @@ -# Python imports - -# Lib imports -import gi -gi.require_version('Gtk', '3.0') -from gi.repository import Gtk - -# Application imports -from plugins.plugin_base import PluginBase -from .codecomment_tags import CodeCommentTags -from .remove_comment_mixin import RemoveCommentMixin -from .add_comment_mixin import AddCommentMixin - - - -class Plugin(AddCommentMixin, RemoveCommentMixin, CodeCommentTags, PluginBase): - def __init__(self): - super().__init__() - - self.name = "Commentzar" # NOTE: Need to remove after establishing private bidirectional 1-1 message bus - # where self.name should not be needed for message comms - - - def generate_reference_ui_element(self): - ... - - def run(self): - ... - - def subscribe_to_events(self): - self._event_system.subscribe("keyboard_tggl_comment", self._keyboard_tggl_comment) - self._event_system.subscribe("set_active_src_view", self._set_active_src_view) - - def _set_active_src_view(self, source_view): - self._active_src_view = source_view - self._buffer = self._active_src_view.get_buffer() - self._tag_table = self._buffer.get_tag_table() - - - def _keyboard_tggl_comment(self): - buffer = self._buffer - lang = buffer.get_language() - if lang is None: - return - - (start_tag, end_tag) = self.get_comment_tags(lang) - if not start_tag and not end_tag: - return - - sel = buffer.get_selection_bounds() - currentPosMark = buffer.get_insert() - oldPos = 0 - - # if user selected chars or multilines - if sel != (): - deselect = False - (start, end) = sel - if not start.starts_line(): - start.set_line_offset(0) - if not end.ends_line(): - end.forward_to_line_end() - else: - deselect = True - start = buffer.get_iter_at_mark(currentPosMark) - oldPos = buffer.get_iter_at_mark(currentPosMark).get_offset() - start.set_line_offset(0) - end = start.copy() - - if not end.ends_line(): - end.forward_to_line_end() - - if start.get_offset() == end.get_offset(): - buffer.begin_user_action() - buffer.insert(start, start_tag) - buffer.insert(start, " ") - buffer.end_user_action() - return - - self._event_system.emit("pause_event_processing") - new_code = self.add_comment_characters(buffer, start_tag, end_tag, start, end, deselect, oldPos) - self._event_system.emit("resume_event_processing") - - def discard_white_spaces(self, iter): - count = 0 - while not iter.ends_line(): - c = iter.get_char() - if not c in (" ", "\t"): - return (iter, count) - - iter.forward_char() - count += 1 - - return (iter, 0) - - def is_commented(self, comment_pos_iter, start_tag): - head_iter = comment_pos_iter.copy() - self.forward_tag(head_iter, start_tag) - s = comment_pos_iter.get_slice(head_iter) - if s == start_tag: - return True - - return False - - def forward_tag(self, iter, tag): - iter.forward_chars(len(tag)) - - def backward_tag(self, iter, tag): - iter.backward_chars(len(tag)) - - def get_tag_position_in_line(self, tag, head_iter, iter): - while not iter.ends_line(): - s = iter.get_slice(head_iter) - if s == tag: - return True - else: - head_iter.forward_char() - iter.forward_char() - return False diff --git a/plugins/commentzar/remove_comment_mixin.py b/plugins/commentzar/remove_comment_mixin.py deleted file mode 100755 index 0e956f2..0000000 --- a/plugins/commentzar/remove_comment_mixin.py +++ /dev/null @@ -1,49 +0,0 @@ -# Python imports - -# Lib imports - -# Application imports - - - -class RemoveCommentMixin: - def remove_comment_characters(self, buffer, start_tag, end_tag, start, end): - smark = buffer.create_mark("start", start, False) - emark = buffer.create_mark("end", end, False) - number_lines = end.get_line() - start.get_line() + 1 - iter = start.copy() - head_iter = iter.copy() - self.forward_tag(head_iter, start_tag) - - buffer.begin_user_action() - - for i in range(0, number_lines): - if self.get_tag_position_in_line(start_tag, head_iter, iter): - dmark = buffer.create_mark("delete", iter, False) - buffer.delete(iter, head_iter) - - space_iter = head_iter.copy() - space_iter.forward_char() - s = head_iter.get_slice(space_iter) - if s == " ": - buffer.delete(head_iter, space_iter) - - if end_tag: - iter = buffer.get_iter_at_mark(dmark) - head_iter = iter.copy() - self.forward_tag(head_iter, end_tag) - if self.get_tag_position_in_line(end_tag, head_iter, iter): - buffer.delete(iter, head_iter) - buffer.delete_mark(dmark) - - iter = buffer.get_iter_at_mark(smark) - iter.forward_line() - buffer.delete_mark(smark) - head_iter = iter.copy() - self.forward_tag(head_iter, start_tag) - smark = buffer.create_mark("iter", iter, True) - - buffer.end_user_action() - - buffer.delete_mark(smark) - buffer.delete_mark(emark) diff --git a/plugins/lsp_client/__init__.py b/plugins/lsp_client/__init__.py deleted file mode 100644 index d36fa8c..0000000 --- a/plugins/lsp_client/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -""" - Pligin Module -""" diff --git a/plugins/lsp_client/__main__.py b/plugins/lsp_client/__main__.py deleted file mode 100644 index a576329..0000000 --- a/plugins/lsp_client/__main__.py +++ /dev/null @@ -1,3 +0,0 @@ -""" - Pligin Package -""" diff --git a/plugins/lsp_client/capabilities.py b/plugins/lsp_client/capabilities.py deleted file mode 100644 index 8cd31d2..0000000 --- a/plugins/lsp_client/capabilities.py +++ /dev/null @@ -1,201 +0,0 @@ -# Python imports - -# Lib imports - -# Application imports - - - -class Capabilities: - data = { - "textDocument": { - "codeAction": { - "dynamicRegistration": True - }, - "codeLens": { - "dynamicRegistration": True - }, - "colorProvider": { - "dynamicRegistration": True - }, - "completion": { - "completionItem": { - "commitCharactersSupport": True, - "documentationFormat": [ - "markdown", - "plaintext" - ], - "snippetSupport": True - }, - "completionItemKind": { - "valueSet": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25 - ] - }, - "contextSupport": True, - "dynamicRegistration": True - }, - "definition": { - "dynamicRegistration": True - }, - "documentHighlight": { - "dynamicRegistration": True - }, - "documentLink": { - "dynamicRegistration": True - }, - "documentSymbol": { - "dynamicRegistration": True, - "symbolKind": { - "valueSet": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26 - ] - } - }, - "formatting": { - "dynamicRegistration": True - }, - "hover": { - "contentFormat": [ - "markdown", - "plaintext" - ], - "dynamicRegistration": True - }, - "implementation": { - "dynamicRegistration": True - }, - "onTypeFormatting": { - "dynamicRegistration": True - }, - "publishDiagnostics": { - "relatedInformation": True - }, - "rangeFormatting": { - "dynamicRegistration": True - }, - "references": { - "dynamicRegistration": True - }, - "rename": { - "dynamicRegistration": True - }, - "signatureHelp": { - "dynamicRegistration": True, - "signatureInformation": { - "documentationFormat": [ - "markdown", - "plaintext" - ] - } - }, - "synchronization": { - "didSave": True, - "dynamicRegistration": True, - "willSave": True, - "willSaveWaitUntil": True - }, - "typeDefinition": { - "dynamicRegistration": True - } - }, - "workspace": { - "applyEdit": True, - "configuration": True, - "didChangeConfiguration": { - "dynamicRegistration": True - }, - "didChangeWatchedFiles": { - "dynamicRegistration": True - }, - "executeCommand": { - "dynamicRegistration": True - }, - "symbol": { - "dynamicRegistration": True, - "symbolKind": { - "valueSet": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26 - ] - } - }, - "workspaceEdit": { - "documentChanges": True - }, - "workspaceFolders": True - } -} \ No newline at end of file diff --git a/plugins/lsp_client/lsp_controller.py b/plugins/lsp_client/lsp_controller.py deleted file mode 100644 index 720f15b..0000000 --- a/plugins/lsp_client/lsp_controller.py +++ /dev/null @@ -1,179 +0,0 @@ -# Python imports -import subprocess -import threading - -# Lib imports -from . import pylspclient - -# Application imports -from .capabilities import Capabilities - - - -class ReadPipe(threading.Thread): - def __init__(self, pipe): - threading.Thread.__init__(self) - self.pipe = pipe - - def run(self): - line = self.pipe.readline().decode('utf-8') - while line: - line = self.pipe.readline().decode('utf-8') - - - -class LSPController: - def __init__(self, lsp_servers_config = {}): - super().__init__() - - self.lsp_servers_config = lsp_servers_config - self.lsp_clients = {} - - def _blame(self, response): - for d in response['diagnostics']: - if d['severity'] == 1: - print(f"An error occurs in {response['uri']} at {d['range']}:") - print(f"\t[{d['source']}] {d['message']}") - - def _shutting_down(self): - keys = self.lsp_clients.keys() - for key in keys: - print(f"LSP Server: ( {key} ) Shutting Down...") - self.lsp_clients[key].shutdown() - self.lsp_clients[key].exit() - - def _generate_client(self, language = "", server_proc = None): - if not language or not server_proc: return False - - json_rpc_endpoint = pylspclient.JsonRpcEndpoint(server_proc.stdin, server_proc.stdout) - - callbacks = { - "window/showMessage": print, - "textDocument/symbolStatus": print, - "textDocument/publishDiagnostics": self._blame, - } - - lsp_endpoint = pylspclient.LspEndpoint(json_rpc_endpoint, notify_callbacks = callbacks) - lsp_client = pylspclient.LspClient(lsp_endpoint) - - self.lsp_clients[language] = lsp_client - return lsp_client - - def create_client(self, language = "", server_proc = None, initialization_options = None): - if not language or not server_proc: return False - - root_path = None - root_uri = 'file:///home/abaddon/Coding/Projects/Active/C_n_CPP_Projects/gtk/Newton/src/' - workspace_folders = [{'name': 'python-lsp', 'uri': root_uri}] - - lsp_client = self._generate_client(language, server_proc) - lsp_client.initialize( - processId = server_proc.pid, \ - rootPath = root_path, \ - rootUri = root_uri, \ - initializationOptions = initialization_options, \ - capabilities = Capabilities.data, \ - trace = "off", \ - workspaceFolders = workspace_folders - ) - - lsp_client.initialized() - - return True - - def create_lsp_server(self, server_command: [] = []): - if not server_command: return None - - server_proc = subprocess.Popen(server_command, stdin = subprocess.PIPE, stdout = subprocess.PIPE, stderr = subprocess.PIPE) - read_pipe = ReadPipe(server_proc.stderr) - read_pipe.start() - - return server_proc - - - def do_open(self, language_id, uri): - if language_id in self.lsp_clients.keys(): - lsp_client = self.lsp_clients[language_id] - else: - lsp_client = self.load_lsp_server(language_id) - - if lsp_client: - self.register_opened_file(language_id, uri, lsp_client) - - def do_save(self, language_id, uri): - if language_id in self.lsp_clients.keys(): - self.lsp_clients[language_id].didSave( - pylspclient.lsp_structs.TextDocumentIdentifier(uri) - ) - - def do_close(self, language_id, uri): - if language_id in self.lsp_clients.keys(): - self.lsp_clients[language_id].didClose( - pylspclient.lsp_structs.TextDocumentIdentifier(uri) - ) - - def do_goto(self, language_id, uri, line, offset): - if language_id in self.lsp_clients.keys(): - return self.lsp_clients[language_id].definition( - pylspclient.lsp_structs.TextDocumentIdentifier(uri), - pylspclient.lsp_structs.Position(line, offset) - ) - - return [] - - def do_change(self, language_id, line, start, end, text): - if language_id in self.lsp_clients.keys(): - - start_pos = pylspclient.lsp_structs.Position(line, start.get_line_offset()) - end_pos = pylspclient.lsp_structs.Position(line, end.get_line_offset()) - range_info = pylspclient.lsp_structs.Range(start_pos, end_pos) - text_length = len(text) - change_event = pylspclient.lsp_structs.TextDocumentContentChangeEvent(range_info, text_length, text) - - return self.lsp_clients[language_id].didChange( None, change_event ) - - return [] - - def do_completion(self, language_id, uri, line, offset, _char, is_invoked = False): - if language_id in self.lsp_clients.keys(): - trigger = pylspclient.lsp_structs.CompletionTriggerKind.TriggerCharacter - - if _char in [".", " "]: - trigger = pylspclient.lsp_structs.CompletionTriggerKind.TriggerCharacter - elif is_invoked: - trigger = pylspclient.lsp_structs.CompletionTriggerKind.Invoked - else: - trigger = pylspclient.lsp_structs.CompletionTriggerKind.TriggerForIncompleteCompletions - - return self.lsp_clients[language_id].completion( - pylspclient.lsp_structs.TextDocumentIdentifier(uri), - pylspclient.lsp_structs.Position(line, offset), - pylspclient.lsp_structs.CompletionContext(trigger, _char) - ) - - return [] - - - def load_lsp_server(self, language_id): - if not language_id in self.lsp_servers_config.keys(): - return - - command = self.lsp_servers_config[language_id]["command"] - config_options = self.lsp_servers_config[language_id]["initialization_options"] - - if command: - server_proc = self.create_lsp_server(command) - if self.create_client(language_id, server_proc, config_options): - return self.lsp_clients[language_id] - - return None - - def register_opened_file(self, language_id = "", uri = "", lsp_client = None): - if not language_id or not uri: return - - text = open(uri[7:], "r").read() - version = 1 - - lsp_client.didOpen( - pylspclient.lsp_structs.TextDocumentItem(uri, language_id, version, text) - ) \ No newline at end of file diff --git a/plugins/lsp_client/manifest.json b/plugins/lsp_client/manifest.json deleted file mode 100644 index 255c6d6..0000000 --- a/plugins/lsp_client/manifest.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "manifest": { - "name": "LSP Client", - "author": "ITDominator", - "version": "0.0.1", - "credit": "Avi Yeger for the pylspclient used by this plugin. Link: https://github.com/yeger00/pylspclient", - "support": "", - "requests": { - "pass_events": "true" - } - } -} \ No newline at end of file diff --git a/plugins/lsp_client/plugin.py b/plugins/lsp_client/plugin.py deleted file mode 100644 index 11f2954..0000000 --- a/plugins/lsp_client/plugin.py +++ /dev/null @@ -1,124 +0,0 @@ -# Python imports -import os -import json -import threading - -# Lib imports -from gi.repository import GLib - -# Application imports - - -from plugins.plugin_base import PluginBase -from .lsp_controller import LSPController - - - -class LSPPliginException(Exception): - ... - - - -class Plugin(PluginBase): - def __init__(self): - super().__init__() - - self.name = "LSP Client" # NOTE: Need to remove after establishing private bidirectional 1-1 message bus - # where self.name should not be needed for message comms - self.lsp_config_path: str = os.path.dirname(os.path.realpath(__file__)) + "/../../lsp_servers_config.json" - self.lsp_servers_config: dict = {} - self.lsp_controller = None - self.timer = None - - - def generate_reference_ui_element(self): - ... - - def run(self): - if os.path.exists(self.lsp_config_path): - with open(self.lsp_config_path, "r") as f: - self.lsp_servers_config = json.load(f) - else: - text = f"LSP NOT Enabled.\nFile:\n\t{self.lsp_config_path}\ndoes no exsist..." - self._event_system.emit("bubble_message", ("warning", self.name, text,)) - return - - if len(self.lsp_servers_config.keys()) > 0: - self.lsp_controller = LSPController(self.lsp_servers_config) - self.inner_subscribe_to_events() - - def subscribe_to_events(self): - ... - - def inner_subscribe_to_events(self): - self._event_system.subscribe("shutting_down", self._shutting_down) - - self._event_system.subscribe("textDocument/didChange", self._buffer_changed) - self._event_system.subscribe("textDocument/didOpen", self.lsp_controller.do_open) - self._event_system.subscribe("textDocument/didSave", self.lsp_controller.do_save) - self._event_system.subscribe("textDocument/didClose", self.lsp_controller.do_close) - self._event_system.subscribe("textDocument/definition", self._do_goto) - self._event_system.subscribe("textDocument/completion", self.completion) - - def _shutting_down(self): - self.lsp_controller._shutting_down() - - def cancel_timer(self): - if self.timer: - self.timer.cancel() - GLib.idle_remove_by_data(None) - - def delay_completion_glib(self, source_view, context, callback): - GLib.idle_add(self._do_completion, source_view, context, callback) - - def delay_completion(self, source_view, context, callback): - self.timer = threading.Timer(0.8, self.delay_completion_glib, (source_view, context, callback,)) - self.timer.daemon = True - self.timer.start() - - def _buffer_changed(self, language_id, buffer): - iter = buffer.get_iter_at_mark( buffer.get_insert() ) - line = iter.get_line() - start = iter.copy() - end = iter.copy() - - start.backward_line() - start.forward_line() - end.forward_to_line_end() - - text = buffer.get_text(start, end, include_hidden_chars = False) - result = self.lsp_controller.do_change(language_id, line, start, end, text) - # print(result) - - - def completion(self, source_view, context, callback): - self.cancel_timer() - self.delay_completion(source_view, context, callback) - - def _do_completion(self, source_view, context, callback): - filepath = source_view.get_current_file() - - if not filepath: return - - uri = filepath.get_uri() - buffer = source_view.get_buffer() - iter = buffer.get_iter_at_mark( buffer.get_insert() ) - line = iter.get_line() + 1 - - _char = iter.get_char() - if iter.backward_char(): - _char = iter.get_char() - - offset = iter.get_line_offset() - result = self.lsp_controller.do_completion(source_view.get_filetype(), uri, line, offset, _char) - callback(context, result) - - def _do_goto(self, language_id, uri, line, offset): - results = self.lsp_controller.do_goto(language_id, uri, line, offset) - - if len(results) == 1: - result = results[0] - file = result.uri[7:] - line = result.range.end.line - message = f"FILE|{file}:{line}" - self._event_system.emit("post_file_to_ipc", message) \ No newline at end of file diff --git a/plugins/lsp_client/pylspclient/LICENSE b/plugins/lsp_client/pylspclient/LICENSE deleted file mode 100644 index 0728ddb..0000000 --- a/plugins/lsp_client/pylspclient/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2018 Avi Yeger - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/plugins/lsp_client/pylspclient/__init__.py b/plugins/lsp_client/pylspclient/__init__.py deleted file mode 100644 index 58572a1..0000000 --- a/plugins/lsp_client/pylspclient/__init__.py +++ /dev/null @@ -1,6 +0,0 @@ -__all__ = [] - -from .json_rpc_endpoint import JsonRpcEndpoint -from .lsp_client import LspClient -from .lsp_endpoint import LspEndpoint -from . import lsp_structs \ No newline at end of file diff --git a/plugins/lsp_client/pylspclient/json_rpc_endpoint.py b/plugins/lsp_client/pylspclient/json_rpc_endpoint.py deleted file mode 100644 index 30561bb..0000000 --- a/plugins/lsp_client/pylspclient/json_rpc_endpoint.py +++ /dev/null @@ -1,105 +0,0 @@ -from __future__ import print_function - -import threading -import json - -from . import lsp_structs - - - -JSON_RPC_REQ_FORMAT = "Content-Length: {json_string_len}\r\n\r\n{json_string}" -LEN_HEADER = "Content-Length: " -TYPE_HEADER = "Content-Type: " - - -# TODO: add content-type - - -class MyEncoder(json.JSONEncoder): - """ - Encodes an object in JSON - """ - - def default(self, o): # pylint: disable=E0202 - return o.__dict__ - - -class JsonRpcEndpoint(object): - ''' - Thread safe JSON RPC endpoint implementation. Responsible to recieve and - send JSON RPC messages, as described in the protocol. More information can - be found: https://www.jsonrpc.org/ - ''' - - def __init__(self, stdin, stdout): - self.stdin = stdin - self.stdout = stdout - self.read_lock = threading.Lock() - self.write_lock = threading.Lock() - - @staticmethod - def __add_header(json_string): - ''' - Adds a header for the given json string - - :param str json_string: The string - :return: the string with the header - ''' - return JSON_RPC_REQ_FORMAT.format(json_string_len = len(json_string), json_string = json_string) - - def send_request(self, message): - ''' - Sends the given message. - - :param dict message: The message to send. - ''' - json_string = json.dumps(message, cls = MyEncoder) - jsonrpc_req = self.__add_header(json_string) - with self.write_lock: - self.stdin.write(jsonrpc_req.encode()) - self.stdin.flush() - - def recv_response(self): - ''' - Recives a message. - - :return: a message - ''' - with self.read_lock: - message_size = None - while True: - # read header - line = self.stdout.readline() - if not line: - # server quit - return None - line = line.decode("utf-8") - if not line.endswith("\r\n"): - raise lsp_structs.ResponseError( - lsp_structs.ErrorCodes.ParseError, - "Bad header: missing newline") - # remove the "\r\n" - line = line[:-2] - if line == "": - # done with the headers - break - elif line.startswith(LEN_HEADER): - line = line[len(LEN_HEADER):] - if not line.isdigit(): - raise lsp_structs.ResponseError( - lsp_structs.ErrorCodes.ParseError, - "Bad header: size is not int") - message_size = int(line) - elif line.startswith(TYPE_HEADER): - ... - else: - raise lsp_structs.ResponseError( - lsp_structs.ErrorCodes.ParseError, - "Bad header: unkown header") - if not message_size: - raise lsp_structs.ResponseError( - lsp_structs.ErrorCodes.ParseError, - "Bad header: missing size") - - jsonrpc_res = self.stdout.read(message_size).decode("utf-8") - return json.loads(jsonrpc_res) \ No newline at end of file diff --git a/plugins/lsp_client/pylspclient/lsp_client.py b/plugins/lsp_client/pylspclient/lsp_client.py deleted file mode 100644 index 57dfd35..0000000 --- a/plugins/lsp_client/pylspclient/lsp_client.py +++ /dev/null @@ -1,258 +0,0 @@ -from . import lsp_structs - - - -class LspClient(object): - def __init__(self, lsp_endpoint): - """ - Constructs a new LspClient instance. - - :param lsp_endpoint: TODO - """ - - self.lsp_endpoint = lsp_endpoint - - def initialize(self, processId, rootPath, rootUri, initializationOptions, capabilities, trace, workspaceFolders): - """ - The initialize request is sent as the first request from the client to the server. If the server receives a request or notification - before the initialize request it should act as follows: - - 1. For a request the response should be an error with code: -32002. The message can be picked by the server. - 2. Notifications should be dropped, except for the exit notification. This will allow the exit of a server without an initialize request. - - Until the server has responded to the initialize request with an InitializeResult, the client must not send any additional requests or - notifications to the server. In addition the server is not allowed to send any requests or notifications to the client until it has responded - with an InitializeResult, with the exception that during the initialize request the server is allowed to send the notifications window/showMessage, - window/logMessage and telemetry/event as well as the window/showMessageRequest request to the client. - - The initialize request may only be sent once. - - :param int processId: The process Id of the parent process that started the server. Is null if the process has not been started by another process. - If the parent process is not alive then the server should exit (see exit notification) its process. - :param str rootPath: The rootPath of the workspace. Is null if no folder is open. Deprecated in favour of rootUri. - :param DocumentUri rootUri: The rootUri of the workspace. Is null if no folder is open. If both `rootPath` and `rootUri` are set - `rootUri` wins. - :param any initializationOptions: User provided initialization options. - :param ClientCapabilities capabilities: The capabilities provided by the client (editor or tool). - :param Trace trace: The initial trace setting. If omitted trace is disabled ('off'). - :param list workspaceFolders: The workspace folders configured in the client when the server starts. This property is only available if the client supports workspace folders. - It can be `null` if the client supports workspace folders but none are configured. - """ - - self.lsp_endpoint.start() - return self.lsp_endpoint.call_method("initialize", \ - processId = processId, \ - rootPath = rootPath, \ - rootUri = rootUri, \ - initializationOptions = initializationOptions, \ - capabilities = capabilities, \ - trace = trace, \ - workspaceFolders = workspaceFolders - ) - - def initialized(self): - """ - The initialized notification is sent from the client to the server after the client received the result of the initialize request - but before the client is sending any other request or notification to the server. The server can use the initialized notification - for example to dynamically register capabilities. The initialized notification may only be sent once. - """ - - self.lsp_endpoint.send_notification("initialized") - - def shutdown(self): - """ - The initialized notification is sent from the client to the server after the client received the result of the initialize request - but before the client is sending any other request or notification to the server. The server can use the initialized notification - for example to dynamically register capabilities. The initialized notification may only be sent once. - """ - - return self.lsp_endpoint.call_method("shutdown") - - def exit(self): - """ - The initialized notification is sent from the client to the server after the client received the result of the initialize request - but before the client is sending any other request or notification to the server. The server can use the initialized notification - for example to dynamically register capabilities. The initialized notification may only be sent once. - """ - - self.lsp_endpoint.send_notification("exit") - self.lsp_endpoint.stop() - - - def didOpen(self, textDocument): - """ - The document open notification is sent from the client to the server to signal newly opened text documents. The document's truth is - now managed by the client and the server must not try to read the document's truth using the document's uri. Open in this sense - means it is managed by the client. It doesn't necessarily mean that its content is presented in an editor. An open notification must - not be sent more than once without a corresponding close notification send before. This means open and close notification must be - balanced and the max open count for a particular textDocument is one. Note that a server's ability to fulfill requests is independent - of whether a text document is open or closed. - - The DidOpenTextDocumentParams contain the language id the document is associated with. If the language Id of a document changes, the - client needs to send a textDocument/didClose to the server followed by a textDocument/didOpen with the new language id if the server - handles the new language id as well. - - :param TextDocumentItem textDocument: The document that was opened. - """ - - return self.lsp_endpoint.send_notification("textDocument/didOpen", textDocument = textDocument) - - def didSave(self, textDocument): - """ - :param TextDocumentIdentifier textDocument: The document that was saved. - """ - - return self.lsp_endpoint.send_notification("textDocument/didSave", textDocument = textDocument) - - def didClose(self, textDocument): - """ - :param TextDocumentIdentifier textDocument: The document that was closed. - """ - return self.lsp_endpoint.send_notification("textDocument/didClose", textDocument = textDocument) - - def didChange(self, textDocument, contentChanges): - """ - The document change notification is sent from the client to the server to signal changes to a text document. - In 2.0 the shape of the params has changed to include proper version numbers and language ids. - - :param VersionedTextDocumentIdentifier textDocument: The initial trace setting. If omitted trace is disabled ('off'). - :param TextDocumentContentChangeEvent[] contentChanges: The actual content changes. The content changes describe single state changes - to the document. So if there are two content changes c1 and c2 for a document in state S then c1 move the document - to S' and c2 to S''. - """ - - return self.lsp_endpoint.send_notification("textDocument/didChange", textDocument = textDocument, contentChanges = contentChanges) - - def documentSymbol(self, textDocument): - """ - The document symbol request is sent from the client to the server to - return a flat list of all symbols found in a given text document. - Neither the symbol's location range nor the symbol's container name - should be used to infer a hierarchy. - - :param TextDocumentItem textDocument: The text document. - """ - result_dict = self.lsp_endpoint.call_method( "textDocument/documentSymbol", textDocument=textDocument ) - - if not result_dict: return [] - return [lsp_structs.SymbolInformation(**sym) for sym in result_dict] - - def declaration(self, textDocument, position): - """ - The go to declaration request is sent from the client to the server to - resolve the declaration location of a symbol at a given text document - position. - - The result type LocationLink[] got introduce with version 3.14.0 and - depends in the corresponding client capability - `clientCapabilities.textDocument.declaration.linkSupport`. - - :param TextDocumentItem textDocument: The text document. - :param Position position: The position inside the text document. - """ - - result_dict = self.lsp_endpoint.call_method("textDocument/declaration", - textDocument = textDocument, - position = position - ) - - if not result_dict: return [] - - if "uri" in result_dict: - return lsp_structs.Location(**result_dict) - - return [lsp_structs.Location(**loc) if "uri" in loc else lsp_structs.LinkLocation(**loc) for loc in result_dict] - - def definition(self, textDocument, position): - """ - The goto definition request is sent from the client to the server to - resolve the definition location of a symbol at a given text document - position. - - :param TextDocumentItem textDocument: The text document. - :param Position position: The position inside the text document. - """ - - result_dict = self.lsp_endpoint.call_method("textDocument/definition", - textDocument = textDocument, - position = position - ) - - if not result_dict: return [] - return [lsp_structs.Location(**loc) for loc in result_dict] - - def typeDefinition(self, textDocument, position): - """ - The goto type definition request is sent from the client to the server - to resolve the type definition location of a symbol at a given text - document position. - - :param TextDocumentItem textDocument: The text document. - :param Position position: The position inside the text document. - """ - - result_dict = self.lsp_endpoint.call_method("textDocument/typeDefinition", - textDocument = textDocument, - position = position - ) - - if not result_dict: return [] - return [lsp_structs.Location(**loc) for loc in result_dict] - - def signatureHelp(self, textDocument, position): - """ - The signature help request is sent from the client to the server to - request signature information at a given cursor position. - - :param TextDocumentItem textDocument: The text document. - :param Position position: The position inside the text document. - """ - - result_dict = self.lsp_endpoint.call_method( "textDocument/signatureHelp", - textDocument = textDocument, - position = position - ) - - if not result_dict: return [] - return lsp_structs.SignatureHelp(**result_dict) - - def completion(self, textDocument, position, context): - """ - The signature help request is sent from the client to the server to - request signature information at a given cursor position. - - :param TextDocumentItem textDocument: The text document. - :param Position position: The position inside the text document. - :param CompletionContext context: The completion context. This is only - available if the client specifies - to send this using `ClientCapabilities.textDocument.completion.contextSupport === true` - """ - - result_dict = self.lsp_endpoint.call_method("textDocument/completion", - textDocument = textDocument, - position = position, - context = context - ) - if not result_dict: return [] - - if "isIncomplete" in result_dict: - return lsp_structs.CompletionList(**result_dict) - - return [lsp_structs.CompletionItem(**loc) for loc in result_dict] - - def references(self, textDocument, position): - """ - The references request is sent from the client to the server to resolve - project-wide references for the symbol denoted by the given text - document position. - - :param TextDocumentItem textDocument: The text document. - :param Position position: The position inside the text document. - """ - - result_dict = self.lsp_endpoint.call_method("textDocument/references", - textDocument = textDocument, - position = position) - - if not result_dict: return [] - return [lsp_structs.Location(**loc) for loc in result_dict] \ No newline at end of file diff --git a/plugins/lsp_client/pylspclient/lsp_endpoint.py b/plugins/lsp_client/pylspclient/lsp_endpoint.py deleted file mode 100644 index 655833e..0000000 --- a/plugins/lsp_client/pylspclient/lsp_endpoint.py +++ /dev/null @@ -1,111 +0,0 @@ -from __future__ import print_function - -import threading - -from . import lsp_structs - - - -class LspEndpoint(threading.Thread): - def __init__(self, json_rpc_endpoint, method_callbacks = {}, notify_callbacks = {}, timeout = 2): - threading.Thread.__init__(self) - self.json_rpc_endpoint = json_rpc_endpoint - self.notify_callbacks = notify_callbacks - self.method_callbacks = method_callbacks - self.event_dict = {} - self.response_dict = {} - self.next_id = 0 - self._timeout = timeout - self.shutdown_flag = False - - def handle_result(self, rpc_id, result, error): - self.response_dict[rpc_id] = (result, error) - cond = self.event_dict[rpc_id] - cond.acquire() - cond.notify() - cond.release() - - def stop(self): - self.shutdown_flag = True - - def run(self): - while not self.shutdown_flag: - try: - jsonrpc_message = self.json_rpc_endpoint.recv_response() - if jsonrpc_message is None: break - - method = jsonrpc_message.get("method") - result = jsonrpc_message.get("result") - error = jsonrpc_message.get("error") - rpc_id = jsonrpc_message.get("id") - params = jsonrpc_message.get("params") - - if method: - if rpc_id is not None: - if method not in self.method_callbacks: - raise lsp_structs.ResponseError( - lsp_structs.ErrorCodes.MethodNotFound, - "Method not found: {method}" - .format(method=method)) - result = self.method_callbacks[method](params) - self.send_response(rpc_id, result, None) - else: - if method not in self.notify_callbacks: - print("Notify method not found: {method}.".format(method=method)) - else: - self.notify_callbacks[method](params) - else: - self.handle_result(rpc_id, result, error) - except lsp_structs.ResponseError as e: - self.send_response(rpc_id, None, e) - - def send_response(self, id, result, error): - message_dict = {} - message_dict["jsonrpc"] = "2.0" - message_dict["id"] = id - - if result: - message_dict["result"] = result - if error: - message_dict["error"] = error - - self.json_rpc_endpoint.send_request(message_dict) - - def send_message(self, method_name, params, id=None): - message_dict = {} - message_dict["jsonrpc"] = "2.0" - - if id is not None: - message_dict["id"] = id - - message_dict["method"] = method_name - message_dict["params"] = params - - self.json_rpc_endpoint.send_request(message_dict) - - def call_method(self, method_name, **kwargs): - current_id = self.next_id - self.next_id += 1 - cond = threading.Condition() - self.event_dict[current_id] = cond - - cond.acquire() - self.send_message(method_name, kwargs, current_id) - if self.shutdown_flag: - return None - - if not cond.wait(timeout=self._timeout): - raise TimeoutError() - cond.release() - - self.event_dict.pop(current_id) - result, error = self.response_dict.pop(current_id) - if error: - raise lsp_structs.ResponseError(error.get("code"), - error.get("message"), - error.get("data")) - - return result - - def send_notification(self, method_name, **kwargs): - self.send_message(method_name, kwargs) \ No newline at end of file diff --git a/plugins/lsp_client/pylspclient/lsp_structs.py b/plugins/lsp_client/pylspclient/lsp_structs.py deleted file mode 100644 index 70804a5..0000000 --- a/plugins/lsp_client/pylspclient/lsp_structs.py +++ /dev/null @@ -1,566 +0,0 @@ -import enum - - - -def to_type(o, new_type): - ''' - Helper funciton that receives an object or a dict and convert it to a new - given type. - - :param object|dict o: The object to convert - :param Type new_type: The type to convert to. - ''' - - return o if new_type == type(o) else new_type(**o) - - -class Position(object): - def __init__(self, line, character): - """ - Constructs a new Position instance. - - :param int line: Line position in a document (zero-based). - :param int character: Character offset on a line in a document - (zero-based). - """ - self.line = line - self.character = character - - -class Range(object): - def __init__(self, start, end): - """ - Constructs a new Range instance. - - :param Position start: The range's start position. - :param Position end: The range's end position. - """ - self.start = to_type(start, Position) - self.end = to_type(end, Position) - - -class Location(object): - """ - Represents a location inside a resource, such as a line inside a text file. - """ - - def __init__(self, uri, range): - """ - Constructs a new Location instance. - - :param str uri: Resource file. - :param Range range: The range inside the file - """ - self.uri = uri - self.range = to_type(range, Range) - - -class LocationLink(object): - """ - Represents a link between a source and a target location. - """ - - def __init__(self, originSelectionRange, targetUri, targetRange, targetSelectionRange): - """ - Constructs a new LocationLink instance. - - :param Range originSelectionRange: Span of the origin of this link. - Used as the underlined span for mouse interaction. Defaults to the word range at the mouse position. - :param str targetUri: The target resource identifier of this link. - :param Range targetRange: The full target range of this link. If the target for example is a symbol then target - range is the range enclosing this symbol not including leading/trailing whitespace but everything else - like comments. This information is typically used to highlight the range in the editor. - :param Range targetSelectionRange: The range that should be selected and revealed when this link is being followed, - e.g the name of a function. Must be contained by the the `targetRange`. See also `DocumentSymbol#range` - """ - self.originSelectionRange = to_type(originSelectionRange, Range) - self.targetUri = targetUri - self.targetRange = to_type(targetRange, Range) - self.targetSelectionRange = to_type(targetSelectionRange, Range) - - -class Diagnostic(object): - def __init__(self, range, severity, code, source, message, relatedInformation): - """ - Constructs a new Diagnostic instance. - :param Range range: The range at which the message applies.Resource file. - :param int severity: The diagnostic's severity. Can be omitted. If omitted it is up to the - client to interpret diagnostics as error, warning, info or hint. - :param str code: The diagnostic's code, which might appear in the user interface. - :param str source: A human-readable string describing the source of this - diagnostic, e.g. 'typescript' or 'super lint'. - :param str message: The diagnostic's message. - :param list relatedInformation: An array of related diagnostic information, e.g. when symbol-names within - a scope collide all definitions can be marked via this property. - """ - self.range = range - self.severity = severity - self.code = code - self.source = source - self.message = message - self.relatedInformation = relatedInformation - - -class DiagnosticSeverity(object): - Error = 1 - Warning = 2 # TODO: warning is known in python - Information = 3 - Hint = 4 - - -class DiagnosticRelatedInformation(object): - def __init__(self, location, message): - """ - Constructs a new Diagnostic instance. - :param Location location: The location of this related diagnostic information. - :param str message: The message of this related diagnostic information. - """ - self.location = location - self.message = message - - -class Command(object): - def __init__(self, title, command, arguments): - """ - Constructs a new Diagnostic instance. - :param str title: Title of the command, like `save`. - :param str command: The identifier of the actual command handler. - :param list argusments: Arguments that the command handler should be invoked with. - """ - self.title = title - self.command = command - self.arguments = arguments - - -class TextDocumentItem(object): - """ - An item to transfer a text document from the client to the server. - """ - def __init__(self, uri, languageId, version, text): - """ - Constructs a new Diagnostic instance. - - :param DocumentUri uri: Title of the command, like `save`. - :param str languageId: The identifier of the actual command handler. - :param int version: Arguments that the command handler should be invoked with. - :param str text: Arguments that the command handler should be invoked with. - """ - self.uri = uri - self.languageId = languageId - self.version = version - self.text = text - - -class TextDocumentIdentifier(object): - """ - Text documents are identified using a URI. On the protocol level, URIs are passed as strings. - """ - def __init__(self, uri): - """ - Constructs a new TextDocumentIdentifier instance. - - :param DocumentUri uri: The text document's URI. - """ - self.uri = uri - - -class VersionedTextDocumentIdentifier(TextDocumentIdentifier): - """ - An identifier to denote a specific version of a text document. - """ - def __init__(self, uri, version): - """ - Constructs a new TextDocumentIdentifier instance. - - :param DocumentUri uri: The text document's URI. - :param int version: The version number of this document. If a versioned - text document identifier is sent from the server to the client and - the file is not open in the editor (the server has not received an - open notification before) the server can send `null` to indicate - that the version is known and the content on disk is the truth (as - speced with document content ownership). - The version number of a document will increase after each change, including - undo/redo. The number doesn't need to be consecutive. - """ - super(VersionedTextDocumentIdentifier, self).__init__(uri) - self.version = version - - -class TextDocumentContentChangeEvent(object): - """ - An event describing a change to a text document. If range and rangeLength are omitted - the new text is considered to be the full content of the document. - """ - def __init__(self, range, rangeLength, text): - """ - Constructs a new TextDocumentContentChangeEvent instance. - - :param Range range: The range of the document that changed. - :param int rangeLength: The length of the range that got replaced. - :param str text: The new text of the range/document. - """ - self.range = range - self.rangeLength = rangeLength - self.text = text - - -class TextDocumentPositionParams(object): - """ - A parameter literal used in requests to pass a text document and a position inside that document. - """ - def __init__(self, textDocument, position): - """ - Constructs a new TextDocumentPositionParams instance. - - :param TextDocumentIdentifier textDocument: The text document. - :param Position position: The position inside the text document. - """ - self.textDocument = textDocument - self.position = position - - -class LANGUAGE_IDENTIFIER(object): - BAT = "bat" - BIBTEX = "bibtex" - CLOJURE = "clojure" - COFFESCRIPT = "coffeescript" - C = "c" - CPP = "cpp" - CSHARP = "csharp" - CSS = "css" - DIFF = "diff" - DOCKERFILE = "dockerfile" - FSHARP = "fsharp" - GIT_COMMIT = "git-commit" - GIT_REBASE = "git-rebase" - GO = "go" - GROOVY = "groovy" - HANDLEBARS = "handlebars" - HTML = "html" - INI = "ini" - JAVA = "java" - JAVASCRIPT = "javascript" - JSON = "json" - LATEX = "latex" - LESS = "less" - LUA = "lua" - MAKEFILE = "makefile" - MARKDOWN = "markdown" - OBJECTIVE_C = "objective-c" - OBJECTIVE_CPP = "objective-cpp" - Perl = "perl" - PHP = "php" - POWERSHELL = "powershell" - PUG = "jade" - PYTHON = "python" - R = "r" - RAZOR = "razor" - RUBY = "ruby" - RUST = "rust" - SASS = "sass" - SCSS = "scss" - ShaderLab = "shaderlab" - SHELL_SCRIPT = "shellscript" - SQL = "sql" - SWIFT = "swift" - TYPE_SCRIPT = "typescript" - TEX = "tex" - VB = "vb" - XML = "xml" - XSL = "xsl" - YAML = "yaml" - - -class SymbolKind(enum.Enum): - File = 1 - Module = 2 - Namespace = 3 - Package = 4 - Class = 5 - Method = 6 - Property = 7 - Field = 8 - Constructor = 9 - Enum = 10 - Interface = 11 - Function = 12 - Variable = 13 - Constant = 14 - String = 15 - Number = 16 - Boolean = 17 - Array = 18 - Object = 19 - Key = 20 - Null = 21 - EnumMember = 22 - Struct = 23 - Event = 24 - Operator = 25 - TypeParameter = 26 - - -class SymbolInformation(object): - """ - Represents information about programming constructs like variables, classes, interfaces etc. - """ - def __init__(self, name, kind, location, containerName = None, deprecated = False): - """ - Constructs a new SymbolInformation instance. - - :param str name: The name of this symbol. - :param int kind: The kind of this symbol. - :param bool Location: The location of this symbol. The location's range is used by a tool - to reveal the location in the editor. If the symbol is selected in the - tool the range's start information is used to position the cursor. So - the range usually spans more then the actual symbol's name and does - normally include things like visibility modifiers. - - The range doesn't have to denote a node range in the sense of a abstract - syntax tree. It can therefore not be used to re-construct a hierarchy of - the symbols. - :param str containerName: The name of the symbol containing this symbol. This information is for - user interface purposes (e.g. to render a qualifier in the user interface - if necessary). It can't be used to re-infer a hierarchy for the document - symbols. - :param bool deprecated: Indicates if this symbol is deprecated. - """ - self.name = name - self.kind = SymbolKind(kind) - self.deprecated = deprecated - self.location = to_type(location, Location) - self.containerName = containerName - - -class ParameterInformation(object): - """ - Represents a parameter of a callable-signature. A parameter can - have a label and a doc-comment. - """ - def __init__(self, label, documentation = ""): - """ - Constructs a new ParameterInformation instance. - - :param str label: The label of this parameter. Will be shown in the UI. - :param str documentation: The human-readable doc-comment of this parameter. Will be shown in the UI but can be omitted. - """ - self.label = label - self.documentation = documentation - - -class SignatureInformation(object): - """ - Represents the signature of something callable. A signature - can have a label, like a function-name, a doc-comment, and - a set of parameters. - """ - def __init__(self, label, documentation = "", parameters = []): - """ - Constructs a new SignatureInformation instance. - - :param str label: The label of this signature. Will be shown in the UI. - :param str documentation: The human-readable doc-comment of this signature. Will be shown in the UI but can be omitted. - :param ParameterInformation[] parameters: The parameters of this signature. - """ - self.label = label - self.documentation = documentation - self.parameters = [to_type(parameter, ParameterInformation) for parameter in parameters] - - -class SignatureHelp(object): - """ - Signature help represents the signature of something - callable. There can be multiple signature but only one - active and only one active parameter. - """ - def __init__(self, signatures, activeSignature = 0, activeParameter = 0): - """ - Constructs a new SignatureHelp instance. - - :param SignatureInformation[] signatures: One or more signatures. - :param int activeSignature: - :param int activeParameter: - """ - self.signatures = [to_type(signature, SignatureInformation) for signature in signatures] - self.activeSignature = activeSignature - self.activeParameter = activeParameter - - -class CompletionTriggerKind(object): - Invoked = 1 - TriggerCharacter = 2 - TriggerForIncompleteCompletions = 3 - - -class CompletionContext(object): - """ - Contains additional information about the context in which a completion request is triggered. - """ - def __init__(self, triggerKind, triggerCharacter = None): - """ - Constructs a new CompletionContext instance. - - :param CompletionTriggerKind triggerKind: How the completion was triggered. - :param str triggerCharacter: The trigger character (a single character) that has trigger code complete. - Is undefined if `triggerKind !== CompletionTriggerKind.TriggerCharacter` - """ - self.triggerKind = triggerKind - if triggerCharacter: - self.triggerCharacter = triggerCharacter - - -class TextEdit(object): - """ - A textual edit applicable to a text document. - """ - def __init__(self, range, newText): - """ - :param Range range: The range of the text document to be manipulated. To insert - text into a document create a range where start === end. - :param str newText: The string to be inserted. For delete operations use an empty string. - """ - self.range = range - self.newText = newText - - -class InsertTextFormat(object): - PlainText = 1 - Snippet = 2 - - -class CompletionItem(object): - """ - """ - def __init__(self, label, \ - kind = None, \ - detail = None, \ - documentation = None, \ - deprecated = None, \ - preselect = None, \ - sortText = None, \ - filterText = None, \ - insertText = None, \ - insertTextFormat = None, \ - textEdit = None, \ - additionalTextEdits = None, \ - commitCharacters = None, \ - command = None, \ - data = None, \ - score = 0.0 - ): - """ - :param str label: The label of this completion item. By default also the text that is inserted when selecting - this completion. - :param int kind: The kind of this completion item. Based of the kind an icon is chosen by the editor. - :param str detail: A human-readable string with additional information about this item, like type or symbol information. - :param tr ocumentation: A human-readable string that represents a doc-comment. - :param bool deprecated: Indicates if this item is deprecated. - :param bool preselect: Select this item when showing. Note: that only one completion item can be selected and that the - tool / client decides which item that is. The rule is that the first item of those that match best is selected. - :param str sortText: A string that should be used when comparing this item with other items. When `falsy` the label is used. - :param str filterText: A string that should be used when filtering a set of completion items. When `falsy` the label is used. - :param str insertText: A string that should be inserted into a document when selecting this completion. When `falsy` the label is used. - The `insertText` is subject to interpretation by the client side. Some tools might not take the string literally. For example - VS Code when code complete is requested in this example `con` and a completion item with an `insertText` of `console` is provided it - will only insert `sole`. Therefore it is recommended to use `textEdit` instead since it avoids additional client side interpretation. - @deprecated Use textEdit instead. - :param InsertTextFormat insertTextFormat: The format of the insert text. The format applies to both the `insertText` property - and the `newText` property of a provided `textEdit`. - :param TextEdit textEdit: An edit which is applied to a document when selecting this completion. When an edit is provided the value of `insertText` is ignored. - Note:* The range of the edit must be a single line range and it must contain the position at which completion - has been requested. - :param TextEdit additionalTextEdits: An optional array of additional text edits that are applied when selecting this completion. - Edits must not overlap (including the same insert position) with the main edit nor with themselves. - Additional text edits should be used to change text unrelated to the current cursor position - (for example adding an import statement at the top of the file if the completion item will - insert an unqualified type). - :param str commitCharacters: An optional set of characters that when pressed while this completion is active will accept it first and - then type that character. *Note* that all commit characters should have `length=1` and that superfluous - characters will be ignored. - :param Command command: An optional command that is executed *after* inserting this completion. Note: that - additional modifications to the current document should be described with the additionalTextEdits-property. - :param data: An data entry field that is preserved on a completion item between a completion and a completion resolve request. - :param float score: Score of the code completion item. - """ - self.label = label - self.kind = kind - self.detail = detail - self.documentation = documentation - self.deprecated = deprecated - self.preselect = preselect - self.sortText = sortText - self.filterText = filterText - self.insertText = insertText - self.insertTextFormat = insertTextFormat - self.textEdit = textEdit - self.additionalTextEdits = additionalTextEdits - self.commitCharacters = commitCharacters - self.command = command - self.data = data - self.score = score - - -class CompletionItemKind(enum.Enum): - Text = 1 - Method = 2 - Function = 3 - Constructor = 4 - Field = 5 - Variable = 6 - Class = 7 - Interface = 8 - Module = 9 - Property = 10 - Unit = 11 - Value = 12 - Enum = 13 - Keyword = 14 - Snippet = 15 - Color = 16 - File = 17 - Reference = 18 - Folder = 19 - EnumMember = 20 - Constant = 21 - Struct = 22 - Event = 23 - Operator = 24 - TypeParameter = 25 - - -class CompletionList(object): - """ - Represents a collection of [completion items](#CompletionItem) to be preselect in the editor. - """ - def __init__(self, isIncomplete, items): - """ - Constructs a new CompletionContext instance. - - :param bool isIncomplete: This list it not complete. Further typing should result in recomputing this list. - :param CompletionItem items: The completion items. - """ - self.isIncomplete = isIncomplete - self.items = [to_type(i, CompletionItem) for i in items] - -class ErrorCodes(enum.Enum): - # Defined by JSON RPC - ParseError = -32700 - InvalidRequest = -32600 - MethodNotFound = -32601 - InvalidParams = -32602 - InternalError = -32603 - serverErrorStart = -32099 - serverErrorEnd = -32000 - ServerNotInitialized = -32002 - UnknownErrorCode = -32001 - - # Defined by the protocol. - RequestCancelled = -32800 - ContentModified = -32801 - -class ResponseError(Exception): - def __init__(self, code, message, data = None): - self.code = code - self.message = message - if data: - self.data = data \ No newline at end of file diff --git a/plugins/markdown_preview/__init__.py b/plugins/markdown_preview/__init__.py deleted file mode 100644 index d36fa8c..0000000 --- a/plugins/markdown_preview/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -""" - Pligin Module -""" diff --git a/plugins/markdown_preview/__main__.py b/plugins/markdown_preview/__main__.py deleted file mode 100644 index a576329..0000000 --- a/plugins/markdown_preview/__main__.py +++ /dev/null @@ -1,3 +0,0 @@ -""" - Pligin Package -""" diff --git a/plugins/markdown_preview/manifest.json b/plugins/markdown_preview/manifest.json deleted file mode 100644 index d8be8ec..0000000 --- a/plugins/markdown_preview/manifest.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "manifest": { - "name": "Markdown Preview", - "author": "ITDominator", - "version": "0.0.1", - "support": "", - "requests": { - "pass_events": "true", - "pass_ui_objects": ["separator_right"], - "bind_keys": ["Markdown Preview||tggle_markdown_preview:m"] - } - } -} \ No newline at end of file diff --git a/plugins/markdown_preview/markdown/__init__.py b/plugins/markdown_preview/markdown/__init__.py deleted file mode 100644 index 9674d6e..0000000 --- a/plugins/markdown_preview/markdown/__init__.py +++ /dev/null @@ -1,48 +0,0 @@ -# Python Markdown - -# A Python implementation of John Gruber's Markdown. - -# - Documentation: https://python-markdown.github.io/ -# - GitHub: https://github.com/Python-Markdown/markdown/ -# - PyPI: https://pypi.org/project/Markdown/ - -# Started by Manfred Stienstra (http://www.dwerg.net/). -# Maintained for a few years by Yuri Takhteyev (http://www.freewisdom.org). -# Currently maintained by Waylan Limberg (https://github.com/waylan), -# Dmitry Shachnev (https://github.com/mitya57) and Isaac Muse (https://github.com/facelessuser). - -# - Copyright 2007-2023 The Python Markdown Project (v. 1.7 and later) -# - Copyright 2004, 2005, 2006 Yuri Takhteyev (v. 0.2-1.6b) -# - Copyright 2004 Manfred Stienstra (the original version) - -# License: BSD (see LICENSE.md for details). - -""" -Python-Markdown provides two public functions ([`markdown.markdown`][] and [`markdown.markdownFromFile`][]) -both of which wrap the public class [`markdown.Markdown`][]. All submodules support these public functions -and class and/or provide extension support. - -Modules: - core: Core functionality. - preprocessors: Pre-processors. - blockparser: Core Markdown block parser. - blockprocessors: Block processors. - treeprocessors: Tree processors. - inlinepatterns: Inline patterns. - postprocessors: Post-processors. - serializers: Serializers. - util: Utility functions. - htmlparser: HTML parser. - test_tools: Testing utilities. - extensions: Markdown extensions. -""" - -from __future__ import annotations - -from .core import Markdown, markdown, markdownFromFile -from .__meta__ import __version__, __version_info__ # noqa - -# For backward compatibility as some extensions expect it... -from .extensions import Extension # noqa - -__all__ = ['Markdown', 'markdown', 'markdownFromFile'] diff --git a/plugins/markdown_preview/markdown/__main__.py b/plugins/markdown_preview/markdown/__main__.py deleted file mode 100644 index c323aaa..0000000 --- a/plugins/markdown_preview/markdown/__main__.py +++ /dev/null @@ -1,151 +0,0 @@ -# Python Markdown - -# A Python implementation of John Gruber's Markdown. - -# Documentation: https://python-markdown.github.io/ -# GitHub: https://github.com/Python-Markdown/markdown/ -# PyPI: https://pypi.org/project/Markdown/ - -# Started by Manfred Stienstra (http://www.dwerg.net/). -# Maintained for a few years by Yuri Takhteyev (http://www.freewisdom.org). -# Currently maintained by Waylan Limberg (https://github.com/waylan), -# Dmitry Shachnev (https://github.com/mitya57) and Isaac Muse (https://github.com/facelessuser). - -# Copyright 2007-2023 The Python Markdown Project (v. 1.7 and later) -# Copyright 2004, 2005, 2006 Yuri Takhteyev (v. 0.2-1.6b) -# Copyright 2004 Manfred Stienstra (the original version) - -# License: BSD (see LICENSE.md for details). - -from __future__ import annotations - -import sys -import optparse -import codecs -import warnings -import markdown -try: - # We use `unsafe_load` because users may need to pass in actual Python - # objects. As this is only available from the CLI, the user has much - # worse problems if an attacker can use this as an attach vector. - from yaml import unsafe_load as yaml_load -except ImportError: # pragma: no cover - try: - # Fall back to PyYAML <5.1 - from yaml import load as yaml_load - except ImportError: - # Fall back to JSON - from json import load as yaml_load - -import logging -from logging import DEBUG, WARNING, CRITICAL - -logger = logging.getLogger('MARKDOWN') - - -def parse_options(args=None, values=None): - """ - Define and parse `optparse` options for command-line usage. - """ - usage = """%prog [options] [INPUTFILE] - (STDIN is assumed if no INPUTFILE is given)""" - desc = "A Python implementation of John Gruber's Markdown. " \ - "https://Python-Markdown.github.io/" - ver = "%%prog %s" % markdown.__version__ - - parser = optparse.OptionParser(usage=usage, description=desc, version=ver) - parser.add_option("-f", "--file", dest="filename", default=None, - help="Write output to OUTPUT_FILE. Defaults to STDOUT.", - metavar="OUTPUT_FILE") - parser.add_option("-e", "--encoding", dest="encoding", - help="Encoding for input and output files.",) - parser.add_option("-o", "--output_format", dest="output_format", - default='xhtml', metavar="OUTPUT_FORMAT", - help="Use output format 'xhtml' (default) or 'html'.") - parser.add_option("-n", "--no_lazy_ol", dest="lazy_ol", - action='store_false', default=True, - help="Observe number of first item of ordered lists.") - parser.add_option("-x", "--extension", action="append", dest="extensions", - help="Load extension EXTENSION.", metavar="EXTENSION") - parser.add_option("-c", "--extension_configs", - dest="configfile", default=None, - help="Read extension configurations from CONFIG_FILE. " - "CONFIG_FILE must be of JSON or YAML format. YAML " - "format requires that a python YAML library be " - "installed. The parsed JSON or YAML must result in a " - "python dictionary which would be accepted by the " - "'extension_configs' keyword on the markdown.Markdown " - "class. The extensions must also be loaded with the " - "`--extension` option.", - metavar="CONFIG_FILE") - parser.add_option("-q", "--quiet", default=CRITICAL, - action="store_const", const=CRITICAL+10, dest="verbose", - help="Suppress all warnings.") - parser.add_option("-v", "--verbose", - action="store_const", const=WARNING, dest="verbose", - help="Print all warnings.") - parser.add_option("--noisy", - action="store_const", const=DEBUG, dest="verbose", - help="Print debug messages.") - - (options, args) = parser.parse_args(args, values) - - if len(args) == 0: - input_file = None - else: - input_file = args[0] - - if not options.extensions: - options.extensions = [] - - extension_configs = {} - if options.configfile: - with codecs.open( - options.configfile, mode="r", encoding=options.encoding - ) as fp: - try: - extension_configs = yaml_load(fp) - except Exception as e: - message = "Failed parsing extension config file: %s" % \ - options.configfile - e.args = (message,) + e.args[1:] - raise - - opts = { - 'input': input_file, - 'output': options.filename, - 'extensions': options.extensions, - 'extension_configs': extension_configs, - 'encoding': options.encoding, - 'output_format': options.output_format, - 'lazy_ol': options.lazy_ol - } - - return opts, options.verbose - - -def run(): # pragma: no cover - """Run Markdown from the command line.""" - - # Parse options and adjust logging level if necessary - options, logging_level = parse_options() - if not options: - sys.exit(2) - logger.setLevel(logging_level) - console_handler = logging.StreamHandler() - logger.addHandler(console_handler) - if logging_level <= WARNING: - # Ensure deprecation warnings get displayed - warnings.filterwarnings('default') - logging.captureWarnings(True) - warn_logger = logging.getLogger('py.warnings') - warn_logger.addHandler(console_handler) - - # Run - markdown.markdownFromFile(**options) - - -if __name__ == '__main__': # pragma: no cover - # Support running module as a command line command. - # python -m markdown [options] [args] - run() diff --git a/plugins/markdown_preview/markdown/__meta__.py b/plugins/markdown_preview/markdown/__meta__.py deleted file mode 100644 index 21fceac..0000000 --- a/plugins/markdown_preview/markdown/__meta__.py +++ /dev/null @@ -1,51 +0,0 @@ -# Python Markdown - -# A Python implementation of John Gruber's Markdown. - -# Documentation: https://python-markdown.github.io/ -# GitHub: https://github.com/Python-Markdown/markdown/ -# PyPI: https://pypi.org/project/Markdown/ - -# Started by Manfred Stienstra (http://www.dwerg.net/). -# Maintained for a few years by Yuri Takhteyev (http://www.freewisdom.org). -# Currently maintained by Waylan Limberg (https://github.com/waylan), -# Dmitry Shachnev (https://github.com/mitya57) and Isaac Muse (https://github.com/facelessuser). - -# Copyright 2007-2023 The Python Markdown Project (v. 1.7 and later) -# Copyright 2004, 2005, 2006 Yuri Takhteyev (v. 0.2-1.6b) -# Copyright 2004 Manfred Stienstra (the original version) - -# License: BSD (see LICENSE.md for details). - -# __version_info__ format: -# (major, minor, patch, dev/alpha/beta/rc/final, #) -# (1, 1, 2, 'dev', 0) => "1.1.2.dev0" -# (1, 1, 2, 'alpha', 1) => "1.1.2a1" -# (1, 2, 0, 'beta', 2) => "1.2b2" -# (1, 2, 0, 'rc', 4) => "1.2rc4" -# (1, 2, 0, 'final', 0) => "1.2" - -from __future__ import annotations - - -__version_info__ = (3, 5, 1, 'final', 0) - - -def _get_version(version_info): - " Returns a PEP 440-compliant version number from `version_info`. " - assert len(version_info) == 5 - assert version_info[3] in ('dev', 'alpha', 'beta', 'rc', 'final') - - parts = 2 if version_info[2] == 0 else 3 - v = '.'.join(map(str, version_info[:parts])) - - if version_info[3] == 'dev': - v += '.dev' + str(version_info[4]) - elif version_info[3] != 'final': - mapping = {'alpha': 'a', 'beta': 'b', 'rc': 'rc'} - v += mapping[version_info[3]] + str(version_info[4]) - - return v - - -__version__ = _get_version(__version_info__) diff --git a/plugins/markdown_preview/markdown/blockparser.py b/plugins/markdown_preview/markdown/blockparser.py deleted file mode 100644 index 549c9ec..0000000 --- a/plugins/markdown_preview/markdown/blockparser.py +++ /dev/null @@ -1,160 +0,0 @@ -# Python Markdown - -# A Python implementation of John Gruber's Markdown. - -# Documentation: https://python-markdown.github.io/ -# GitHub: https://github.com/Python-Markdown/markdown/ -# PyPI: https://pypi.org/project/Markdown/ - -# Started by Manfred Stienstra (http://www.dwerg.net/). -# Maintained for a few years by Yuri Takhteyev (http://www.freewisdom.org). -# Currently maintained by Waylan Limberg (https://github.com/waylan), -# Dmitry Shachnev (https://github.com/mitya57) and Isaac Muse (https://github.com/facelessuser). - -# Copyright 2007-2023 The Python Markdown Project (v. 1.7 and later) -# Copyright 2004, 2005, 2006 Yuri Takhteyev (v. 0.2-1.6b) -# Copyright 2004 Manfred Stienstra (the original version) - -# License: BSD (see LICENSE.md for details). - -""" -The block parser handles basic parsing of Markdown blocks. It doesn't concern -itself with inline elements such as `**bold**` or `*italics*`, but rather just -catches blocks, lists, quotes, etc. - -The `BlockParser` is made up of a bunch of `BlockProcessors`, each handling a -different type of block. Extensions may add/replace/remove `BlockProcessors` -as they need to alter how Markdown blocks are parsed. -""" - -from __future__ import annotations - -import xml.etree.ElementTree as etree -from typing import TYPE_CHECKING, Iterable, Any -from . import util - -if TYPE_CHECKING: # pragma: no cover - from markdown import Markdown - from .blockprocessors import BlockProcessor - - -class State(list): - """ Track the current and nested state of the parser. - - This utility class is used to track the state of the `BlockParser` and - support multiple levels if nesting. It's just a simple API wrapped around - a list. Each time a state is set, that state is appended to the end of the - list. Each time a state is reset, that state is removed from the end of - the list. - - Therefore, each time a state is set for a nested block, that state must be - reset when we back out of that level of nesting or the state could be - corrupted. - - While all the methods of a list object are available, only the three - defined below need be used. - - """ - - def set(self, state: Any): - """ Set a new state. """ - self.append(state) - - def reset(self) -> None: - """ Step back one step in nested state. """ - self.pop() - - def isstate(self, state: Any) -> bool: - """ Test that top (current) level is of given state. """ - if len(self): - return self[-1] == state - else: - return False - - -class BlockParser: - """ Parse Markdown blocks into an `ElementTree` object. - - A wrapper class that stitches the various `BlockProcessors` together, - looping through them and creating an `ElementTree` object. - - """ - - def __init__(self, md: Markdown): - """ Initialize the block parser. - - Arguments: - md: A Markdown instance. - - Attributes: - BlockParser.md (Markdown): A Markdown instance. - BlockParser.state (State): Tracks the nesting level of current location in document being parsed. - BlockParser.blockprocessors (util.Registry): A collection of - [`blockprocessors`][markdown.blockprocessors]. - - """ - self.blockprocessors: util.Registry[BlockProcessor] = util.Registry() - self.state = State() - self.md = md - - def parseDocument(self, lines: Iterable[str]) -> etree.ElementTree: - """ Parse a Markdown document into an `ElementTree`. - - Given a list of lines, an `ElementTree` object (not just a parent - `Element`) is created and the root element is passed to the parser - as the parent. The `ElementTree` object is returned. - - This should only be called on an entire document, not pieces. - - Arguments: - lines: A list of lines (strings). - - Returns: - An element tree. - """ - # Create an `ElementTree` from the lines - self.root = etree.Element(self.md.doc_tag) - self.parseChunk(self.root, '\n'.join(lines)) - return etree.ElementTree(self.root) - - def parseChunk(self, parent: etree.Element, text: str) -> None: - """ Parse a chunk of Markdown text and attach to given `etree` node. - - While the `text` argument is generally assumed to contain multiple - blocks which will be split on blank lines, it could contain only one - block. Generally, this method would be called by extensions when - block parsing is required. - - The `parent` `etree` Element passed in is altered in place. - Nothing is returned. - - Arguments: - parent: The parent element. - text: The text to parse. - - """ - self.parseBlocks(parent, text.split('\n\n')) - - def parseBlocks(self, parent: etree.Element, blocks: list[str]) -> None: - """ Process blocks of Markdown text and attach to given `etree` node. - - Given a list of `blocks`, each `blockprocessor` is stepped through - until there are no blocks left. While an extension could potentially - call this method directly, it's generally expected to be used - internally. - - This is a public method as an extension may need to add/alter - additional `BlockProcessors` which call this method to recursively - parse a nested block. - - Arguments: - parent: The parent element. - blocks: The blocks of text to parse. - - """ - while blocks: - for processor in self.blockprocessors: - if processor.test(parent, blocks[0]): - if processor.run(parent, blocks) is not False: - # run returns True or None - break diff --git a/plugins/markdown_preview/markdown/blockprocessors.py b/plugins/markdown_preview/markdown/blockprocessors.py deleted file mode 100644 index d808468..0000000 --- a/plugins/markdown_preview/markdown/blockprocessors.py +++ /dev/null @@ -1,636 +0,0 @@ -# Python Markdown - -# A Python implementation of John Gruber's Markdown. - -# Documentation: https://python-markdown.github.io/ -# GitHub: https://github.com/Python-Markdown/markdown/ -# PyPI: https://pypi.org/project/Markdown/ - -# Started by Manfred Stienstra (http://www.dwerg.net/). -# Maintained for a few years by Yuri Takhteyev (http://www.freewisdom.org). -# Currently maintained by Waylan Limberg (https://github.com/waylan), -# Dmitry Shachnev (https://github.com/mitya57) and Isaac Muse (https://github.com/facelessuser). - -# Copyright 2007-2023 The Python Markdown Project (v. 1.7 and later) -# Copyright 2004, 2005, 2006 Yuri Takhteyev (v. 0.2-1.6b) -# Copyright 2004 Manfred Stienstra (the original version) - -# License: BSD (see LICENSE.md for details). - -""" -A block processor parses blocks of text and adds new elements to the ElementTree. Blocks of text, -separated from other text by blank lines, may have a different syntax and produce a differently -structured tree than other Markdown. Block processors excel at handling code formatting, equation -layouts, tables, etc. -""" - -from __future__ import annotations - -import logging -import re -import xml.etree.ElementTree as etree -from typing import TYPE_CHECKING, Any -from . import util -from .blockparser import BlockParser - -if TYPE_CHECKING: # pragma: no cover - from markdown import Markdown - -logger = logging.getLogger('MARKDOWN') - - -def build_block_parser(md: Markdown, **kwargs: Any) -> BlockParser: - """ Build the default block parser used by Markdown. """ - parser = BlockParser(md) - parser.blockprocessors.register(EmptyBlockProcessor(parser), 'empty', 100) - parser.blockprocessors.register(ListIndentProcessor(parser), 'indent', 90) - parser.blockprocessors.register(CodeBlockProcessor(parser), 'code', 80) - parser.blockprocessors.register(HashHeaderProcessor(parser), 'hashheader', 70) - parser.blockprocessors.register(SetextHeaderProcessor(parser), 'setextheader', 60) - parser.blockprocessors.register(HRProcessor(parser), 'hr', 50) - parser.blockprocessors.register(OListProcessor(parser), 'olist', 40) - parser.blockprocessors.register(UListProcessor(parser), 'ulist', 30) - parser.blockprocessors.register(BlockQuoteProcessor(parser), 'quote', 20) - parser.blockprocessors.register(ReferenceProcessor(parser), 'reference', 15) - parser.blockprocessors.register(ParagraphProcessor(parser), 'paragraph', 10) - return parser - - -class BlockProcessor: - """ Base class for block processors. - - Each subclass will provide the methods below to work with the source and - tree. Each processor will need to define it's own `test` and `run` - methods. The `test` method should return True or False, to indicate - whether the current block should be processed by this processor. If the - test passes, the parser will call the processors `run` method. - - Attributes: - BlockProcessor.parser (BlockParser): The `BlockParser` instance this is attached to. - BlockProcessor.tab_length (int): The tab length set on the `Markdown` instance. - - """ - - def __init__(self, parser: BlockParser): - self.parser = parser - self.tab_length = parser.md.tab_length - - def lastChild(self, parent: etree.Element) -> etree.Element | None: - """ Return the last child of an `etree` element. """ - if len(parent): - return parent[-1] - else: - return None - - def detab(self, text: str, length: int | None = None) -> tuple[str, str]: - """ Remove a tab from the front of each line of the given text. """ - if length is None: - length = self.tab_length - newtext = [] - lines = text.split('\n') - for line in lines: - if line.startswith(' ' * length): - newtext.append(line[length:]) - elif not line.strip(): - newtext.append('') - else: - break - return '\n'.join(newtext), '\n'.join(lines[len(newtext):]) - - def looseDetab(self, text: str, level: int = 1) -> str: - """ Remove a tab from front of lines but allowing dedented lines. """ - lines = text.split('\n') - for i in range(len(lines)): - if lines[i].startswith(' '*self.tab_length*level): - lines[i] = lines[i][self.tab_length*level:] - return '\n'.join(lines) - - def test(self, parent: etree.Element, block: str) -> bool: - """ Test for block type. Must be overridden by subclasses. - - As the parser loops through processors, it will call the `test` - method on each to determine if the given block of text is of that - type. This method must return a boolean `True` or `False`. The - actual method of testing is left to the needs of that particular - block type. It could be as simple as `block.startswith(some_string)` - or a complex regular expression. As the block type may be different - depending on the parent of the block (i.e. inside a list), the parent - `etree` element is also provided and may be used as part of the test. - - Keyword arguments: - parent: An `etree` element which will be the parent of the block. - block: A block of text from the source which has been split at blank lines. - """ - pass # pragma: no cover - - def run(self, parent: etree.Element, blocks: list[str]) -> bool | None: - """ Run processor. Must be overridden by subclasses. - - When the parser determines the appropriate type of a block, the parser - will call the corresponding processor's `run` method. This method - should parse the individual lines of the block and append them to - the `etree`. - - Note that both the `parent` and `etree` keywords are pointers - to instances of the objects which should be edited in place. Each - processor must make changes to the existing objects as there is no - mechanism to return new/different objects to replace them. - - This means that this method should be adding `SubElements` or adding text - to the parent, and should remove (`pop`) or add (`insert`) items to - the list of blocks. - - If `False` is returned, this will have the same effect as returning `False` - from the `test` method. - - Keyword arguments: - parent: An `etree` element which is the parent of the current block. - blocks: A list of all remaining blocks of the document. - """ - pass # pragma: no cover - - -class ListIndentProcessor(BlockProcessor): - """ Process children of list items. - - Example - - * a list item - process this part - - or this part - - """ - - ITEM_TYPES = ['li'] - """ List of tags used for list items. """ - LIST_TYPES = ['ul', 'ol'] - """ Types of lists this processor can operate on. """ - - def __init__(self, *args): - super().__init__(*args) - self.INDENT_RE = re.compile(r'^(([ ]{%s})+)' % self.tab_length) - - def test(self, parent, block): - return block.startswith(' '*self.tab_length) and \ - not self.parser.state.isstate('detabbed') and \ - (parent.tag in self.ITEM_TYPES or - (len(parent) and parent[-1] is not None and - (parent[-1].tag in self.LIST_TYPES))) - - def run(self, parent, blocks): - block = blocks.pop(0) - level, sibling = self.get_level(parent, block) - block = self.looseDetab(block, level) - - self.parser.state.set('detabbed') - if parent.tag in self.ITEM_TYPES: - # It's possible that this parent has a `ul` or `ol` child list - # with a member. If that is the case, then that should be the - # parent. This is intended to catch the edge case of an indented - # list whose first member was parsed previous to this point - # see `OListProcessor` - if len(parent) and parent[-1].tag in self.LIST_TYPES: - self.parser.parseBlocks(parent[-1], [block]) - else: - # The parent is already a `li`. Just parse the child block. - self.parser.parseBlocks(parent, [block]) - elif sibling.tag in self.ITEM_TYPES: - # The sibling is a `li`. Use it as parent. - self.parser.parseBlocks(sibling, [block]) - elif len(sibling) and sibling[-1].tag in self.ITEM_TYPES: - # The parent is a list (`ol` or `ul`) which has children. - # Assume the last child `li` is the parent of this block. - if sibling[-1].text: - # If the parent `li` has text, that text needs to be moved to a `p` - # The `p` must be 'inserted' at beginning of list in the event - # that other children already exist i.e.; a nested sub-list. - p = etree.Element('p') - p.text = sibling[-1].text - sibling[-1].text = '' - sibling[-1].insert(0, p) - self.parser.parseChunk(sibling[-1], block) - else: - self.create_item(sibling, block) - self.parser.state.reset() - - def create_item(self, parent: etree.Element, block: str) -> None: - """ Create a new `li` and parse the block with it as the parent. """ - li = etree.SubElement(parent, 'li') - self.parser.parseBlocks(li, [block]) - - def get_level(self, parent: etree.Element, block: str) -> tuple[int, etree.Element]: - """ Get level of indentation based on list level. """ - # Get indent level - m = self.INDENT_RE.match(block) - if m: - indent_level = len(m.group(1))/self.tab_length - else: - indent_level = 0 - if self.parser.state.isstate('list'): - # We're in a tight-list - so we already are at correct parent. - level = 1 - else: - # We're in a loose-list - so we need to find parent. - level = 0 - # Step through children of tree to find matching indent level. - while indent_level > level: - child = self.lastChild(parent) - if (child is not None and - (child.tag in self.LIST_TYPES or child.tag in self.ITEM_TYPES)): - if child.tag in self.LIST_TYPES: - level += 1 - parent = child - else: - # No more child levels. If we're short of `indent_level`, - # we have a code block. So we stop here. - break - return level, parent - - -class CodeBlockProcessor(BlockProcessor): - """ Process code blocks. """ - - def test(self, parent, block): - return block.startswith(' '*self.tab_length) - - def run(self, parent, blocks): - sibling = self.lastChild(parent) - block = blocks.pop(0) - theRest = '' - if (sibling is not None and sibling.tag == "pre" and - len(sibling) and sibling[0].tag == "code"): - # The previous block was a code block. As blank lines do not start - # new code blocks, append this block to the previous, adding back - # line breaks removed from the split into a list. - code = sibling[0] - block, theRest = self.detab(block) - code.text = util.AtomicString( - '{}\n{}\n'.format(code.text, util.code_escape(block.rstrip())) - ) - else: - # This is a new code block. Create the elements and insert text. - pre = etree.SubElement(parent, 'pre') - code = etree.SubElement(pre, 'code') - block, theRest = self.detab(block) - code.text = util.AtomicString('%s\n' % util.code_escape(block.rstrip())) - if theRest: - # This block contained unindented line(s) after the first indented - # line. Insert these lines as the first block of the master blocks - # list for future processing. - blocks.insert(0, theRest) - - -class BlockQuoteProcessor(BlockProcessor): - """ Process blockquotes. """ - - RE = re.compile(r'(^|\n)[ ]{0,3}>[ ]?(.*)') - - def test(self, parent, block): - return bool(self.RE.search(block)) and not util.nearing_recursion_limit() - - def run(self, parent, blocks): - block = blocks.pop(0) - m = self.RE.search(block) - if m: - before = block[:m.start()] # Lines before blockquote - # Pass lines before blockquote in recursively for parsing first. - self.parser.parseBlocks(parent, [before]) - # Remove `> ` from beginning of each line. - block = '\n'.join( - [self.clean(line) for line in block[m.start():].split('\n')] - ) - sibling = self.lastChild(parent) - if sibling is not None and sibling.tag == "blockquote": - # Previous block was a blockquote so set that as this blocks parent - quote = sibling - else: - # This is a new blockquote. Create a new parent element. - quote = etree.SubElement(parent, 'blockquote') - # Recursively parse block with blockquote as parent. - # change parser state so blockquotes embedded in lists use `p` tags - self.parser.state.set('blockquote') - self.parser.parseChunk(quote, block) - self.parser.state.reset() - - def clean(self, line: str) -> str: - """ Remove `>` from beginning of a line. """ - m = self.RE.match(line) - if line.strip() == ">": - return "" - elif m: - return m.group(2) - else: - return line - - -class OListProcessor(BlockProcessor): - """ Process ordered list blocks. """ - - TAG: str = 'ol' - """ The tag used for the the wrapping element. """ - STARTSWITH: str = '1' - """ - The integer (as a string ) with which the list starts. For example, if a list is initialized as - `3. Item`, then the `ol` tag will be assigned an HTML attribute of `starts="3"`. Default: `"1"`. - """ - LAZY_OL: bool = True - """ Ignore `STARTSWITH` if `True`. """ - SIBLING_TAGS: list[str] = ['ol', 'ul'] - """ - Markdown does not require the type of a new list item match the previous list item type. - This is the list of types which can be mixed. - """ - - def __init__(self, parser: BlockParser): - super().__init__(parser) - # Detect an item (`1. item`). `group(1)` contains contents of item. - self.RE = re.compile(r'^[ ]{0,%d}\d+\.[ ]+(.*)' % (self.tab_length - 1)) - # Detect items on secondary lines. they can be of either list type. - self.CHILD_RE = re.compile(r'^[ ]{0,%d}((\d+\.)|[*+-])[ ]+(.*)' % - (self.tab_length - 1)) - # Detect indented (nested) items of either type - self.INDENT_RE = re.compile(r'^[ ]{%d,%d}((\d+\.)|[*+-])[ ]+.*' % - (self.tab_length, self.tab_length * 2 - 1)) - - def test(self, parent, block): - return bool(self.RE.match(block)) - - def run(self, parent, blocks): - # Check for multiple items in one block. - items = self.get_items(blocks.pop(0)) - sibling = self.lastChild(parent) - - if sibling is not None and sibling.tag in self.SIBLING_TAGS: - # Previous block was a list item, so set that as parent - lst = sibling - # make sure previous item is in a `p` - if the item has text, - # then it isn't in a `p` - if lst[-1].text: - # since it's possible there are other children for this - # sibling, we can't just `SubElement` the `p`, we need to - # insert it as the first item. - p = etree.Element('p') - p.text = lst[-1].text - lst[-1].text = '' - lst[-1].insert(0, p) - # if the last item has a tail, then the tail needs to be put in a `p` - # likely only when a header is not followed by a blank line - lch = self.lastChild(lst[-1]) - if lch is not None and lch.tail: - p = etree.SubElement(lst[-1], 'p') - p.text = lch.tail.lstrip() - lch.tail = '' - - # parse first block differently as it gets wrapped in a `p`. - li = etree.SubElement(lst, 'li') - self.parser.state.set('looselist') - firstitem = items.pop(0) - self.parser.parseBlocks(li, [firstitem]) - self.parser.state.reset() - elif parent.tag in ['ol', 'ul']: - # this catches the edge case of a multi-item indented list whose - # first item is in a blank parent-list item: - # * * subitem1 - # * subitem2 - # see also `ListIndentProcessor` - lst = parent - else: - # This is a new list so create parent with appropriate tag. - lst = etree.SubElement(parent, self.TAG) - # Check if a custom start integer is set - if not self.LAZY_OL and self.STARTSWITH != '1': - lst.attrib['start'] = self.STARTSWITH - - self.parser.state.set('list') - # Loop through items in block, recursively parsing each with the - # appropriate parent. - for item in items: - if item.startswith(' '*self.tab_length): - # Item is indented. Parse with last item as parent - self.parser.parseBlocks(lst[-1], [item]) - else: - # New item. Create `li` and parse with it as parent - li = etree.SubElement(lst, 'li') - self.parser.parseBlocks(li, [item]) - self.parser.state.reset() - - def get_items(self, block: str) -> list[str]: - """ Break a block into list items. """ - items = [] - for line in block.split('\n'): - m = self.CHILD_RE.match(line) - if m: - # This is a new list item - # Check first item for the start index - if not items and self.TAG == 'ol': - # Detect the integer value of first list item - INTEGER_RE = re.compile(r'(\d+)') - self.STARTSWITH = INTEGER_RE.match(m.group(1)).group() - # Append to the list - items.append(m.group(3)) - elif self.INDENT_RE.match(line): - # This is an indented (possibly nested) item. - if items[-1].startswith(' '*self.tab_length): - # Previous item was indented. Append to that item. - items[-1] = '{}\n{}'.format(items[-1], line) - else: - items.append(line) - else: - # This is another line of previous item. Append to that item. - items[-1] = '{}\n{}'.format(items[-1], line) - return items - - -class UListProcessor(OListProcessor): - """ Process unordered list blocks. """ - - TAG: str = 'ul' - """ The tag used for the the wrapping element. """ - - def __init__(self, parser: BlockParser): - super().__init__(parser) - # Detect an item (`1. item`). `group(1)` contains contents of item. - self.RE = re.compile(r'^[ ]{0,%d}[*+-][ ]+(.*)' % (self.tab_length - 1)) - - -class HashHeaderProcessor(BlockProcessor): - """ Process Hash Headers. """ - - # Detect a header at start of any line in block - RE = re.compile(r'(?:^|\n)(?P#{1,6})(?P