From dee70a542bb70a2a16551151cab50da5e7abdabb Mon Sep 17 00:00:00 2001 From: Remisa Yousefvand Date: Tue, 3 Dec 2024 01:08:16 +0330 Subject: [PATCH 1/2] v0.0.60 --- CHANGELOG.md | 8 +++++- CMakeLists.txt | 4 +++ CMakeLists.txt.user | 26 +++++++++--------- src/codeeditor.cpp | 33 ++++++++++++++++++++--- src/codeeditor.h | 3 +++ src/mainwindow.cpp | 27 +++++++++++++++++-- src/mainwindow.h | 4 +++ src/mainwindow/mainwindowconfigloader.cpp | 23 ++++++++++++++++ src/mainwindow/mainwindowconfigloader.h | 17 ++++++++++++ 9 files changed, 126 insertions(+), 19 deletions(-) create mode 100644 src/mainwindow/mainwindowconfigloader.cpp create mode 100644 src/mainwindow/mainwindowconfigloader.h diff --git a/CHANGELOG.md b/CHANGELOG.md index df20279..4bcd9b0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,12 @@ # Change Log -======= +============ + +## 0.0.60 + +- Implemented: +- View Menu -> Show Space + ## 0.0.59 - Default Tab Fixed diff --git a/CMakeLists.txt b/CMakeLists.txt index 5ece581..b5f0e49 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -39,6 +39,8 @@ set(PROJECT_UI src/systemsearchresultdialog.ui ) +set(CMAKE_AUTOUIC_SEARCH_PATHS src) + set(PROJECT_SOURCES src/main.cpp src/mainwindow.cpp @@ -100,6 +102,8 @@ set(PROJECT_SOURCES src/systemsearchresultdialog.h src/systemtextdelegate.cpp src/systemtextdelegate.h + src/mainwindow/mainwindowconfigloader.cpp + src/mainwindow/mainwindowconfigloader.h ${PROJECT_UI} ) diff --git a/CMakeLists.txt.user b/CMakeLists.txt.user index 8c9f9f7..a1e8596 100755 --- a/CMakeLists.txt.user +++ b/CMakeLists.txt.user @@ -1,6 +1,6 @@ - + EnvironmentId @@ -102,14 +102,14 @@ 2 false - -DCMAKE_PREFIX_PATH:PATH=%{Qt:QT_INSTALL_PREFIX} --DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable} --DCMAKE_PROJECT_INCLUDE_BEFORE:FILEPATH=%{BuildConfig:BuildDirectory:NativeFilePath}/.qtc/package-manager/auto-setup.cmake + -DCMAKE_CXX_COMPILER:FILEPATH=%{Compiler:Executable:Cxx} -DCMAKE_GENERATOR:STRING=Ninja --DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG} +-DCMAKE_PREFIX_PATH:PATH=%{Qt:QT_INSTALL_PREFIX} -DCMAKE_C_COMPILER:FILEPATH=%{Compiler:Executable:C} --DCMAKE_CXX_COMPILER:FILEPATH=%{Compiler:Executable:Cxx} --DCMAKE_BUILD_TYPE:STRING=Debug +-DCMAKE_PROJECT_INCLUDE_BEFORE:FILEPATH=%{BuildConfig:BuildDirectory:NativeFilePath}/.qtc/package-manager/auto-setup.cmake +-DCMAKE_BUILD_TYPE:STRING=Debug +-DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG} +-DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable} /data/Code/Qt/Notepad-- 0 /data/Code/Qt/Notepad--/build/Desktop-Debug @@ -160,14 +160,14 @@ 2 false - -DCMAKE_PREFIX_PATH:PATH=%{Qt:QT_INSTALL_PREFIX} --DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable} --DCMAKE_PROJECT_INCLUDE_BEFORE:FILEPATH=%{BuildConfig:BuildDirectory:NativeFilePath}/.qtc/package-manager/auto-setup.cmake + -DCMAKE_CXX_COMPILER:FILEPATH=%{Compiler:Executable:Cxx} -DCMAKE_GENERATOR:STRING=Ninja --DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG} +-DCMAKE_PREFIX_PATH:PATH=%{Qt:QT_INSTALL_PREFIX} -DCMAKE_C_COMPILER:FILEPATH=%{Compiler:Executable:C} --DCMAKE_CXX_COMPILER:FILEPATH=%{Compiler:Executable:Cxx} --DCMAKE_BUILD_TYPE:STRING=Release +-DCMAKE_PROJECT_INCLUDE_BEFORE:FILEPATH=%{BuildConfig:BuildDirectory:NativeFilePath}/.qtc/package-manager/auto-setup.cmake +-DCMAKE_BUILD_TYPE:STRING=Release +-DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG} +-DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable} /data/Code/Qt/Notepad-- /data/Code/Qt/Notepad--/build/Desktop-Release diff --git a/src/codeeditor.cpp b/src/codeeditor.cpp index de48379..ccef56e 100755 --- a/src/codeeditor.cpp +++ b/src/codeeditor.cpp @@ -31,6 +31,7 @@ CodeEditor::CodeEditor(QWidget *parent) m_useTabs = Settings::instance()->loadSetting("Indentation", "Option", "Tabs") == "Tabs"; m_indentationWidth = Settings::instance()->loadSetting("Indentation", "Size", "1").toInt(); m_showTabs = Settings::instance()->loadSetting("View", "ShowTabs", "false") == "true"; + m_showSpaces = Settings::instance()->loadSetting("View", "ShowSpaces", "false") == "true"; m_tabWidth = Settings::instance()->loadSetting("View", "TabWidth", "4").toInt(); } @@ -263,10 +264,22 @@ void CodeEditor::setShowTabs(bool enabled) { } } +void CodeEditor::setShowSpaces(bool enabled) { + if (m_showSpaces != enabled) { + m_showSpaces = enabled; + viewport()->update(); // Redraw the editor to show or hide tab symbols + } +} + bool CodeEditor::showTabs() const { return m_showTabs; } +bool CodeEditor::showSpaces() const { + return m_showSpaces; +} + +// TODO: Implement in UI void CodeEditor::setTabWidth(int width = 4) { m_tabWidth = width; viewport()->update(); // Trigger a repaint to apply the new width @@ -275,7 +288,7 @@ void CodeEditor::setTabWidth(int width = 4) { void CodeEditor::paintEvent(QPaintEvent *event) { QPlainTextEdit::paintEvent(event); - if (!m_showTabs) return; + if (!m_showTabs && !m_showSpaces) return; QPainter painter(viewport()); painter.setPen(Qt::gray); @@ -290,7 +303,7 @@ void CodeEditor::paintEvent(QPaintEvent *event) { // Iterate over characters in the block for (int i = 0; i < text.length(); ++i) { - if (text[i] == '\t') { + if (text[i] == '\t' && m_showTabs) { // Move the cursor to the tab character blockCursor.setPosition(blockStart + i); @@ -298,11 +311,25 @@ void CodeEditor::paintEvent(QPaintEvent *event) { QRect rect = cursorRect(blockCursor); // Adjust the position for the tab symbol - //QPoint position(rect.left(), rect.top() + metrics.ascent()); QPoint position(rect.left() + metrics.ascent(), rect.top() + metrics.ascent()); // Draw the tab symbol painter.drawText(position, "→"); + } else if (text[i] == ' ' && m_showSpaces) { + // Move the cursor to the space character + blockCursor.setPosition(blockStart + i); + + // Get the rectangle of the cursor position + QRect rect = cursorRect(blockCursor); + + // Adjust the position for the space dot + QPoint position( + rect.left() + metrics.horizontalAdvance(' ') / 4, // Push right slightly + rect.top() + metrics.ascent() / 2 + metrics.height() / 3 // Vertically center the dot lower + ); + + // Draw the space as a dot + painter.drawText(position, "."); } } block = block.next(); diff --git a/src/codeeditor.h b/src/codeeditor.h index a8a5360..8f2606a 100755 --- a/src/codeeditor.h +++ b/src/codeeditor.h @@ -25,7 +25,9 @@ class CodeEditor : public QPlainTextEdit { void goToLineInText(int lineNumber); void gotoLineInEditor(int lineNumber); void setShowTabs(bool enabled); + void setShowSpaces(bool enabled); bool showTabs() const; + bool showSpaces() const; void setTabWidth(int width); protected: @@ -46,6 +48,7 @@ private slots: bool m_useTabs; int m_indentationWidth; bool m_showTabs = false; + bool m_showSpaces = false; int m_tabWidth; }; diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 6e9ae35..d04981c 100755 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -9,6 +9,7 @@ #include "mainwindow.h" #include "codeeditor.h" #include "settings.h" +#include "mainwindow/mainwindowconfigloader.h" #include "mainwindow/textoperations.h" #include "mainwindow/recentfiles.h" #include "mainwindow/session.h" @@ -56,6 +57,9 @@ MainWindow::MainWindow(QWidget* parent) fileOperations->newDocument(); Helpers::zMenu(ui->menu_Language, this); + m_mainWindowConfigLoader = new MainWindowConfigLoader(this); + m_mainWindowConfigLoader->loadMainWindowConfig(); + qDebug() << "MainWindow initialized..."; } @@ -69,6 +73,7 @@ MainWindow::~MainWindow() { delete textOperations; delete m_systemFindDialog; delete m_systemReplaceDialog; + delete m_mainWindowConfigLoader; } Ui::MainWindow* MainWindow::getUi() const { @@ -496,7 +501,6 @@ void MainWindow::on_action_Find_triggered() { void MainWindow::on_action_Show_Tabs_triggered(bool checked) { - qDebug() << "Show Tabs is: " << checked; Settings::instance()->saveSetting("View", "ShowTabs", checked ? "true" : "false"); for (int i = 0; i < ui->documentsTab->count(); ++i) { @@ -507,6 +511,26 @@ void MainWindow::on_action_Show_Tabs_triggered(bool checked) } } +void MainWindow::on_actionShow_Spaces_triggered(bool checked) +{ + Settings::instance()->saveSetting("View", "ShowSpaces", checked ? "true" : "false"); + + for (int i = 0; i < ui->documentsTab->count(); ++i) { + Document *doc = qobject_cast(ui->documentsTab->widget(i)); + if (doc) { + doc->editor()->setShowSpaces(checked); + } + } +} + + + + + + + + + @@ -650,4 +674,3 @@ void MainWindow::setActiveDocumentEditorInReplaceDialog() { } - diff --git a/src/mainwindow.h b/src/mainwindow.h index be9e7f0..cc974a5 100755 --- a/src/mainwindow.h +++ b/src/mainwindow.h @@ -24,6 +24,7 @@ class Session; class Settings; class RecentFiles; class FileOperations; +class MainWindowConfigLoader; class MainWindow : public QMainWindow { Q_OBJECT @@ -147,6 +148,8 @@ private slots: void on_action_Show_Tabs_triggered(bool checked); + void on_actionShow_Spaces_triggered(bool checked); + private: Ui::MainWindow* ui; FileOperations* fileOperations; @@ -176,4 +179,5 @@ private slots: ReplaceDialog* replaceDialog; SearchOptions* m_searchOptions; Find* m_find = nullptr; + MainWindowConfigLoader* m_mainWindowConfigLoader; }; diff --git a/src/mainwindow/mainwindowconfigloader.cpp b/src/mainwindow/mainwindowconfigloader.cpp new file mode 100644 index 0000000..695d982 --- /dev/null +++ b/src/mainwindow/mainwindowconfigloader.cpp @@ -0,0 +1,23 @@ +#include "../settings.h" +#include "../mainwindow.h" +#include "../ui_mainwindow.h" +#include "src/ui_mainwindow.h" +#include "mainwindowconfigloader.h" + +MainWindowConfigLoader::MainWindowConfigLoader(MainWindow *mainWindow) : m_mainWindow(mainWindow) {} + +void MainWindowConfigLoader::loadMainWindowConfig() { + if (m_mainWindow && m_mainWindow->getUi()) { + m_mainWindow->getUi()->action_Show_Tabs->setChecked(showTabs()); + m_mainWindow->getUi()->actionShow_Spaces->setChecked(showSpaces()); + } +} + +bool MainWindowConfigLoader::showTabs() const { + return Settings::instance()->loadSetting("View", "ShowTabs", "false") == true; +} + +bool MainWindowConfigLoader::showSpaces() const { + return Settings::instance()->loadSetting("View", "ShowSpaces", "false") == true; +} + diff --git a/src/mainwindow/mainwindowconfigloader.h b/src/mainwindow/mainwindowconfigloader.h new file mode 100644 index 0000000..c27b0de --- /dev/null +++ b/src/mainwindow/mainwindowconfigloader.h @@ -0,0 +1,17 @@ +#pragma once + +#include "../mainwindow.h" + +class MainWindowConfigLoader +{ +public: + explicit MainWindowConfigLoader(MainWindow *mainWindow); + void loadMainWindowConfig(); + +private: + MainWindow* m_mainWindow; + + bool showTabs() const; + bool showSpaces() const; +}; + From f36b202f0d9eb974a900f2d25d2ab9a4f808321b Mon Sep 17 00:00:00 2001 From: Remisa Yousefvand Date: Tue, 3 Dec 2024 13:53:07 +0330 Subject: [PATCH 2/2] v0.0.61 --- CHANGELOG.md | 5 ++ CMakeLists.txt | 3 + CMakeLists.txt.user | 22 ++--- README.md | 6 +- assets/generate_random_file.sh | 32 +++++++ assets/replace-system.png | Bin 0 -> 91481 bytes src/aboutdialog.cpp | 18 ++++ src/aboutdialog.h | 20 +++++ src/aboutdialog.ui | 104 ++++++++++++++++++++++ src/codeeditor.cpp | 27 +++++- src/codeeditor.h | 2 + src/mainwindow.cpp | 39 +++++++- src/mainwindow.h | 6 ++ src/mainwindow.ui | 4 +- src/mainwindow/mainwindowconfigloader.cpp | 6 ++ src/mainwindow/mainwindowconfigloader.h | 1 + 16 files changed, 274 insertions(+), 21 deletions(-) create mode 100755 assets/generate_random_file.sh create mode 100644 assets/replace-system.png create mode 100644 src/aboutdialog.cpp create mode 100644 src/aboutdialog.h create mode 100644 src/aboutdialog.ui diff --git a/CHANGELOG.md b/CHANGELOG.md index 4bcd9b0..a2e0018 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,11 @@ ============ +## 0.0.61 + +- Implemented: +- View Menu -> Show End of Line + ## 0.0.60 - Implemented: diff --git a/CMakeLists.txt b/CMakeLists.txt index b5f0e49..ef81e37 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -37,6 +37,7 @@ set(PROJECT_UI src/systemfind/systemfinddialog.ui src/systemreplace/systemreplacedialog.ui src/systemsearchresultdialog.ui + src/aboutdialog.ui ) set(CMAKE_AUTOUIC_SEARCH_PATHS src) @@ -104,6 +105,8 @@ set(PROJECT_SOURCES src/systemtextdelegate.h src/mainwindow/mainwindowconfigloader.cpp src/mainwindow/mainwindowconfigloader.h + src/aboutdialog.cpp + src/aboutdialog.h ${PROJECT_UI} ) diff --git a/CMakeLists.txt.user b/CMakeLists.txt.user index a1e8596..aec86de 100755 --- a/CMakeLists.txt.user +++ b/CMakeLists.txt.user @@ -1,6 +1,6 @@ - + EnvironmentId @@ -102,14 +102,14 @@ 2 false - -DCMAKE_CXX_COMPILER:FILEPATH=%{Compiler:Executable:Cxx} + -DCMAKE_PROJECT_INCLUDE_BEFORE:FILEPATH=%{BuildConfig:BuildDirectory:NativeFilePath}/.qtc/package-manager/auto-setup.cmake -DCMAKE_GENERATOR:STRING=Ninja +-DCMAKE_CXX_COMPILER:FILEPATH=%{Compiler:Executable:Cxx} -DCMAKE_PREFIX_PATH:PATH=%{Qt:QT_INSTALL_PREFIX} --DCMAKE_C_COMPILER:FILEPATH=%{Compiler:Executable:C} --DCMAKE_PROJECT_INCLUDE_BEFORE:FILEPATH=%{BuildConfig:BuildDirectory:NativeFilePath}/.qtc/package-manager/auto-setup.cmake --DCMAKE_BUILD_TYPE:STRING=Debug -DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG} --DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable} +-DCMAKE_BUILD_TYPE:STRING=Debug +-DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable} +-DCMAKE_C_COMPILER:FILEPATH=%{Compiler:Executable:C} /data/Code/Qt/Notepad-- 0 /data/Code/Qt/Notepad--/build/Desktop-Debug @@ -160,14 +160,14 @@ 2 false - -DCMAKE_CXX_COMPILER:FILEPATH=%{Compiler:Executable:Cxx} + -DCMAKE_PROJECT_INCLUDE_BEFORE:FILEPATH=%{BuildConfig:BuildDirectory:NativeFilePath}/.qtc/package-manager/auto-setup.cmake -DCMAKE_GENERATOR:STRING=Ninja +-DCMAKE_CXX_COMPILER:FILEPATH=%{Compiler:Executable:Cxx} -DCMAKE_PREFIX_PATH:PATH=%{Qt:QT_INSTALL_PREFIX} --DCMAKE_C_COMPILER:FILEPATH=%{Compiler:Executable:C} --DCMAKE_PROJECT_INCLUDE_BEFORE:FILEPATH=%{BuildConfig:BuildDirectory:NativeFilePath}/.qtc/package-manager/auto-setup.cmake --DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG} --DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable} +-DCMAKE_BUILD_TYPE:STRING=Release +-DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable} +-DCMAKE_C_COMPILER:FILEPATH=%{Compiler:Executable:C} /data/Code/Qt/Notepad-- /data/Code/Qt/Notepad--/build/Desktop-Release diff --git a/README.md b/README.md index 5f94178..8163599 100755 --- a/README.md +++ b/README.md @@ -2,9 +2,11 @@ ![gui](assets/lgplv3.png) A simple light text editor. -Notepadqq was my choice editor. Unfortunately it doesn't maintain anymore. I tried to help but there was old PRs and plenty of unanswered issues. The project was a mix of C++/Qt/Javascript/HTML,CSS,Python... -It is a while I didn't code in C++ and my knowledge of Qt is a little. All that said this is a **toy** project, at least for a while. The -- (minus minus) indicates that this is a minimalistic project. I will design GUI just like Notepadqq so there is no new GUI learning. For now I just release for Linux which has Qt6 installed (dynamic compile) and C++ 20. +Notepadqq was my choice editor. Unfortunately it doesn't maintain anymore. I tried to help but there was old PRs and plenty of unanswered issues. The project was a mix of C++/Qt/Javascript/HTML,CSS,Python... . Notepad-- is a pure C++ project. +It is a while I didn't code in C++ and my knowledge of Qt is little. All that said this is a **toy** project, at least for a while. The -- (minus minus) indicates that this is a minimalistic project. I will design GUI just like Notepadqq so there is no new GUI learning. For now I release for Ubuntu-latest, macOS-latest and Windows-latest but you need Qt6 and C++ 20 installed since for now I compile dynamic. + Any contribution is welcome. In a world without walls and fences, who needs **windows** and **gates**? ![gui](assets/gui.png) +![gui](assets/replace-system.png) \ No newline at end of file diff --git a/assets/generate_random_file.sh b/assets/generate_random_file.sh new file mode 100755 index 0000000..d5372f8 --- /dev/null +++ b/assets/generate_random_file.sh @@ -0,0 +1,32 @@ +#!/usr/bin/env bash + +# Function to convert human-readable sizes to bytes +convert_to_bytes() { + local size=$1 + local multiplier=1 + + case "${size: -2}" in + KB|kb) multiplier=1024; size=${size%??} ;; + MB|mb) multiplier=$((1024 * 1024)); size=${size%??} ;; + GB|gb) multiplier=$((1024 * 1024 * 1024)); size=${size%??} ;; + B|b) multiplier=1; size=${size%?} ;; + *) echo "Invalid size format: $size"; exit 1 ;; + esac + + echo $((size * multiplier)) +} + +# Check if file size is provided +if [ -z "$1" ]; then + echo "Usage: $0 (e.g., 2MB, 30KB, 1GB)" + exit 1 +fi + +# Convert human-readable size to bytes +FILE_SIZE_BYTES=$(convert_to_bytes "$1") +OUTPUT_FILE="random_file.txt" + +# Generate random characters +LC_ALL=C tr -dc 'a-zA-Z0-9 \n' "$OUTPUT_FILE" + +echo "Generated random file: $OUTPUT_FILE with size: $1 ($FILE_SIZE_BYTES bytes)" diff --git a/assets/replace-system.png b/assets/replace-system.png new file mode 100644 index 0000000000000000000000000000000000000000..92e23b2850e0144071a51233dd57343dfe61ec83 GIT binary patch literal 91481 zcmbrlbySpJ)HXbTgd(7{q!Q8~-JyVpl!!D8F`#q}-J%E#B_ZAD&?((D3?0(lLw67L z-u#~D{pb7RTkBijz1F?B*O`-h@3YT!_Pz-DpsGOdi0Tmt1R_v;C-)Hq!XgA-Lp&Uy zL{f)?6!`Pd;hioN1S0IXe=&Y>5K;q$kDcXpoNesCSVBx}bU>oQB0Xvq(f^NfT@W8X zFRF(K0+dtT*LSnDGqZR5Wa(^U4*F>BU}FL?f3D#HbvCzU6|DFR0zC&Q%Dw*N4&Iq_ zb0-}`;~wnqz+>L?Fg#)~f5n#{X6x2f87I>D7x=4nAkr6+wb1712O#neqba@IJxpG zr%VhCS#oB*ph^i&0evE{643E`GXseV2Tmapk`nxN+{W8Ib@(;jg z6zsGXB57n$`J;_*Tw1npJyec!khZt>ehLg^y$qspP$pQ+iT%vZ9a8qMgnTYs77Efx*PwCO=XdOJ zgK;dOU7}Wrf!PLyJLuc#FECL@;HUdKbRqvUGShoUU}TH@GPqO;FAIFu z!W1koCiKr6(2-Rt1D6(K|3qTvTN0>g&ncD0EV|9IxJ+H?J0@=u^2v7Da0ioyssJyG zU9FvuSc!+7Det{11XFcLQ^D&Fz0mC#<=X$PQ<7wD^NBcf(z*{~(MO385K2m5f|^n1 z((|7x*@@muquZM9UN4J{4lX@V7}lN-EDh2V&pRc=yCz3+oX-oP=70H;IMX8RgjX)9 zgg-p|<;!lGDIC+k76()@4XXlgHTso+#g>hIlFy0vP!R<~{zWvn2Mb7lPWroOy;BPj z9Z*uPQkf;kTACKqNS~P%tCs4vE}oF!F%_k_pEhZ4z`tz+@G zg({4FUY=#i;^Cyf3D$i;H*Y)JD_zP5i@2_ss%IT+S?oOiTRphLi5rlb6M3&G(9M5^ ziT7PZ>)X{-sh$N|bErBBA5xM0La}c!NZS9tgjuG9bqg6su&D+%(J;=y!V0SX&~lU) z@t=BxZ?>HR4(#b>8(AUTw}e;zY)Y?h^b5m^=gg)K-)VP(4HhbaA}S(OK$=~VZwQv~ z$n+VMqz=m~Q7gg*fl z1I`l;bEvi|oAv=XT@(sEMZ+dyySaHD1;DG!CNj4MS9W#;- zzIhc5m5(k+=EaRyk{`t(nlnt78oljvLo|?%d8UUYqDRa6qHgTGOYAxT(Zuc5MD~LD$v!7>lgAJEh?-q&%3(!Nb=>gkwnuXSUk%s@`f~)Bnh$@pK^lH$iz)H9Erw-)9VAgHswu zB%8wY|949w;wJ+BaSe`sfnlI(^4ues;6l%0Y(>F)-zvQ%;rlAkq-j2G(bHaoDc5D@ zK_%5}ME20J6CrTawoBwxg<%aKs=|_|;R#}AR8X-9vyupN@n}dYn;i^ez%ezR=KgS( z=E44>5%FIUcKJ-1jY8eI(+)GdT7_3bzmr)bExw9`#{=v{^@j~#vIMFS^MyTvu{#EG zl8{I6eeYFQ4Gqt_5UqHnxxv1+txLRYr8(iyE0j<=1^B386~Gzl*B)#y0fazs+(3?$ zxyho&yE!vLZ5}70;-Fm;9-I&uY}@VmNlhNt`Z(lBCq#fJMQ7b(JT@?GqPB6ho92EM zrx4GyFmZ&Leq=#o-p_asIIwe9K5@>1J5L~zaQ?NehEBjA=C1LRB`%r5eOnqoR3XY{ zz_h)*aNitAVhQ=frK6O4DU7c~vkfZEbSM!nN)G--U5kzDkY(B(C%_<$L*p~$Lvfeo zw2JAlyqf7=UyXFSiO5u^Q>jK4a&M&t%$<+0kY3zzE${q{R!0{~?>*4Jv(sAJi;Y z=K3sGv(x#{aohYvba&?>PW%6%Gb>LW$=|FCj?pFC=gH@Tpa$c8J{r-mI0% z4I7)Z`8Xf3u`kmFbuFVg`=`}pn?7h9f$OjUvlp=iRve;WKV>npc&|o!!0Y7sB1o;( z^`_feKkX!OSM2<)fXGL7`;LuQJNUp8VB4Xf+UGy%tKu9b;Sp=1r&2kP#-bR<5mA-4 zQ!lat4`57J(lU0b_Wo>&aj_|_6VuszNv*r|3FL+cy3A_Z>)GG3n}M%v3O5kFTCJB@TUo)?K}89I*1Gev4S>xmI6$6XSYn`Y|VS6m7Bo+CH{ zeVV))=`=hmM-kr{2LB*O%h-ym*T7M>@}1`T>*ET5$Lk*~68Ys*Uer}%)!UebJe88< zmM$%f(A4L`Sv5ezkz?LRT4jpZD9zdFa78H89O?M@_0Aj|n|p?cM|0POv7a}OKr zx4jZe?AhTpTvW>V5uW-pRl8zR2aB@yE}PSp3Lifb9~~Y2jE#MeZZszccrAu3I5FOX z4;qHwuCKj8EpEpsUzg)%ySlC_+neIR*$?$@^?zUNgL4~G6e0^CJ|$h=BV~D9wZL&G z2m=cslV)b^d}P{v8;dCRquH0o%4T~Zq9vQQ@?gj~K2OtiGq+*=UW3MY>d&+|@XY-g zB6p}|@acPave44;pp@5fD=u7FrafT(?M*c!fQK9tb0XHj^aX$;u(49IyRq{L|3}mO zXd={w$IOuj0^?jgZB$+B_As9f@c3#B(_K$Q0*ob?Sk_gQaJteu@&%IqE^_Yb zWQzU=ngHb%n_!C8c@}?CX0^|(M(6d^()ZJHt%HN-Kc*a-9FZrt54G3Fg{N4InBdp} zgD(b!Z7zcU#zaTgSlmnJ{S(_`CllQ`m)lDUFj2giYDdFpAUn6PB1+tG3kus#8K8xh z-8wiI(pUJlnkh%CB}r-7!K`{Ig8F{(kT)*iw)FJ%^>z357VO^NbhAEx(e3K%lZ!NT zoubW5Qfcz(>OAut=sYX&46K@ft_sWK(WLgoi^8i3yCp=0sL;T*#`~aK29wtik3=J_ zVNq2S{TbF{Kl5e(70D$Cp2ol9F&_Z?uw$x#0;%&S)KqkE62FWGx`9S7{;qoIxC+`l0Ey#GzP_-2 zWTIUxtGCHuHe+w9KOjR|P5;CAV?@f2`-L?OFGT!qwpH|jMCWgx*nf!T)jaOT_V?x7 zgrt0@-XEpVKGYMDGtjY4=@dhdX-*dOlL{k7wf5}-$oaXb80yA;>ivDXTkVUtP^D>c zfs4ES_laC`oBhzs0^0neAI4Bcxg0<%3|UVqK_9%xWNr10By{u$t!89y0s~B87<-5& zY-qE_Y^X)2XY@PGT<`L)X!&|o`vQjfkol5`R3Z6J&IAeqG)nRPn3!`9tL#6!FBqzR zpTtC!-u|pOcI?8t4valoE9XE7*~|uSBO}^>gj1VSJQe(A-WvzG4Y=e3q5)A+mC1#h zCv}5GLISp)5hPPQ&{Gd44bHt~7i4Chh~(wbo2^xZ%Zyo?)i#e%_=91&B)smQ*z*quj83_LJG-uV-QSHuDBGbIi5KBSyU;Fxm_)>$rVtRVsgYd5Q zb0;Kl;hw6^BN^zED*bSlh2q~E5M_IFzHrN@5_fQkh!cD(hLxkNd$@9?l046%{Ri%& zGbO*!LeKeC)9^9qVAmPb_!87h^xF+*hbrSUb>Z)@Ay6;<^cUyAU!yoOAg$5|iTd-8 z5fEh~0Z^{K#K8d8u&ea-0oLdKl#udrK2kFB<@I#G&fneV%hA2uvaRDqe2tn@RkqZ{ z4Ni~ey;oE!Y-b21UFV+#$_FN(S7TUNS$}SZpCL{*6ZpRrKPFMoQtNUecReyy0{%7s30!XIRhV~j%m@;QlIVbHrk?AdK zSZw&0;9buHs~!-jX&?v-lz)e&DfO@TC(3H=_6SpvcB@lPiJOYF(%t>2o8@vwE=w=9 z-nq5^t}d^*(RuTuf!Exr`*DA@!_=R6i^QT{ZKFF1zv3$rH7QZDM$fatP;E`k7tGA^ zy){8N)_!@U+txa&Ca6t z3t2fiJ8BL|ww$OHOSVU=nRNm1wy@bg*fcE#Y#)Pp-k&SVNEq8^hC#*|$9Oz^+|yN2 z-qU1L)f0-4O&vQspL`=O%F(PBJIgP!O`ma&7LRj`+8>NLXRiE~ERic+qjQi~!TUyXj6^rEx^`PZ&#^Yyv-$QX2D7<#ca9yYV;A$1= zY4S9Aj#)JvOpUBcbwy@=v$A%l%)ZJ|63-wCLNGBnmB zL~iJFR$8!#a)sjspyQl<3-;F*JT%)d>qGhzc7efUw!%A)6;W+-nKVhB9hL? z%A!dXcWcf4JNO2ug8@P?GrO<-(motflg6kDzabIO;-){`+PZrL$o+zetIb%K9{9AwfDulRg+rA;>=6r$3>tvI$ zJ}iz~{|CL_^}{b=5{9nw%#?V>M?M;_peSWf%jy-}xUHs4rQE%%zaQaquG$G`pNf<2 zME;wl`csTbyrFF&AB;?j&r;uE&W#r(Mm2&4lp9EJu4o&=c?q5TX)-`~-~|64B|7jI zbhGST1lOn$>xQF+qqZd(N40Q(=1iomrvKcRf zsqZcaOX+{43E5IjSM|5Eu|&4;D$ob=G^c#UrFSnaZqCZWgcLVXjWi|vzzCuVFkvB( zwNoYJ<9pNmAh)ov!)3xSC=j1wc{N7CxFdKeLDEa8GlF{mBJR7-**tZX?aG+8kud6H z-d6a!&Yc&oa+L+Xu3qqM4=ZVUQ*Ad_`ng{(j8>RVS65fW?L?GP%7*gVm!6%SU0s8u zWv?>uA9wv;z}Ig$rY-)mAa}0@P0g`{W@D+B$~74JkE#|cMpO~ES9_uHMz=(_F2`K% z2TMW2`x)O3BK@whl7;L#!-eOA|NR?EHO!JLx0@4FPI&cHDULJBkbqOS`~k^J<&HX+ zZ8Pmpqgf_>*3sS~x5GC2mA0Pty+CWJBDpxe;8Sl|{^Rw{AXJMbKLg z2#(%luCDoDhhHsQzuNB931cxvO{%q1CHe3lKF_FR+??xnILGb&-7Bv%8XDJ0V_wWj z=%A$IfN1vNQSV)=Fn=>5*reTI#}WC0gP#QSGcGLx5+Oxwq?{fxoUPEhj(;;EvQkhI zl^XL+7WZ*WywQNnE6R?wc*7qR6+=PPY9dPyTpm3Zw`8UBSbe%vI{~J2{WnzS&J(_qGnruTL*IosmR&ChS^ zptkGy?X_22uf)oAuWI|6r&u_TTPn39qvpclJX9ygYIW;&$_-1MHFF*{duYc}0=ME^5!ks@v_AH%cL1uYD;zwwD9YKr*w2GVnz zD;{c#p_NhL8qjrlqr4}ZUub8&`W-juQH(KqKhKC;+>QfPy6`8s~eH! zV8(+P`{v9#&nup1%J~HahwF9HWzJK4pR}~Hva-tes1?X>OP_e{S5`X?gFp*@&7e8A z>4(%pg(Y6zf`Vi3R8>36&3nx}Q-`zPnrw}-lzv%gaz{_GEE|yElnYeg$KXDafTT0KriK!qg1c}6DUTIZpIYyRoGhEb0;TyaVcT>s z1V~MLMJe_6d;oTBNz-lJUSsQfS689@{HkWdGFx!kIQ73`L-7Zg7_o72V>hmb)qgTT zk&jgTpwYAKF={MfiuV1+C))olmHw6S>7T!R)?9dbar^}n0n|KfA z?p~Rfq)GCcT)P`M9WuKgE!=fxM@mLi?M|BGf@(!+#2UmVj+smzUr#hm#qC{>lRuH;dp{s`|)ac#$@X_VZ7)@!^ zao}xUb^CRpT)#XQ-OB~xKdq@jC>;S-tHYsKH#z_rI<6bK0SCKksmann{T^(MHb`cd zF4r&T^|({Mj)qI7Z%(W84)e=A8j|X!&m*w_Hj)#Ky2&r%&QPsl9-(Xzh1TF_3f9!_}?s?L`9_$_Le&gmFrBz3Qgg)p^AMBav>TdX)Z&uo`MeWsk5ewN( z2m481GP%yzii3=&D|lY5-Ck`w{rflaL2KN>j#-kC7MIQ)wAZjgIJKq=26Mj*qYt`V z@QW1vyKa1tF+}?>=0{pElFkovZEfaYY{Dp8y9B&3W_@LU<#oCfBEDaPMJ;60l5F1; zh)d^<7bq_;0$J^9^9;M_D+H&8NC8D$c zP5K$0vgj`?cRNc}Cu}-y*)|%@sr*F3`$yVL^gl-K63qNCG`QoD!Bz78wuXgCb}3^_ z?Y&F*=3@zvn{SG(D)q_qqx@*Ka9F|R!y{OsezKs|a4^d+vQyd)T*+a+H-yo7a;v86 zdvlHeVqf{CZB%p>jnTXi32yXUuHSE>m?E&9D#r$5KE)LJ7wtqF(?uMBM7I&Y5K81L zU5tb!`U0R9dIC%lk^jpD;Hcy=mdO<{y52VZ^vT9A`FF8ex|B}2yP~obO-f2iSS+cF z8kxveZua6iiwUZ4D&casn$l_Z371#>K&m*TFQEXq;AMCY{#w{q$f$eU8@9W`Y^8Wo z%@tmYrV6V?C%x1a0A-2?#IUG2849raT%93SyJKh;2&X9FL~oL%UeRJV+VR^iZAk|M zF}rgmFhoW1w(w~E;5RRRP_P=YES!FnbYw-9*M~n)%w%s>I;0r=KQoS=4Zi2;}OcwCWW3HJ zQnPn0SUP_{bKS%D0r7p~)&Oh~kBjcpBWLm53KDY8YmCd}V|6X9AC@CcEhjw9h4K8} z7q4QqKP>|Lw+%+t3<0pih3~ERHMqV-WNr0nZt=rKl)hanfY#MZT{yIE%ZTZ{55BH6 zW9&B^6H48jXmElXD7Pm{?(w|ix#YRAwaJSJQIx%lhoz1Xv4;Jqg)bfl`?fjao6jZ8^F2#HGNM|JLb;#0kYf%KhEt*opV1J?(aZ?gm`@u_>XE5@<2hTg$y0TJUm7c6qcVk?iYbi&3Sj2gB6wtTNhtH=fI0i~ zG3Uk1m~U?otxP|>T})A(q%(}{z1xc^pcSg zivsNYVz1u*5o#bY6eEbR#UzOKM+iyh%H_IIivqphyM zD@Po~xmU7QU(!5qRHZyF&X|_Ac(s>`>-Sp|zoZj@Cfyc%90w)cR_=-$^0~jn8@jfp zy3Kw?rn}R`8#!Wwo^x@LRnI$d_z&4%<;)5{iMGYhU2>rQVLvPo6NszxgN+ z+|F-i;=q2pE&wVs=R@GrZ}}xh-&Qf|t|!jZ{YGl`?e5BY`iVrX3Q?cRzHQr1aPaVK z_Qg19%;JvQ)QRj?8AEyMOOMa^%BC6hLg(Nr>4(jB;x4jp>n@2{FhKdCQGY+PmupmE zlrHYyfeK@3Ktet15ja*oCNmg1-Ot`_-w|^f5nEOD$vfQc`qTQ`;;Mi8_4QwqTg!Xf zi?8o_fFm|2P@1#FJlSdx0uj2wEG{j5@=H_GA~`;2b#>RC?c;l;-VZ>4 zw=iX=u0+d)_%V*U-p6~3@9OQ9waULNE7q+irvSS@-K*IZdMr}mYeElHDg6Ty{7O|} zJuz^R@W#j`IdZ2^`FE(FHls&_+$dkJ{dXu@SpG06hl7>1WoxWJNlntczIOOWh?UruW=w`{31w)Zpf7d0Ea zx!bxQO)@JcG{eEb-t)%@8ohbV%wXjiXCBxj+Px_~Gj0F+y^@mc!9?5~;Cq}m7Iz1- zH>=(1fWTPVomc}9Q*c#PZLG(8x!-ujE#|Tle0xKE8~z}DFzAeSwt2C2{Wwzt8Nv7X zc{x%^j_cb*pg#~o^KAUwUfZN0m{upA`N*0q2BN92Zrk{L0-EaH@3?LMF{IQX_`7e^ zNy4TM?`eTYn=PNVk#bjHAdA*`F>8xQuEF`EY3z80gE^N{4SoP*mSW6cS_!EJHCKRg zrytGWRK@0GXHEPnb!uon{~64hb|kzGS<9C$H9I8sKHB_}@XADD--cM7Axbcn{oqtS zAn$f$TOyH>;vu?hdAtM_4I%yr<)S&kU;JemrlH)Np~~w~IK3p~67<@>*Tdkl+*RIV zu;5@lJ)OaNo9Lar2B_fdeQxuJanUWYrXWVF=7SH@s3((NsZ?XBI1KM4Y^N(;S6w7y zaZOE2-*w0mNrt7Q*cd=hDQTc5!+e3kxuSV>Dn_qlthcG<^vSQBUSxD`;6Idv#~h0y z+ARALa&zffiNVO4H6SmA7(VBFd8Mg*rfcCYEYo?iY}9!=D5#TVi|+eI?=NVJ4&!O} z?QH#B4r;x|KG43w_5+((G{Mx<68_}&D%f>473 z2~rCg=TmwH`|*xGBal}o1qt&x$P-9yJTm$|O$+`z=NKHTM=4TC=JV79cAxU1c*0J| z^*KqFex+bH)WAyrqK+1y8rk-CW9-iX&VAxXT{+j2OQ*it8lrk?D07lmmR|(3{gsW< z0D@`ojpKyrhdGDX_Sd;A5+Bj{ElLLJKIk`ZB71#ZfB-T;sZbiXE3eWpYYwqY(Vs2o zj0g=yak^6<|LzH8pFxBF9k0o2BH{Ifp2eH;FDWSRo5Z@ejX7Cq)LQXSJcS#$aCTpg z0-4@75s}F#1CfLp$q-c^I3%a>cbdBo6c#jdAB<;p?4IuL#gSD;FiS2}oO^Q4l$T5~ zO}D*v^a@Bpo6U|28QR=r_4rDX+ud`&vO1Wpg{xJfcy*8Ov)|)dDFCs==SB>h}ANy-h`caFP7mm;aVNPf{zg2=heJR zXyqGt0s{{`MYi*_U%P%2q6`HR%1_moqg;}~D;SyfD$zbxF$-Bt>rQAPCZ9q&EUHej z5lTdn+Q)T_hDb-U?Z9u;H?6=jM|h(3m7{#NbQZ*IJ)6aF`a66gWy@xCNMVC z+vW?W82kqs=|mtj{cMR);QgYAzvnM`fzA>7@iGbLFaJc?K>T z26Io$HTiJ}y6iTKcP(jot2UZPzQr&Ho5l%ygR7@*gKQJv`G@t1zIC9i&Rax*@{gV^g>w zX@ja-QbP-$+G%eM6HoE%{pF4gGAEWGPa#t!A_)EOa)u&ZEDO#%9kGl? zluoMEDr>ooBX9pRQlvHQIuMYB1XUTK$n@3iUJTwu_y&0I);v5ghrKOgj9H~i{eL9BKf0o zmH&ol{dAXCb?brSqj3Z0J(^@w=){0>euN{*DEez1g5_#hkj`HL0#CyMTp}@>zBl}T z#9a7L6pq!9+9GrNU1p$td-Ld5g_w0ImKs$MEAugLjk)6413sGkVh~@ zA0Q3%GoKf|x7HVtgO({%7xGF0RCzX@{ovbe@R|k0A^Nr#R+mXd}}r;;nXmaqIy^pIzfx;!P^$Xw7{he zc4pyILy0vSo2C3GQ>7ZTN)_3&n47xJRe;pU{lvq!W4RJIt44@+Nrj^*^nm1`S(^R~ zoAlFk*?X(CdUyN6NOvL8N>W2VB4!q?oZ^(a+|LjdI)3Zq*%w#I4rp$cQ_JTMH%$jKJdC1E5SuEb>o>-@D8U;{PlLqosV{L`u z&`Obzvn30j*);dY!B~o7`bj!rTlhWa1=uv@VE!@3auoj>E4$sq9Rp43muAMzXg>3*^RYfka^rFzJE+lzlJ;wd@< zfA||;0Su~p>9g|QZx+Y$UDD7$Is-GYk$=&54ivl0WB9SR5S00ScG|s09_W??7OW}r%0~#Ud4>agLFXuxLeU=| zk?GBcPB5$)o_zg?5O0$NfzR`_Kf{-?OP0$9wHTk*M|&>+=4C9~o)vd&UD2$u*s>KV zgPd$nB_ZsW#*>8?%c}|7bT@|wgBGd0B`hVR=&mIQ7x;PV?i{H4$Xfmh+qJrc4z?nL zzyZq5H23Ul-es+NkGz|djbpJJs-b||LAEr9tbD)azHRK2q#O;%s?OAS?Www?5WChu zrvm-mS8&i?xGK7UJC9WJHMOGd?(iQa0;lN93V<%FuAB(N*8tqOXDX%T*L|0;iH6T( zDfqY^>ZYxh7#TX1$szGIRQ51+5k)WKRofU|&Y1&eT5nN0X&oFuE4j=Z?ChPm^uEEv z*#ke!pWWV-l-W`Pv0$<=N+}vq(W!EAaKVk;IV>BmS1BHd6l+SQ#<*!-#MU~=u^@lRSvX%RShpuV;%Z}SF-i4IcQ~PUs zUZGF$?A|nm#T})A&KB-&7szh;!r|rd;BupAGoy4u_#94ZMCjSOHy`^-VA##gG|fI} z)-(^VmvQU3QDZBh$Bm18DIPNVyI8VhI;Uew7v}{=OF7LwQS&ZFG{R`&6gN4y-&TJE zNjR^u_a$ywH7!Z`eC2R2IwqlY`%WPI5E)J_Y_fAYA;wJy zL{ww1=sOB^|MEI4W~$UW{A?TZbP59?&6|rha5zzX{3|`Dn6y}al3eFlWgklgOnLW@-Yc#g#-)t1d z!9(@cr`qRh@}Lw&%=)j26hD*TV2hwC{St7^{=8y>ptTTu_U^e&{nB0QiF`Yd+-kFH z^z4qc==SUfj;c!T*oIZFZbgw0XJlrXnsJSz9S>nO#do&1!=*|G>(NGKx&3E9dH!;s zcmBD0$$W{=EJdEWqpDVh$1(j^9CYU2hSluq_v!h(INMm0UAvw*xV|={aT_EJ6Xz3m z9*&?3CL~csa{b*>qiB2%;~;8_&9O&5P0Z|4#QIq3)a8>PRRH>uI!rfSm6(7&psA3) zBU5g4-5;X;0l{VXa`TY#YIR%3scmdhDg7U-|F05hf9-Ml?|wcf&j)t&t}HiA6tcDv zIg10`CCe4n-17Fm!AStq-haN)?Z2f0$sCM~`BdCmi;X!iVIK=9-`H33s^-&o|E&9e z6lCv?(nMM9)FizB9f)Pz^u&&#U-+SLP*csTH8F%@KKT2Wk~+LWtISp3m4jADPF58m z#r3510cdqhvYvd}c|YPzC!j6*If&ZY7yLaS%va>I%q|eND>R_tv*2OshmElo;SJ)dp|OHe}}%`CUrY3dxUs8#B|W^&tl?A=Hi8fv>kwzpSc z=)aHR4035{e)T)FO69Qt3P|3X@=cw? z4Ol1G=IIkl-x$S;Kv@lF{Un?sOkbH!Lxk;ycdv4Wm&w|z>-~UC98vBh-9M%m;yEfe zEK}vit#3C}bHbOih;=+@hkdUU=s-GMeZBI0rp*pr1HDi0hILB4GZzv-GRD21Z64aR z#-AI8*vlKHCytQ0{tCL=`=%e&JoeUefv_w8uAT8O1lMd*n!&Gtzxp9Z{7=i&u{MYqMKY)k%XzC7OyIf!{Ri1%FJGsd|9HG_ZJ@e3pmLL`Ay9K{bn5|{N~@t23} zz15~`cWG_1^ta40D{T{-at7W`EZ0XJrxz2{3rpuJ`eiQ1dYp-;7-_!tQAlAmW|QW> zJRKQ5k&f#{_De_t^IX;$fBJ<6S~u?xKW+vk@ozL%DS;b69OQhyvCM0Ko^RHmVccU0 zt=}l;T@XFcD}U0~OM`yIAMNd->}Y0A&~|zb{sx;#ZxhUs3Ibhs?E%=aepBMp9W+hZ z-cySlXW>GC&IT$>m*VtdzD^WGO@5s?=P-2X28r!+Tb$VxkU0261_aF2Q(RWLa?81x z)=oMXIwc}z2Dkq-bA$p$(hySNI%55%;t8oxp zK+CSe&--O50XB7Y2I(`4g*;k5D$QNo58#?-`c=%?w%O|d|INzqQ7Fv3OC4-C@M{D< z=x)y*GX|_ueKCV z#0g<~0&+?Nj58l=d=b`kf{A8kt{YnimBsxX>0hf1`4tyY0hU42UDsL&O^Z zTmb(HP?2V>+`j>5+nRnk_K%!UW<;tMjEWQe-}`~$xa~b{H>WJgX)nP#1Rpm>M`F{7 zu#xNPx5Ldn=pAin8?&~nOt%q!%ZakkDl%CzuET@tFpat^iT_978&@g0$tuE7Sy3q? z&lcpQA$7@2J_-<6o4s#M>ZhW+fXJ2#Padyuu&_d7+Y9o5fCXjI{w!S6neZ5zZjPvA z19-QpQ*bSYXlZU)pb=L<;f$F$IVaP_0>q+l+#C72@yROwoBwcQ?x|JJwA#S#C%>vk zMIK8T8r9jW^0Bt}=#xRX+}AmuUq6-Be98DF4D zEgo?H*H5nCO55|dH4gWDNQSJ^|Cf(wGymW>PSA4m`!0xOOw`LBtJ54rVBHV?G!PN^ z|LLPW0`5)Flzb>iZcEscHr~$NYXA4k;*5Dk~pu3Gn#(QNE^X-omx6dpMkTP|t{eGMo_ zoavUYYUe^P&f<2s_|FwqY(9YSO*Cyrbw*mv-zjp*#iQ?QPr;=Eku z@~%B&2*diBb=qOzKp>SSKu1sHOBb}Ch`e(EL~Ie%j%FEVa%owTMKfAYdtWyRfhzC~ zvlaoTyrfjJJaXx0T#y=?cB9r&yH1Em6U|J1>)PsfcpxclvQQAjcyQZ%I9>RQwftyk zd+2G+#x+T)7kmWsH_oNBTDw>JAfm*tupMstJO}xe(sR#)a+*cMOZ)@&_<$#FNy8n1 zFW4~HIGJ$LqgmtC=RV%aZrlt{#wNdY=7zI1H68uv?}T2DJJ{AE+7>)N3wSH3k1;eH z41PJBP+xg<*kPAB19s*8Eai$1Hk`uE-mf7I8kd@1%qMcV!on|IPtZSztXf!J5|>t( zIo|IO^;(0B|BYN8CK}J=yOgFBNAX|W&^qo2lJI)x3|U?`Jt|DOCA~dfGANuRmiv6} z<2XA-vABPQI?|#B&~C~-yTj@O0i`^U^hBcBmL^#_SY`hF3Q5_SmVdp8DdBwi%iZj? z7*4v!LvCp(DEhOse{ZoTd9&7dME<0|5z0GEp|}>K#BL6YCDrT2fTZsin~OzN1F=1V z!op!y^~i97WB3X(-)_V2I}(V++e|1+zZ$_3cN6z z#v~n2YvWE0B3dx=r*HP7Pv`nz|L>9MO2gnGq6DL2cbVuW?6|4@2$Na{q)3a-(ALLq zI`djAWh6pI1<{A4P0ieuv0b8kXAc0Oi=v%VpyOqe=EnlFUZ>3m19e*0tq%9GuX0nw zevR+!gV@;Eu40_`@83Jz)I8KFTXvh0e;D9KL+o#;5tz?T-I{M&cy$R?_OYV-NBAs= z#PtvZ&ve&IZF!dq%VA_&c&TH$nwxgM{!#Xz7Z%U08`Ddo?&8$k$B4$x<;&zB&j>%d?U@A%+4jH0?j?RtoaP zoTDWXb}ZJbJwKhFo=mC|#)O}JuSnPj1i^V@j)_^~7t%>)m2ftuHYyVPp3oSR0&cJUV`y6+UZ zktO@Hp*i!ZL7IQ^HX6>=Mb=?ZM>%2oxa;+|vv(^^HFp14ck*uH$qeqE?KPZ2%p&S= zC+Ok`3Oun;4QB%23+ESFznC&d(t=jPl(<_SHqHnv^8&tzxj2GWJfpDiF$AgB5$nbB zf`dZ|4#MN2>WoOodoJ*Um}Fl>K)C)vdW19%7A}26t3vvB{$f9TGUURKoIR=^#Zn;G z7v$d6q-O*5&-Y7=$~NMSO7CAYee$~B@sO!#%}lXpphaX_(3ygr;i=^d`$b+6kw(1c z>xQ?z{CHYf4mVbXI(3xI#XJhcJ!M4_&f*!Lr!YA=H-i~}&`cT+gC3NjuJ+5MJSd#i zuCn(I0m)m;Otp>wQ7UU{<+ zE*ksTulRNPEv}_>j5csFp!xpIih=;NXgxtYHv>Y*GlyUML!anN)nY>yO4@F7QX-WG zq-biJrM@W*);&$PIWd`-gO)D;T|Yp(p^?+yE{>1256}(oou?#8v|iDV*inV!-!;-0 zsx>^BFcc)ljrIQS_{AtN{?4KC9yoBR0^Ah%toTFFE7xnel~i1x;a6+(id_T6H-W6o zH1m!Yc3L<%hBqMYX`Y9zmGnzh;&(x#bXOS)Z*BkB*vtEV4R6`1b{KKlAEV#yeIu^K zBNX#9rofLIL&izJq8Edll#CItrQ{q#W-R?;Yk|mg3wOb!u^Fq*wNL)@N8WK<|M^O` z);3I1z1^YARLj(7a<6?cFv;GRa0F0iz z@NLHa+iQC;^I2mSz3ZN~za*VEHGlk=v0oput=!PT^lkue&MV}5U}1{Q;jvyRXN%ox zIYz0v73~j&TOSgfvH5vQS2LE_$Bo#L4Ni0s&FD`lv&Sk8XSX(C^zH(D7|%{(1!e^)zR zW~Tnce15TBP-C%rJTvm|-%l(1_Nqr3t+p>Dxd@tEzwut)9B!1PPHXn0Q969Uk-Au7 zDO@;r>*H9UprB2{^{bcV&7Jt{>bLYXZn$C!4mjie~lb$E(?ilePtXTe`Jiz5_I|54EmjZ;nich_~*wRcMhd+;FmW&aE*Y>#mv3fY?L3GS-5Hu;yZj7Xw=A$tRFGkVbO6a0p z3v$)?15r9c#E)uU3T!z)sEbJ^XLqC6pi?N+9%2>5%h&pwBd`9i^>>i|BptBGqRCh! zyL|&A-1gmqlXmMhwbL!q1kl)iQ5JOJ3Y`@nDH=9e=h>|j?8?xDYm>H+lE&PlHWw~b4E9sF)+ zAhrZnS6G8J#&n0dIYHaKq}%s1plcRxpCS(Tv!7g-UdUUk59~6YN3?|6SCF>6cbJ53 zr$AiZD}*)BhT@!$5iNu|&;2S4Rqo~TnEmr_iETTx^~k9J3B#QP78gI9oKDQ^E`55r zvsTO)J$Eu#6kgb(bykcvZ5M*cC6zM$ibn2(U^wP&>a7Sq#@x*sSI zC0;u_aFn~f>x(-BHF@?s4kGqzBYDgR+sEoEPmop^dP4!se-1e@6YmCo2k z_I9JJ{vce!2_fFPKA?w?6nmRd+ezWvG`d%uyn{1m8B^XoxGIVkX|qAd4QqyCy)h8 zL-LSRa3k+RQ@#bjjDPuU%hy~}SUC~%b5}8f)biPkAYZ|G82sxEFXO`y;K=druzC06 zA9ny{f+o+=5-Fe$PQ&s?tH+ndg?iy3xfV$m4LR7d@6{Atxbr0*M@x)(J!?IqWP69n zxs)6@L@N!#wXKS>BbB1t!QKf)jbcNM$CqQT;-eEYo%5uZh=oXe7*pjo5wFP`L9607 zA~;X--Y-Yck$z+?4o;Hb8!lQ-9=v{*{9BUNQf|TP1 z1BaAOjEcW<#a&Dk^4hIjToL`A_U*x3KVP#^WycFnN6vgNZBZt%;FB=zEjeNtQyCrM zbmJpDGJL*-ywNpI51&fZ8q^6xjimP-o0nS%;$G2dx<)G+iHm^_t3{`kRBg~`!ZKpp zP43%;MU%mOj+Fv2blmDi1mL2R#Apu8BR;q7UKE`N6`eo8JY{lWK28wip9Pda zt;hK3`68TGHbRbtT+2OeMQR0GhP`9supmS@GNxxQqf@FkM535`q`W5E?m`|i^&t5F{arvyB0eX(DEksuxNSpTO^O|Jd+S4<4f*GErU zTi+Y`d}jePHGbYthv%m5sQ+wkA%YRLg3Nu*oe9%+SMmrqI2AAe~Q_AX8IQC1quUOgPrTBHYiRqoW9z*w_ZrzJiT5tHCHl zyu<94u-e@38@az{4kpqe3Enwya;l-j3K8EfR6IPq;o;%0a&jo(w4$J$9du(evk~QR zHeYTqgATU-Qey>DA{N%shEEYV%Qm0Wh80Yz!C~Uqh%w_PtYez}+p+@GzyO7$w6uu0 zc<^a>8Tihmxb+H}nq+O%lmBukxv;-}LV!cN3HLcT-9u4P@rQ;6#ebZ&UKMwAH1sB1 zxVY;(&`L}r`VTwu{o1nhz8xm#XE7o|cc~!Oz7wnzc%Wb7D}x3;1s_o=H(+o22qJ^t z5QeiBEF_*h(gUL^BHkjVIyHiGRe>as;8zEyHuver59vTaeGJRX;xA}*ZtyZbp2qz- zz2XMvBhB*BTmjpP870T|W^Ux~EnXR~drp3SqkvtIMe=yxoC5}M{1?LV{52u5-opxy z`^)cD`w0`Aozoedty~r^gW0<5ouY|(P1Rk|HxO*~bH_;YL#hXLy$$As7x7!`u_`~0 zQ-lF2UiWBB;nqQssgYIRBsRVO=4Kb-qUHt?@4wZ#ZO$kt`;iQ7*0mjXP<_qEIqtaA z%`bJ1MfpH0sUqC^3scw=1MNrnpFhqDnnxW?5TprcvtFy2hcVXrb>!BUK&pX@lMI2> z7B^E@Q@6OasWlp^2Vk3vb}t;27zOYE(s!fzr(M^5@cQ<_@z;Ie@|pGH39rL}N>cIm zX(~&QUV!dT8|-f%5eHC&iB2>^nl~r zN1!DSI0a{yO3w7LzKTY>Io894lFN3@xW9M`_iZ0{G>O4Tm!V%s{8s?P=ZC+vu&B>j zLlheYN=?|!h0sp!pl`5eZT)*DdOtRmpz=RmgQz{Hnj_uv+&qf%xGe8&D$88C=^$uH zhi>gT3vfBo76unN!!ZbwSS-w;Cr^eH*<=H(W_s_fyTr9~Xy;0fA_sX%&Jl{GNVWN0 z2{#w;LSk>$UiR4@WxB%s%H*7F|3=|Erd5;$19tmACQX?~buDmj{@&z9!}J%a5wHKN z4)e5BX8mM<*H=|^^-|i2`9yVhwFh`^eSx%dvy}TCiCsw==R|;AyR~Sv7CyVBQp@7w z>A?>gOLV^Yn9g;+H(a0v9Ws~)qWyMu`*OTWF60^vcdEr4a7+*&Riir@($SPV^Emxn z2W-#QqqrWwDBtu91#w-VqvvgoxZzyLyTb)4FT6%#)(v;uO+6~ za~z}yT7BzdDd0}nYAS&<&_J-3Q zycd`Vlh5>KJ_|HJPE}^(`v$(?0H~+ikoOrfV3M3IXat1Rhx1s8j%V7C&qst$^@Ji& zU%7{xPACEW(jt>hYVy;;q|Pbc@#yQ1%+(!iGew-Nem}SvWp$=b-Mq8B?=1VXtp)Y} zECfEfr=2QUDk5}V`1MG5@v_>?y0Ncb^UPt zP&+1A$*4PVL>qmiB7uMf8oJ#hLQt-hhY~_w;qN^1-y4%YUiX2YnfIDCvo|OwfvvW* z6>42e8=KNw=of?ZIl@ADZ4A;nB&1n5^6^}(p}1PBqR(85P|De?^Oe*%g_tv!JLeb8 z_hU$#za64@{cv*VC!4KL;7ad_qlb+9&5gPAg!;CvN&oAc+}=F@&R*dZo)aH>K;H5o zJn3sZJ3ew>2r|qtCx1$C@OEEtF15y66y{DgSMS(xZd>4G0IkC@CnPvQ<`!tt~y zrvknST937ut*+sKnhkbyMZt(^{oYuaxjeMq++8X6l+b8VbacH_IxgBgmqAVp`h+v{{DQu zAMpd!p$cu2K4d#oT7PjJJ>sgRV0wwJDwr8B{y^eX-Uk+Q&j9{}0~fg?ZUCEzWZV+>k@+Tu_@b9#FM=nfW@C(%AriBmm`|8? zvsshJbP$%@>4%KF-)mwXURKZd=0C9K|58Dd?b7IF>L>$ziE$wL4&Rse;@Ek1p8e|4 zXx+PNsU@i1k&wB5FtZ>6X`|cf*Tm}MIh(A)yH6iw3S-atpp&+8-0}$c<~pcm^885S zd@Zf#3J89XvV0{akUhZs_S{4h9%thoJN;QV*soZOLf6bvn_Qs;fmrw4lrIoPo=Gh< zl6({*xcFl(CThEkT+=Z5KC#~<(cn`Q!IfN0j<=u*Y@Of7t(+|S^GJ|)aIs`ArW=2D z#+yOD!_cY@DJNN6(cOpH?bDsu2TW8kVPP?!87^NGjvaYlo+jI)G-2Zr%Hc_T@Q3N}wPNaJw334NkN zmy&c}QH!5{{GIe2AHTe!PCK8Ya7@^Y4UQ8T6o87U}*H9?=s(RmE?FxTNv^6=ZtA*gXtY@*GBh4uE zQ)k_~o1$>zbHx-LwnG)eYrmLK#^XE>9@}eqJ9+IMd^FgGbxtxA8P#!}cu3PAh`IcF zB5SM1mEkh8#`U#^3d5wsH@u9m@;hye$QPE&>+8=>me%B-Xz=+v1SUKw%P+58LjpdD z;yZSBJYEh3p7cE!J?f*Rb(G{uGtOaR{g~cd8LUd?x8N*~lR{%Ln^^7W%)iL8rO&F4 zq&#`dn@REB4wmdCQ#swZ?WJ+@?4Mah^tz!p_)WXVTH*CQ3i%7Y#?(3k#&Oen`RoXB z#c}+14#wsd`5t?NQ+;@CfuFAvzGn+ZQIg@G zZr*b05+n$Rw1tcTd`@01TRGo?l?DUL8TkEW2~KMBba1dYSvRmoOUaDf7>dd)AU=I- zcaZTShD9Po`U;?oqF@j8%Y=r5ytPv*L@VcZNIJSp7Zlj1;)umCBdej){PnCkz0V{g zJV7j%g_L8ry_QOlV@a>ZxF+uNWW=j1g^CO@(&Oe{4EIKbL2J(br|ELZUFWwVX4A$< zi4rMpxS$V{$S{rE+Pq@DO^%=2A;+50Y7!ea$8+?`pfnu>J15vF!lr^t>Xj8$vb<5G zs5(u$Q;6DcMhsDI8AC!)ruFnaBPvhXGcWKwE9r@PryF=%r`AWNH9MCeg4^hhmb`(0 zky;I*3P1SpHvA=*J?NRt4HlkEIySHu@B;$10zgc5>-IHUmPP(Q)yZbD)_0K;07M_ zEsYh_G|xVkz7c>{XM#3Ah)eJk&fwY@n-MFCZ+epcSWhCmyBs=&jYBqgUzWRcNLn?S zc}K~R`+cy)58n(S?QRsFbVCwvo0Ny*C3qeDh>d-Ib9iM_Mh}>B)PM8674RV1y1bD@ zN^3HI5EdasVKSbLDQYH37d5;`cAZKcZT0f-XmUc%z?{D4C=}5#n`9!Ha`R#YeWuTl zaAT~#h+zvXy}iG0)^En@&KmoapHF#td1~6J>+bIkn4f;!I5YR!%$9*~Y>SVL49pK}7aIk^T4$8VNRQyj0u? zILIk?$Y3(1I-J8J z3QG|>t^HC#nlgn3=uT|bWVD@$9BPE@7~+A$ zJc*999MXM4r7C^yRL#ru9apDldP1*@-3Sc`RUZ=ZEF-b`1e z+m&ezo(|a@`>BJ4Jfck32Ca@1?5p_VE(EKj)*cP&Eq)|xP6+9be&XVl%N+4n9Q1Oh zJ!ikS#?JfOb1vm$zTOVQz>B0mTg4^SpElYN46>~(8^2i3_{)KRxzQ}L_hkNo2$Y`X zrW+Ye(m;6^MR9GZ7_(AQh#tESm^`HxGN)A1)U5NerovySlZ){>dV!o6GO=&7@lGb_x!BQytXuTi?~f*H0boU z$2;iTmfTFmX4>VeFTMX$Z+b>3MJ1q>%^Qdkt%tm`5uk6I!Pmdgu-Y68VGaW7b`^4; zza>qn5`N*P4C}A9dKPry7g}TZdPwZzpz7G#@ds!jx5+7}t<4-+a}tAri!Zget6vFi zZE(zlBMFTjV`E~b4!=@Qeff;olwDo4vsL2^?C4$4X_9%}KB5K`aB;->nO)sSWgv%9 z(Fg|C5m2&PNb{Qr9m$v&?P~6(BMO~6**~!m4^p8M5yj|g#oqe-HS*HuC6Rr~WOM5a zjYOh2>hV)zUU*5ISPZ==I^67SqJ^`_FP+IR=< zM{U>Y$Lkr5xOch8jh5;KjkF=_HIU4n=TZ_aWJXzi(@;-pai?%OeU4qvmfMOQ3&PuP zk!bn@Loh-xHguzxvrvpB!zlRagOv%m+67K!3#GrD1HX^~2rq9P1}NLQY-nouJqaTg z<_Y9OPB$nr)9~d*)sZ|UP}?)gv%MeQtST8NkD*4WQkKe@s8%Wt7kk8JOtX+g`W>)+ z1e3&`E`IAn&`n)AlPqHOMNYxL9zjHC@_u#vOwffps!Tlg@aGj9K! zMD%4W7fR9Ytv3`hewjESR2Y~u7QXKNupmh3!=L4X^F>Mt%i3wta4W%h12~oRgxzXyqGgfWziX?+Bb!aX9u+ zQz_uA4(P2obur?Wk#`0o*)lfCqX#?-hOiwtQc#%YJt+J(Ri!RiO#KwXWg>d7@9MV+ zzZ(_Ay74o%p~Iqjivjy0{p*Cx)Ur|-a*F6l=ZS~9DRkT7ZMR;$F0s$K1f{&@cw>Y? zelY@XaxeSo9Snw-il^sG5dOprPr$wLF&|xHUMvNp>1=Pb|pW(SGPsJWFNM$kD~8xzm~xQcoLyG@>Ik+>#g5cv?mK zZgL}rK-&MNr0g8&q0o4~*%lHK!l$dNd!VxXL+T?u`5Z6F!y4et3fGX|h2_J4YXL4W zaQ9^({it@|ii~@0*Ci%&AecZ#I#UiO3pUCs1FJ(r?W1H|YRNHfXUk7I@#4s^5ElM| z5y=)Uq!A7vgMg80OT{D>>qme$w-N6@u35q5lgi4(M#7b-!^7Xj7~che_1fTHo;P7X zs3YKFV5=CzP1^eW>LUM3B)XVfLWqoAHKHvW2SpR)36Yp^BoQbY5K)E7xPaGIgU1mz z91&&qX3O!FS1eNGiL! z3t?Fb#%GpKVfY#R9rkrzt^W6$uu2ag%)v7~8Lvb4Zz5zfd=FbEabhX+RG0S#xFd~O z_W}aAqIDew; zz|br;-|t))>e_zqSs6%f%Hl)*v$T^mM$#k`#GB#$%+hlHa51y8`}>4}e|${V!rC4< zG67O!qgu7fZx|9t7C1lHf5Xr`)%F?Lwbac@og7K$*YHUR$BNEsaX*->E>!+{80waF zC{xfdL^q{%P%t&iyOsFFqh^ap+Ap0?{b!M2JVFm4KsYAX*b7(uSvreni8>JN+egyC zQd)8fiZqSX8zWbQ&KvDoev!&ew^wdTR|l;B?Z@Z14)!Z zp#R9(vHi&;-tH^7w`kw^MHDdk`T0Grk3PW$j8P=fB&ZH>3&H;O8T?EUlhr+89d7W zXBTFA{6zbpt&=ek@!l;ULTGq23lsVq`mw`56M*(jo&4Py-cK6*hKBp+fHY7Ho$%jL zpkYhd|KGfD1ZwLQq--enGTcrid;}?$*SE3(v-zQ*SfL34CbQvy?Vr1ZzI{G+xSvvz zYIRB3^cCtoyEl%*F#3qh-}{)_cl`W1RNk6lF4*T(ptIf`h-D@@V(>sfcg!f^cD^@V z;jRp7RZGPmm=_uP80l59p!we9+Xr|Qvdl_m8zF)za51-37B>nlPMMt4b&aI)mrOWV zP*`33VB$K#!>%K>1rMzsQE@+^UeA(48TTi%&#d}*MnhHmkp=uF&BK2c@-%#Dm+NDv zUm|e%&bU6@P!237bwNLBS*NkbXQEDYU9&S*ruV17Ji&92JGo9k4>F>B*1igQpV@5i zLuD*=s1)IP^CH>inwmbi;CmH-VXb-3ktc-rwP|ww_yGu=^o%Ep?oS%%U$C1}yDvC` zv%vhkOX|&jP1m^L5$oa+TVs&+7>aRH2(rkoY~Rd*gBoHmn5qaYk~l{0dA^;ePRf=e z+d1W>L^+>)B9f@%S@OrPiCO;AxmyJXW=sWt|6J#rtrU@ml~o_v4k^KtzV}m{4$9h2 zW-xOvSNZWxuGZs(r?-|rKw93i)S<1spfmY& zv@Y4z0yz&mvzt9>FBE?=3s32uW0*dNe8X@kG+OFzS+mb z;<2`e{b3&@YEkW_$%9=~HYO3UjhH_X5%o=Ue+BK(;~~LLW(k<-((AII6N+*wE5<2y zPoij1bcp&<`3rE>V-|13opZC;MxtV&X^`Kw;c z6{LjxO2h0O_|nDVHY}M0v!AOwlyz;ZhJAC-8jPwpGVfRH)i*kiMMb5i?Tm11Te;NQ zycIWZC-+xjkgHUrE-Npk@h_4>qies;b69FN>K~WP6{HpXs6ul@O)O-Sp(KnHS55Oe znkh|uoTdtsryz-TbGRUU2Y=*~XmngNP27>n8Uei4ZPFl3_M(h7l7?32-Aq=wz~DiH z0tj<^7boG9gWw49fQWQDRYpc`{5xc@d-tv-RcPS}dSimOwAiagMO9QxC(|bG!{WoD zqByFstI%4wHH}H5LhGzFI;jY&U|py!5_K*0d_G2$rpu^~Wp3^E@%WPAilqKhwwRA> zYfHXL77^2IvijvS=)9azq@z95E#0G^QKOAC`tS;u+6g;Saw&mCE&18J=AR-=O^ zXlO#yM=m7?M@QCd(e`iT+@a1EI2tVZLS3{a{eqoC>k?A#%4buH0klHM5D>VMkw~QE z^udAmL;0E_hTq6wb?cu-yVo(O+|3hF{Z?1CoA2uf*VRa`{;Ck;)5b5Vo9b0SoymUd zQ_}oCS026^AKd=ml>6<#A}w8-cA~|ictAERyGJQdmrl#ORfd`S~5e zt8986;>X^@%%9$hkH_FrehcBFbzNXZNv`?yEXRv7CHrzhy28y-`(`1y?$!qz=^s@F zH02y}m<|&n+omw;(@v~<*o+gi(XZx8c9$S9?Rg==XAs!)097QX8;1zk<5(ICC4k0U7Efx$6 z*3Ct^DmG>e{`Ij5A+V&+pSZB$Adb7s9&dkA&i^Un4Q&^M!4QT!K z1b>s+^+cDr3&glFm^f9*k5M7Sv1uhX-RN=ZTK@e>?t&lLl{g?}lPp%WEr5<(!>TGEHA&?XIwv;IIw9ZMKd_^s-{<8#yeTv&o=@z-6ab zcB#=KfTgMcBb?oRk)-cHr(y{RLZ#QO4Y1ket@g5|S@Gfh&2oX=GwF>Dj!tAD<9&Vg z7J4-Pm}%55tT*?94VrKi06v zpn&-_tVGz6RL2M3fz7U~eDZ`mCNbX+Io+|I4ucpxJ1pcR?pD4LF3xzkTze*0h?r4F zH^p+2d;MI`z{tgfru>KC%gWv)(B-45Zh^&o6We@8_>AANWntrVwb5D;ee-?Of++aq z<4*R4f38>|^JjqI!Bp3+l({=Hcum9eXY2ehKz2pt_6(k!k|HssZAe|f1g1z<9!@di z^2X__-vg8DdL$_eY1-1>=@^lfbFNR1L^%Q1&jyJP@KNEEJKGF$7aCIs@d|z?(8Y_v zIutAHHwS+gY_!>IlFihzlpggt8J5M}vp(E!Xiw#K7%;u^&}yE(j81#nOVC=LJArNy zH?LLRJ18#hZoXQ`;bc0MFnx&+UO_s3?P<~V3+AXjyj0UE(W~P`7P?O=QyFA#ED0I8 zf#Fm>=S+b`p-NdOU}^a4X3`ThcRFSh4scsw_r!rWoxiMPw_6Jwv}wHpW(cfFd2b(_ zTMec;R;0yqnGocDuN`A4QP%q4;>5hF6y0SsVag|T$SB(#8 zp$UgYhD9o5E7URGb+cOXy(ikv@rGjb2klLnbF3GwdQ^Kb4L^2yCqDb zm~U?Yq6OmL^O=PR*=3#n#oVQ9a{#acS|hh3{o`4zHM3bNAy(*v*?cX>N7*S&@PsBp zTr?uhkkUJy+ip*Flv@Cl*02J-e@&`*s^y zb$h*YA+xU%y2kr!67b8M#S6KQZux`M=~FxD%U!a`S~yMpL`7Vw%fRgjF?4|xWzZ}b}>8fJh1#=n?v4MA)WkTsvQtHqY^BYKPjq!~}iT6T zN7_R&#V0ntNx(8cSEjafGv#EDobLU^&?Jfw9QdM(loEQ^buyyf=xj2O* zn(5MJu%IU!6>xu~jz}g?#<4ex-H?xSdW#0 zohTX$f9G(vm%KgKO#1;xvST*D>(24k0EIF1)4T1NhRLXLaCq5=Z`gy6pp@T|S$9=WVgJ!W>yiGGTHj;&p{h_gz;lG1llLwe6U7 zWcCVU>bI*46ozUB=|KJT3Lc4&9zT(bqZ`xvqrq{>6|EMrsPf$rU79j-Yw$q{;`I60 ztJRlx!MfBsKg(pd6ktvuXS|;e+bn2tj3+4t*}@V(tc$PaYPT1&B^U`&9#w!}^%$wE zzUln!-RAAR;JFq?H_WSXb7WzH%|b>Fl2-fk(*4_1NgxDYLWaNj060XWBss00IfKqV zYZ=$vU_3@Pyj)`iVRxEAQhwl>GLkW~Ln6uLNk?oh9n$ccu zOWZ`wq+-7R^xFbuk7nJ!vSU?Y@a%Y{82Iy4yCy>~8XDcyzVJuX?KMrIh?%x-?}&+a z3uj#Lmynscsr)=SlHsZN1E*4Z5=v*9=*KPSF1v>S47GsfH*UyGGvU&PW8u3;j~WbvuHIRpJj(T_*_@2F5wiqQ`)QM_>f$2t zv?oxT7iVw9ROYwzy*p8Ye5G0GkM|c|R~uO#`Q5ca8;>P>?grx5?j1dON3KbP3&V!v z=_-PoXPa)cZ{1fd8~YtCVm0rN$cbJ%=ymNOv(R-;EuG13>q4l&a;cW6ONoZ|x#dptRG-&30^KCaY++qh-!?Xllj@F8B&a7IUeCF*vBUipv z>js1*2lGkznr+V4Q-Ri=cX4hrc_z*o;69G3E02oZ+6oA#R4}1vG(sD3x7~eI$SSZ{ z%7N=xNg#i%vU@Pzxd;^0$ZUJ&e-s&f!xqm;>cCwqLZ--DV6&WLQH+XT!n*9UH>DFg zgCD#O52+tpeQ>x_DSrVOARk>oS04r^eVEsp?Qo;|+p?)Yk+MzCYsN1n5w&~1-1p3H z!<_wsF8iBO=NOR3BbNKNx0<7O1?q?_DEdcGilQ~*u?jAhRRhIPb~rS-!6-n8*Zbf! z3L&V07i!mM>%CM(RAA`FTDeKh32l<$mNdSZiUW~sqsggUB7%+Abd!?Jnr*p>bC-j) zpE1PsQG2-Jw2ttuMx>^Tl~R){1p+tSzarI)lTUbuEgCCKk#_0-$LxsIAY;7ijh7%^ zZ3Z2&%Q3G#+6ynoj?FsMH;f7j_ID@n3%KTPhXe-%jhl&NaKOBJQOgE^>Sz*5H4)wA z%&TiSbOKHAg;pXT6YBa*SzAt?tV243@@hMcqe);5!Fc zNN(KrM}lJMoTRR95E8_$U;J#5AG?(@qHha5_q{bp#1`)X27f>B^3xPchb17kw_W1m zC~D4hW5>zA_J_x-vcG!5e)-E=#6^3eHe{vjH3*YGRnRanX*y*NS(Gx_V67=z;0cc?X6uDN zi`pSXz400o#m210*w}<{LbKH(d4a_)=6eJl8=eM(59v+W)2DR*=t}*qA7?(P1u0^WV*Q64RUfSRjONohQr>KEII+ z5=})ApmtCx8cDPu$!uqQTUqw)qq*WlW>2PRt@o}<8WN*iqUuC*n-`5Ak8-|C8|B~y z0n)((8`YDTPSLf+ynF5yiqUdlVKW^>RLTBr=mG``I@(;iAqL!xoBS` zm(BVJ_xlPj6o*0p#SX%Y3P%u^1+qdlL^pddysB%fcP8LX+nl*}axuJW;dwYC=I^fW zt{LTxUv?wZq0^Rucol^IFP{f|WoFJ$NOt1ad%mwS&X4O(vz3`!&gG~L_(`6#q0rS# zfY23R2SOpoAolcGWdBz|s}G`LBuV$IVB zJaySH3U=;Tt7Il8CRIouba)!tKZoZJh@wks`NAqjU^%mPiDF(qz_@~2p~Hhn+xD%e z@?=nCbHr@9HpHDX`SCW*XZSU3j+0%Jkh55?uFNK&>X_h&(PN64;sT=sVL zypZH>lTfZ0pOr0ZFtDiiXR)Zp`l?vw=52HOGEm31)a5?G@(j-YuG_Lu?&ar{_{!x= zxFEPT5N3vU#zgch9W_GnV7e`SE?Jo38qk?*tODPyeI3j23z?J(VabmIZhG#KmcRu} z9{1R<7qm!BisARPDAqjAk;RQ1JWhXMIrn)LDbwpJkz!)%3>WwpNZLix+DJOjCzmLp z^NN}s5E4_4)G@j2_}SJAzW2;bV9{j}V>gv8MF#8g-5X6|Jz~*G{VfqVjToQung}m= zBP$78TjGpK9dmOOoW-^ilGi5s%s=bT2tby=BGk#C_ZI&oN<-}KVVrn|EE*{GN4|9; z{CA&vV#y@&;d3l(G0RN9aShVI08#uHUsleb7l;NhmsPT&Xm6kO&ZtaMB%y@_huJ_LmMi()-zPvzWnCK9sm)Sb078UI(yN+`fwMNJ2X~rXzoY`*2xJus5tb#R5+rebat0GxGWcFeq!nC>TCm1vTt^X=uYZ><$zZj`Ex4T5MOjicbllJ6_GW2_G3h_d-itTsLb6e^Q8xw2X`CsAY$a-4Oj6xmiM4w-ghL{NKY1DD`kpEDdV|MEg8){{Z z9{U1!Fi)M3{beKmTMMAF*YUd!Z~e#6O<&OifnL~qRLG_RqcxMfpp;0h*A%d4Vs{9> zh3{aM9#FH378NpGcp%-~R@-mzxK5&c` zI2xbmegml%#@TURRNM?s5fBq@j+ID+VZcnn#aKEDnd52@LgE{6vbb7?$Hutu*% zQ1GzCX+0$~d!0bV2NeMJY-B(?GlbgDP!e;c?MjP%xRRJ_FW%KsZKIt6Kl}6Z(Vgya z%ZkdkoK-VnvCW_H0XdayhsiOAZ34+2XxNi^d^k&YLwMhix7716&JYC+*PG$X1<)nU zmDxX`+BtYmd2(h)euH86MK)I&2#(+M>uarxk(89%0?zArw;eGVj&DvU95875PNRkN zA*NpM(wq-b{>JqUSa&L{J=fLUIMekKKc6E zeBdqo4={c7g1hXOR_j&i8%?+9FZgMMy=gc?%R!^i0vjF#;@O$~Oepi;4@46Qv3vpHZ(Joco1ew&CQ&2GvWjKv_rBtf}yS#VQglD6`i+nQr0B?mi=ZFOs zwwNv7dcV2|EqFWbj2MS2AqV@g1?GoI<6fQL9nI`$UlR!u0RrZjqEqS7rtfE}#qh9w zT?kjPNfZGTMmks-CpTv5-8kcqrF1t`0fVGW$Z$~x)W@iY-DQDvHk4qXB#_-L6m- zD0cRN)k#~Unt@m#rm$f1CG?3f%Rn*_*|!a_uy>^dw6Y&q4Mf}>+L($m#t%U7Y%)1g zZ)11Krcag^D=UAU;r-nt&P0h^8lL%3|8BbKBbYY~sHyD#Q4^M@lKw9(8tWU}`d~jO zAEl8xm`}f3^ia(h0gN;NB-?`d!U$Tm(%~*Km`?uqZ{d)d4`#m!9nGcf@f$T$esEIV zHL6KThm!HLW?@D#oa<(BKfg4=ewB@)BBO`x$b-|BWP(fm*gJdB)<1t5;!b& zp>>EM!KmQfK08Y|F>+ZEA6n~36G7}gy z@Y{4ZJUIkPb*kOukyjuZuye2**0Iq3%JUy`wbV^5zo3WA$C|Pgeoj<|D8av55(*RN$%8+iKgwa;hOi7K5Kbef(cUkD?7<#N;Lf-Td?ejtX|=NXma}7k;!y1 z5Sa6uu}Fxd4ZyPmCV@0=`HiU+?q|h9lu3y%;u~pr#V$#9!Kg*m; zKX(18>HCrl96dX%?VX{+i9Q%$675-84&k3X*!RmGT!F9B9z4V`7XF89EzicyV)V&$ ze9Ls1Ro^|`582nivi?`YWBctNYIZ7}yicf6&)nMnb}}>I2It)kD43?_FstxU34&Tw z%2R!K5+Br*>>E_=M|updj^?fb@uRI)DOv;gcYa&N&HvC^?sZ^ZXu@NOT87?iA_^A@ zCl87IWTMDDDGK|0t0nbm`G|ph0Gh^(!QtQNvJSc1FW^PTj?mX%eFR@2!?~@f$>bZ* z-zaSiJQK)ko4zesC^uI{PfAq!TkFe(5kS+ z6sj8P7yd@v}8FFY=j>C9BqHaEuw!aHEnDu2`>AOI)xfrl8nm{dmR?&alhvEg&R zj!3Du;Y}S*NbI9B!hup%eIE#&oBL%XovSJk_Mg^&*K0DozIrg@D);vGO_UALiT>)N zqvt0hFlWv(B5%9A=$k}KY{|Hu?(Xiv-Q8U$u4m?7YwguMs!DCvKK)NHkP z9lJd9o=ZULOpU%QzGh$U^rT9Mum<6GxwaKiw=^L9&Qrta^_uLLI;wcyG|A7bQ6rr< zX|`YKqhY__Qf_?C)?Hi`_gA~GFU21==&VwW|3J$-FV_ly%k#%j3CRg>7g6Sfej9;C zk0JZqPW_qMBlJ(Of(f>9a;-)yrq%3T#zS;tOd%CrGuFdltNs3-o6LmF&Dtb~TL;`q zWXo{b6643StEgpdr=UZ>){V#byXl{br@MfwL^S@Z?8MdH zxM^JYrt1ekZhmQe7p*m)`!@K7Bl(mJ&E#ooT1x)fU7Q;72OniyjSXyfT35a0P9y69 zN5;nJX`yZ@kv4!%FLY^i0bV5m(L2^Vzdd>ABv@72~TTkIOMMu}b95-PcXK-cAgB-O~w4#DKqwIce}Y4reK>KhlGwxWnA*E<+d@k(idsr5DXOy zt_M*k{XR1LCxv%-F6Oa!>@MS# z6*kjfHs!Uk+bBE;2I?5`159tW7tXaVfYAGnVD2)O%RSPU7{AI6Kl>{7J*drnf8haR zx!+sKb>T!q3Dc<4lBtN3@D!CM_hbzYmRYWAC@~c4m#ljP>H*f<-1G7;^m|_AGIX=X z>paE%!9MQp*sw1ewhjVZMU=LXo0Ws}MQArEE1)Vqng zWjX>n4Y?t+@7jeFd+J#r>+%uxuQiT;nRrITyzcrf-4*BTstn9DcH! zDShh|X!)6UCW^k^T0+bo8h)bfGj;0{Jr0+Q_+xJtYk4~EpJ4oA`~lAiiJcOlYxpPT z?=^gkHYQl_E-ZuI*&UkNj$WH_Ar}uuYpme@vpUH>2phSVZ-j$ZVAL-zw+5yN^%xShuvoVS@o#~n`RV=wSXSjTmoqv z9j%bvLvP=V0m!nxQjmf)jiDb(I4_HDGM2+C2woK!^ez_XtO|lYTj_l4)igC<&)3jF zmUwDrc37^b9<9>Ycpo2LUo#V_BBIXyluZVKPIBacCtvAYvMuLK!Sx{428&T2cOb-j zU}0nax*qyhQR?~~qBpxXQqIwZuD$BnS@rBiOp^66h8!Fc(*0384zt(p&yxdK*NfrW zhCZ3mZ#;dL*uk{5EY;)bAc^e`AF&^Z{CW+k57aJSO%!b)5;}g7(93$yGw+acKF^qJ z1(k@MoezoIAJuDP`n4NN-7tDEVYaoi9C2jF>{i5@xYAVc8s1>JsvDHwferYOk%Vvp zqh^;4{%ZAx*XIGcLcU4%i8PGJ?=bcY0_c=QtApEp^2O*k)_iL6t>z*bDuK0pTC(fr zNkU*{O#4)Ms}t9#cE$T%m-Hk+L5}1|Il9R;&^PCu=AlXgL~vgtD}=3dX1$#_I9j5| zT*9kkPQ_tnhmf2$+Da?iTFr&2Y+$M}x`Dq`6~&|yOcwARGQTz9np}R;K4x<)PV291 z*{q3vZeLpCHq{FBFX|$64rYF>xg!>L=NVQ-uDzWl3*>cO^QF&0H`wMdvF7QE zT;ljmEORr|n75|V!`V!+J|c46w-l}3`9VA#Cf>i^Ds{9#_{d2LjyMI?&Y%4397y}@ zpD30mKH4rcwmdHNa)2B+t_l)L@9-JEbCZF7H-C%Px~;=n;yUI8xpc-37b3=sXRGPnFi5A5ci)v5ZTJ?RW=s3(NVVJjrQ?xU>_@db z{WT-l-MSh`UU*Lhc3Tn6W*oRoPkqLU&f6~#Tj{9>;*)kwfbtGYT%8Q(nvI1{$$p-# z_Yf{%XQkhb?pZd9zYNEH<@q^Z4mG~&V!AYDr8RuMkq<1`rBHMQrjCx`FZn^=rA^(R zH*nm3gjx?6JJy5L)6@iy?EWuZML7VnL-{F-S(e%Mwc|A~3YQfYzJ~@u=PF&`@tSF- zdfEgj-NUly%1ZC)n%Qi~-NHHd!D7i9z^ABgdpiM3&KTLwQ=Nu#^;>s0XrVdq(we zlSJfL{%U`|#Db_nY81ga&al6;qv6Uc;_1EtR z6%_xET$?iC)4xU9{}(-MaP$At!t#wsk%V3mvU^mfr%y&;m^=NiuNUYF_hakZO_+r0 z)15hnM;?MpK(LmMGhEL=`LWVSumRGH9_T)UR$Cv_EwE-hr}renV?kU?d7Lk|xfqTj zqr$Oj)Wn!?Vx}d@jDlffw95*~kleU^XWytMj{1)`*^ep<0Rzt8`jwX_X`(?XanawB zayy}mwP#kQXLceDC(D*j+PJTQwm1Hl=S?{zlFEU@Kb~nQh4}kSuIouLj;9@Qz!E}a z=e`vkG~$5-$MKQoMiS@&gRD``!TI#RoYt)GLCIeRP;I=7Fb?B>wJVH3hrk@U?CBL; zNl@W}#8qhpFybJ ziOa%#t*{%x9=-aOVTqQ8QD^c*#zO~TWlMb)u0XQH;XxJ>uPle=sM5&c_DSx&Ww5?j z5v2%bGqAU0ahb^rFCBL*PhcP|x<|xj?=?-_6Kx|v*=h8PQoiBu*ydeD_sMBy*B;@O z7x7HrzsK;dqtNO)avna?E9y6L@dQIfO3@E|tB3WRtAixGJL`U!C6CGYV#AB8yjD>y zujiulRRjMQBi`mKu4eT5H%`vf{-x85m6nV!8|S>yKe{dEEIt90)E1b85U+2x4Ri|m zcDliJd^guSc}8ibulN^%wO6ysfuk*dS4}_@?Y&?2D0UvrCO0t;H&9-ln(7@=Lh_92 z!+m1Cl8c|-{KYw;2Ka%@4Kvhs91gLs<#g6&m1AX>-gXQ%yS;8iskl**}`6{9>DY#?240-U{JiQ&RSOy)ON` z0R-|W9DsddMb?w20~^<8P!_M7f3VhdQ{E%!Z~esvg{(WH7(R>*pCx)NUBOEI?}NDj ztron>MYaFE$7^_>Jyr6L8_llSAse4Qn$mXvT~*QQs%$QBG59vuO}wqWj4{@Y zB+#kLl48&D)1u)_^*xnX06pZ<;%~Hjm&2JKZCBhhA2vK5GMl8zb^{E>yj9V7{6aSP zF#>y)gle_snEFjKHK0#d1i{-eHeTpHD=uf9J>I5S)pgehMQWQZ>X41e4whP^N=L|4 zS(Z%?;SbiZtMjf}>q%I8QPEgE+d|h!%p>M%8djdVN!^2Os8^dHKkN97{M`UTI&u7yu~S}MUbU5sW2yzOn#zpYN9#~w{!V5#Um?CY_hGR3R&?Dg8uK@VmGC*cBDVKw6wMD z{r&&X&Nu`bU1HhLea$m4*Rx(d?|$?Rd!`PS;868@=?4d!Xh~t&pS~|O$rYI8l(?_N zZ_szYTZW)I3E${9@fJ5TDRys(p&xLEqE$UVU#taKpJx>{XY$BYa`BVdpTpd``Or1d zIO=UxgSTTj1|(i~^eoXe)wG)=_DhC58SW1uq~iH&=3OA*+`>6k2&Hm+evf}3UpKvS zMj2|nq?m3auW(1u(@QR0TV~AE&n~CnGBplPaliw(CLLvHPcd14ZS=vf+rSz259LpL z!0Ya=ocxWi(cMOpWV>K%bNo=O_5u*%WPr+a5y4@%kN_4sQJt2`9r2#Nn$4B6GuE-Cfft*7r|R`4}X}byVcdL?PWf2=W*M0z>5%#xy3dFBhb&wu2zBWU7qr zRT87>Oc-1JP{HW@A%C1PWem^=9WxbL%T#nq_;+H&n{>#&We~_%;kw=&lqsrLpU_$b ztJW;x4wh_t(3<~@n_7yu2-(<|`$1|xZhthlYMIiOakb;6-l_LF(Ng*Vs<|$Ez(MHB z-HVZVvoxcFZv1oyV?LEJ!uvpLG*_v%-he-{reNS#2|`(d;_hZC`MuY3_0MVdXO<%o zamnrWN>ZLeFUjaO*zw|0UH`!htUrn^asOkVz50CUkX`=9W|i7NBW z1TWi)pDteiE7ylfeK}hIgG`{EW`+Mp2Q4%8@wNO~xb%+9$-kl{eDo>f;IHeAWzR=q(9;Hs2Q|G5j5|pHj zEmsF7S=}ya1dA6_Q=Y+(A1y)(;Sht47e?lKHg4K_(utyX*X`*QTS~u4c{9iu)%OK( z@FN;0ot2LHq6A=IzI*I_@vPeXeGen)R$v4!pYV^t#r??bL;>_nWGe zdUF`+_5CB%0*vA z5(gJM^4blpQqSlRY9?c9KN>piCnWPRA`I!&zUa0py(@&Alw=wt7h*<*0Z$d?1yJV5 z{yK^Xc>RlGL~Z$>7fa179hYga0Baalkv&Wm~tuYzox zPT%+$TULdRTV@(!y8V0qS1{^1SENl}6t@F#P%|Up{89v(Vw)%^XI=rNG8IIN((gCp z9qn9h;A2ESl}!(v&=Ub{tXCminZMvjBUgl<$)P) zd$^)fOQP4gx-|_hPJjyVT{9CGuYgSlQ&1#_5y@?KT->}z^LTQGZ(B_*-4sNFt&w~5 zf|yfK6r1G|ATA>#qO4_WTm8kdnElCZ?L+O$dfcQcL%#9wSJ9O@tol2&+`{+UdX=rS5J*;@Ia_c4z~X?>?Nh57T+j*I(GM~E;T#G^ z#Tez9Z&mzW(#suJ)ZEgZ zN<<169`CkgQ)R!6u#))tH~BD@D@N74OkmSfJ$x;wsuS?9uaGslD@t}srUMdIzEX-A9IG>r3BW}_45N)zyK z_&YJL0nDmLTgwSKt|oUsayss5ueqkP7PpTN&Bn@wfcJujEB!;0ImC+}A2t)Ha}V&H zM>;b%Ff*mZ9UGU@^GAsY)~lh1xb1(g8k}#lxl&G`oOYij&x#ihtu(kouH2dq<}B6% zs$`7NJ14P=)H%EvRV~^FhN_ZA2wV(QQ^5%z3La}Xe|>B-sZ%yLfe=e~cQ&7?ROq{O zW?PZKdfvZ*V>CGY8!?1nD+Hi;VMB>P{8LIe}Gf$L`ng&{GvOeM7>qe zTxQmJrdn9G+|x#~ev&X^QyW^WDE7^cSXOo=|Ihe(opKlZpqk=MTrlr3+ccFL8zlXIv;bQNrx9h#k5Pa*DHOwLV{8d zC25d4ommg+E*LKq^@fivi)sz+gaypIVd1m8N4pVinNNara+hB`XriP%7+yQ@=wPsY zDCpw*i`8bVc&_g3NhhsA77PBjJq3MuAgx%t*E-e61t=zTy~#x27AXivACLb)L3U}{ z)@-^=nQb+WATrw29r(GepH`{iYQzjWxol4x5mO+g$_Ae+20sk0y=loY<0$mk!SHoe^jqkEPM$2+99mvkv{{otS#}`DCfcSR~_y6AyM^*p=pTVSO|BQ?fkLqaF26ob@$*RxG5QvE0aa#9|{p54VpU` zR-|a9ZkK?)1e{J*)~7_O$h-hZHa526(r}$@5d#I38auoG!NIRvx(F^VF2I3*mKsU{ zf^7W9#-u8RwFY`NvQ9uH=uJ(NDRhfw^{uQT^YS3y2VO%XBX-UASeclZC{@bUvfTb5 z*81bcAwr5Wrho29^eeBeuTd)3ehUAcG8q^0oAS}sV|Q;)_^}13rm4Ames0D4Z@8uR zhuB@w+TAI;ZFLia!j#^~bdTSSaX>RVy0p7{u-kne2~V8R>c`fe)jZ&EIG4=9d-L)P zNmiJ7(jxXta+2;n>aj~jvL;__Ilhipy+&WyTqj|GZgbIo5%03As_X60BkN9(xz1q zr}NodT-g}E)Teq$2f9<~%9fn1zT`_|sHuW)r)YetP*w|Q~1;@_O z_WPu}o=jAfkrBYi!>@rsdUd|XcvPQW6sL#gB~A&o_wlX`-4fs#N>%=`(>MW?uot@}GA6M+EP$^&v-7y_yngI{TkIHscPI#F20LPeBz1td9#KGkVq|bcq1-}TrW5Q?wjNs zHXeal?S4sy;-~|deME5@*n`#%+?16Sb}jw^CcAcIc5%7(yO%0^wVes_VxPh+W>g)*l$=j-{8iZT=ccQh#^>Q^)4swKFWARekk(} zuLY%Zcr&98b(`0p@C54Ic{+3|UHVui_Er+IhRvRK8Xgb!X@$y&+1=+_Mh-fjuLih# zbJf?6T52{XG`#e-q?Yb%DTkXQ>g3B_k|)%U>pZldN@D}NRM1A3ky(!sPLt?O`*I`t zkMOU`68XaP7HW`+?h_2 z{I%&MetnA6qk3T7gM)*#hds+HD=~35)tRO&GdnxON?NuKYOa%ogRHrp?gUHFN%Nk-mv(j-rmY; zjlVX?=p};FXc68e1VO|{tM|HU*IbD&tB48p{Y#BGnpY=oWG3{dq60k5s(35Kbr zS8(T&0fkY%61RTimaxFz^1kRAJ9NEBc)eZmaQ^~Qs`#1>RAUFnOZCc{OnFvHrB$Z?|_?AVuJeeLhrmtg@y+q(OGAK*?RXl2Z=1uaW3ne|{!0{7sdz zmy^F^*oF{MzZcd==WI4z)$>mHOubh#VCF~IeGiQgBwGF4=O_X|xX@<1P}6+>C?2nE zT24J+m^|FJvRi7GglNDPIwikJ{}3eiJP5PXpo9;pnK6dj&FNTXUSF zCmsBTM?f8F(zP+J4^9L1crTGIQ;nr^=LJqE{VB>Qg_LQ!^_R^>XECCPzj)LxKSy$g z-H3v|o+cJBiE7(Q=`1#=P;+Y;hF?~n@B?X!Gyqd5y?mrTyFuTH!2Ow!z{>St~g z>F@>!4Ztcng8tgF`RzG-sPzQ)S`zv5izP=BzPEvd zg=~W0A_M3Kij(OAWvR+Ce7seZ?-)Md>!*tijEz;)=wpJ-{}3x8r}2iJQm_HXUjvpF z38h1r{-SZ?S}Fqzhw-e0v%E#83bSzT?zhi=WInfg?wX4kA_cKp7m!IlGtkITIjqv* zrc?WU#ld4TVc`R#$ij>G>=)=tJAQxEx=s^UbU*eysQTKjm_C0n*6`7Y5p| zdu`3h>Y7R&Ggu?05i`Jke#PTANZzK^!Ins7bQ+#Dlf3@z+yPg-8Dvk~fjW*)M7Jj^ zc%C-hx!~=5$t7bl3%z7kf`)AsbxHEncd0hh@M&2;e`MY`C_A9s zkmkv`D{4V^Y&#y~VtLeN@mCy)uD({nWQQ`K9%RkH5Hi-iBK0GZzgO>gx!-LrPwuo3 zxps7>q}nJ?@QVFUEUlC?MfN3_Y3p?ORm+8%wNcurC(-=ZV<(KUw1Fk-U=jv%Ayc`6 zj6qr2(!+7zZ;{jE*&Glol%7b7r};e)-T4hLTA*n9r}PzrtI&LA9L`Do7{5zb-<19*jzMSa0_QgwiaRArz9(2p9RL zo6vJ#yi-W1I$5kF_ew9c11 z@DX#kpLwJ?_%f*rvRkyMA;{@OqRH~xJ!?8 zm4QPj9iMBRp2nYtAWg#&qXFLOOsT%i6j+Yy45+M) z^4P$CAU}+|HCUOV^f6O!%LvCeHN_Th{EVoH-Aq~4>Qj3rxBCU^Pi&)ZlE|iJfI>Na54zMdt~z>=QchI)9_htT zz~eK>fdw$WFKoJ8KUUY)_JaK0{(MqAe7gBD%*aABP`?y~->x}sNygzMksImbIcW>U zv8RuZvzbfDrJ`m-8NZ7#WGyqo8Fwgn@jA&bJ)A0C_hDhmZC%*$lfjl;x6hG6Q0w3| zpH>8J7nc}qxO6{IdZjbj!MzEZH7FcrKcm~5Fp`tUXw8C(hE;5SsG}7eCx0<%Ni6{7Q*j}Tc^_ifJ;SrzZmKs_a;}??Tlw(By3r=a ztI33p8_a9!?r-#K@MG%=&B4KigpD5Q!@wK)jt>d!8Wt9egPS{jAFUtfK|#4#XB?w6 zX>UE?1?z5p@fG`(YJ45Nn*hcGs%_A48PKrbalv6y3qLOkdWRs$gV0$M_s|ftZc*BXje2bozU1C#_{l*3|XMvygXP5gY$8v_k|P?p}F8-FsJ7=hEF%%Ce48Y4kJb1u}MZ=!+Y z{@v`&w|q|NHXKr>#m_^2-Q^9rnHFU1q9eP?@`(t9Hgt4AGD?Hpow2%bQ2nIJ&E~MG zs>!~{c)7KoOqSp8n41_K-t}j|9KDq)&!iW^-U16T)Jn(nw>+0x03T*Ke5k!OO57vL zw3%HE0+I(~VV~uJfdSYDySmc(WcOg^lil}36~}Y`;zTSw4)`Uf`H*j_;AIgLFdo7 z=*M_Rlo=pN*tg*T*SUk&IeRe>js4{ z#Nq*L-+0%T5VYQ}nN2b&`=(MQAAcv~a+CWE7Z$gRX?3^-&(@HeY2b+o(*K51$?<%D zw<0IFeXbcOa);T-2W1B>IW)|o(u;Ivy5q-+aY-0RtTLEfpq0pGRA+|zBN6H%-nN7kaaavIhl?$V{b{P( zi_x)l=}C3hS5VgECVFEML^o5`GNeliwe<{KchubPHux`-IusXC;6fT`VlKh^QV-f+|^&51VSDXEtmZ@Pi) zmL=R*UOJo)oDR?R2Em1Tm{Y!f*;0ETac0;=ru23Ge)BS^>_;5b?n^B|NJO#RwhBlv zs#6T*tc=Cvfy1VFSZySXTxe{Tb5#9MA-IUFnO^xFIn&1KBr$WmW>nd1@6VmU813Lpe6?lRLNcq@lta5PU49!OocN?4U z1&H2epc@QDuiV!FE}V`xb3EL41aZ!p9yMQRWi}`DoMYrrEi^;38eXNaPercV*>nQJ zT`LI!cLd+$b+3bFSvs?r6LiUOrsbwMpA=8;t{o>i#(S?LS~PZfRN6JD+XhA|nIL&D zMmygfus%Swz#pi=eVrNzZW%g4khv$nX&{GZ5<0zj_w-+o!B<6s;*;qq-H!n5>7 zDr1|xJU%BK>`53afcy{AgDF81>1bl@ae`$1L&eA_!=W2mc2lN8Q@QtrmKP?B+J8JrYRQ7K-nB~}sC_EVXn&pb!qkI(nZtLS zeVO!w!%mey7iLzxnJ?wclC!D#`@HG0nwqYe+*Z%k8z8;cD_2AI;iV%RAfr~m*w&t@ zMR|gcl#MM(Q+^sGvHvPpj^&K;4y7^6vV)4!?7d6QC6cRD61TL%`$Ks@Kw-M5A2mIH zXk`G`hJCdS)8Bpf<7o3q6Qa=a5LgH|Jl!Nd-LieSs}=ZjiT~uBawl@)@u|hoCA&7N zRF;UIJdD;u*0Tc-NT)e2MNCc(mDd5ot0S|tr<3|Y`rpv({t>{3jq(+UMT(ePWhAAl ze0<_CT)X}%%_pJP|7>%V0xp-?`PNgPT1l3d1QP%bJOqN9ABN`U|?V} z@bGIuSrk8&hUZK{UNoF0|(@5V9R z+(9$uXqs4n%I=0>2g}UF^&VIsi~mp$$G>>@+rx!?iKaZm16$fU!;NtOT-vhSvbZm{ zCOERU@jBkSKEmw8vNwDY;ZsHKANd+>5QW@KM{a+iRN!z$n$xVl0olBHm$%fq<&X_& zbG{eWH5=fJI;VemAeOVQ%o`J;`S`lcxi3H82owbe zHAJ$Kg~RNeoxL)ALfEO%Ojb*EH1i4GF3ih=nKeSnFgpFNuGIe*B{MHJ{ITGMmJ4t`aBJZWtKvf~eq28SSP= z2d>=%#SM1P{E|K7+cf^d+p7sV+Z1Ykn_O*d!&f!=@g+w>GH~;G#OHmR&7j*M_pYVRDRde($d!1d2oCj zokC0u2-3cTCLT(W0Xl@rC6FZ7W^)kKXHgazBmwQHsc95YR%W_O1$_z}o^H@HGBZEl zJ`62POnCmopM2SYCG!j5S5_vj(x%|y$($*W*x5feZ$HoC2|C~psb!Vh^J>)#ow;qRI5Y{zGIEm5#k@m;;p>HP}r0maLOXl zr2=2POWMJU79 z+XG6EIJIzV>noGmNVos+uW`?$n;l|w6Z#|yY#$PieVCuq-LN4!T$I|$t8zxs-b;kL zOaf$BUu`iZy@RaN zvv6NJ4}tQ1SXYCZzn)(`?zI-vCzYxNlRp@yW;mW@vv&c%gsoqK#o-@rNEh!uUvtER zG&mTzm?04n@bnWC2kIg!fbTKQkFE&8y*`l*`E_THR;Vx}apK}K#P5S{&L1q9+v}}N zKabU!#x}3&>m2gbeEBve7AQHz|1D$un2CPu`qSG9r$`-pTJ+si_0>l;^b^1A{D!cfZjnC>%7jgQ%oldG$#-D?q4IgeS%)%%yBhtAbP zlm;_AuMPDPyHnHR%^W6~L)9DWY~;s%_pg%u58Cft!ge`Jd|pw&>ffMtL~9yPRM|G| zZ_&z>utWq|pO9p0Kt`e+z%v$47+P0{%GTIOT11*|ir(#a_#$oaTu(LjYR+56R<19h z=@CVrGIY@Vak6+loewnYNr9@vR+}ZF_%}20d@r<6&DVN!S@uV$Vg#UIy5Bco%JbcAWAN)V?K77>DeXn|6-w=)>sxW zn$)NDi^X5{o~(pC@cPt+X36yt?mCUz_|!Q^_XA1EZZyiNp*eFb#q}2s33qN~=Hv(u zrnnM-YB7g7VB_Zy^90nqCT=KCO%QAPJ*x8)S5rLtngpNNkoViM+VpaMBlrJjVubbJ zIi41~BL;U|jJZ%q&$+&mtj=^oO+~BxNA|GI%r{ey`B2?QBXi0`F{zxkLu(VMrNBeq z;oCBtzN{dJl($hQCabQ)b$#6FV^1?4dxT60FiN#krsjGl-cfI!?g0+;yaw4exQcVM|M&n@oGEWQCn zKc9Lp%lujXTsf4lf36q>tqna@B|>#}NndAczGJpP_YpfDGJ%?D9qGXjrGxc7E{nCU zNvdWc*8Q2?gmzQvr!Z5vnAu7DQZo2Cb&LnLnVIU+-6_{QhkI68)6Q@;FwZ{T8sS1Y z+kkWPcWMacRZk=ThDQ_iHhh=K)5fUL{D-gc}VC;Z@SD6)o#{B1uIE^H^ayu7Q7?4m7vf+@lqyn&RfYkJh&`3-%;~CC%3rJl`Sut zI<|#5Dlag3^oYs~LeDrHU^>$2Z-*}?=1aendba&Uh1sYOV=g)~VtuFlcu?*cdhmu@ zVcQ*eJBzr_7k_bY-oGf)7U8O=AA0zBfDvO3FjER_Q^&0L{AH^4z71hrk2U^M;V=Q^ z`%VeJp(`W0DC@?(#QNbfEhGoWF{IJ!eITPTaPDrySZKjn%Yd19v}wv{79bijeK}K_ z5(Jc^)GTdZ%DSQP*-8$uxzR#>+WbaDK!yw~!H@+LQo-nkL=2@5jjTXa=N$F0#WAzH zHlhagtvWz+{7VL1Nt*<7p{zN4?sH!la^GaxaCIOmvNzAE|D_ptt~*)Y#H;7#DZ+J+ zE8Nvc)^c}Rgy8xBLyyUkFR;7NV}&=1S!CU&gK)AK#U$Uw_!3fqn>@_Fq3#I@~P&jL!X7?q34Wdt~et)bx$yt8|H~ z_6F*s*sJ6g;O#B4=HkJtj|NZOW?(D-Mz%DOObJ)@RlesX;OKwiK$okzcMG=Hf#bRi zXR%&LIFLS7SYU1XnG^eZh_>;;n3RLrI^Cp7BeA(Lwx@5XrY*M^di$ji`JM2?g*g<- zrhVYbuWE*tGUBub+7g}rUm1n(o|J@E3&n5tKEbz^{zFgbzfSm~BIR2~mBX}Nz`Ztf zN6+E#u{bQj7@*hn_C0LAJ4;%-1iTQ=w!fr}{~z?oO>^`8OmxTJ6rYiIfa7)v*6&O_ zx^8}Hyp2oT+-r17*m(=r*A%ONN*9uJ-dd;UUYPj2UNKM`Db~vL$3L4MPNX+0S&z`X zK~LpnA?5-_8SS6;+t#TN7!Q}a3~?g{+sDgi3Fa=RQj2dePTcMm6xiP_fjhqgQuPU~w`77ak8TYVsogM?v=+8E zYk4M3FZ4Ui&Rc4>b~TG38tF)O;Mfyqlqe0K-%9gbpT6NK(A#Zam==A3q9tVYiy#W& z@IH?cC)WE#_S#J(BgS*~Py+>(VK|V-R#8?|<27hX%bom|s$^rOw{vLGj6N5)6#|D- zdn~a~q(6*?bipGs&37&s>Jw0q4MX%UfKy5oA;t6anY1!{X^b6+Y@qAIf62~@5 zXY3YeMcMyUHd_7_myUmEurT zXtGHSP!FQY`EEq@rC2n3Td5pooX;)Z+R45&dDUf@85r9{Nl{?dhJWQj_%l46Se832e7qS#K~mrcQ)suJ!Rs|rH>RHdR_)j=g{w9 za@a_o7Uv^vq#)tn3$&_%8pw&GWnJ5cN9OGhyQ=Lfz3tB&9u*qxtm7tQdzq!2LpjQ1 zwe+_p0~3Zujpk82Ij#-+vm#cP9f_?=SvEryFwrQB>_w=7fWHUTrq5nd+qIWpm;N$W_ce4G zi1RCrh5fRc%UJi&iRNh-gNXk{&lzk>Dz>N1bZ*d+TffFPvoUN}_)Zj=fDbiM(psfU z*efuV?)a^)ck`xC%p+pP{rI7jt0cc*VD|LEJ9@YjY|k@vegED$_HK#Y1HWo#GGi$S z`CRR4d*`t!i`-X=kVvxvTyL?pE^!KXE(W!lfP3QL1<|w`I0T&qTUoSTD$|Nf)spN_!jVyA?*iwj1!>~_)qvS!#AgQ+Z-ulO^Z48{nc%Fmqc|IUzzw^YNBjV8 zj>Ca_LC>y}q(i>QD)S-p*Tp#9qYdpKeN9&i#T7wAOVY-Tj@EavrhF4~teo?Oj11&6 z_`%eW6ZUcqyyL#2_#{GYG&o?_s6eAeR;sCrgLz?Ss>LYRJu%Kr)ly5y{$M8i9#w%? z4Y8o+OhB1y6-{sKCuc?J>U<%&SepaRk7zE1%8+?xdFWy+Pr^N$XU4Y4_km^e(VT5m zlzfi{s5%j$XjAdUVe}7z`b_+LA>htOu{3PQ=~Pue<4lwRIaPx+yj8e1z6VX*?*<^y z9ZmD3>}K;0bYa+R*^1tMz~8nTP3%(#iUcaZ?$}=Trx4}hY1Sp>ArW$swR3xEa4$D; zCO%j>Ay@@7mnH(AV6!@`jT8|5p~2AjDhbvxffw`TRj&dSsHRS{PWWi(^Ve#n&Q3$?544aCV+!MBZ z*-?lm2!S3M|Jgr29=X;I!h$Rw3p9f=+5x?SLU{3+ih$#nKY)wonb4#wl1bhV_zUT( zoK(|g_VO$Njn?4vy=1^sH#@p+*)xg~5#IN$OB+5>JX?6;B|?K*`>C8W>QekuGdB8+ zQU6QlxO`|-Yz*Hj#t>56dU_gz(GgNbSn@fy)9BlJN6Vn0r>j^Yq|=A~Dku&MR4fgr zB8x54vt=g~O-H757qym~&PtZ^G?_L|U7)5Xtm@aki*}P=7dl)fEzaXOP@pQcAk)?5#=gi;YVyMF%BU48E8g#H0*Q_&`|c|v-k zIM|H{Y?B@d=SYZTHk+SW$}SADxpFaW9rwB0uX}LrO`B0Mu>HF*^NoKtb0P+0Ow|pK z&Dh!CDxABz&rfF89)lfH!TIXk%W$c~bQ)c($*K|R`q~J8BI?Xio5aWwldEA1*6a1h zQ*oX?)IvAEQ@0~wnd>qL(7n!`92=nhSsNOZ%{R0c?HNYk3F)%V9Ml;}Ep5xsK%M^s zh7Y+;=rR#k^%tJRZq-8F$<}%Ox$8Eu|H-NO=0eO$y`y)pSlRNmoXc}Ia*Xn;ppf~J zgZxO@&=2Tmp59WYM2{aQ`3mc3fDV9sy&zn;qr}i#;tV{HsvETmm|cZaT<<*uku1nM z#9@zsEb|;5c8O1NRwyFXSssiTTUwxZZwn*&RiuGS9#oc-9TpGgJ0G9!3^NlfERyqB zX-#{(r$l(f^&J&1%68n>kHYg~+aOqao8CTd@534wjOvz2Ai}LGm%fU|`wi{K(L_`o-kL^50NAX$`r{3*)ABS;^*zJGs>%X|1q zA$<9lI>WcF-hw@QI0Ax;Vu81mHh1!Mi)VbZ@Iq5eg(nvjGk`rDs6RBI()MJl{de;}Uy>GxsSdw!9q358WmzFr#Q)SQFD=m zfr#`y{{kdmo0yCWDl_V}gtidi9pL|8%)NC~9MRV$3Q3UQ?vey|cMA@|gS)%CLvVL@ z3-0dj?(QDkrGbWN@{{@IoB7^bGi%;jum0-Q+%9gNTXpN4v-jCY3Ne9*#~rnj_ZH)s zlc$>uc3@^e6e4t))0`a<-h8%8IpI)hSw*MNrPKhvIib)wGC^ECZ4k%km z9iQ)gp>6Z-$3IVXClf*Zyg$goXM3C2YI5=tUmh^xcoP}=O>9$YhXdYYbn`nI+YvR# z5B3Oime5UldyYJP3TodP zduiya&0Rgd^&M{&8(F00=H|VFeGa2}m7Nr(PmrH0HJm9KV>-7kI@8uD1vgi^E% z=irDqIMDY$H&#HUnFfyDbo zvQ2D!N;`q0URRKi`dxC2gDisf<2bE#nDPN_Lq8Y(syqZ@#ql(<;0uA*QcF@B)zd7S z7&uGlhG%MYljp}${m9+fdZ@D!m_u}QbO`2g@pjtCM2DO&2hR6dgs3@j z&W}iBXPflibl!M1+ndLXJ&N=i3z-cApPVdY%IsWJ?w;pjL}q+cVk0uJ`HHDcz;4&% z)5RQt$2W5}YT5^3cRFy-cn8r7foG3idiKC0dtfr?RW3eG$_J#4K23TcR(#t_Yam@RKOo_33!9O&W zzx{y3F*r6Fe8~)Hj&}Cflz6ZbFJE8FJpLR9)#{h!R~^hR0+x+YDrwS2d1w$W?{Bmf z?CnESDZc_NaQyv|e;&QR6!<{IX2>xEMr0Jcv8!D&a*AT0_mlnb@E#@_5(dU`vZB7( zqX|I@hSZ3&^|f3XgiYRTg!~_cx+vG{DZd_ zGVFi=10aCOUi&SPNw>GTBTHt#)Gicrd%MHL+tLu214rEtk-mQ8-Bzb#AMjjK8q=G? z+?50*#~+V z$61snq|0-uJiVYeDN?HAqiT{#W=k!YX{Fq8a77kIC%Od^aV=b~R;NOFnwhZcnz6cj zy=M5o=uxM5S0A+}0bY{T0C@HaGKYA9^xt}!BY`cMe%JwMMu)ORi|4gJL!3e*vfhRo znuKOxe~=IJ4Q6UP#rzhTrk)WuA72V}N-9q0#glQ$kJBKr8-i{@v(%kmSXsO1^!J3d z(tTv1yR0oe!3^aCirn?rxwGJ=kIPI+UmmUNV_gk7OCMk>8kjKo#+1jZcA8lq1wa)( zV}>@gjj#}rGB_*W-SAP)kC(EsMMizIIx3}p1%4_%3ONNnDIQoW{b8|X9#?28vSe%6 zx^^;(^->#2sxC%TffWl;?>&X!i!*)WJOSUx;7&)50*b{#{^782y@P~|bWhQ)`4JWC zSdYsZ0AuUu$ zHA%N%@d%l#Z581*Ka}647a0|W z;H)GN(7+B+h8yW@PTdgl3a0Viex~>`xZtyKUmH!uFspwIguB`prb309$=f8}Sk}JL zR|?7O^_k2xJZ?h1JzmH-7qr&jPLbw*nqkhJY{Z3U#&^eEj~X-D>FT(}V@ybLezac? zv$ipQuKB7LipWFg9<*42sC)6^j>YCcuZ)O28WGh#nfSYAXkebV{Cl_c)cT8gGFfLQ zdx+P%yZzl>bKjju;-RQg2bY55+KSX+`EujbbtPi6bB`D#JpO235Jq)91`np$UOl&) zHeFdMfw5#(rUN0PA0neD)AQ8^d#kmw@SVd1_KNMS-)=BxORzfRUH)OP@{(S0zi~eW zZn3vV7m@q`LzOck=L2>xkG3k-^{xEcRNt_&ACBbYM)~xEwP8?P0#)}%ta(A>)e>#< z4WevgJLY>C#&0XOu8xIX*cX{Z*n95LiYL;_=Xd0s6Fy4{ZR*<6MRCW<*{p_rMfV1; zHL3Ujg=%jW>B0V3g{g2VwboZc~nMh{(IVyRxPJ8O2=IjQ!hCo#E*d>ZviO_cs$` zUgM{xhY%0_kCnH|L*mk3mG6kC`&uDUoqr5TaEJzur&ZB=kIgePGMm#L6)&T;LZRU7 zshX~*lBCVeX;_?t`+suXR`N1>&2WHKJ)9wDhCssE3+ZO)RAPoHdQ&ncVpt zQ2M!{cdYZ3)$6!Envn1$n1(7P{sWtDkMCvKv6Ll*L4i?hp*s>9&Y!yUQcpLZNEWVu zJ&j9P`2L4nNUl}#Au*En@7-j~pSpeJ-F)6aH*B_~mCv@3rX+~Rrh6uAR8@H4w)ma{?CCVhd z$+1rMmOAql5N%ijgtzO{EqY!d&mOzINk0QmQYNDiBXqU8s9xAh5gmba7Nas`B(+#k zQ}i!q&Q|Rftr0J`28`wBp8_Cu7ft@q&58S{p3!fHQz!fKJu zXEBuBO5Pq6GCthPt7(6|W~*AOzHl}(l63aQNt=|^JA89(`0Vi<#52e|cz9p(Bk1^s zvgoWa>k;awVnTsbT6AXO#IXM-=`0RGonL&J1es0E&APJ|Dl|$p_I5+V`N`k?=lHS4`7A7&q?aypMbf%? z7ZW|+WQo3Bl7c;0%=}rA+59Yr@ihte$a2d0aqUl*JmoLQS}dy!W`Cg1TlaCTfDRO^ zqI}}kg*@&o##~;%{H%bkHnN(y6Z_1uh<&lMj(B+)cZqZHz}I>LBW(}zyhDdd`zbJ; zOPFsx!!XCjtMD!m!bvQGr=6{5Oj7~_9vXVx?PEn1IN6RCpw6X$eqPoxK3fs4Fn@?5J z`aeQ3PCKnga94WE^h|5GIbOF1i_l@IZS(|bw{B}Yjy47=2n=9wtwVaVyVY}+G7b5L+27N-v{oq%Ef`;{7R!6h4 zOzRt@^Na6?D~31Gj&&SpqRdyHPcArgCAQ?Rx@)QQw~Et)j2Xjb1Utd z)K&c1_d2=hFXA%U|EMeMA^H5ThOo5%mQ1n{|5vS{zXZy^dK+oPcKx%R>~`$G6qTTp z{#~EgMEovm_FljDfA5qA4w6XlQ57d>80b0XsrpJJp(Q)p=aISOk*fbd{|O~QUa{n& zGAIOA8POQ2c&VR3$Ln9ZVV67b@r7dVbpRohYH*knOqcd z18)aU$DW_lBGm?zFnC$Q(1SG2N>iKT9Xru(+pu`uo>UV-dSpgGo;o3~)MvQL3eI5? z7{zyb$eSw)JG1PaBirxPa?!%e$BUOHJM>K&K(r!RIs^m`1#aT?>qF_|Rge_kM1`hb z6Y)80CeQ>isc8AHOzrd*NbZUjnz&wb=P3Jnw-dTC$%;Hy?mbi zPl6P7cPj5T+_C=FsE?i$Ze>1@Ew?7m;r0^wOK3P7HS=4y|-H2DMJ{ zuLJU3ji*}n5y%jeh;~=18V{^-W-wT`%hlCd0Cae7Iwbn^p8SI@G$Tp^8BeDRu~sDm zcF^=XG$)k#F7_*#VbA$NGAN#GGU4rI7C^|`@O6(47YJMg;uveV0;!9uHC{_Fsf>t& z8Umf+F+_GI8&a7FD+L@-D_)C~H|Ehdi_tmdi-II)Q@U`cYp%?+_OL%eS~|I8*;ouq z6IJ`W`yK#u?qLk)p4ErLf>p9=tL<`=ufoa46j8N_adp1f zDt3!AF$!Bat2O-Xeiad5V+coP2j^dhJ2a>M!Ino#o9wL;p8EL_s$n1_ZwgOnbfUM( z^jL)xBB@pZ(wRVBIc$qFKd=-?KXr2Jf!ryk!e^9ry$Xt`rL#0u!2K?F9d$_2 zYaTY+&W|2+*dSh)UtAlH5E6wa%?};w*z>3Cu$hm+>}2zG#v#wi?gisJgW-wc>70J6 zgU;PFM&QoU?lBRjhP|7&+|p;jj7qKcG;hy1sb^^7wSRE|R*~842XCkAhBt=Np)z+y zg~)pM=Ac*ne^(g-lwXYagrp~T7ArgV9_GHQ1&(z7c;BPk@cQ!e%%@z)^D5QGTB#au z#43Fr!O+eO_n#zNHkgv>NisvFxY#P1?0LgZe?l@#kr^FRHVm%**{nzA8H^;>U4OQ? zJ|1ZL+&ihwK)X?!?#ic*eYwMEgos$;F^~U!^vj=>fHqhA-5PQ?q=?!9`-_8dJhwV3 zO+3D@Kae!t>qMSiFrQ%u8K+RMovn1Vg$gVij<#fq9=pEWlXhi_@{wN`nFg?nQ`Kc$(9yAc%fsENW83vIvahvD-zuV309RKwzr#&S+?74kDCMDl=18h@l3mlV zr3dc?E3G}16ahyO$fFffg1A>__D3?sr`*Af%=o4ydUP z%5o_gO(|}v0@`S#XTJuk3q8#!2znvOMkI1`vptVGdvWX-6zDFMCv1s_fCn>^)lYRf z+A}!hYzLO$FvMTA!}XP|e2<09j(Hm8)Vq}qC%{p?bA5mLFn@_$ln;1Jqxhu3liFdQ zr9VHQAfk0RaFC$RfZ&p{;RHW+Q&za#WJ3$vu__*mBWa)l)-iw=YcaJ_Z2^I!imgfx z{?&hpg_%kYc==HN*b$oh>%7cWb!4i9OY5xU=;lW0M{6v^x=kQRIAy^LWJDvGh;zG(V9bdfTGDs-Y-|^82F%f~9VOU@h z{{fJ(hv2?4=ieXxGiS(Urq0JEAPA&lZmD0hu#49b@S|ewM}PbBp~N)f#5KhLgX&WN z`-B`l3LXmBDyWqpc`I7(*4g216(JfL`fW*MDa!Y^YM|@Q)qEK*Lkw4HVU;P6H=HNS z$VQ9>9Tntd;UIzBWs<_jTLTAgIs(;ppV{_xfNddN@5WI$l&nV1@BacN5D$o*NFF!3 z_5A?DT;z68?t4tERh&qXnyJbC=rze3%lR^V?~Aau%mpSWYyH&VmZYd2Wmi5(@Kd05 zDz91arhet&=jG+)_sL13&727}EdoG`Z(&kW+y*KHBBJwLw%3>@Pu%%D#E*NkcKimM z#mdkFj*?*zERkC^lp`e0(9dZo7(pq|&3!5BaD9C}eOV1lzcVZW9eg7Avp|5|3n4T2dH~tIAaGWGAWV&m@Ll*?~1jFWx7W-{YR$T%FExUz*0?bVy$1{NR3nrKfnwh4CRJ%Kq+N&l6oM(qf z^KdDpM{9h{Y$s*PU+3s>Iim66OqI?dNn&EiVmQg5X}ZhkX;PYSLUVaY8S7IzRJppX z^=LVhiLI>>=W|cjJW;yz=3*-S16~AlnydHPpBw59zc4jA463|Z&NR5Df%rX8ZaC4J zHe^d}A!FIIqz<*)ey3?fvni}+g&c4s3OE{9R zfyU7i&5?Nm5kfNfIuj`H^M&;bckDw)SHi#f7CrIU?F#la^41 z-n8|Py>^Py~K9w0fe`Fnj-uC3r`)&&AH_=425&ILDNpEj|&S5SI6h}=X&F$l8I#w1_%22o~ z+^zAB^HzE^w}E&97FpV_8aWPg^}BWe?fI`#^%7KXCruU(*KHolueutIy1Thnnys=~ zJ3G6k%efp{T9I+ObXs2g;AGP2zikzWK*%|Mt>zDD@ok44>{K@Ez$9aQoT2)k0$L*+ zj20XI0Ra7q65A5>AX*pYY>;38aB@JEBXuF+G{~XxjFF1kxGrc*f^!JEP)E>dR}w|A=ibE zfC3iM1oua&afgwk`Hh0qn*XoKp~VZ0tIpoh*|-9!R2xo)7?2K5ZvbaW1kVj)F^4<9~2!$EiH6pb6|eSMWUa!p^d|J4^RZ=rF`3zbKD-8}@` z+W^{opyhsm_MVCNC?4-Uiq}s>g7?epuh_2zd?D~%mEM{cHI|i;e~;3Gz0uyY7w~B~ z{dd-$gLjcf?`eUe?{2&ASq_k8|9_g&2pcyd;vtIjeeqz{v>&Sg8Hc;Q4H^ax)U=)5 z=pRzc-sGVDqiSu9Tbhhij~VCk>b~265oE|dv-;SC1aUVt9633;$43_~jDHkcynTNU z!T})W-Vd?t|KW~T5cn{j#s<10X8)an7{UWJE}UgXL7hZGCeSL(2LD3M93OmX1NtJ{ zv_-$+ukjv(Vn8{Kkl?h(?#y!<&9i+0;M4mnXJdfq0dIoobSnchSg7& zxl~(pcnWW2pC+3!UUj8m=JRsfv#xJ%l#D9cLyNxm|8vGm0C#nxozB>b6Rh=PG9%^| z>}f}3!2}1GsJDqID&?#7SVUFFp5^s4=AW$8`@jnj+KrgTo_=PQfu7Lk*}aZYo*u$wRR$?qf=lU&b^eDrrb+N)#BbtA!hJ)&A5{Ly`o{8wiC z>#;CU!wDl7(m|aGGGfH&e1+w-lPPt=$=SOec!ydV**~X^_H~mygHeWy)e0oc_sKa~Hk0xdfr6MH4#1?>5 znNDB=u&`#TO~Ax$-jVxuN(ZNu_82bP(EiV0lxhoSp#E?G`Nr3})1|1-v!v5`7Qu;$ z*rN}GbjFTjpBWvz)tm^&%V$MrH!2rm65g%TCme?n+~g3-l8Qjc-#QmjwxVc~)!nVg z7qg^`)=T6Vv;mz_%e7Fuh$H+EBj2>U5ChVl|5$sTHD1}wnXLjjf~AQDlqoUR zc{{JWRs1fYyIwonZ2rnxb{1%}yJveFb>BPN`ykL~@f?@WWL!I2OQmn!k#f?Sw$!*M ze(uTz`HZ8a&@)^~uzL{1Yt-pZHn8SEw0Ljj6BGpH1vB@1qOdb{IGlsa=7c5WnV>DK zSf6t{DOIwf+MyyKvoVa#cx_z0mHUVZKzp9ChPr!U-vm5IWGCOPeqaA9!Y`oq^fS{e zCfxDU$}|V-39GKZ7r%Reh2GcLd6H^gU`r;W$n;|)S!viFdSEQ)!D`ydVkzB~;)fR;vH#tII_SnT_>z22Z0&Q(==;+aEHSZsr||Vv1O{9= zs^DVnP^F$BA!f0;+I3$k{G(PuV^o|{(;YJ|=7eFlGne>JzYsXsuEk`*Sa>zA#PaV% zR79{OpeD3zgWOytgs&awo62%%MF-My4P}yy37|-)6xv>6L6yW|4wl;SE#8?=V<2y_ zQ|3~!w+V3G+Ei^%56R zT|lz`gNj4fLPbdlW0JZaP54o2wXQF{IVi(h2~LzYv0B(%t@v|aU%GvA6#w{%M`lPg zLY}M32CO8swBG7{+|nF&xn+^HR2fx#`|#go-z@r@iC?a8pP8hXO))}4aWkya1qyTP+aCL% zEJ7u|5pmVt@^rk$Zcb=Op8b9A9~a!y@Lusvg0L?pad8ksW@}&d!G|97a*U6U-#Xhp zOWsedrpXi07^sQzz-Hnu358w|dcc0$c_ON$_db^0m_r|nX-~ddlUQSZHjSN3V)~2Y zFLR|SlOpVqki>_;dT(v6w_IPo95S>$5!710`KYEw=DN*1-3P#3=svL4=YL|{OL5&B z^UUb4Ex0m`39P`nyts!Rg>)|A&u}aYNpraY0Dh}GI-n^`Lbqu0g^>k9<%0cqCpUc8 zpGcQU;c#WZz?YT$)Iczj$3ry->e~fMe8(2;|FOz``cIJZMg_HY!z7(|g)C?6x^44I z<#BYuN`AtdqXsLdt5%1_8-2xUm91Q3g=UeA?bTJC#WWrr9o=AASfax@9)v5P&U_Wp zuX`)`EOy*z*X9Met(`k0IM`;a!kA<)Kb@%eKuRT<&*)GN@(*Y;$(J*M`NBLD2dkbh zpPt2UW`u0zmGkMjDTB|4HqmIDgohn1NsbsK z5RyDT|EjNT1Kp($lv@c|a4wGRe_5bxDUX9*;t&)-%5Yhuep4eR}!PCYMRDS<} z^z(_1))Daald#qVwfX@)Sg%*aHYQzY!e5z*{iC;ZV8TMDSQg`~&=vc8*EK)<-HU=D zMLt0J2*P5bXKzISCS+sP#8~RCHc}tC@hB;#-4w|nUbQKE-BWfSC2#hTB(1I_XCap zwRd)6}HRc5{FKjfQ8Pq50bxH7=&-SfYZu zs&CAn&r!C5?u{`0$C46zh0T*y4T}P9_3hU?G6p;WQWxC4*A3P)jh>TX!9|WR(pKB6 z)@(J;m1uS>&L42=_d=~cVsp@^W~(XG{RQXR5>m`7zfo2h369WK+3L+(ytZ3njk;-w zxcf;j3>-Eab|i3NcJ>ujwODU^Ck7<56<)7p>8n<4iKx9)TD_}mU-5}`IN>5m&C;hx zMh@2-F{Vs0V=nHa^Qk#lgvrb(d8y!s)%Ppb!M+`C#uQ(6J+JZZGhkSb4s;rFt%v}0 zc&byPFv@oP!!+-mnV$TSu#p2RiyQdG*5m)}VcW_naQl4=hQ1kGX8`Gtf(Xi`Y8r27 zZ=dd_4a%lD(PUB|2u7QltN|}N@{lrk6X=+PwJ%Ad#-rEheNd8HK$%xzZL;Ojid~#5r5=j3&NzU5NgqxVMrl+?HQ)OsVG#UfoO{NjT*5!6{U3AHd~OyXm??Z908 zX%_m~68XZbJxr)_yRFTJ^9){?_@%{{L>u_ybXj1Hh}L-O_mSlJEc6Y4MakBK06XOV z?8AX)QgHw6XT;4`97TA;r92sih7_0v1t-t;_{oKfeW8LtX9H&7fQ;^S7luoMV$*Sp zlrUfi8-w)zuy`;CMQg#h#BksmI5-M=XZymfXC!tVj~f zT$iA!8ht)e$uyy;w`E;*&~w_C4^jze>SL~X4c$IG6XiG{5Q(~4Wb_Q4NGYd!eC&r3 zyLyae3xvo86At3to8aR6RyPMvyf=(i>cVGGbNNivW^Ea^EW951g5G=osDu`8ne;bw;_gE% z_$ry@ff;cp|I%iG&^VaB?-zBkXIDFLRB6Ph&rb@pPV4cMk_0&hU!0s7n-hG6-}iC_ z;SW$(ggN;*SeL`)s3TmQ$w=7fVi>2(XXX9?c^WY;^lC@zy+kj$w&*zwb0X?w+KW<-nip6VyNG zZ$2d_G&&gD5e1YIyfLhT|hi$!Z?@pENV4Hu*1Fhf`-n zGwYG#hsUKfyb!T&&?MrYl$UhmZ$Cd)c~_PYFKq*CD?eQ~Nu=8uf_x-A=>K z0sw6*PQJZGUCV|-H!h_)q9{8(KL;-m?Min9AOQw%wp>Ph|4b z^;+?|*-_?IxcehI8_u1vRt93+o)TC+@Uu*xA7}cb;~PxIpiIpycfK*34f4a)5!&r8 zhk*FP=JY&0VuQE^Q-GdF`u|Yxg`(bY1|_qNfdg5%%Mn|;c=c$K9=hDmF?kMmqKUx_ zwk1-U<7X=0mbLkSv64`!(fH$*+6jmpwNS?aZj6wKU#Nm`_>8nIHx$!^xc zj&Z$pGYYtKkzS8{_x-24#H0KkqhvjS6og({6}O^gjt<`^M~O>SNXVI+wDQz>_|i^M z$W9c2pJAG!a}NvRtm&MpjFl0(R#E+w#-oUeHtO)$6O5rY#{5JVt1t7H+nz6H zAIns_`p5@+Xp1@?xxzz!0zY1nMU`3LMhhyjy3~EHPQ(46^M!t@5z@yGHz(&6{XT$( zC<0C$GVPFO#3=~fy5Wt8GiSm^>*QGdr#@UFoNJxFh@^>; zN0mJ2oeM;di)FQ^S&v^k&qlTb$+ZUs3>`vYLMh*pGql8Xb0UG|3AdoiI)?4@iVsF> z<2p3dzdu!3M`2=eU7*_vJ3e&vPKAdMdJOQCXRwvtor10ugw!G4zHnc&R9RP>ySnb3 zz+`G^k;}UBDGcKyIz!lZ7OHZ&4*|Z)CAj_vc=~AZ3z5+_ppeQIS z`+fHGSSQjLLCc1f-`I1-`2<&D*8pQALG2=yzz z$jxONW-?NGU&9$$>6*yjEtMF==E^OhR5A~6N0<+pHxpJgw>kc!bPXHI-x#f}GD=#O z1Fvs=`l)l`aFg(LAjbaacLp#_^Tc~wHnJ8nH>4q{Q6%Cm6LA5LXjJbjn<=4o`xEl& z8QbzyB7=TjwS`8P`Q~7ZlF3(4E9TdW`lw~y%|yjCCaabCrZ?Uw(M`3{*FJ}unxEqA zbqUsd%UxL$YH1C59ybTyIy5>n+HJ|$GaOQhxV-lw4tc-wX7lB>xPPGJpPpu}IRhmv zJ8dZk1>~GQtR}S&T>DKll>VX#+uVB=q}Wrx=4dsBp!2SSirU!4#wh+k+7gZ{6}Ly2 z0$dPz9ihx6e`e-NZ0|M>!e3Nm`hP6s_^>!Adi9liCM?zuSJj<5sOQDPj%I7woKb!y zV>c{mW2Z3h2u;n71N8>Gc4OIBeUl>Ge7`Ly&&L6<$4K+_8qyaZCz*M6dEnVSiFw(4VS*>%AtvmT-`Jf5J%(TnwvA7K=g zmuds{ZP&*%aBfYI5?j-Grx(4pi5mn|OJR+$7txzPcOV zjP&`m{q|?H-9~(ARW~o_WPt+CH@9&D%rnWSJS3nK0w+WPh5MFO_ z%Hi$rADpcLk%8Mztp>c2VXkigCw<~8jpjjxg+U;KCmI@>9XV}e;&|G&s?438cx`k- zs&vIUzl{kP0WD5aziTnEv8hW?;EpvVpCaXKD5JPERSzDXNVYo*)qL3Sq!>}2Y(E+M zr?=yg4{o*uN2aQ1OW`h10VpcM0gmPf!xXMXAVI#TrY3E3ao*x#)ulE;=o_YtH!uYq zsxLGgae9?VJ*AZL>J1+l<(Y5mdfl_zWsw*x$E#hhup+Uv(!L#;=;&OJ;JO+F zufGwqCqL$iny&n2@Bs%W&u?V36JKr0()L*)IQs4NzGOAd8BK-YyaicwS33n+b@|&>fsyl0% z!3LkxM_tK=Dp-T0!)HKW2FKwT5>wnBHZraAso^Ziu-cO{s|;sGs(lhs zuehF3VZ_6eY3R1(w^I38nJ%0BXv`ZuQ&`b&%Nc1dkoTWzuG832=YHOQnz=!F97S{# zHM4levYO#^j8rq08OoMVcA#p2NL{*Ha0=iebS#1KL3n2c#ps>bgF@9EHfW|3`B zu=giDDzo7R%9HFqJ2BmP;lqQiqcMEB- zhOxG&s3^OvZB2~?boLqDN1)e&<B#yYJHft!c=pZddj|(KZg+%e=t(N2?K+&F=ovB(qD^qWb^z{`$X(L#(!qibo3k6+89j?#! zUuN3y9XN!lDJcd2fwEP(Nei#4p__sOa(v3Ian*D9usdC+XC0wIp^)JVil= z*f?rgp2+@tYf73O4}p;>zVCek2G3J0|275`=oiSyrm?<$e+|Yg{x9SH@7eVK&S`?` zzwd~aPl_5UlK6Z_>Q$paxq$mvILmKm2ZJEG>M`dp@RgE^s^|{DFdkj6MtqLV%B5AA z1`Kkt$UZ1(_e9QG?oeM@`n$#R_mM^v>@NGjY-RT)w?*@f~vsur<`1ODvLSbW|Hq{ zt+}>dycV>D%F1g>NlUY0W2Y>g;TTe!DQjxtpDdIc_XfiM&IidN$Ld+u2n*yO1q49M zJ()2`&8pGNSYZYFtZ#qe;sVi{4a*bH#JayufKIh_=XSKwo;JZK)@qCeNkKtDOiX-v zQrRh|pt7{Xgs7;fIH#aI+wSg+f{I!;|LrVt_UO0yBJKMmR8)in^z=$6v*#BUeyUV~ z_ZpG$@ex)o`mLTdu%dzt;0W%)OBfIkP^R9RIajCfbA?<(;^e4G6OV$9iUbR8rrF*& z0P;u{4*?1Q$SA6)AVq>!DaBP(`zhe&)*|5Nzz$Mt1KnvburOtcG)gM6zZTQFDtMf~ z($Fa8@UN6VneWE_na<-{UQPj7S?=&bJ#E+t^dO0rl$eQ$UGCU%lq-Ha)3UPz_GhD` z?&O`StcQs;DGW@ZfGeMwkP1pzf9(M{%k7D>hVTCk9xf`r?z=;NF!Bbby+3P?cI% z)a`AZ5~4Foh$v|CpFTL!@T$|O2Z5el1}TT>LI)Gpw0191>jK##PfT?(8|XZ7!z>JQ?rvP(fE;B-)eFI=*<(Mvp07XhrfZ9x zMApO3ZMKhXPa!EEC8tk3d2(UR6$*1tX(kvzq3XPPTOR@d-aPxJ7amyNT-MN$h?R%& z&o7dhwosyn^}Om(2YjRR%4NH;&iDE5Neh)S#1^l<5MZ|#i<3WR8FL&7Z!Yz-swUi4 zy?e(q3pIyBT50#IncgOX{LXg(VfWednsZZ-MpDh8DXlz1Q?II=z9g$bsuQtv9lBBr z9e6eBZg{U#X2CsxtV>N*=RmwBCUMA5i!WVe+5)$@tkD%M62%r!FbF8hBO{}(2g`@- zZ*3vt1eLgOkglhE@*KOjvtpLliI)6I-ayDoui1o;kWM7mp(vt1;Q71aVxhrR8DY{Pk{vibb*fSZ?ivCY~$JcjIct(gTN)kkJ0%^ z_u6cNXN_0IB<^$xyd+lEI6Qocy3a8esePprUQu{ymoW%xa2i)L;s&5mDOc>=t6N(! za)0vUujsgU<9&KWMZjk*!|u+>EPs|;b9v)%h-!HHNUQqQT=8wCGR=fyvy z904)9>ox9tdqOZ5f8cZ=#CdW{$h>;!9!YIf{S9w0fv}f=D6rO9+b`CU3b393450C( zhhk-8w;=I>n6v{XwF4GiKTb>8=I6=TL^sV8%2*porj0y)Ms0ptIl+ZTjLFdjS?Ts@ zc6G%d?D2qmB%kSo{cNJsR<_1Rl{u}|>LsSVk`sJYUEcK|4^VdHdc?gYJJIpS0%2m4 z*`~KlV_@~oHT=!1Bi>gQr#&ch0Kzkaz2UGi*?~MJXB%|ckXy&*mDYKeNP;#bl^YIh z_Rqi!b(!Okj4!a6Evcph>=hfH3~#PGG##p1zA+uJPR+5qeg8*|56BX~aVD;&a%H|!8kQQMxT zZsK^ltq9X7de@jNOs!N&J}4xO;TvzlNt!U{gLrXFdfLXw`7FL(66f+>nWXVo_!t^p zc=&Di`%SNtadi%Eg_@n`%H$KCpr>bz0CK<`?#7!PgG9S49F9BQVFWW^x7Ik>Z5L4X z&^8f2jg6HY@9juttoev@Fa?tLbf@Dcxp6%_FjrB*@zF?@!)b1>He(V<0+7FPng8OlucTT@X4Fp zdy$8Xt-T^-D%N-cm*KhN%%XjagZcSq&K}zM?S@={Zga3xTPtFdC1d!oJ!Cv_^beJ_ zfkjm30Cuez2Vv(mPHl&J&xLtt(cRv(^^&P1uQ`3j99JBBzNY-nPyOv28Ua7m_Q?L5 z138>4)y(MCFfCUGD^nAtpEJ8=neFy)s*qjCaFZ&7Im+H6g`L{pJ2fpI561SYIiy84 zAHFOSCaS&lJ3R95Y1yGEd$a(Kh14jOOu(v^Ei91;eB)nuv$AH0IxsAXZ~tsYsPJ`S zuIL<29TM)$yu$aUMgEakpOH@iOd~#u5C*cp8PFMU7gjVvB{f#U!3K<$6v6V0^qAVYE9!n1Rm&cPE4ZEisWD+M(-?JEHvWHOe zusxlwscwrFtGO?>g&9Leyd?WyyA1ZD_~hf8`0@go{UO1KGCm>_{MwaY4^wQ=(9ii= zHox6nwlmv0saG3*LeTxu{#@4}oFIJK6bb4fq=~d=BY{Bk^l|h@F>Cip+T;VQ?=9zr ztW)G;gY7**kB{rDtGRrPSS_|GQPXunbGrALXFB&WO(3B&V_~KTG1Ph8k)(jm>+F9c z?JJ|&Y`S(!X`zBwaDtRlin}K*v`8t^QrumFyF*JK0!31!xE2Z&FTpLiTan-d2p-%m zaBiOW`_}pXoU_ha=Lf7s!aXy4?mc_5Q8_tUzU$Cy3a}Vh z&JG|x#~u+{kney6Bib8y79)H*{`QkNzVMOIedIb5gbAkw8$2yes^+f&i~!KdYp)(bomE+V#Nx3=}? z9b>$F&WDF6i!BRG-PG&-PQj8|csOwlVvayW1)LJsOBxY5NM3LbBK_GOrFnj( zE}?4WP9x)Jyb6Zs*A4X}QquiNcr3sFa8RvxWP*MPS|hJ{7dVxEx-S7r?Oalo3}9d- zZqNLxY<351a#eQA?5a%!a=tF*BC)0Vp_>JtXxI}h8~FgdDwlN5{o{RlHC z9(KT{WGg86^`F*OQ@9E%QjHDj#$sC?JuI&Rch~$y)v_S=6iy2#|Cv)8Ox8_KS%g|} zs1BAlQ>@uPUTNzEe!@`uM+gtcS=_iwqg1j;@ht4;7iQ^3wCCmG+51`B-*1N9gOOL! zqzTLaJVp^{AFXhuT&Mlw7sK=EYAbw^na%x<%APM~I6Vy$S!c0}{6{@|X*DJ_DI`GY zi3J;CL5Df&G;5x5OIlR&Yc2*JvEAU&aWp!3S<2sbCDp2*eGAF07o1++uM;My`R*M* zr2%iZ&diJCe$=9QB>{^QrTdoc{xJL?Px6SjMMP1UBd%->&PX&-Sko2fFd z7^SyAX~|jR%xF+T$a0{?kl;oiWP&rvTn>p`*jp5$+w@xR?UUpZ*_ci2<0rM3{-mz1 z+v3=p@C#AB{s>dxXxXa^2)-F3-Bgf(hap zB|tKqLu4yV8{8Q-T{>d=%8(*#b-%qu2iiJ8alxNK$a%g9{boY9FB0wkONBC~9qlV; zT`nB_*_ev#fsRYJ#h2cI#npY+;51)b8LL~;KuA^DJ4@PU#lR`HoSbFZsMu@%9YH*} z(<_U_4F0)Q3>U@UF((;?Ctk%S@r<@E#f|bLEv+>rS;cr4j6dnor|w(cyQ~-RCciPz z>|w&=0P!Ew>7GIGl|Iw%9*B0srKN>ZL!1Qq*!7@gpoz{sF z!j{ex=QF?o^|Uj_d0&ep8}=yie(V}ldA8fjIcK0FtEA4p48}t4RHi5|O};zZ4jKg9 zZ8^KW65rD%q^HgAqP>Lx=IO**fwCYcm$uj)(H0##CZ|69K3atJ9Lk(-5GQG`_8Q*@ z8RoUR8piUDDEd6Tr@ADF0>UW~FfdRkreDzM%bt!q2)@B3S0jjenJbN!+AlOSlU`=twoR6Fph@NI#7)`z zXsH8G+RI&Xe!SMEA2qZr&mnDN7@si@TS@%twWtfHIe(BE8+O_?E}= z_5tRi_>L~~UjukIVAIv>)l8SYT?^%aTh)OR0r8k)ed#m}_~Qd4Pd#KW$JYP3yX$(|^vP4a3@quO8laHxCVn|?!H#$v z`_HvbF8zm<){!XE&I^PEq!QhTZyf=-J`L*YBPv56fU_5U%l$)8To&!vVO2$qi0oOs{jI?6ndR#D?NDcbPAx_2*G$V6wj~Uh=hqHs8@=DJmx0wB`?|R_XWhL!yr#ql?u0qtoKN z_ijYs-QSfN%)OdAHHwup^Lo)!?pIjC|*w(EOeo$IuA>8*(S)BGNOZ!V$ z2Ua+%K`@evV07$l-FT3ECm9jJA8r4;^?VD-_r}KVI*K1TvC^wBs%k=>8|ZWei%7+D zucP*nWj@1Q*r^uUPgKg${09m>lAvibT|}caPr|Lx8TvCZJMk2&gdr&;Do>` z-Fs|eqNR1Wuy|Z>gVg4&$BrHVWS-$y6QEc{a>+C+O(H zowi;noA`xj8+p~VlARsb*x1<3skfxM`d)H>6Xr;#z{I&m&xi`hHqb5rV5C=!uM`y6 zgNxjxm|HEfa%2~D#Gj{^Tn%Um>mHDbccZd^gLQN?1zr&3>huxPpI$-yJ8;f^@ZiDy zL;?nQrw)D0tbOOYqpF&k%g6*}3o5B`xZ)J8lFY-@X_XxB^i%F9bEXL8fHhj~j@ z+e<9ixOMs4Q4n1j7XX)$!#l%7n!~JEsr<%h2C6cv9zyrb3NUC~lr4i!!&hPA%teay@ufM_?KdMPCI zV`JmxgNG0IE^q)wmlwmjrNc}0v${G2z~6|HUweCxDh`=Ts5*uS06=7Yz2r@Eg@tXU zla3QxcFub#U6p1gA2lhTkr91QOKW_a$;2rpMx8sN;N-;jeBM#Kl)4CO8){1m08&OT zz5>}0JQB39tRur#5?IjTAra6T0H9c`51WgolB6idSNxWrd3fjck;t&)#GlE{YAJgP z3ioVX;?62mfQdpfV$#;k%l2f&%27>zY_#}QRV$2 zy_^exMOPd}b=+b#va|Sz@Zp_`4~t8lP8tK~(!6`!@BI9qm6cD`nqN;b)y+nZV3_#$ zKFDk@e!syDG+~u806cBNw)XPP6i@ER=aIxW&dwBf@7@I< zwuK{4$J)xxJ{i9}?pusfQp9jz%nRk^6rmo^{gLTONi^@?DFTzpEFx0X58fHq94)Ob z4W&*!9uhF%{ZjcVw6v z4b(fn3^V>VV6$f6VaT0h8*WT^rEVAa>qiBrp58!)9%bF~^BYVqXP%7B#t%F^GBU~@ zO~TH>5vE?CL4NO!j&HN8u`yn7f3bkma3(O7wQkd)h5`D@US3`W!CVa|(EIIpv_T#N z&jpNo2R1_6VxF+7`_@zv8J5O2?2i*3iYfy*t|SAzLMvNl*K?y}>~~R7#i$@R z@H(*ttRif3nXkp^02Ao#{qo83^37gTotfeWrW%$3zKGlgYP-#{rtUnzj~y-F^pUCL z_IuQMe?(BoLRXwK7om`*bMW7>0RCu_O2_$%!PQnlrFw&ZY}OO%4R|tDd*>*l8mH%T zJ(T$kh?SyAa@4-X7v2$Z(a_W>Fp~f%1nc6YAHKLNPJbQbvf=(P{{out?`(T^7GQmK zePN|P^L6s^zyHWSfw{id?q)z?zsl%YPa2sXD%yk>)tPFLwuL0xmZTY-3A;DVC_C;-!5i55V% z?b!YyC^vmff2B1f{xl==T^WFY#~(kZk;;6KiRC;`;90p+c59^-uilnxJYDlajoHn8 z%r06F53+p%9WONRh*1Idl$Z9%qm}0l0s!oI1CgDrVN^t2CwM>31NGPhP{cFCPG)8HtiM2@yUD(FAwip z)F1Leie4}!B*?)1lo!+EBaGN2RI4H#3=%r}u5nF0&V*uqq>D?T80s;BKTm?FvKtcr z2ljb`+z$V|yXhy2tMm~CSNM}Y_%W~?iFnR;kQPsUae2qx{&MR@nSLTIc=?PvU6txK z5v{xBZT1?8k=3S!O@zyahS;KYoNu$s^~sA#5zw2RB3FyztvhG9h~yf}^>s;J$J_S_ zP6PbEUDzK8tRFRWD~^l6Y^5HMl&J%VVlwqe4!?iP8vyb=mu;0Xvr6Ezd+B$6SSf7% zJf^3G*;n>~H9K);h6%SvnpC2uK1-tOidk(E$C=SNeTtX|u|RrS-!=m;6t#OmS#q$j z&(l4Dm5)sK6peI4?_QQ;sYQ_CtLap7gLylTV}uNG@Ez!d^KOE%>wesBKLYN&b@n#9 z(eGhv3^8NV&Y)q-@2Y+_htY0232sV+qga>{kF_x4r!GQ~ly-B&C8uGpRY$!@_*;kf z%RNqz52rJja4b1aC?=AXjwYCtmY@m1Om#sF%oD@M3wbiNyL|_}r&97Vj=aCM_8CTU z8+t6m9_A@-cQpOAbiQK8@3x-U@^xWY205(mog9>%?l!O2BQpYx-gz8DyqRNE=7Pet zq^ecfAEE<(jDycY%?nT;>Ez9FrR1Ck?y?~~mZaUVi3h{)(=O(H{5cLW1Do%zvv?M# z{xmrLbzO^(WdGFoy#(zA+h`>GE6~dLsV?bPIY>3bO@$sFPu~ zGk$gLuM|uOwW1nAveL80s5YtC6)AKXc7Pxat+6myw8F$BW zj^`Alq6~~F6w+9+EGdFr(5XW7oyiafKbRK9nc<1k* z%4RPS4-%Gac8T94$LTO5!gtWuU!u8XsN9CAJ{C~!F0yzy&)JALK%6DLgc-{}dz4Uj zE`xkTPnUqBD;pat2c_DAQuFHrX{4)}!8yDxRgqAH4o7M`-#b09vQ15TFiB48?3ojp zA7)E>qyIur8FVOVZXv#i@G!I`6C;A9;LWRZ%>s`|a}mV6iU}7-%+j-i&oOYr)AhmN z;Lnf6eV|(9j$+MxK0+zS?z~1_c(&rL(C<#W_Xt?~7FR)_fkCGeBUz; z;+}WC_nQqJ_BIUL2}$R=W8;y=5mLzmHPp`}dQJuIEHrC051YIT=X6H=Brdx5;gjl{ zt`l0gp=A2+%4O%#RiYEOzYn*)QLliL|ky6CPrUNwtSGlE$iM5 zobMStThx@m5z@ELb4p+#>D>=S^uFw5#*12>cp|T)#cT5%D5EMZh)G{zrSWgM5BnTi z4oc~jUMTDBjalkRnm+*1`*Og3(HeQ~dK1scT(@_s$wnLL*T44jz4t+1|KS_o7la(_ zCAUutsmtD?z@92Y>Kr^x7!KvNJ-ezv^@7}IlHH!yx8|rt~(L>B{6rAqM%5qNz z=-2;~X(;~uk$@@;O`3xYcSF|q3XC*%G@yluuo{rZZvC{Rdj@--^$z=xR486oYotE3 z#rhLLC%Dk6+u@ZQi2bGJO2`pTXTx7*jC%>{bkk{GIux z*Jqzn+{t;6yId?KqKx~rmMl9N0nXTrkT1>Dg}7r1|8slR%vq1wm%y!jg7II1Yz3kg z@HTen5X+g(E%K%ltTEL4-TgC1yL@zxvsce1_t(%o$+g<)0=Xu4TCc=4UP#l2t#bW5 zUc(8eJvin$4c_69+^p60*epG>zHi`UY?IQ7|@*1nyQXT2vep^w2izko`wT|J8lN>$xXdMRPQhrdUO zvd%M$lUk=WOw+K31uN%#f>q(q*S$@kdbNV4a&FC;7O0!G@7s8ppOrcQwOETM=_{Pa z6u@?!S__Q_O$VK-oGz+my8qx=+&@6-zt6)aW&@YkMY|Cbgg^@-g_U-v%=UYnrD~%Y`Q1$X4cM6MlNQagxGz7QZSsZ59D_=x zDz-ji=J3`UbvM7Rx-&6);|w|8}!dkYC4}cNp3y~C^fSFj>mG$ zbTaRh(ufs%U$;S1RxFjya&C^vV>de+MDO}^M5UAmc*i2>htrllHrh@R1B;gmk7$XB zjTd%zCopQ=JEPq?vw}MY?`v&=-9h z3VDSI&MYx~eO5adGS;{4UwwPM_BN2(;urUyxxx7!j}=<9*PRHsbx3f&-1|Pp4vT&B zg8jZR{ObMN%HJ>2&zW^KbqRx&HV-9n&dLF%k}9)TL~>G6pY`j~dvI`AH7=6+@}Ny_ zH!*O58F50cCnjq0fhB@v0P<~EZeTG(k>j2TTgAB5)zQ#0QRtMllfc>~RMh;h(u~gr z(~LQdr#R`tW%AB^-*gGH@9smEn5b*-1lpb22)SaZRO&{u9AmbvKn~A^UB4!Qz%Ygy z(CXF+pWD9HcAh|U=|cbdpn^zvt zJ`9To%_5GD`vWPw##Dm_Zlsjxt)*{jC%HZ!L-rw*0w>cn$C573>g**S0s*P;neKvA z9*ZSzhHs4l-)M8V7?;0KQ>B7_wVDn7a^dzpJtFLr`YnM!@=}W*d*9y6j$W9Bj*jRf zEVW}Vm1q7p*8Ugv2qWgn#v_D%Do|1{kwrT5`z>IVnI+gIj&eO9l!vpSdoIZN$W8{M zfsAA^#{OIN)lvl8%_6)w6nR^1w}zjlL`X>o|6`#~3g$mTrytpMGa?~=V%Prd%?Y~b z`EdMwN4%AE6_;ge6e=c(ntZ>%;)etbC4{;ifAw%ZLYw4v@&=EuK%k{Ki8(fh z#nwJiJJOHzuN=VwfNRME&{mcBcL}ZI|Cd@LCxVJI4r%<=8T zizAGDH?zc8!x=f_2rD_ z)A<&pu(a|E^9Rqtx6+!aNq#CK#=$%3QAt6DqYS%S8j&-CLZo;)&4-avS?s$)Dc(O1z@?TGN{Z zQ_OZ;#6@OB64zrICr7!R0=NSXg>6M3O?H+IJr%DXwZ_S(ALR0%zbX|GIaKVl%q~NF zQI?L!SMmEz{oVAR^nW(tJn2@&c^eea&GQ3>aOkUJ!Mk(n*KBf`bv#Q&zwva?{KGGp zeM2qIJe$r!3^{O3j~M(#S7G??wu6(v29bexR@df|?K>_m_i;LXY5JU&ur1f^X~La{ z=>67@5TC;^ccCEl5aNT?4@*>CiEP4O37QJEx;Lct$65A(&{lUcVZH82SLMn$SRyej zCnbByE%OYiyTvG0#lfdZ+r0Abd9LDSoVyB*m;Oj$J2RIN%TBp0S7vX zMwdmZET6?%%%x91PtHBu|@`}c6+}I~ZY>g;##)}yUWujk?S2mMRr=x3> zzDj_=Aj5E@B`_*8kKnhLSM}|OrxwTj$260~rducV*SnAUM68=nqPzYjO{6oGC`rD# zK5I6@HQEWftEyI#wkmwI04pS-9z2wz5YyiX$S&31yl>_<*{wtK&u0PlumL{J*-yYU z1f>?U8FVC^3@rDv5Aq%U-E*A=JnCAJwnry}OXyX}VB|vKC!4{j_o9r>lY#_rkj&ZP z{S+_#yG)zUcKE+N+`c6Ak&{weFoExB^4UysNxID$zZW6aOC@mGAFFaYjD@}+5)t61 z_FWG81okAnZrFNn;6U{)Npd%RM#|Q~@nki&Zl|4Z+25dX-z-On=&hUOiRmar?(J0& zF;O&WVqcA+VRN~J@=E!1ll{!gU&r(iVNP2d^Tz??YpdZ&F{>to0-WH zz3pdc>#ibMY@6c$7WVR9%}95bd>c6y(^nw?L!VN>^lH;u9>@=LvvynGy2dm`M5Ju` zjmgzlTC>-)>|lOGk>6$34gDgM!W#&L0t2kU=!nLS|8*SCoSM>+{J>)pThtAN&L=K(X2G+II#vtXd38iid$O-2%sS0m6Jy^h_aQWl zgo)lN^{h*?^mEcZv+&5gqNJj+6piWbg8R)6t|+r|KrZVjl=vKTmi{W3#yled__X^D z(zk`i#sCT-Iwr=h=&5y8ettf{zBXHU%)3@{idO4!18iDP&%3*@Ek@%uE?>zOotJh1 zlVB6(gR}R+eHpvD70T_Gs@SQvPP!(`6WWFpHdJp?StKmqqOglzv}D10KA)C@yd+TYRRyqFrDy= zVw4Zd^E%j4xGRPJhF_%|>zMy=>R)>gj_ELx4{i4WX3g81;MXtKPnwzt*LD6BWkTiE zIKRvgTb0kRZXwa|R^v_!1m?I}LEh?Y=b9$?^*fsfKb|}()cW&tr5UP;u-HQt66#HFh;UVi7}qZCg%uDYN^dC9y(!WX}f z59F+gr6`on*~UPhew=2`lfgFKeF`FnzPSnloMOt19uOS=JHIfSn{0Ga)H?oO{x58E zbCU}^Le_0xHNq-^ukwLB041iauHM=c{c=P49cuWhdXr$1fi`IP(yWe&Ls29w6o^w| z9<~SOZG9~!zdbt4^}evlp_^}qv%4A%p%;OF4C~az3hzpUa816lYe3wj zf^;2MvHI0>Y3IyBc`WIsY+AL(O;f9E^1+2QTjFFf!>oq83!2D}jrdn+V5a5kMrIfk z)wT+cfH93}U?*+dzY35%Hxj%g9u$!)bdOrjG54qCWxu`>WAJuhef=*v#ct+-?ZuNJ z91-cY);Hp~U$!{wQ+ps-w0AYq=n|vfN*Qn{HO?+oLQdwi<&+SYfMpZqG+y`nFH_;OjMi$)PPa-ic>WN%(agOxR! zt4w8L=D28V#(&NI4@-)ZRb-B^swa!^nEkZV;bI%DJtprlexT~)$$PPDinM?=x5zaA z=d&0oikm!~HrUGXK~nzCuDCP6D}a8M|DsV$h;sY8Q6;9kkrqxfoOs=MNy~vhG<(w{zuJY8Ydb|=k{B7Ppc1k;j9Ss(iYFk-t@*%>>Y~rvWv_Vz6H-? zd2}rJGQhW^?>Eo>`p=`$=i6=mohkiBby*8{NlFjflf6#k{q;OC3Wt#s1=3i^QX1g& z?`6|g8>u=M2m|AL%5SWmm~Mhp7((qcg*|b5uEJT6#cxz(ofza|OVkgY)eK8hblp4F z%i$`>VkSvbG;hWJTrI0PzS7$aR=Q>2|+HI8_^zJ(3erB1r}@VYNP8=y;TzP#3J$@Xas ztni<^r+&wX`g0jO&-Pa#LI}g93Xn}VHgO`(!JGV#)~BT`#`%e#LyXK6 z4qtMb^L5zN;+n9?ajgQ~mpbWOI*ID0xE3uxg@TpJupFUY`zJ+V-?!ijn+USM?vWim zg(K5iA%SQ(n)Gx25$E}-0z<-b7P_XBw+Szy-FG)VSE~~HEUoV7aqZNt;4+x05F3~` z#$#Xtu6AH&gzf3}kZkFu9rwA1yF~IH1Cy3t939Y-s96|E?Y|c;d%@%gg-)m5NxLVWE|#Z78SAo8x$#<|))FC|on4~*&?UHS?{j(42?#g1Ymyb$E_&QKpb8ZS4P{}R&PC@@wqQUq4W(<1FXTHC^V9dc>JBI#$&Zj(*4dl52y9QeoEHvu-QV8 z+2fZ9z2QEfMPzyj}C_N%wz zH!xDJu}?;UD;1%m6C~unYa}{Rrq4#qtNe-N`HbQfMHddj5`>rOgV8>MskTO*lAeyd zM*Aa@-X_Y2VcODAucPbY#ZY3H)5rnbMN5;1Ky_~$LhYs7dY7bnuR60hC-~NAdcT#b zX4RRxvh0d#B>g$rc)dt+h1_;G451n2GVx>+Gg+7zVtY53x=rvf=q2+okWyMXpTDtI zh^tsR#w1Pil-np@tdxgJe7J~lDi))qp>cSmZD~hY#J!I$uY|3cPe*!qbQlWW9!%-< z+Ra)#XN#FgZk#pl9(Q4nJlee7d+PN$JvBJJX*YQ27M@1QX^>HM1Q$%-`Lza@am7f_x34&|(QaPB1nU?B; z^eSQFI`zMP9)%=rV723|3%Ng%!^AQxBAwdV;CA)IoBbq>eAEN zE5|V%2_Pvcoo7MdRTLq}vhPaM$;g>BlG=lp2Zw!KT#xQ%Wg{}neHQagNb&TF5QMKR z6|27~=GyaFWo2OH0#jS2Y4fBP>>nL~Y+#^0BgVS(?Iy6SpU?HqTr{Q4xNd)5ntqUY za_%RIytnrFOtPt>^8?-Fk&=P089l31Cx2~xWZ*a3hl%$|K1!)-sVn|~$amRJc7FUa zyA-lXcGV9jDA%fb6C}7%*v|EHl|sK>D*l5vcR=PU#cZ4;W$tW-Wm1fv3x(sl1%?3axg0U}_R5aKuA$LlI;}bL*ZZF^yc^^57}~0{$|9suwKeH1w!et*#1wW` zJDgh`*P4-*$?0{ zx_-?WCW#Z;rAwPnwcTW+`SjwB^()2+vSe3 zmTPmZ9@x7ooD?{o_F#1CF3if$4vD4-%I>ormW<+IBg@aU(kHLje!tJ(klZkld|yMY zJo9VqS6gQ_{bajpC23pFqn(u9z|>xY#(2}RpH(+rNJ3;GLYXjcXC4L&V@sO&2qhe4zOddUw^WnhNK11i3vQuFj!c0+E})|+neICl z#~77)8Ckt^nUaG(D(D07&grjjeVB@RJ0L)2w5$Qnf#Z$oL3ARz9mttJzQZrUs--BR zSrx8nct$=rluR8*jWxeXOrEp=)?&`N^WUD9!d_YE^bCIiupUQ;kBcfBzR2j>6k^Z` zyB#Dv)58%UZg|BE$+I`zC1`||J|AG32LzxOE(=_QcJ)GqHx8Ej&72opKP})an-ND- z=+^4#O~f@bT}oG|dkkl9p`NhU3%r?rT_}-U;Y(;FoFRuYjIKj*^kilD$6`icfkE8A2kchow4Lh5V>q$e3u zw0z@cI=n;H_mdac6*^nhb0@`BI{eror_LNOC*2 zP>ts|kL|JFY^?zUQzr-%>}{MJbmWttmZ_T)`wFq^RAOA?E~+w$R-}v*8KrWXHN@~(QT-Xl6bWgTvd$xL*G_wt5web@4tgkS2~4_ zDHULyx-KtlS(JGZ;7?ks?NQO0G^qaR$+EU>eLFpbs?FJ8$<^JJ2)P+mS;X7pW##}y zCcW`bh9$qxt!N6uo@-2NEl;;s0)`!zZm)3BF{LBo%87FSyTa1TaxHtM3Ik>@q>T-V zW1&wY_`(Kc-AA|6T+hbCJUO2{tpqs0G}O9hat++WWu zU{HrLtO8DDSF$o_R}rjeJVStSzEZPTyL~qLph}Q3bvk&ol5_EV|wMP33)rvIuJKyhSaS|Jz6uAo~7Z@-~b$}2zT zjMLjC$}5dIcuWh3YKb((eXESrqRkVd{X5lRb}*uaN+s#NQS*>CxRqaH7udjaPMl6k zkAc0cUd*oW=Z}g{OUMQ#yTN%fMW{hYmw6HP&-T5AGAp;gIayNDfZ=lckGQ45_|R9S z;1;{0k*EV>RBhM3)d<&ElKHfrBmrRv&O~Ij9cqhtJ6#=R-tVR5A^h)wG3xZmcCHW# z4((>?(|M{*nN}6|)>PlJe7%~iq&bt7#^(dA&t4I&goanSTY@bERU!5!_%-U(XsZNx zDvUF1lQdXJgTZbp|4(go6<{G;49l%(nVe1Eav;8G*w3z^mRYbxa7VvWhtt^jf2B-! zL~dPAOJvPV{KyuwMDJb2n>L*;5KjR2hg!aYUJlDmkTvhS-*ewM6nk0+bD zlj2r3N)n);HG(0qDz?d59Ww5b)WM?Rm%CRS)Jk0qTQ&%^vA;Fu*+HnZ3RHJt`s%2E z7%=aKo7sGYr!`XBklb=*`KxwlZ8QH61!(~wQ9 z55m^F-(6KxI;e8|71WyLO8W8Wuc8MivS6w7T-sISMSU^aloT4NeEp<; ze?EgW;K@;))Ta?G7gR+gP2=17+TwN8e;$BlNTt&1mFy#<=Zf$OSyrp3RVt*`aFRc+ zb6Q@X<~TftPvoBr*r-FW2qDl>L!_UlJ0IA!%Ez~E+!gsBY3Qp z_yic6dN}59QdwtR8wb*fitnOX1G|Z#EabVzhqPUNyV+Q__?h%Sx7AfYojP#~!kTXk zoqop~Ef7kRh(x6isFRTNtTnp|`Mo|L){>j)r$OZ8s(GaTr#s@q={wsC6N;KI*oKbfTCQAI z9fviLAt4>4s_z)Pt{ItLCL58`r)(nqwX~ zclaNI6MURI$X;pI?Nna|j{CH8`K{P#FI;NwX5xHt(+#(M>a<=H`+Xg$>HL5^|L#KC zR>6Ix1qie*K04yH@Y^R++jJ>oMAOT4R`HaW5SBj(>mtrs2?PmmY~OXq=53aR5T$k67W{JWe0yI zCI1bPnck*xwi^}m;G^+msBNUx+c^eB{G|3rkzpN$U>iw>ksS1NmFKo#KE#Sqz^o~3 znv^GM{2)v{omM>^#O#=LsbNSg3Ed>zZah1$r))GgN_B};6kM9!6r2}~4^sZOPv~pX zjJ(Jcx3Ox%4Ga6O%(~2oI^mP4rGo@(`_x{!tnd|^5WLQJRkBVO5tlp|eL`5#u?TR$ z&gGjDJ)jx;FhW^?$!ZLMW=zTXHKX5LD%$A!`O!8_Z53w?97Jr~N}^Ra#NIMFw(4`q zjS!utyjjpHLs@+jSW~3Unui`y<@tuoyi?XT*lxb2d6oK)@D&|q=kaKPPaQTwme^z| zzfLMa-L8WLN^)Z#vgYxe5H%kL_|{OqqnZarJX6-7llmSInSC^(V|)c#D}x^pmH{Ie zJzeF>LdzGNdvl-LX8alO5pC!#=(xIhv-M98@6+IqjSe<^->@$#er-D7cKA+jRm*bB z(^V%II%my+?@u7~k5G{Zl)L*035jk*@_WfXIjOvLMPr`r&xUhyeh@~+jv?={RgniN zntt9_Oh65fE&QEO+=fBP`CJzUEax;few5)95wQJ)z9#ImO_E39`HkSa^oI`xMsvN! zJd{lPHC>CL*R3)aj41HNf$rCzdbGZ{xYvHE9`1G#RY0-xp`%T8S)tMmFIr7e(NBKh zueALIqDZi6k-+Za)KF=#A>$(4XMix2nO8#A?)hObAPw#6XR=}5Dk2xYC{Ht5DH z*`XSX{f|OlZo0{a*Uw;H%wYQVwZj_;#YpXj)JLd-ppp`B1{zn$Sk<|-P?1D!L*R() zZUwpruqqt36?0~b&1LCAeo@6aU`i|)G$w)qUU2Wcq^_SZZs?T3{*!4xaq*8n$v~9) zjtMIE1J{ieE(yAL{Lcl=nBL5p*DIHb$)TXYkwev6=@&bKc>#lY&rzA+`EqifdIwBY zP^-ocl;|vTks*b^vBY<<5YK-vVXPArSOkWA4MYkB7Nf=I&wWMLX!eU5ea{7U=UeZ{ zCRW>Q)hdtsF0E@F{cAa>X3*hON3UN=4Xk>zpaeS{`|E8|>VjV7)+C%biNpDmXm{~) z@$|>7ODx7KKw_ewjwrp%gQ~{{u@QoemY%0~5uFWf@QZN#&jzcqLWSn=iz5~~QLR=m z5Rp)wLlazV9MKSNgU}imfTM2Sq$Ayye!>qLAK5?KcO#%2G_vDu(4ZZXJ36aLSDNXm zawk~X#2ITn{DLU~v1M;K1D(b^t*a8tMxNb?mRqr#EA$h-&h*9seo!zD19rhTJer01 zw7;Tnf;DWU)zN@tOL-)HNqwsw@f($83Td!Oa7lFoHQBWP%r0cXUxs=t@St?%oTgv@ zI*W!hckdO(;G`P5RMWw*R=gq`O1kEsB9Y!YmXc$ozw_fL^1~MIprk0Bc|qgvO&d=w zJzc-Rs`Ezwf|3<_fz#?i{R22b`Z#9Uh2E#kKdTv(Fqw&$m6YNZ0q8D=&PWRN*uO%j zd>G6U>Zjg@=oKe*6xP(!uKm^k^ z0Pnrhm+3L^+pVh0!A`)=HPS&0f?Gu38DGz8g#p-oJrzqmMN$IMH@giP!QP=AK2Y$m zn7dBAW(2M;@99my7^{*NtMshAmCMv%z7h424t*Hvh-}`X7#d-Dgl#mp>FHZVeZn2S z2K)kusO?e1LYs{GmW4$z-=<4O2l(Vmfj*QQxT8O(K%xkrl$KZsV-o_|xVUyEjkv}RSuO5mE(YB_ zmLc{rB1ZiVPLCjECc5-RQl-?<2&Nv@oAk;319%b-fAEmtMz@1=x`NBEZ&st zZgHwj3tpETssVqiOR-#aQmUa{gO8Q~P$rZGEe&{7-H$loGvNo zq>)HdQgqW8SR87m8U5@R-zlvxf7-_iczZhTe!d+cdWqF_IO!CcgYT%6jBI7{ z%_rIDlZgBM$im71FBC~Up1hfN^>5t<$X&oRfu`mw z%UBL&AF&c~V0n1TOcrgqW{^@Dpd6wFCJad*x(!m(-2wN27;Y82)sePcdOX-&Lvu3* zUqe2wHq3@=xui97mgtOINS58)@^qTK?j28V-~SD@TE}T%m|5UATgXOH_MWt^N6j70e&pY zy^`YdOvEE;V|$+0W>>7UiRtyYF~b(#@j02mhFbq}#t6DYos>j9ofP_O()DIZo%7Fg zBx&PUou3ioLErv4F#hC+Qj7OjYq_(X@iM zA_P}_v$Wj$HWSEr`CfH?1ZT<&n-|{6S1Vn3^nc5PWW^+pvZH7|gwMNOrx3qjodC_6M5DY?Sf{H>$Kw;MNh5m)* z2hM?W-`Ds0T<_P#eYiI;d`WB>px9 zD8@IB%d~~)U(YtWp{ZJ~q-KF{*xR@&{D<_bNb~o5oC_P7&n;hWejWe&*L+*>;{12Q zWmqkk_kR>3D+x)kg&qq=6SLn|7F`P8pC(>rrkLi>6Nx&>G5*z*Rv?vix?fqE;5lg= zV8)?Wf5~+}zJ)Va))rlJ-Ev@j|1)`cZNk1=lCDABAS0YNGEde0NNs1xuOc5u-*A;P z{I*5ChQbdHh&GV-w{bRpKw&|XnT=b;x zSa;vhCP9MfGl|zvtrRJ^jyI#E2p)xZ#+pP`*1s(doaA567o}3Jp<@l0wOV4klJP#R zy5X8GQ#s_LZI)jVMosnI6K5O*y-s|ClA0#VP3`+*gGVs`!Z}si?enKk4BjF=_yWhw9>r%E))KM2E8z;E{mp209 zGW>)g^>qm$n+J_KS7^7#QxrYzzTzf*huG0OopJDrkOam~F5r~20(;FPF;42RVZvxG zIJ=BgfD1U4a|BtBP=dl?_VfLkY$QDAz6jv8v=<4wbCK?kRh>V?<1sj>B5KlakT_Tm zY+N%o!7XS(0SnM-ushf7@DYPEw=Z=LUMLv~IFGLVmwl27L6r~RFfDK@?~MO=_7v>P~cYt$zG2S2ARrFHR7wu^q+BLOG&9{a~kGzgZ3x z7}^|_Oe8Oa23fAOcpsbXK8qbG-w&`YxES$+|v>$*tS_6mA7 zE52-vf{cMv@gG`j^;mUK@i0EIfuP+IziD}+sd`9ymzirBl?#?xi9btcCYc){T7zhx z^F>H9lZph9QlCWpV6MSnKf$N4rsa}n$JOcmkE4_AjkKs4OxjUnFIv3NdWXUO*h!_= z>8iH2?{pvVkN|1_m^57+zaP0tt;Y(c}X{|HIoyIC{@ZF_AW&`rkHDKYBR&}Y}({sF& zRJMW&ly;W=oX1+ob-&=bb`@NUFX?O%c%ghD0cUZfhTCK%-1#9MHbK5+lQVnniPKNG zpMC-E_yF%I1$eaUg{hPqLK*|S3(ds*;pl06)(K2XpF}&KWakgFTG(1VU1}9XMl%1N z_LkTY6ZktvuY*)wm&Z4V>dAO+g?J6vja*opmiW_OBAfip(KmI;Aiee&j&)yBr5qT8 zfpvA*ZLP{j-38J&TbwU&Hw3Hf1yW+EJre>A)TV2ssJZfdkoFBBHv+QO4b^b|cOZyI zwgA6UdDbL%@n(0Fq=jq6kyhM2?PZlu3}i_<>pzH`?Xx)<9SJ$YKx99QGuO0x0)BM0 z9i|0YP(}%FEBW;iAX&^7qWH3GsP29s)P_wH&2gDn(}AY0;!icu$&^F^a6-L)kB;;& zY+{OEIq(@pbqT?nu1%lnjNHU4|>74uu<=X;^6T9d}6fcFOrgN+~ zGm=1PB;zvh7|zqTHdwk#T?8GGp*G=C>%-S&YK#_4N(as(nX)IcX;m{p@Iv&C?6pQi z1otPnQm8^@I7>o<%op6Cul3Bmci_ENu)3fbMAu}j!m5tbbpb1B6!KbrG*13&P+b?y~U zC91dwFY)jC`sdbq;_|7cH0QRL-8roUHXsbs&x{%}x(uZE8${-m>vLQdKd}&tqxFNQtV9B z(SC#{j%S{@)G{TNTIA8+ zkR8aGQCY2sx2)(5#5X3r;4JeiX9VCqX_cvr_WW0WU{C84@9S5VEDE5xi{RJ7AW3z+ zR&9ii&gHEvu9AkEf5~lHr8M@M;i?`_J<~s5`%rYUfKq8CF;Oc9veWy|*B!&p>J!xn zuW7u_kzZ%7Q2XhWOvlFDAjoZG(>TIg68tmd$<}OH3KiJ>Y22lSO-v-fdHme=FkJyYq?+SumpM9FPPqOFm*Z&V&I?~br literal 0 HcmV?d00001 diff --git a/src/aboutdialog.cpp b/src/aboutdialog.cpp new file mode 100644 index 0000000..3647c5e --- /dev/null +++ b/src/aboutdialog.cpp @@ -0,0 +1,18 @@ +#include "aboutdialog.h" +#include "ui_aboutdialog.h" + +AboutDialog::AboutDialog(QWidget *parent) + : QDialog(parent) + , ui(new Ui::AboutDialog) +{ + ui->setupUi(this); + + connect(ui->closeButton, &QPushButton::clicked, this, &QDialog::accept); +} + +AboutDialog::~AboutDialog() +{ + delete ui; +} + + diff --git a/src/aboutdialog.h b/src/aboutdialog.h new file mode 100644 index 0000000..31939b6 --- /dev/null +++ b/src/aboutdialog.h @@ -0,0 +1,20 @@ +#pragma once + +#include + +namespace Ui { +class AboutDialog; +} + +class AboutDialog : public QDialog +{ + Q_OBJECT + +public: + explicit AboutDialog(QWidget *parent = nullptr); + ~AboutDialog(); + +private: + Ui::AboutDialog *ui; +}; + diff --git a/src/aboutdialog.ui b/src/aboutdialog.ui new file mode 100644 index 0000000..c55c7c9 --- /dev/null +++ b/src/aboutdialog.ui @@ -0,0 +1,104 @@ + + + AboutDialog + + + + 0 + 0 + 222 + 198 + + + + Dialog + + + + + 40 + 10 + 171 + 51 + + + + + 24 + + + + Notepad-- + + + + + + 20 + 60 + 111 + 31 + + + + + 12 + + + + Version: 0.1.0 + + + + + + 16 + 90 + 191 + 31 + + + + + 12 + + + + By: Remisa Yousefvand + + + + + + 70 + 160 + 80 + 25 + + + + Close + + + + + + 14 + 123 + 191 + 31 + + + + + 10 + + + + https://github.com/yousefvand + + + + + + diff --git a/src/codeeditor.cpp b/src/codeeditor.cpp index ccef56e..a21af3e 100755 --- a/src/codeeditor.cpp +++ b/src/codeeditor.cpp @@ -32,6 +32,7 @@ CodeEditor::CodeEditor(QWidget *parent) m_indentationWidth = Settings::instance()->loadSetting("Indentation", "Size", "1").toInt(); m_showTabs = Settings::instance()->loadSetting("View", "ShowTabs", "false") == "true"; m_showSpaces = Settings::instance()->loadSetting("View", "ShowSpaces", "false") == "true"; + m_showEOL = Settings::instance()->loadSetting("View", "ShowEOL", "false") == "true"; m_tabWidth = Settings::instance()->loadSetting("View", "TabWidth", "4").toInt(); } @@ -267,7 +268,14 @@ void CodeEditor::setShowTabs(bool enabled) { void CodeEditor::setShowSpaces(bool enabled) { if (m_showSpaces != enabled) { m_showSpaces = enabled; - viewport()->update(); // Redraw the editor to show or hide tab symbols + viewport()->update(); + } +} + +void CodeEditor::setShowEOL(bool enabled) { + if (m_showEOL != enabled) { + m_showEOL = enabled; + viewport()->update(); } } @@ -288,8 +296,6 @@ void CodeEditor::setTabWidth(int width = 4) { void CodeEditor::paintEvent(QPaintEvent *event) { QPlainTextEdit::paintEvent(event); - if (!m_showTabs && !m_showSpaces) return; - QPainter painter(viewport()); painter.setPen(Qt::gray); @@ -301,7 +307,7 @@ void CodeEditor::paintEvent(QPaintEvent *event) { int blockStart = block.position(); QTextCursor blockCursor(block); - // Iterate over characters in the block + // Handle Tabs and Spaces in the line for (int i = 0; i < text.length(); ++i) { if (text[i] == '\t' && m_showTabs) { // Move the cursor to the tab character @@ -332,6 +338,19 @@ void CodeEditor::paintEvent(QPaintEvent *event) { painter.drawText(position, "."); } } + + // Add the EOL character if enabled + if (m_showEOL) { + blockCursor.setPosition(blockStart + text.length()); // Move to the end of the line + QRect rect = cursorRect(blockCursor); + + // Position for the EOL character + QPoint position(rect.left() + metrics.horizontalAdvance(' '), rect.top() + metrics.ascent()); + + // Draw the EOL character (e.g., "↵") + painter.drawText(position, "↵"); + } + block = block.next(); } } diff --git a/src/codeeditor.h b/src/codeeditor.h index 8f2606a..3023f7f 100755 --- a/src/codeeditor.h +++ b/src/codeeditor.h @@ -26,6 +26,7 @@ class CodeEditor : public QPlainTextEdit { void gotoLineInEditor(int lineNumber); void setShowTabs(bool enabled); void setShowSpaces(bool enabled); + void setShowEOL(bool enabled); bool showTabs() const; bool showSpaces() const; void setTabWidth(int width); @@ -49,6 +50,7 @@ private slots: int m_indentationWidth; bool m_showTabs = false; bool m_showSpaces = false; + bool m_showEOL = false; int m_tabWidth; }; diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index d04981c..41031fa 100755 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -20,6 +20,7 @@ #include "replace/replacedialog.h" #include "systemfind/systemfinddialog.h" #include "systemreplace/systemreplacedialog.h" +#include "aboutdialog.h" MainWindow::MainWindow(QWidget* parent) : QMainWindow(parent), @@ -501,7 +502,7 @@ void MainWindow::on_action_Find_triggered() { void MainWindow::on_action_Show_Tabs_triggered(bool checked) { - Settings::instance()->saveSetting("View", "ShowTabs", checked ? "true" : "false"); + Settings::instance()->saveSetting("View", "ShowTabs", checked); for (int i = 0; i < ui->documentsTab->count(); ++i) { Document *doc = qobject_cast(ui->documentsTab->widget(i)); @@ -513,7 +514,7 @@ void MainWindow::on_action_Show_Tabs_triggered(bool checked) void MainWindow::on_actionShow_Spaces_triggered(bool checked) { - Settings::instance()->saveSetting("View", "ShowSpaces", checked ? "true" : "false"); + Settings::instance()->saveSetting("View", "ShowSpaces", checked); for (int i = 0; i < ui->documentsTab->count(); ++i) { Document *doc = qobject_cast(ui->documentsTab->widget(i)); @@ -523,6 +524,24 @@ void MainWindow::on_actionShow_Spaces_triggered(bool checked) } } +void MainWindow::on_actionShow_End_of_Lines_triggered(bool checked) +{ + Settings::instance()->saveSetting("View", "ShowEOL", checked); + + for (int i = 0; i < ui->documentsTab->count(); ++i) { + Document *doc = qobject_cast(ui->documentsTab->widget(i)); + if (doc) { + doc->editor()->setShowEOL(checked); + } + } +} + + + + + + + @@ -674,3 +693,19 @@ void MainWindow::setActiveDocumentEditorInReplaceDialog() { } + +void MainWindow::on_action_About_Notepad_triggered() +{ + AboutDialog dialog(this); + dialog.exec(); +} + + +void MainWindow::on_actionAbout_Qt_triggered() +{ + QMessageBox::aboutQt(this, tr("About Qt")); +} + + + + diff --git a/src/mainwindow.h b/src/mainwindow.h index cc974a5..7d8f2cf 100755 --- a/src/mainwindow.h +++ b/src/mainwindow.h @@ -150,6 +150,12 @@ private slots: void on_actionShow_Spaces_triggered(bool checked); + void on_action_About_Notepad_triggered(); + + void on_actionAbout_Qt_triggered(); + + void on_actionShow_End_of_Lines_triggered(bool checked); + private: Ui::MainWindow* ui; FileOperations* fileOperations; diff --git a/src/mainwindow.ui b/src/mainwindow.ui index c91e5b8..f35d479 100755 --- a/src/mainwindow.ui +++ b/src/mainwindow.ui @@ -189,7 +189,7 @@ - + @@ -1913,7 +1913,7 @@ S&how Spaces - + true diff --git a/src/mainwindow/mainwindowconfigloader.cpp b/src/mainwindow/mainwindowconfigloader.cpp index 695d982..40c8c4c 100644 --- a/src/mainwindow/mainwindowconfigloader.cpp +++ b/src/mainwindow/mainwindowconfigloader.cpp @@ -10,6 +10,7 @@ void MainWindowConfigLoader::loadMainWindowConfig() { if (m_mainWindow && m_mainWindow->getUi()) { m_mainWindow->getUi()->action_Show_Tabs->setChecked(showTabs()); m_mainWindow->getUi()->actionShow_Spaces->setChecked(showSpaces()); + m_mainWindow->getUi()->actionShow_End_of_Lines->setChecked(showEOL()); } } @@ -21,3 +22,8 @@ bool MainWindowConfigLoader::showSpaces() const { return Settings::instance()->loadSetting("View", "ShowSpaces", "false") == true; } +bool MainWindowConfigLoader::showEOL() const { + return Settings::instance()->loadSetting("View", "ShowEOL", "false") == true; +} + + diff --git a/src/mainwindow/mainwindowconfigloader.h b/src/mainwindow/mainwindowconfigloader.h index c27b0de..d69a9dc 100644 --- a/src/mainwindow/mainwindowconfigloader.h +++ b/src/mainwindow/mainwindowconfigloader.h @@ -13,5 +13,6 @@ class MainWindowConfigLoader bool showTabs() const; bool showSpaces() const; + bool showEOL() const; };