From aeb8f3020ca4750f3f3f82559b04f48102bf06b9 Mon Sep 17 00:00:00 2001 From: kylinsecos_admin Date: Fri, 21 Jan 2022 16:41:00 +0800 Subject: [PATCH] First submission of source code MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 将补丁内容更改到tar里 Signed-off-by: kylinsecos_admin --- ...e-activation-lock-gsettings-a7ecb4a2.patch | 188 ++++++++++++++++++ ...fix-crash-in-some-situation-d001fc82.patch | 119 +++++++++++ ...t-adapt-to-lower-version-QT-d588833c.patch | 32 +++ kiran-screensaver-2.2.0.tar.gz | Bin 0 -> 46020 bytes kiran-screensaver.spec | 116 +++++++++++ 5 files changed, 455 insertions(+) create mode 100644 0000-feature-idle-lock-add-idle-activation-lock-gsettings-a7ecb4a2.patch create mode 100644 0002-fix-crash-fix-crash-in-some-situation-d001fc82.patch create mode 100644 0003-refactor-Qt-adapt-to-lower-version-QT-d588833c.patch create mode 100644 kiran-screensaver-2.2.0.tar.gz create mode 100644 kiran-screensaver.spec diff --git a/0000-feature-idle-lock-add-idle-activation-lock-gsettings-a7ecb4a2.patch b/0000-feature-idle-lock-add-idle-activation-lock-gsettings-a7ecb4a2.patch new file mode 100644 index 0000000..7cb20a2 --- /dev/null +++ b/0000-feature-idle-lock-add-idle-activation-lock-gsettings-a7ecb4a2.patch @@ -0,0 +1,188 @@ +From a7ecb4a280029c94d743dd20a23baac75f20c930 Mon Sep 17 00:00:00 2001 +From: liuxinhao +Date: Tue, 21 Dec 2021 15:51:41 +0800 +Subject: [PATCH] feature(idle lock): add idle-activation-lock gsettings option +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +- 添加空闲时是否锁定屏幕GSettings配置项 +--- + ...com.kylinsec.kiran.screensaver.gschema.xml | 8 +++---- + src/idle-watcher/idle-watcher-mate.cpp | 1 + + src/manager.cpp | 12 +++++++--- + src/prefs.cpp | 23 +++++++++++-------- + src/prefs.h | 6 ++++- + src/view/window.cpp | 2 +- + 6 files changed, 33 insertions(+), 19 deletions(-) + +diff --git a/data/com.kylinsec.kiran.screensaver.gschema.xml b/data/com.kylinsec.kiran.screensaver.gschema.xml +index d5d77e6..17b6f20 100644 +--- a/data/com.kylinsec.kiran.screensaver.gschema.xml ++++ b/data/com.kylinsec.kiran.screensaver.gschema.xml +@@ -5,10 +5,10 @@ + "/usr/lib64/kiran-screensaver/libkiran-screensaver-dialog.so" + + +- +- +- +- ++ ++ true ++ 空闲时是否锁定 ++ + + + true +diff --git a/src/idle-watcher/idle-watcher-mate.cpp b/src/idle-watcher/idle-watcher-mate.cpp +index f562022..0cba668 100644 +--- a/src/idle-watcher/idle-watcher-mate.cpp ++++ b/src/idle-watcher/idle-watcher-mate.cpp +@@ -97,6 +97,7 @@ bool IdleWatcherMate::setIdleDetectionActive(bool idleDetectionActive) + + m_idle = false; + m_idleNotice = false; ++ //NOTE:由于空闲预告阶段会抓取鼠标键盘到屏幕外,所以空闲预告阶段不会出现设置空闲检测的情况,暂时不需要考虑特殊情况 + if(m_idleTimerID != 0) + { + killTimer(m_idleTimerID); +diff --git a/src/manager.cpp b/src/manager.cpp +index 8c26da9..87041ca 100644 +--- a/src/manager.cpp ++++ b/src/manager.cpp +@@ -137,9 +137,15 @@ bool Manager::initIdleWatcher() + connect(m_idleWatcher,&IdleWatcher::idleChanged,this, &Manager::onWatcherIdleChanged,Qt::DirectConnection); + connect(m_idleWatcher,&IdleWatcher::idleNoticeChanged,this, &Manager::onWatcherIdleNoticeChanged,Qt::DirectConnection); + +- m_idleWatcher->setEnabled(true); +- m_idleWatcher->setIdleDetectionActive(true); +- ++ m_idleWatcher->setEnabled(m_prefs->getIdleActivationLock()); ++ m_idleWatcher->setIdleDetectionActive(m_prefs->getIdleActivationLock()); ++ ++ //连接至GSettings变化,判断是否开启空闲时锁屏,同步空闲监控器状态 ++ connect(m_prefs,&Prefs::idleActivationLockChanged,[this](bool idleActivationLock){ ++ KLOG_DEBUG() << "prefs idle activation lock changed:" << idleActivationLock << " update idle watcher enable"; ++ m_idleWatcher->setEnabled(idleActivationLock); ++ m_idleWatcher->setIdleDetectionActive(idleActivationLock); ++ }); + return true; + } + +diff --git a/src/prefs.cpp b/src/prefs.cpp +index bd34bbd..3e654a9 100644 +--- a/src/prefs.cpp ++++ b/src/prefs.cpp +@@ -26,11 +26,11 @@ + } + + #define SCHEMA_KIRAN_SCREENSAVER "com.kylinsec.kiran.screensaver" +-#define KEY_IDLE_ACTIVATION_LOCK "idle-activation-lock" +-#define KEY_CAN_LOGOUT "can-logout" +-#define KEY_CAN_USER_SWITCH "can-user-switch" +-#define KEY_ENABLE_ANIMATION "enable-animation" +-#define KEY_SCREENSAVER_LOCKER "screensaver-locker" ++#define KEY_IDLE_ACTIVATION_LOCK "idleActivationLock" ++#define KEY_CAN_LOGOUT "canLogout" ++#define KEY_CAN_USER_SWITCH "canUserSwitch" ++#define KEY_ENABLE_ANIMATION "enableAnimation" ++#define KEY_SCREENSAVER_LOCKER "screensaverLocker" + + using namespace Kiran::ScreenSaver; + +@@ -58,7 +58,7 @@ bool Prefs::init() + KLOG_WARNING() << "can't connect screensaver settings changed!"; + } + +- //m_idleActivationLock = m_screensaverSettings->get(KEY_IDLE_ACTIVATION_LOCK).toBool(); ++ m_idleActivationLock = m_screensaverSettings->get(KEY_IDLE_ACTIVATION_LOCK).toBool(); + m_canLogout = m_screensaverSettings->get(KEY_CAN_LOGOUT).toBool(); + m_canUserSwitch = m_screensaverSettings->get(KEY_CAN_USER_SWITCH).toBool(); + m_enableAnimation = m_screensaverSettings->get(KEY_ENABLE_ANIMATION).toBool(); +@@ -66,7 +66,7 @@ bool Prefs::init() + + ///输出设置项 + KLOG_DEBUG() << "load kiran-screensaver prefs:"; +- //KLOG_DEBUG() << "\t" KEY_IDLE_ACTIVATION_LOCK << m_idleActivationLock; ++ KLOG_DEBUG() << "\t" KEY_IDLE_ACTIVATION_LOCK << m_idleActivationLock; + KLOG_DEBUG() << "\t" KEY_CAN_LOGOUT << m_canLogout; + KLOG_DEBUG() << "\t" KEY_CAN_USER_SWITCH << m_canUserSwitch; + KLOG_DEBUG() << "\t" KEY_ENABLE_ANIMATION << m_enableAnimation; +@@ -91,14 +91,12 @@ bool Prefs::getCanUserSwitch() const + return m_canUserSwitch; + } + +-/* + void Prefs::setIdleActivationLock(bool idleActivationLock) + { + RETURN_IF_SAME(m_idleActivationLock, idleActivationLock); + m_idleActivationLock = idleActivationLock; + m_screensaverSettings->set(KEY_IDLE_ACTIVATION_LOCK, m_idleActivationLock); + } +-*/ + + void Prefs::setCanLogout(bool canLogout) + { +@@ -117,7 +115,7 @@ void Prefs::setCanUserSwitch(bool canUserSwitch) + void Prefs::handleGSettingsChanged(const QString& key) + { + const QMap boolKeyMap = { +- //{KEY_IDLE_ACTIVATION_LOCK, &m_idleActivationLock}, ++ {KEY_IDLE_ACTIVATION_LOCK, &m_idleActivationLock}, + {KEY_CAN_LOGOUT, &m_canLogout}, + {KEY_CAN_USER_SWITCH, &m_canUserSwitch}, + {KEY_ENABLE_ANIMATION,&m_enableAnimation} +@@ -128,6 +126,11 @@ void Prefs::handleGSettingsChanged(const QString& key) + { + *boolIter.value() = m_screensaverSettings->get(boolIter.key()).toBool(); + } ++ qInfo() << "keyChanged" << key; ++ if( key == KEY_IDLE_ACTIVATION_LOCK ) ++ { ++ emit idleActivationLockChanged(m_idleActivationLock); ++ } + } + + bool Prefs::getEnableAnimation() const +diff --git a/src/prefs.h b/src/prefs.h +index 797bdfe..30431d3 100644 +--- a/src/prefs.h ++++ b/src/prefs.h +@@ -30,6 +30,7 @@ namespace ScreenSaver + { + class Prefs : public QObject + { ++ Q_OBJECT + public: + static Prefs* getInstance(); + ~Prefs() override; +@@ -48,8 +49,11 @@ public: + + QString getLockerPluginPath() const; + ++signals: ++ void idleActivationLockChanged(bool idleActivationLock); ++ + private: +- //void setIdleActivationLock(bool idleActivationLock); ++ void setIdleActivationLock(bool idleActivationLock); + void setCanLogout(bool canLogout); + void setCanUserSwitch(bool canUserSwitch); + void setEnableAnimation(bool enableAnimation); +diff --git a/src/view/window.cpp b/src/view/window.cpp +index b05dd81..c826e97 100644 +--- a/src/view/window.cpp ++++ b/src/view/window.cpp +@@ -80,7 +80,7 @@ void Window::setScreen(QScreen *screen) + { + setObjectName(QString("screen_background_%1").arg(screen->name())); + connect(screen, &QScreen::geometryChanged, +- this, &Window::handleScreenGeometryChanged); ++ this, &Window::handleScreenGeometryChanged ); + } + else + { +-- +2.27.0 + diff --git a/0002-fix-crash-fix-crash-in-some-situation-d001fc82.patch b/0002-fix-crash-fix-crash-in-some-situation-d001fc82.patch new file mode 100644 index 0000000..567c640 --- /dev/null +++ b/0002-fix-crash-fix-crash-in-some-situation-d001fc82.patch @@ -0,0 +1,119 @@ +From d001fc82a1a872ae1dd0dadc5ef3d0c80181c1f6 Mon Sep 17 00:00:00 2001 +From: liuxinhao +Date: Fri, 31 Dec 2021 15:32:01 +0800 +Subject: [PATCH 2/3] fix(crash): fix crash in some situation +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +- 修复屏保后端在某些情况下崩溃的问题 +--- + src/idle-watcher/idle-watcher-mate.cpp | 3 +++ + src/view/screen-manager.cpp | 16 ++++++++++------ + src/view/screen-manager.h | 6 +++--- + 3 files changed, 16 insertions(+), 9 deletions(-) + +diff --git a/src/idle-watcher/idle-watcher-mate.cpp b/src/idle-watcher/idle-watcher-mate.cpp +index 0cba668..9d744c3 100644 +--- a/src/idle-watcher/idle-watcher-mate.cpp ++++ b/src/idle-watcher/idle-watcher-mate.cpp +@@ -97,11 +97,14 @@ bool IdleWatcherMate::setIdleDetectionActive(bool idleDetectionActive) + + m_idle = false; + m_idleNotice = false; ++ + //NOTE:由于空闲预告阶段会抓取鼠标键盘到屏幕外,所以空闲预告阶段不会出现设置空闲检测的情况,暂时不需要考虑特殊情况 + if(m_idleTimerID != 0) + { + killTimer(m_idleTimerID); ++ m_idleTimerID = 0; + } ++ + m_idleDetectionActive = idleDetectionActive; + return true; + } +diff --git a/src/view/screen-manager.cpp b/src/view/screen-manager.cpp +index f8d7803..d7fc124 100644 +--- a/src/view/screen-manager.cpp ++++ b/src/view/screen-manager.cpp +@@ -42,10 +42,10 @@ ScreenManager::ScreenManager(Fade *fade, + if (m_prefs != nullptr) + { + m_enableAnimation = m_prefs->getEnableAnimation(); +- m_idleActivationLock = m_prefs->getIdleActivationLock(); ++ //m_idleActivationLock = m_prefs->getIdleActivationLock(); + } + +- QCoreApplication::instance()->installEventFilter(this); ++ QApplication::instance()->installEventFilter(this); + } + + ScreenManager::~ScreenManager() +@@ -260,14 +260,15 @@ bool ScreenManager::activate() + // 创建解锁框,屏保框 + m_screensaver = new Screensaver(m_enableAnimation, nullptr); + +- if (m_idleActivationLock) +- { ++ //NOTE:空闲是否锁定屏幕控制权交由IdleWatcher决定,若IdleWatcher发出空闲信号,则锁定屏幕 ++// if (m_idleActivationLock) // 若开启空闲时锁定屏幕,创建解锁框 ++// { + if (!setLockActive(true)) + { + delete m_screensaver; + return false; + } +- } ++// } + + // 获取桌面壁纸路径 + QString backgroundPath; +@@ -371,9 +372,10 @@ bool ScreenManager::eventFilter(QObject *watched, QEvent *event) + return QObject::eventFilter(watched, event); + } + ++//NOTE:在事件过滤之中删除某些控件并且该控件同时是事件的接收者需要过滤该事件,避免崩溃 + bool ScreenManager::eventFilterActivate(QObject *watched, QEvent *event) + { +- if (!m_active) ++ if ( !m_active || (event->type()!=QEvent::MouseButtonPress && event->type()!=QEvent::KeyPress) ) + return false; + + // 若解锁框已被激活 按键和鼠标事件触发解锁框显示 +@@ -388,6 +390,7 @@ bool ScreenManager::eventFilterActivate(QObject *watched, QEvent *event) + else if (!getLockActive()) + { + emit sigReqDeactivated(); ++ return true; + } + } + else if (event->type() == QEvent::KeyPress) +@@ -396,6 +399,7 @@ bool ScreenManager::eventFilterActivate(QObject *watched, QEvent *event) + if (!getLockActive()) + { + emit sigReqDeactivated(); ++ return true; + } + else + { +diff --git a/src/view/screen-manager.h b/src/view/screen-manager.h +index b5253a0..9fa14c9 100644 +--- a/src/view/screen-manager.h ++++ b/src/view/screen-manager.h +@@ -121,10 +121,10 @@ private: + // 当前显示内容的背景窗口 + Window* m_currentWindow = nullptr; + // 屏保界面 +- Screensaver* m_screensaver; ++ Screensaver* m_screensaver = nullptr; + // 解锁框界面 +- PluginInterface* m_lockerPluginInterface; +- LockerInterface* m_lockerInterface; ++ PluginInterface* m_lockerPluginInterface = nullptr; ++ LockerInterface* m_lockerInterface = nullptr; + }; + } // namespace ScreenSaver + } // namespace Kiran +-- +2.27.0 + diff --git a/0003-refactor-Qt-adapt-to-lower-version-QT-d588833c.patch b/0003-refactor-Qt-adapt-to-lower-version-QT-d588833c.patch new file mode 100644 index 0000000..a4f4ac8 --- /dev/null +++ b/0003-refactor-Qt-adapt-to-lower-version-QT-d588833c.patch @@ -0,0 +1,32 @@ +From d588833ca6e4b53037e88a67716f03ce332aae9a Mon Sep 17 00:00:00 2001 +From: liuxinhao +Date: Tue, 4 Jan 2022 15:26:55 +0800 +Subject: [PATCH 3/3] refactor(Qt): adapt to lower version QT +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +- 适配5.9.2版本Qt,QStringLiteral头文件差异问题 +--- + src/listener/listener.cpp | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/src/listener/listener.cpp b/src/listener/listener.cpp +index b01996e..4440f72 100644 +--- a/src/listener/listener.cpp ++++ b/src/listener/listener.cpp +@@ -20,7 +20,11 @@ + #include + #include + #include ++#if (QT_VERSION > QT_VERSION_CHECK(5,9,2)) + #include ++#else ++#include ++#endif + + #define NOT_SUPPORTED_METHOD \ + { \ +-- +2.27.0 + diff --git a/kiran-screensaver-2.2.0.tar.gz b/kiran-screensaver-2.2.0.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..f2cab26ffdee0d4681a15c32499c9a0e40d0944c GIT binary patch literal 46020 zcmV(}K+wM*iwFQ`QSV^@1ME9%Q`=aU{n@`lmGo9%CYX1!MQ!b_u|--PV>_0~qk4N? z!WKq@Ex9E*ftgJeoel&N2&6mDhIB$FBusY#WRp%42+4n$v1Ie9|H7VguOv&dP128= z-KiZ_0n$0=o^$SbU)hXFsvx&%8C4WzO*kv6ZC$~xU`P80zv0yZ*U{cy@)s`uUvl5s z)7f*h<48wOH^4i)k92o^!1Vr>N;JDlnl7je^MR@;`hIlp!vCFKV@>=Y%;W_**EXW4 z1>x838y$S4r>B|!j~?x<`M;a^|43J7?*~lBZ?eO8T>sDg-!EulHZJq}L|*J;m}82P z%ZmX{&Wf^rO3Lb^0EDY2(AL%#h(bt|gq%oWaD|J-Kq!+DHEmGIN+Xh}#z#gpQSW2g zdIF)ml#@dvIsl8J+^-6mF~krsMTQkw6Eh`UIxB`W4FCm@s`W7=LS7T=NFpM{q$=nV zfIKv;mJy0#HYT3SOR@;Ks5qii6i9~n&T6Q!u9mC?DOHewG#6G1mP8AeSI)t&1V|}} zptlwuaS4sfF>zdvf(SP~KdPvDe_qLqX>mEk1J}GrX>1K`qA-{`Dh!MHcM%ShD7gdyE6Owbngx0T$!Wi*WL>!T12}LJGy`;*ii6W536uF*s zKZ1S{%7!>t%Ij!lk=Ioa>~fhym=X)cJnX^i*)yUR=$GUK#7jucmE0b(z%>Wia0o8( zlqwX9APIdPU>KriI4@|L6|PjgjZkD=Rq~Dr`@CpYE*0!3_aJQF^!X7n&`2wS8ht)Q zeE1Jx*9Lupz&NFh-d8VZNVcT-5$rhpl1aqXcu|vw1wAwBj>L_dz)}Vxw;;%F3@49@ zs-z2YM#P*I?2Qu=7cweoU`xvwN?!3WNrBnC3e+^jGDAF}s2pa1keB`l;bn93i)=#P zKs0gL$HG}*KoaxWkSr^@w}KHWnj%pNXaQ&`23$%7IVu$-D?T~`R>4ZBLard7+YbFF z!<{-a#1sjn?+{Xe^>xP$j-19SgQ??C*ho=`t8kMLRab#%yvWlXdXPw$_dv$JACkz^g!u!_Hplr&*DFAk9Dqn2vyIQULNIw2n_=}H7@Kt{KU z0?B+zHz18W2JqE*V95%Z(Lo`jDwAuT4_gVHcB{f~pZSR!R1_epBRvv2kq%Hkvi!N&Vf0ZCm@TRr(-#$EKO%k=% zXS;~P6N!kVf(s!M?0V2(^sqo!-o>n4l!$|EZkS+vMwN>CiISqz5del+7aUh}g(7rA zI}(nIVv&?AjCU=hr$(Vu3923+vE55~lTaa`elaIOF+6n01!Ltbs!3quHFhZl+4q4< zoIs?zuzCR5Ds~3Dqp6CnWRyHDU@;K}af(J69+PwtIFB4jZGn}L6zCzUu7jne$jg{) zJR!^P2_;ZZ%d)rQs^J9QgQ zyZARE=CLS~f={jh{nN%|GR|!{T!UKc2-tm}NI3V0GQa=*q1sc}ehLe+B1;(|?+7IU zh$!Fa&M-MTyf@T61x1I%!aH_Q9CmIK{WYkwk|2`tRGd7qPzw|dEoYCceKl6>XC;Wp zgl8$hq_Zi-3rvKPJe!8!DJ~REr`Xe}bWKE!AjR^{5cMkrRTFW~aWx`|^$=CnXk(>l;0G?RDGr8p;(!$by@N@p0Y;q0V1E>4`Q4PLH1uO+g7 zzHt%x+ObEBMd9uAWRR)n;~B>qQh=dF+@gQX*4#u%2vU*Q7ZMK-DRs;^nUqw*O&^6; zt9f*`=Ck_aT$hFCPHA%SsIWPpVEeyN* zIPD|BU@#D9cK&bn{wF*rjFE9#3+m&)^2Nvg?|(Wwx;uOQ?|-_FcK+l2&)?$86u{5v z0v!7br9xU2p+2i(w#AAvraRc%8VEr7{{u{EEp@>HI8D@B!h@mXY&v}Ubed0vVv$fX z!gO{5ZbXu^X~>8%=tM1vF-TB(M9MK%C`Veo1Sj-fCLAA3#A9qM#Y5>(MdnyZVj#?O zkVH(RzoapzJ3HY3tO^XM~1Q@xgeQiN{)f&}6s~bcmzSz`@G(d*;j{8rxi+ zH!iR2Ok_I`BuUJOq4EK z6L||&7>M0#&*S)%V3Vmc41b(U5aS!X!k=mPs18&QQfAX_F?-#y(d@MA` zGO)~+k|1h2{VJYD0zMG}vtd8>g%+9KN1(%cH-%x?Kp9B50_aNxrHMgY{&aZR9`&=_ z*Q4Im@9)!t2Wiwf{=zdYOoX7J%Vo4+g%Sxi1UGKCHA)-GDI$mkMGl4>e(&SJMuOhc zi8M_dX}`dSb;7A18|q}|sw2MYF%G;gl#x*O&F(RM~4RBGGXAVH`leIiO zLbTU4MFo&Nnoo0I!zqMk6-X@9K;LQdCeIpZnreYWIEnh>#UM04bXn+s@&OdRHexgpPBJ2a@+U zECl9MVb}vWD~abk0M}l<>=ZbRctO@26L5f*IRbS)vZkjr7Yj#+A|zV)I#0R=rly4M z*{CTIjye0`$Ox2W^}@Q3OWLzCIi@y%3l>y#Q+j z^#ZXSdm+wn+SGhCmG`qz9zBvN!nj@3GwtKqT)P0rYdqfRlr#l4;G>}w9BlYsr%7E=Y4?<6 zt8{9mVY{qMw2<@$M24J!N-FKgEml`YSa38b$&HGOgJ=Fd9*dr7ZNg*Uf!Z=!a|!RW zn#2qVlol{HhAZPwun5aTkP;hX{jLuphzgsB-G-dvQ5g`FZ%%nTS8bhvTsUvfH9i2xi+Ga`hO3 zhzPn>&S}v43IdL&zsONe66T=Hx8b`g$`I1-fBR+1-{IBl{U3BmNL=iU+kuuf15C~3Ck_r+|MYqmxj(v4-nwGmT``}$fyc`BBlGUPpI(1W z^yvsP#`@RgSF`q5>{iXZys$74Dz!xi(xpf47bJ3hx1V&VnvAk9<804X(wJXN< zg7M{CWogTpdJacEbL9cR_m-xO#hJfOUU18F*xNG8J3HmANe5M(oC54SWrC%^8s^*c_V?8E0t+%PVck&osz4UzN=h(S>E0@XKo@5aM<29*1sw5 zeg!mM;XWjlZ!RpBw;xiyfSTx5ki;Htt`({V&D%< z+{;norRT=xwcd_@sw}-QudV{Y-YvXACYNtiR@cA*phoqFi+h)@k>xMTJ2!!6dFMyi zf-$pY@4hq0m{(`Y+cVT_beFbW%#DTe)^~na-+yJ!uh$!evVrV0H@C{Krp(F5pbgq$ zYOS*Ph3j#?`r;M6-@E%w<;oLd{yu#yZ_NWY^UH^O*C#RfT^ga8Anz9-tyY`mIx?rZ zPTcL}1FQwk)%9&khW=Q5WbePr-hX-PD`V!*|Cja;1&PW6K~Q_Dk1s-8T>+7h7eN%nAWGp=JnGZu4j7}ry z<}2g%LUs2^3=C?_&R5@Vx>YLgOzqu)oV@C@Vdd&3)Bz04&1v)Qs(EDlZxs}oTeLJie^ z^tt)$0*x4BZpsAj&|YIRM|u)QsLb4yvG~0YOASROqD>xMFuz&GsDRyFSfh&hij6Oc zjpa=&Je$uvjf5ug)>CV1wnR`5%ls~>h6~rKKm16y1G~fI*_f@azlK1v_OdV!5OnDF zLt|mq#?Cqwg08LXyuh_9bH?R0OgyMY;1?hu7IVynO3vKbClTt~v^zGS+M`((7C~pK z393Q1;8vjg>WX=5wX!o~KK<5C+HOeNTlb9{)8_q4-i&QjtLL#TyjgNP(uzXx){SZC zOvd7Trx) zS7AT^ju?Y)r}kEMXfDz`wzt&-lLRSXkTZ}5P8D(r-|`yuwej7T<((@K3=q$53j>Y0 zy=V;$yWc{p5|eJ2vyai31hRK&-n_X<#^N;$&g(D1X4H`NHpWfPZU7KN z;?+y&`;{AaJc^OHr3Kw>W*QHqLqk=3KrLmPqZiEK0%NYfcmM|QTE{Jhw)zH1vb;uB zhthzFz4eIN5x7C}S?Yseb#tv9n!WU&liH^dS-xabzIe zsD7~v4Ghe}5VIc%GS!WzF!MCex}80F|$caIQ1p+u=vmtZ*0w(%S*q6A!H=wN$dj-n}$wXe)G1L zdG}WLZcpJt>Ld`hJ_m;gdNL_*fzMX$0|`!bc-E?J{0MZ_73kell+I2hl8k@euH4y0 zj-)kE@lfG#3?TP-%y@Lue6oTyd1VbwYUQ0>tU?QyvD)o|W43AdL!@JvEY2HGZ~gRo z$yTDPrUZD*5->MK+Q4LG`*CGy-GDR!wPu!JTfiFP$a=FtYQ{DeTr|!lY8kZbjTbPH zIX1-u5e!Gy-xyP?)s0n33Hx(t(QRpgt>0w?_ewhEIiH%7Zi;nvQQ8iWrWE%*ij{)71d91$tS!rqMs8~k-@L}e#%H1 zV;yp{Oi2bRh8%AhINvg7yMnmnj8bAU04ixBqmRM@&1NBF@c$|#ImhSW7;_-R1M~pXAL2RwFmsAaeH0%`F+iOR#qfh>biYob_zl-qrSu2yHJw zB&ZYQ&C2_}QlW97GOAcqm28Q8Pxmm!-eK4${?}fHd~892EGuccDh-zizzQ=*MQv2b z=b2%+DGlTI!7xTWrfVU=Z0)3#IVb6(gu{q}|BLoN>^*C98^@9N8NXrzT`Cj{Pm&-- zilhaRAc-RZmkU|~3vxqX7v5d)VV7NYTt3N)WH~OM6+aS3=OpLLRU|vk`K8$U zFINU1pYAVQ_sr~KcCm{G34+oIW0#1Xo$2Z6p6TwH>FK4T+G98~mtnrqQoDj?Wg?#} z3`(*D!yiFHS2lF1L_z5?y2b+XT8`ZoBRiW)Zj)dQ*Hjb{S)2Q|1{G-mih~ILLqmM7m*v$wEOXD!>Or zgj&nxFeyAmM&Oc(g8MADST4Wi zwf^Vz4>=O-R1RBERO|PS3e#>=DdVUI%!;yPn53W-0Bl*-0T`%+MC|A1ty!_H(U!~F zj;x13nwJ%m@kN8TI>Ae;I_oJ_9Cp_>Jl^vHERlq_s9}Onc5s| ztS3ZbP&XuTZ~>|^4ATv4&Olgupg|<;aalHDpoMVg6!SYu9%}2_9^SAB7jzk(R80-b zySZWoX6ngi`9-liX^5~g07WN=Ib{FJ45W&?hphU+myC;#isLD&_ijo4<#o5G% zx-h31JdvoXw!>y2DOAh~w8#Yaj>7beD&t)rNmrmfMJ?bJ9R|paFi0UymFZYo$7xks zS5!&VVUEJK^sw~`bb_^9Usf_$C+P6ZN62cevldC1UW6fu-h6;6K$Fxx*O;xxBgEt< zlw=}9M4Ms59W;!(su7Yd&;bY?-b39k$XO=P01ZLBQTiDmVQ`As*qh1*Ypstp#3Vf4 zK`_JrkH64rrR20)56$VGZ2w_c?7I$%p&RjNNk#ZjP0L~c?g9il$@&&YwZF=YN zkq&2pjEE-d^BztU^v$4?z=V0KMy!3UMUAZLFkMR$=wz2rhj*s^PMC25?rhBDI;g|k{OCxs z9Tkz0CFnZz8wMKo2S*e#o##Mza!OfYrXsdfTPW2Th`LOdQnpG9@o^;(-LjnN96{Z0 z-*!R_#a>3NZLjHCX=wC{q$7j(C?I;_+ZG!0inIS69-o zNTa(@c-1(^7AX{*|}9Rw=|E= ztd~=;R!d%DkCiJLSCyoS~R_qnu2v5VzX#HWR_D?>Et|X zbTN~9W(^R-3=SCjozCErab{&{0b5=nYnc>-VJ!>+KIS>72nF!Do{%Bz{z7tf6?!$d zbOmz2hRl$uBwozIYOu~_Yu_t#>8Uv~pPB`10M^pV^C3z%k_J*wKbxk-W@t08{>-GU zW$FyctU*QIfrz#DW?kQ`F&)<0eB%U{-B(u9fE2~@^3v)YnVL&4rZQ|iq!wrA)0w#t zeW3l~FReR0LLobkad$5HEGG?mc(dN5W@do+bSzL{Nu=luFbJy7qE9dId-X~xwdiQe zqYdD@7dEVA7<3A?HO!~e)D?`DnFGrK#8i?g+}axcSSxFUM3=}` z9h>f&rPAHI1Wb$QbY&HyngbRLAolU5c1`PpTC0hg5HlI6U9|x!iwksIffi-cu}aDE$XZm46hNLh_5-=qlVf)? z89-Rr7TMBJ-Zkq4G^Yl`-1fDs!<+CcW*2MNC?si`61Vtl%30PdFkRQmxzEJBlsrD4w<7mzDhd|5j4T>4j9Jlqf%+XsV=(BLFX{9sJ{i!~4Gpgh}<@+lQaM#U6k9@pp&+ z{XyWWQOSe$tCR?L{v|J&iSSG2x@5@Vyu2-28N2bgOs_)-xkY|!mtE)z^DDT#fctJO z&lWGv@~on=j`v>a!&OA{lh5&7{10#J|KU5=sZ)RddPOPb`}6s~`8@ZkEvfAMqvx=CBT^;Pxu{XXpB z+qaHBdA<79S4VgLS^}-*^kTpI&jb;Vt}AN2^Y_)W9*e!y{p2VAsV9Gj+Gr>KE0h02 ziJ@Nn*RG_7{BQYAQR6n6=zn0hi~j>dLp}Z9o%F(V7{h907%N|-;mRf&^F5H-m2(r9 zJnnW~s#hv!-M?OHoK7!EC@*_@_rDb9Xt z71KhX(m@28kC>+HYJhZ&Xq8~sP@a`djZvT_kO0 zQ`=cUXQqutgsqfHlD^mVdA_dYyWgmi>xM-0;0p%Im5Lk-HhiWwF%)h7QJA3&J8qjs zZQ~Sd-6$HnlO4AI+g|@Qh&JcfMzin#Bt~5EUk4J2pKGB?}7PL!cQX6DaeHxls? zvNZ+ZZ$nUy{l8+E*D9qYOtIo|nUZlZh4R^QsYN7@&7s*Rfx#LiPybxCqX3YJAjLKMF&19ne$5SR6%F8l$C)}0L zFOd8qBZ1zG{owGYLHG!98ZYHrVeiHvm=1E2!uQRS+=t30Fe+HVbD5AC|{^86Uz#u z-C$JMbdl(%Lg{v9Jpt`c<8esnE-ISx7;ZOWeeEieDk-MHm+cw4WDXL#NC&B-!%{uk zp!0NMHXVRI6tMc+fCheyf8^=V?r89$g=2Sxnr%%tSD2cxbVtkPTD#J`-uh~=+axxr z$~*0wUbUSZ->sZS!3nta{hx-BTpPC0%>Q>}aLDcdGZOFZ|8ym_dj8K?jYoET_k?8- zCGXlesT(FiDqbdnIGUnXG3F>FhN_Q>C+l0XB}>JT$pYB>Oz&=@)PlTAicEaE(EW&Ssj|8`vZlgOB+{+}a*?(e@P zhKGCdzZ>bCQcz)3l57@3yQgQfbJ=VFGBMAY890~6*gP^3!t$fjXLdQcI!A(+{G#<= z3PM#`%_{{GjfxP@y6e64Pfg~3hrD^4&HsTx*Zd!d#bb%y{O?9O_w(iCLKw`xKtQU% zDv%`}c!WI|dxj~O!uUFX7fLIt*|1DmG7S7kZKE>Q=g%6IIcw595vjfTZ+&m1y*8T7 z|3t!l{vS^a_x!)Rl3w6jzZm&V-+M8DA5Nc0);8POg^-MJI}|fspr4t0aiaR=?do^d zR{&^G;sE~$^TfPVQSnZ^@NpU3m1k=>D}0|-+JeWfK8jGQw{Ngz4hNqGn{=YA%LQ4- z&pP7OQi{Lh0xP|sQa5-5OKNcs{jk#N#6og4b&-B|E3l|dD@M5}?M=`xKnI=+)BJGK z`gl}$c~df+M5!;csF_NEgAm_hBpi6pUYs?vJyOH@-_l1yo43*I{>RABfcyT(aL@mz zJLyUF|Ecr-X*$*|pC9*bKL!t}7{b*6ad&@5SInB*6+3VTH>M(D-KbaP<`D5^Ne0T05=;z?!KbOR9U#UEH8bYgzW}JUok7kTrw7RVr%IPCD&<;|U zE5_a_<1^S6k@Cl<56gFtFs~tQwNN*o_zP?5iAPuT*>g^ZG3JoZv0Y~-_9{E8W`(xx zS!f;Ww>Ytn-D~$jcZP{FyL#)2aFz%4~jMq$z0+=sraII28oY&dD0Wuxyzgl=JMoeBLt@S^d(ypcO8FZh9#creX4 z;XaubuVT2gdYgpDBjYn0fDJC3e;+ zZjVoKgmcyecZ_f+@##qKJnaL=ax(B+|5+cT@5CB|UGiur{!3y2@BjDWznp$*#(#T2 zMK+J!MpOTfy7Rx0!I9qne^*izgPrxe0#(wli@b(^;^b-c*vQB^C=v;gc{3lu^7UVi zZW^bu|5V~sT5wwoQ`uh=->rQ;1!{CQL?uG(Sd>Zx)^4CmtkYVUN+^kilNB(d^f5}b zqEgva)J;hv)Tu`^BIpN{Lq*je4Fs%%Wx5rb6@vxwFRjDh)zr#Naw?Ub%i4#_ zEfx>ZSmxBbo8Ht4ydva?v5H;^km89Tgdk%n~sHp@;=T!jd zs16{OH)tN$F>xLS1m5>pSePV$X;w;Ps~$!=cg@PZ>hlMK7AJ* zGXAxOC0!cm@SSg}w?E)GAAI?s`ukt+-@JD8-gO5^{=T2UKUo$eH(NG!OKDiJ?)`Z1 z!#(ar_>b4C@7`x#g!LN8kjv*=#BfAj65_wIRipAkMo-CRZL`ynHX zg~@QHC@JPKgrQg^{{MjSk*6Y|Mc*80<37% zHc(k@flBN}-+5}Pz<(BVUDU`b(19lLS0k=E=-3ksJd>SHO~C*cb~yTI)v+<5?%0^C za>xUL^DS9MUW4zfMftIkpZ?cn_BA7;11CVoIR6wafOS-P@M2zi?_S8o z8YHxcxit|?;tTTJ!ZIvTz-~=MhQqn|-~}==8i^-HFANNYU?meDj>bl#@u6@mJ{B7t zi^Z)~0P`~$*Ykz3mFXGY96WiEBR)Dh8jTG^2L{4WBFw%A7*>sQHK!JYGhOrAAowh; zYZagukHs+_y+(SC^cv|k(rcvGNUxDcs*ym=Qj%3Lk9NQgqAtwL zjtXET5ySGZHTR0LWido@MI#(1uh_r~O0hUb&J_xUi;ldoUMb3BMBbKFEuXjEy=u9U zS}wDnDNE%h44ruJ`fLI z2+_aW;dtc2h0*!Z;aF&N@Iukbrn&!8iiJiR))-2-Y6OW1ixs1w=_QPA20!uJH+|vJ z!~h9H1Lx7g8b^EekqE8zSfu9bzxqqyFX_3q+Gw)=gXNw({#SftB-UI1bt8?hOigjA zf>EQYAOCpp_BDd>qG;Yr);J(|=URbfSp9eqJ@ql1;G}!UU_45*xuCH@;#{SzpEV7h z#U-z5Tzgq(=O=qnm}-Wp8W4ddfd`QKG<|7!o=zQCebg&j`+^zDuP2ftyZ_V0Xsbm#AOi{g>)+Hy8CpI#ObSX*H~ z7BXZg7Nb}kzIk*1!~5*Kd;jyh2VdP_fU6I_#(11g@RyTQPtUF_tu0PxFVC;7IQll9 zeBOfF0Bq|3y>PWJG*A!828gaLqKjX4I-Q(fn$6B6=@kJlbO$-QHsqT%$nC-uFdpO> z*LckR3R-0FuUld8^wO2ZMl2pkc(C}}xAs5$LZqA*FV+_Q*jvwB0iZu~>j4UQx|qvh zQTNwYnG15sA6qZLZG)`C7g=`r@M9b;lxdWOVn9frxqsG*@d-(d>_7B;?!+SC82%rF z82`Ix|DS$p%76SPydjlJQY2SyGw>fzP3-^paQ*pzEY|b??Mmv||2_Nvlda!5u`&B+-}%5Rfma>xUaNaaZ^;NH4B4!d=}SakhbLVn z1*vGr=!zPkKC?n`3{7QhHUO3^mNzBVVqUAP7h&vTj&B2Q5V=h`w>6{bnM%2=>83Ac z-J1XH$p7O;fM_EB2L|JH{(nR0|JjrOr=NQAzbF4sL;m~U`pB$Iv6UnJXEwR8kZgS6 z!>59H*TbAGYU?xzl1uG4FLm(2era7-2D_`_@g%y%Dd ze0uoi59}?4plYTJ6xsjiSNos*#mkm+eaAH<(Eu-9$;-}He)`T;oa#|ac?$13e>c@G*pA9P6YW@G(d(-wPjx165{rd7NlA38vNnI)} zAn1`mzCtRnu7xC2!noh=e(EWyQc_)NqZUBp#t+!W>|nRS3&smJw7Kp!;BF6QG3LjN zvLt<)zwpM16A>8^8JU$OBtiF7&NNnKMx5AAoH%>9DZO7y!nw#)*ffn(j2+~se_DF_ zAs*PPH%=};`L=%UnaK5oDVwC@d`;(h(BUmbe!h7^OBtel_e6$vb#*O0``r2d6XZ{p zufI#hvZZG?>!;s$TL0|F`bUgSYSaf` z24aJ9R|Fu+i>9?N;}h=uKTZl|%4<~s2cQ2v-F-d!{SR;hOzZsLjHh+}x6c2~(El%yVCrTY9Cxm+L?_nNZA{9kn~>LLFEF5lll!hpvf{^`)acm z4(v~tpr0xFEj3%N&Zep{w<8^c7QEv>5o#EHxZ5D=!}0HEJ8iW;L-T+^0&GLqK*7wl z<{ZRZ3JmP~Y|c&>fMLMFXY8C^C8z+PRYf)j;-|^RgCAd#L!N20;fp&nM{0I?F~x43 zNzE3EhqE@BX!c^5{$^YcR3bE>fJyLEkY0lPB7mh2(LybkBOQ%d><>1G>|As!6v26N zBP3n}?*+0y$H_(_49>1y7F;>|Z&i!IvyNBnGU?3Lh#NtnD(K5GSX+1Vik3dfE(*ZiSIU$D@JzPCSC6$I%`&TNMm*J|BjGLm zjr(Sbhc6I_mFR&tdU{~P_4lVsr73cdAIcUo#beQS7f(pBc(yW5#zNkj&?PZ7H8G_i z%e-A>*PB@)S|Sw25JF3{++}xn4`g?dx}AfCTAq@N%0Twlzt-DN*T|^|U&&lTKWV{e z`|q-U7;rBq9wskgjI<#95rscu?$Akhr?Yvujx1jiBj+_y2g!+3n$~TXppzLAAH_Ub zfBd6pO`AM*0D*fBrcuBqM4AkN97J@u@FN06;n#oyj^Io+Ti|#lO|H~i+Ap|0BibIW zdn1WG2Sw)y0MRym1CW5t0fdib=L>LDW~-4V`ekf{jwFHg;h&a7bCECvLL~0=z z)cpE^nrQ}^H#bk@!JH2TbEYYnGbWgZl7WOdZkN*)JIV+L z$BE7J*jeAFDgEEZ#DDc}@AKUMvSUXp{%cd7mj17$|9heKzc-=w>{~P1~E1$xu-A@e&2|BNRjfnEe4_fVV;;3DalfA1}LUnLUrajq;a5Ul(Y8(`EX6YEI@Im}b+5!V#ARqInjyOlHv zV0jU95XNW)rawLkudT0I6qaMDyxzgiLC#!;G_ld*bm*ZBYodR$%`u;vt(9RT4RQ5y z+`Y}9tA6sy%H5mJt?SPH59;6FrmuzJAFOhfs$Hs(S~8jF>LFwz-c4wui4sV_?_F7X zc#?o!y>W8o&!<=`_x`f{?Vr?!@)diwk}BC{+8p$eG|&|ic>U@l=gKF9N>NVSIr;Mz zcfTbGIBDEn(IaI$oog2ZbHQ0~TiCZ3oV(WviF7`_BLSfVc65Y*pr}ZHM%6BJTa~X? z6i~fb3PSQ?sRYCm8kBHc?ZRNU2XhW*b2-){xn#RcA|$+!kVYR|_khpDbpyhvgQPG$huaQIJ6T^3Sh=Yj$xOHji=_NWV0VjmJX~HiPYhd-v`TEsg%n;_pCVMGN z2I1uYwcq^?PXqaX+xA{P|J#mjE&c!IJT3XZCI7zw{r_u8)UGyE`%48)m%Djldh1u- zU;5=ULj>>rQ!C$`CQLFa@Yk%LmjpofrK_%I9pnDMsfj)RJ25=1=;7_-CGs~p5oHZP zhlRqvtJ#({`kD$|xjdNN$A&ll*1!M8xp7B28Y$1=kxh9x599gu^0H7Wimsl48*cIF zbd~q)_y*_b?0kVRT%ub{gL3y`{p|Zo&u%(bev%9WoEO+qDi^C{_;yAz2$*^64rHbM zjR`Ouoio5|b|oG_>)3z)e9^h`!RpCVje6^{#-goT?=HXp9 zDrk~RuFjb&L?HHqU>3tR#M~oMnHPN^Z}Jnw|IL@vGcPLt+qTyIf1C0&Tz~jyL+yV( zJ-xlX9{XQkEC2tdJT3me#s6<`{2!$tiZL%+IGU|wXL5GuF&c=|L;xT#j79bRf&I0r zeO!5?1WPGjSU8OQE^m`jFRBpJB}0^<(VEBHYA9cg0f3~@*nwoVOezmr`^eyvq)4p- zw*r#Sgponv;LSIN_oVhs4ed!Kr-!BwCR53S!@~p}ViBJYkrOd<#i6mO#L&oZ>AO7y zi97(b0=|Go$6p^B8y%r$4lfk>t1k$Gv8mTb6NiTOj2S@4UwuLBotpUn664;=_&#z% zj>X(dmV!mXF`0|9>}2)J>1weYZI8llB3&UWwDWbM_eDc@UY(jar0EQK3|ckQ-#f=XXqr$;-~sCs%u}tIUja^3d1R-I6T=QUoq9Z6#`_f5E>}2f}xBJ+J|+8 zc01^2^n&W98xB0p)`l)(LZ5J6HECb~idJtJ-G-%5SO>E^bjx7ok?jFk1tTA*(jMpJE%*^}=~@x6i8AR$x?(FW8Egr(kOj!Y zEE5to9kv%|is^F32T5YErGWCKh7V3nk+YZnX!n3&w4zxk+gZVPMl0Q?S+i_{?aCnslUL3c^H(C`QR^;&oWQ{X@yuQiM~RCiE4Vxj$OwuTzP! z#85Kf`+ffe5NYq{$qAan#`k-Iemz83%ZWqYucXb_6YOiKxe|x&{)v%9YAE^J@!<`w zhMgm4@pvL^6|#Af6H`r9@!PuaunmEj+SZ1D5K=?gw%xmZ*fE(7N4EkDKk6&uxJV-& zelSiLflO3sQnTFqg`dMd=lh5Lz}jemRsg~a8nDzkD8f5miA4J4m?y1KuMHg@<)8?$ zy*W{Bv`TB++u&u=s7#10ZA6bSm6}9&Lly3K{~QR&kq_!MqQz^&K_CADigIFs*A)Su z|2*Z8d|g3|0o3m43rQlPO&__SBjV@ofZU99p!?>ch{-L{K6P~w0VUDDa^ZIU{D;n! zkDOaSto(SJ+AQuZJ-NMd@|~4WKd9fiS-6qS{is zv6S5Hl{0_GOX!v!o|n8rLMR!SBYgwlKpK4-F!E6zsLuWOywgkoFFm}3w*r!-@M*xG zcX3-$=U7|&4zo&1cCCQv$y0&m5O;*w7&in3)i;O!H$4A6wwmT`!41y;p1!^w{r>lD z+gj)UraZ0lzjgj^u>IF)?G0sH)kt-JzxEeX*?oSue^LF{wERAPj<@edeyj?9XMh{FuJZ5K4cXy2b(*ytCj#9d(lW*z0 zq_>H^=#B34G*ADVmjxTif4$v0{qNqnv*rJ@DNl?3x9IqX=`5{FY;P8T?3w%yU|M&vWVYPui)~3~a(FE{+ z_!D&gXESi>r>nCIcKLbyz?=8~-a*g*mjCz0KcUxO{?R#?o~;(kiy?IZjrl+Q{_kyl z-L3myH|1&Ze=YuRqvd}S<&gcseH^~kiurWaZbEZFsvg3c9hUTCFE-!bPf8Pj(ih=3 zs8q#l4MH1?d>8t5lWD3Pt`2w}49!qI5tjgfuA8DS)md~JGSG9nT=I`3#NLM&kCyOP2pbQ?w0N#_tWH; z=o$h4hRdg<QP&S?VxZ_?#N>Iw(oMW*`u9KmdA{>MoGz%*`QOu{-~YO; zr*C`f{NIeHb^f=`{}-VD865#7z|izCnFsa9-l5^?iK*W<)&_+F;loW(Mxtr8jE9ZT zjQ($VOK8`)s)p!>rM(UX3UgxMVKz#66Kb+wG%agA%|B~9|0y#b+7X~Z{P*_09ew)w z-`$e`H|J@c|E=?XGv$9S#y5=iZYBo1i+Re!9~Ru^{>AmBhrc*?uP;41=iImhZFW}d z3S3)BIzSEmojvj1-gu8SU&(itATY838K;*XeotX6U;Sa}@#XrB?^rsipHDhhK5%aR zSpVqE(vtwCKw7^C|NZmD`nA)}{r8;H59$|wTKVyF(Nz8WTh6U_x7dYR-kM}!G1P)- z7huH`c@XuKL4P8@)Vn^lRq0G+0_xaLG9{$Phh+67-Nz2QG!|NnVc=6zx_w+I*#}jrelxH z)GCYq@J1-83_ziip{YLl`?VK7Nx5a#OY$r^VF37+4v`h49*UmQ*+SM$fC>2f>0dZ&>+waT!FezDkh@{&xw_7N@sobxv!dWELeTKf6=%DvASlF}5%6pRQs=DSwP$OhjH zA9R0CpCS+!o!rlHd$L?Sz8Hfv))1hP%CDrw6Fn^Z#Wk; z4(BY?vDi`FZ$&U{&kM(TB{DG{>5ok8-5ZgvhBlR?>8_1kF|3i?CAllWT&8nG+RZEm z^~vy-bTV7O%y*G6VSy}by0lh^wP^uXLrN*mSBv7B z`20Nh#elpLVSf-b;wu{pjc@~2#02{7{s9;1_#oQa+=`xT)@CrY{dNt3#H3haicKp< z14+W4AoTWPMltycxS_?QF(Ye;@x@W~Te}iy>{%avW@v|yph|Ep>TYvu^tRJiB5>v# zLyXBZVuh&aLK8C~oitI#D>H*&TSXM`rL_96}bixC>u ziy`NzLSfuvdu`+zh#k^dyc!+mLs_|shwiC_m-mOQ32bH)D=()W*~%)BEwfdoj(TUi zI-EbhUH{?+rY&`T`rGo8E08Po*1JR^l4T*_Js&+-dU%zTS$TG5>G6B`b@l6aoe$0v zHg)xr2lc!E>74!4d3=?~na;DP%hzt#FP{UM^RG7*v5Io6L=bj6VHJvOF05>U($oUs z4K1k*n-}`Gb}FevTOS}{tuNdrop!$egb1P750TOpMs@bn)vG7#_fCa84&1}Qlm7LD zJO4QSrq0~`W%=n{dG5qlO6wRM!_|t?C@tUHEo5Ag+Gj0+Wd8m=ZNR=mkgqRE5kVro zILf{kYgOeWG#J74McBH#JIsw7=E)71V7C+Su&GjLy!4(;p?U%|Vi#E@TBg8uj6@ok zn}A9fq6Nly?6!ion)#Szbp`%ckVe3z%U*7XItEB9O>d8ohC(D}(LATa*gy;}$8dXm zAjNWQ!RyACX0V+p^%p3S&4@C-(szg8#^lezZWMl#qe>q1jw;L>o#FX3)M-)OD1sN< z6$q4tHm)-=o_v+VuJ8ISEMHRid)*dPUP*YNuOs7e*R+1mxp3wKJna2K=Iez5jtbys zUZvebPLj|-DJi)-{06uE_%lm>z%|4ZS;YVaIhsmQ!DjkKKf&EspZ!?>NL6E=ecw6% zrIPwYI{%g)UUJ^Mw0h=}bL-N|{dbnH-r|Sj|IypKeOq74{U{82nkeV4WPGIkPu_Cfvf zx2q?w6WLL=Ij$`TOg&uPATa4esB30?%v%8wVY>B7b45aCl3K0g%UHxGKV_HCjq*(? zu>Beo`bD2cj2cA4RWg)6axbwF1}lm^!sNwl$U@mg7T$UPuk~v`ES$z^;o4b`5`;j5 zE3id}5JLT%llA|+z&b)TE^3#{`2J2Huc}IETi;krQR*%y&zVFUzNbrKy5D$!Sm_yBbM4 zQz=Wj-;IpRHJz$2nlo)ZoAInk{%bM^NCWwAdtdiXJ^xc*PwW2AO?g`KUrYXbLHR%A zL#Juk&+k4^f4L0PHlnBI^GalEyYN%?AoQ2Q2yFI|yBWTD0vVH|*>bg(&M6XFK*$L2 zF=sz_zP;dF{79)U3vddbB6EApvL=Zya&2E3PjFF6@utN*rCZ4R3KK0dkSkyR1^F{$ z=UjPEWyB<2+HYvS(jr1q?>Pl*gQvst8h@pGMBzJiDPFyCa^=sb>fb(f&OEJOyDt|6 z4`X_rCbJ$mCx2eKd8hu#W!7mbe2HsIIoSHSlS@x-6R`D*X9#W|s4`%Gx+od}mNOGe!jBw@G%4ok7Uba%3Y7q7`Bhqf%*OHM^Xhf;R4iuoqU@&{Ck3&={%ZO=!4zF zY0wI>5kVo!#Jl7742{+7az!xNC?pUDQimr_accOjCdffN-wJ z6dPxNB?-c8Kp$ROdV1rZeSs^9xjAr?DNtaOWc_tS1=aA& zd|9xIUZmI@iRm9%SPJ6*bJIQ~yi59JQnTyZ{I$hcv7MIw(B%i(T<)qm1;ScHR-Ucg87ps-1LJxPMoaNp?o(EfzwA3)_PKRGo0YCuqxw*tKwZ|~4>U@KuGNE!bwYv@J% zXZ`#K&RJ0VFaPkw`Qic#nY?jFM1*48s8zpqdg;k!2q`5SBRhi#jS-?+RO*)MV#x;e z2telnz2NB4|QPfVrujt%Wgk;Mg4vfJtbPcjxCYABZ^L}&Qb)WIa7Dy(pi zf8m44$;9{wFWBo_5SUzEY8zpe_f_(vd|Z%3d!U&d8o0m2&AhvIMcJDS{2OCor(=v( zK&o%rlATEus^vwi&4&MQFEVZ(AxjIkO!_y(K(c)e_x2X^y>nis=%lb<*@AvS0PI$I5oP z0)O_l$D}LDezgsL77u6b=&!c7#|VwJ$*xTCSAFd<+N0>NcC<%acVg2MPnYM}Af%>4 z*TL?EF76JYi7GIr(8blM2vJR1Y_>iWbQIXj3|a{#aWiTH~@)+x|>yb zbg=Z?l;C!)6Wn#`ZUiQD;uu*mrn-qV4T7$Gvz3x#6Vp*d5$L(z3%)urOaG(2-Rxqn zra|;X#Z%-Fn3T2&Uu)@&GFNeQ4-ZD7T)I-FjF{`4EmJf#@KPcq6>)s(A(s#-B_FL> zyArqYMotqX@VCJZ1qTwa%_Os&^vxm<6 z7g2MI5msW$iLE@!q7)j$C`8CHz@$p(jT;MK9b2#qJmxc0?>O{;&|w6jcZWqvx$EH< zHH5y3tDk>?O4QCl=DzdwUy$|?QiQ%iEHeUnwNU?c1&%g;K6t(qbeMBQz$5&;z=W+4 zEjS5I=k)A?6{XRg^gNAOUer;K?KeHU(-SiB`>K0Dt1X^TeucPySVIOWff^->q`UiM&OX&=7Yk4lmA< z9oUWlO)@B{LY?B=D$@()Vzo+YX@RN|1DOI=hqK?J0OuC{8cqano7T|x?K;YSnw+$W%T zQ$19q{0`c}iE1FuNGu^bdSW0edi2%L{=KvQ>}37NC-@s2Klul>y)^G}8AFG~Nng=g z7D8SnstH`QECI-fwMry_WALXD?mke2w}xUHjo;R#Hn4AvCMTexM7KC#Aq=4CxZ9eF zM2B3A-yQi?Ph`NNZIHiv$=_2H-N}z_k%4w8a?JxteL=+%+CgbU#c*ITIv-r@QqB(= zg{A;9Q-P`pGuYxh=Z@BM2>}N~h9}>xJ>V8(JJ8D02z2JBC>Ut5o;Ij`f!Se@;#sbJ zi?(+TR_yZ8>?|@uQ35H>UXTNk$LC{{=-5kv9n5BeV3E&ZAx#EDnhbzML22p;>HN~= zWqR`PnUIS}OGL`(3nrJuwW2q|!yjrpKt*Xvi2`U+>|xX-w9ADIJ8QO929cD%h|7I}0R1Qgq**Q@D)tlVSXC{eQ?itEh5By9kRfkn>QTlJ5=XWkO0Pp#a2h^N2v!!fp1IN)0S9_THn{l6)mBoLv;Y(AQ<@+1>ipN3O8PJvbCseU2?yoeS42A&BIV z!54BXe-*HJbLk9e#y`9|Rx4#-8O2IPe^qH`lFe3SEkR7C%Sd}1Y7J#fV~_?UG?Y2{ zt-Gbtfs%x^TVeZ@<|OV+DdsO|&^cEpTsvy>=CYTnp&pEr%J; zRuZT+f%G%Hru$aM12C?-Y%;E}u7;Vh2`MGC7K>~(mZ7R1m8QtsU;o&zvXV8>gyS<;TD_czPQ@Y%fOJHC2YHSP+7_|4f*M<^th52=8vv8K*!KRs&qf z76^+`RV*tpOXkE#V_Y%ESS>Bnl^N+tH7!=`Y9b8g5*DNi0MBxELTpX~%y!Z7p~CrTY6zSGu=ucmpS zu!?!DnDk-9K&_Fm231+it0*A$qxZmWr3}A72|o^}bGfK&_HSBE@At^Q0qYJ__z$cb zibUB+YR0sKL4wdIwP8jKhSXf0+gj{!YpKa@H?{ zRJ=e9Fe8X{YHHn(qRMNLmSmeljJ)O%o zv&Vsk32iplqr_OU9RO*|787_(7H2sn3oX+);SWMr2tWXILuu2gVWbVsc|*vXw^qo$ z*nPX+TXsWsYvdrGCcag*c~duswvQ1TjBX6xtpm&5)V|SrvMyUj!1UcFCtlhs>RZnS zKF#@mHy8KIp9c58boce@_rG@cZtrRNe{aUq^8ar6f4`9YPh+FW>BM-*&|kT*!Py&< zC=Z4R2X^i~a&CQuKE3qD2^ta%1>nnjrLJE4OC+eV_l`j}%Ssl#hhl?_qydsofmeq*wNN80A^ zRgOvfzGFL@PX|zwq*$`ynIj8XfC&iWO>E|x8Nb7ns605^&#lv&AIo*()U#1_$v&IO zMN%xE!Nu;e+#60XTNJ^#l^<@ps(GI135%nhpL$%PO+{D|ocAx*zh}BL3AZ>ZGjP90 z)rPCJ*IXV+gOVqKoS29FD?E-Mi&+L1k-FG7+?iZ_{p2k39Pzk$X)>L$6eo&H$|9Rb<23+7iUQ1Gmb#+N{ zO%1r3o<+hYO|D2HSrzVNPfc1>az8Sb*Rq0Hn%|MsJ*>p{CQgfU_G5zeTciVlItXbl zM55vPPfwilUoAa632E{aJwI*xIXzoMGtSwsRzJOEYKE<_$u~h7>Aj!oKfJwq^^|k> zI@vkSqib$mZVXq7u6+9ql-7!JQ@E6T;?B+bg)br6{_Ia+gFP>G%FnStOE=L)j}bfz ztWFEtguQ+K*7BVT&f_a){85dB3J!@$d++q>J9pU4TLM1)DZ_NGd{Y1HM=7%fCgsx& zzY?LqpnR)M&(z@4BsPZgsWdRA&8E3_z!V3#Z>Y)p1f~k)foum?9}#Hm^f~i)M&R$> zgw`K^@3s=o2BhKYS{iC>kC8Bs4u>5_ye-0O1dT#dNQN4R22UixH0;6vt*2j8TVy8D z>;B}E!ZS0&`7R8i!7LbKf~A53hUcJgyXWg2GY|~-U||iAHBuoJ+d#{_j`cjJqU-e_ zIYqFKsw;!^y@sg}RUd|K<(t8wniVifLso|=tVzDak6uv8upy@5%%H(8w}Ht(Wa;!p z>vNiY!s-9avD#s?K{U$$-qW{3zyEoAcW+Dow;4}M|JTz0ZH)eJT@pPElm1Aq`<_e> zKKUKE@h$8H((2X6?5rG{*hdyDl}t>%J~|A6@Sa#mI<%h1Kwy2E)?l~g4bTi#d;ie* z&^~gsxVa8|`w{0k4}u|jvnTjNWQQ_=xWz9f*brqLDlnQxMjK(iWdzFWpyRNyq82`l zSAuf}_0$8Ff9>*pxZ3T>WzM#JL|(GLQ5kmqU52YGKizYFc^7!{^S4*8ep*szUob$@P+moXs&JSNe&NER#$c4{7UHme%FT-&nhNSJ+F>z>8+T^Y|0nHS`TOeCyKt4a2@Ggb z^osTCZ$k=jG5}0pcll5CFK@@{pWI{F>M!4OzJAB~@H-+gFF$#A>B$4<-p?y%ek7w@ z{rK+c*PoE7TfX`wmnTpcpvI(Aei(I{V%qS^aa4E0XGv^SH?KuuiJwt*=f&im6!YB} zF@tTLs$i*UT@GhKyFC39(Q-0fU2skGYG=?UAK51qa(foZ%0s*;swwYOV;{G)*K5{(a~z2_Ps7Z`m))cvoz*7hvSR2Kph zH(r}#(xu7rgrvh0@^IPfPx5$$y*g z{~krD_fM^Sb9!CeJJyyl zK1jUszrf2ZKPi_LnXmKG?M)t=muA^olSZ|XLN&zFzG$NPPxJ(x|9L`9*O>BGc^aMn zJGXoCKX>(4dg92I zE!46|mOKi7q|5WOF^DEETOH)@qrdwDR|Os>HBzKzik@;2qv#!>gQ(cET*~n&rQ?0r zVj|8DzDOEvaJ!6R*P+uQ2L}XER>j1yoQ~2|aotT+D%CldE2cBi1LVX`gNIariXr4c zcat6uz5SS-v;vzz2;jWQlBIxgDx^;f@raS#xIi9i$bsB1945YIFv8tH2fbf3V zYCPi6tR&tTolfl?8XY@0l`tt-4oEoF-)|qcXEBVo5&aK7|8Zo`%K|jW{}2Du&;Pz{ zt^EI+^0dzX*7?7|`TvavIV5*c-^`cOGwK`p%E`{T^emy&i)smqhN*NWU1BEXMz;=> z%Jy7EeT7KeY3$`OB1adGg|t;GcIt3;XLhQH<3(6G#fP`#FR%jOdS>VBs?DYT`o~{6 zPk(SeyhJ~z(=dlSFfEzZU_0`$={+z_DSZINNcZ-U|9E=Gionz`ZfkEkBVQ;? zeQnXVQA)in&oZl*l;1@Wq(~Q`RM0X}OZl*KqXU3GB1kybjBx1yxRrl|H|r&DS6suBE%NqHR+Yqs%*}e(pWOtZCFmm z7#MNyQYBB-c-fwZ*2+ni6EXtl8y6Gfv}19JoJSf{GH!PTd_X~jw_&lwlbEN*+n3Nr z*T%zPo;Z;%GMp|xoGvQR!=>1 zPG4HNcMl;!01)*7Z4c3LN*7|J$(47WEr!&QE`np|TjmfQ{C~O}&0;LgjtO#wxZSq8|h3xx@V9 z2W}+c-RrBTFOe;{dQ(bc%Y-L_%!~lh{lg?vcD?zKD5FOoE%E;NpDd3D$*_#Mk}?KPeEzPYBe1_UY2Y?>M@iS-x`t_B^3( zkFP>j;>TAZMd;UmS^D`a(kKrVKNs^vs`H_3MfskLocud6H;41VP}?tIsv%((RT7kn zG)p|yKpwUiXNu`^#wv242Jy{3gxq)Re8=g;*+M^XoHI#Q2NeM!*$@{uR9P&{iZ%16 zpPbmjI^rY-t|r4L=T8@%_f9)^A1#0Pv2*1cntFaouapiEf zR053~Rp88mRtJqv@*=rOT$L=aYJ=|HyYZbiIp460H^?9KwsUga<4O2mCr_ca5{Z=f z9a;YCUzZ+3C@-XqA%8zSNB&-VbOA5wSb7R%NpGDk0zdz8L7lUo0_M|&u3tXKZdj-H z+Hdi6{}!40OH5%!)=64Or6|Wc!VB0{1?4y(+ML{0Z1v3f`qf`>>1BLSH3*PBfa(JZ z^Eo@YP^?D#y1NZpDz_)Nb<1|nPFHMD(8*#3UAuPU#tLFC1lQtCfB{j~S3Y6!?KD3H zJ))m}7*vO6Oo$|KmJ};e>HB8#o9llb)Mc;8dh3H;H+h2 zd{`U$>1@>gc%$__2Qy$L&X}wP)lRsXDaM3qyIiOrqat+()B%b>tLS`aKw~VI%F>f> zR&KJ`e?EcAN~xzqFah=DR!y2rH`zScL&V}?)F+yR9hCOE=i5SBm&H>-%K7dIlP3U?-MA>T*X59is(gcxoSDNHPB+s+&J zT@=qo#(L4jBfY|iid{0Iw6L9E&+JF~-OcX(?Ckg&ChWPAH z`FM7F%?Tr)7jHJ5n6fp3%p<`ZV{?NEs_}ZZk|n#>Jbq>LK3mc&t8v@q+82_KOWqoy@2L8X>dV06({y)9lE&tz5d0PHIE&rbl^8X160OHZx z4Fi3og2sRzjJSDC@m^^*UWdA?@cgUj^?`qb9IEGK<-ZjsjlY!C*!&e|OPh)R5k5aG zphx=cAG)KwP(2*9kDBq!lsJp>oXwd{27D?up$1k!G%c%2wM|U2p74sUdWYn-q@@fKz@zNU-wk2)U z7k#F+p72i)|A)?!&mRERApd_)?+!2jw|!@e|J#hG#s9VVzm3iR<#oCC^`PEgtJ=qv zH%YRTc4iW-amtr{NxNDl7*iP(9OP7D`ry=fYIJWZIkZ24m$IjNVwmeT)!S}azei<~ z73TT9q%g8LFmNhz!5PXnhW&d#MNR~E1SIp!&KJlsMA`?mvdq5N5blYPeK@g2OkHyL z)x`dxl;>#Y6;xk9y8GjD@R-ZRCw@z>9ZL-jPmjJnG!2p4V-v%#2|(0L<{IBSX)+w8 z`tT4`*#~>b^MIZUP^Va{dMh1F0xv@L-|(y6N`&Z?J1fVsgcnn5CdP;MK!3+a_tWkw zHEpV3?@Sl6dD>mIs>}nyAl>=0xSbNuRHl9l85O|X=jng+Xn#~oni8s=5Eb9Tn!a8Y z_&wq}=COK;H-C063a$y@m*C?*CmU1ff3(;GI&{8ERsVP86Ax|_J38uzjWH_{iP57& z&bXz!%`3oTR+|gBzn^)J#JFcP8#&4gq8t-8!e6h&^DD^*VucTnwaE?9!j^>6f$C!- z+0T?=P+fb}Z*#$A?t92Wy0=o2ZjI4h(iot--Hc!$S9X$an{c3{P3VP(+i8gJrp6HU z&FKY+TWc~`o6quGXANL_cP&80tZDL{73k=~%t_33$g`JdB&nAhqK95TTX7;XdG8*M z_>)Rfz=RtE<{ofR64|5x1PX+xCsR&d*H2wf)mz zAnxu{z@9MmS6X=9XZKZ5zui(XwT>UXHf-Y%gGTw^~6XkL?qTp7gr13)R4qlk&_zXS=MQOY+T{~4z7zkEE9hV=; z@{oP+4$vXdhO~OVyFe=!)9d+j8pZ>u!EW#@um>=138qUn#l5nDu#C(o;#zt5cR=}| zNV>Zyq(Q3$aHRWR52Ox`kBz>T82fE>EB)rd18iW79-GYSA8n(}NiGHeidK(jE913X z&fj$dOQC}xFzHOPFt}^TXn?gc>1vwYCC_uxx)U^}9qfMij`FIyFISvN z=V&5OdOZLp#>X4n>Nnqm@CbC+eDZ;F_c~lT`S6nLoeObA)Gt)NAI^;~QtzAXx9|c) z&t}0GK2dG?`n%|xy7cfecmG|(t+MoRHTfB+H^NeOgE1_I3>{o~sH6+^*v$izkOrg| z^?V5w%mNC$KIYDy{-EnHsxu_e=YfMWBq?*%AqDw zJn;IS;_=CGeBvIsxCPYCcCh z!yOXb?nNb^11v*z#QW1_!j(n4yLNsQ+oX{QmVR@t zSg3Z+rSsX`V*hxN%wRH2HtO*Ie$7e_TVp^_1}s{plKl_6zh`^t_`r#X5BN0?6(INy zG@bcBgv2LF^Gp{lBg|V8#xNfmD*ni2NY9`F{o3U!c_*a~R7OI}(*gtLKA0N81>?=& zuQscM%P6jLBrw`6m`ts031t`{tm%tbd$Y&w4DAwyCQos+U0aWaC}kSti$2*}Pnc&d z{9m&cfkyX#Z0p&s^MAcNTk(IJ^0fHB7XSAG;{W8|d&ee*rc+}>dlF-fO#%TGJv`?z z$|X>y6E)<>v=GLiS=G9GRJ;0hiIog>mzS40^}oSOW=j|!!!^5JUZl;ESPfpRS#CmC z9Ujh)>w_f4-b9Eo5gao%6Zku}+(YZ-!L_H8}rw zZ1dj#xxH^k>-^u0r*;0f&i@U*|HDW+;7~p=o!XPwH#(jgAKITtP7VzxwvZFVhTDu% zhek*CC8m=pGDj0r(|D{MsitOfwen~l5@{cpOk;}14sxCypzo|U@i}H4Dck9sRZeHJ zwFT(-K%ex-Azh4e%rM}EWgVe~erQn5mfmY~rgy-SRbNPP>ZkJ`sZyN?VO zqul%Zz3;gFTQpvRu>L+RSDDQ^r(I}_!WPXjv{!FGb z`-`MA`6A5;psiJZKlwgg#2?wC_MRdkgJdjIG(9a{T#amBOE~5ltQ^z}cV3 z#nFV?Hl&&#E>b#4*ffYJSXWPiGR0(C60Ig(tD2GXOr*2Vcefv7)Sua?rI&1!HVQVwOzoVk~*MC1sM6 zDk&q!`Ve}6Ey@!@klrpJsfCu~@wh&RGd9>e)^oK-3tliVUqCha%)?CrFiJeE+8Zt{ zJss#a#xatkBn{VivGE8h0p)OxIUyAT^MFdvRtfjO1ZX29hM^o3-&zD=U@UtTvcpK5 zkpcz~F`Xg?5M7mGx3jyESPsnkjdSEI2e-pt9xY$H=v;j4eEH=T?5FYQo{`Qng7;jl zfEC(ceN^{-JT)?Qu9{}3W;~dcxIKUpuTi(LDE%7^3glNO0_wCl`$P9Ud$;JmGZgcb zf>k*2qJ^%P=y@*rKcpd`k^lcT{r=D1Z9Ogj|IK+?@_$SI-$?)ek$qD`ldp~rC-;p_ z97^onn;4!>y()D4=C6vkKchP%QMPDYFH5q z3XXsY+;6%8hV0XTPlLZz8(hQ&mF}7vT=Z{nF}T4I&K7Ysp1> z;@tzvC%zMumy4#CD!%cz`hv1a;hHk`E@Ou(t0a*cZ3|PaK)7-X_V8soShSqe*4PBT1hQJgc!SA zT@*!>uTwUtm=i|{FR#WiXXgv)998;dJ(cKPMEldT3uIE15A+HyHTZddy1Ee7tv>0F zo`0f0jFF@<%g5dRfa+?`Eg`imO(t?MtAG}tJu#C}pX@NTEY*3|N(ZyD-#U*rKA{cc zEqNRq21{C4%eq;*luF{lCs9N2Yw!s)=-i=OsYk;DcvTDqBQO3oo_EV7eA8jS951c9X|w~6J*b(bBJg8RIMPe&XAf$f4q^eS)pB;GMw$Ry^r4{?B}cg$IXbI*gt3&h2&i8qhde1WOQ%e}shO?^ zyTR%0zt;crZvD#p%eNkHF(3g8Op%-+mEaT|&qyx|vkTzP5buk1$Nzm>K*_!A4G`_T z4JJ4_8e?R1ipUm_W$fT&jNT~RyQ8~1*1J6bBF21_qmg04P#gw6rdFW2ZQBDX39Bal zH`3qbVXV5SEw0j)E|-hP;+3QGk@gt1L`Qpe#Cmr4L+9I0kVMV3#9gdfNj^oy2LN!8 z3gmE>@H4M0hp>3?NN+>JD$JuvvC4V$VCmsi=i#60H_oko@}u+ghv?G7$4igjbH4w0 z>FI}Le=L9cbmiRN5EGXkUVxqP@O1st`|WJ7MVV1xcw$hIDfpt)q0`T`NxcDOejB2U zqy*u`pk?|^n-Q(L-&`72#V?yLEs9j1&|_LS9*;+)n}k(@LTJzyFD>CgU`m_H^m!-` z9>;dZo0UyDS=i|&f!D~mC@s;h2IcwClSse~i*c9Bq$GKD}jSLjlOh`@Y9_)qTa!NJqu!)kGq zT@vZ?de&~O=}gA`$XZU0?i(K(i%KU{d(6^L0=JngyZ2G$Q~89OxmfdxnL13n=rV5R z#*F=8yuX|%1AC-1%>j!i7(g>finb%QGJ=sk$q!DZl4GNjZl=G~$iXT6V}CLX)I=J% z>fu`XC^;gfAN~EKh2h#vc2)zTPKeK}=`9)OZ6CwC5EG|ks@5kDr1hCEGuRE8Fi%qw ztyum1iw5LE+A(V*7!tV%f)zk8Iyq$sK{#Z}F=V0}Y9IV5he|i{MykP^So<#3H>n>) zf213kI5gfE?E>NYW8FlpDx;luN;Q=8YsNTh&F)dp7WD&J#@0#IHPe+XQf>CKh@-aEbe&K>9O7t5FLFKlOt6$cyo%I_Xmv5N}Wn>o7YDNbw zXpBF*DCummBI6xPtSYJwklb)IjJlHvtoTRwaWG2{zjy9EavonLbBFZQIr%f%eyFc3 zsZRg9+XIeyQ$8=XWDUe!s>$C7x~Ug=evU3w6K1a7SES+|1pJl7%YdIbf7#zZ3;v9S zDu2NzkS8UmVg+8;z11MHu+X2+N3`M@WVF4-L5$tMzcZ7uGUO2wEU4S4k~IYlNm4KQ z{qk@ZQs`0vj1(y^N()-Yx)1Zoc@1J z#Q)2GHx>V{Rg`UANG%7AF@}c7K9(N9Xoln$`6{Y0^<`5T1>~{^v%=j_I$ykgGNhcZ zSK@#tN5Oy>q~yBTM9PAOc0a{9p*#&!94NLpIoU85*H7JD{)|ZiG0c*>^5^&9)!7Hj z-+k;{`Gzp^&Rx8gNwu%>Gn0Ex`P$+1qzANue4ny-Vb-1V2Fwa{`qk%1-%_DQT{-2h zW?#bEvek+7wOA#s+Zm~rA1BgbA#-3zH!1CrGo{c2Kh^d~lJk!(_$b86l*_ za;=W;4NeU*=881U?p${m)YwXf3R<{BS4EqPX!>WR)82j8VKPHVsV_D-_k~9M)_VT0 zh5xH%n`@&{{)g>54EaA>_y2Cnv+I@P`J6>owL*5ds|$;f@|cguqQ7@X*a;D#yI^;u0T^h|+QoGg ztd0=S;iI*yOr3^cx9&PV*uAUkIQy{(KNi^!Dzy*(rklLNKk+rn?t?qvJ^P!&?BYOo zb@9ecJvo*wWQxb8v(=oh2b7s$@4V1h-bp?)uZqNze0B%}mi>=np_XB=c2s@YjF3Uc(6?dt3T z!Kqje{NJ`%cdVDS-e7os-Sc!%=_0HQP~5WCp(K4NKzrII^G}XbyaQGgvUb^|;X%*_ zzRuw6>Y}d%7`-coQIRA2)og)IMuspGyCdCl3-H;WMPEzC;q594vwkRWyxk%N z=nRM{l%|YMpOxn6Aj!gN86e#i(Y82c0QlOwsw4kthFqcY=;60KL`*e0Xihb{tBZY> zDwH5zoQ}P-hm2bMl4eF}Bg}${G^oltp-!z(td@62fTf8HvK*;f{$Dvus?~O+R;&(~ zM}Xf3SPhyp)#~Z)E*&Qvg-kxeb`=tXc{@4Sv%PjFrLCU7> z>Y{%Kq1rJfooz6x0YmGLYMZ=_z1!D&6@OE|akh77{o~tK{gW^2H@;kYd^H60hO-}r zPNsTWl(O*z2J$=jF-2j)J1~xMj0>88$s&=>7xi(M=v!+6{;n>TNLiZSH)0*t-zd{i zEVBa`&QR%>R0g;{w~X{ln=$M`Gs~GLf_1)@2h&O8Weixwp0%u^f$=&1;(D__n{r!g zQyM04S67aum{&eXucg^1G6W{>sB}>YM_6~^_pYv5cJQAp-YiJ|uaa}T@?1B+-~&Q_ zi2Gl5Zrjn<-PgMV?tkoq{LiiXUpD?}y#B{$XKGb22dw!b&|v+~ww*h+?GWp~Z70E# zo}D{-TlT+Ac^cUNdRz9tmi_O!?0;_z?@1k;9vw?cX+Pw5Y6P5?y<^Ir_XNDj_hc(y zUMIDS>Z><;dPWO##X-3hLeGGv#TN#(m$NKEneF{VkUdlOzOF3f;UzP-P1}{~8?!S> z#t>BowrnB1Mu}z@+yyK+Fih6;poIZ=IFMmB67cg;uK=HpX>TTrnGqVSRvuIgj-*ZN zP0|)=0VbSuEQRXGRMk2}{}_cdZ}8sbXUMk>QaWABRi(Fjj2oZ8{(iX(b&4?zZOSg? z7G;~D_%d899?sgPPw{x%8Y;tOu0*b=&5|CM(%jijq-9y|gh3Lbv1sx=K1f&gIM zBot?6k>WEMBY8)9Va?SFw6}3qwQCD+73PTc6icSy-N4!!I#MG`-k>QQIw48$pTNeb z7jY&#Yo*KcHPC)kNUi)#7Me{HVh9X&e}A=B%Gq&Im10IAowE)C;e{?#UBh{G)Pn)fz0mBwUz%&g zK3*#0ii0#oC;+cBT&z(OJ-jZ?k(rIc47Z~hQ@PUEnoO6$+tw1>zf!Vi$&2iNq{Y-q zTi805tu8%N-Yx>vs5k~ zg|yP85ZFvvBKm%g&jMgdv0PEH%|$jqo6c2*N^9U2LnccqhA;GDc)-ZbiY1czPRN^0eRU{4mkDb}rZ_v3rC84Q z3W8z>ngRi;?=2Ve6VM1Q4|*MIYt%Lv#bq!?u`{l(1D4E`g$F6fj7ept$n{z-0-yT;%tirj9|3eT9&PFg+MQI5uWzo=*|& zN7S2X-P+3g7NWA=`w$?M^~w-h@%$@g0=Y5sYG|BGGZyYN|4C8zq6sCY_~s7+qEUzw zIs-RF3*rHFG@Yy2{5(=ND)}{Mm+itV7as^cEYhf=IOSB;!o@ibT`DLTB$^ciPB6gv zIHa%70auhR0O5nsBJ6zhL%W&H@D?c4*>bwFz?nw=1ppH&isK>O z5ZpA0lWY?-E3^pHxImMS|QKM86K%7sIt<0BJ? zQsWcj2@iUec{aNf9*;`TNh#{~%h(X5c5e4$Of(99ptQHV!~Nwv7W(kL)Iv zX{`q>P6lyLkAJkbdQd`Vp5(khZX<|Ie5*(-;$E_eqb8+~J9jb7O`F4V zxhL0KS5Gl1=c^PVet<0v&8MZLN18@OJ(?Zkph$$vO^j3h+ z6yNmu^k(B!ksur!EF-Pfy3Qjasr2+;XPoUqrB((#Zn}yU`C*YM+Lgk;!Iego>Vpr0 zdkheUg3V`zaMom4^jn578VY#NPE(d%FV&d%%2UbQytUJnQ7x6*7PL)0(b+j6P6)5a zIn5g&f%^0jG#OXP4=eacRy++c4b|b7i#Y-k2gW zj|yD_ZFLwsr)d{NZMSNY&$LIu&h9h<+>d9GpC~o=#a%zmpdyE=Z!gp zJ&m_;z@Frmd$6=XW-=Lwr15T1uQfFS@mVw%W&r_P(rwW-vN3MRxKpFDg16OGo-MQ2 zbHn(wkaId87pg;sjmQ8&JJMN>>Gay-Ll z=lL&cI-on2;BP)Rg=8Y&5LG;IBWhm-2*fRY?B#^xdDhGpie zJ6JL77TM66r<|eDC?TQumH;F(A(UF<+$t`UrGXB)HM(<+L>nsP04mOha{H)RA##s#@WgnN`=U*ZCL4Jg)d?%0e1J#QsrTFUcscC zI!qhPA%S5jf@V6A!cpcYR}q&!z|5B30Bu{zm+co$_T4dFleu?u#&CI+rtmhaPB-}n0U(2`FYOMdgMWy2nPRjVZ>L| zGS^1RFv9VZLQ3b-7?K`B9CPu9h%kFeZl|G_8f=4cDk6H#vl!^Z8;Wi~mT3S)qUWp> z7!+5ca1b=7FDCvE5oCEpc?HVSnYR~7zBA_@u75+J8EMrg7V9yYuwWUe5uJ; zZZXpi8Vz8Y|L!^NyuM3vIF0BJQ^fAEuk$%R=_bgb}oH zA13;RFjnrEibSOq=Ap#l3u*-(Pwlja-xvdWwRK2zBHb-KJY-qi!C&jA1Oa;t(tgI~ zDq$_kAw|yF#Z0HVC8Ke~0Wyjt844=#4+v2pT2%{2FeH&&YXaFF*7J?2HQ*4K(g^~x zHtT}pAyyNnYZ6^F`}%OrF(1!cy&v$6sxoSx^aKzFwtfeA#G{>&{%T!WWqprtQw+}6 zEM;IX6h*G$-Ayzx0|6mF)qVD&-QTfh98tzG;+~z&%#pcK(M$g(&(p&S5qdREv{E2R zADcEq$Q72_pV?8_{dNe^aj4-^t0Q!uY&txn=MMerPe-`^!=0T)hoqa+GtNNy=Ag7* z?SY2Hv#D+I-qD|%p4Ao0&(_bPK@B*)G|KXYe?mBPAb(BRQt5^~4L-w(L)p~BlrvK% zj~_rf2=IyV{1;Nx3$i2bW3U3#k9{fLT@KASVz z($HbaQkAhm*Z-i-u1|V?-tF8tl4d-R=t3Xx>BNM<%NnYVm{d=Re?cR{9SbtU0bZ#4 zX8X4c_dhH$#?0eD8l*kBP6?nL-e9%o9M+pE7P$oSoVIJOMIP<_fLOl$XApgmyA+^v zT)JM*;vl&3*0?BDs5F`r@jj!V6BCGGt)MZBp}EirG-V|PEL~-CF;8EwqoA_Xgi!fk5Dpn15x z_Ve}pOPydMD|}ZxjlA#-a4;>ocmU7UoREtqD`5-@A$b;uYz8`E>=np z{V%uLT_ov%Bj$i_uXD`@5q<(twD(a51?4dF5^CA2jIHHZ;2QT4QMW-R9Lo&nc+{%W zkKxezel_TNxshK(+2B>*lN4K|R@zsROAL;?j{VhSNg-u?Xg_LgXm`$RUnVoL0PV(o z3%~!F;*$12xsKYwpb5J>EktoHAr^BiIi=Z$hB>nI3c=wh^yagz`h)BpcT@Jw$gK|y zY6BHy2DHmy!o`WZXNd`ErVPXs<11ln)-76Lp!f6h-jNKa;M5dxN5%5smKh{C6WE;_$N-Frc`FJ`qE$ipnhnHK`*c#K0Nbxi!p zmsUjA%as*O7q$9WO$D&IP3^$BQaetuZf^@`75#nalwc3Qer(1s$hkMD0r+;@U2;`v zC@wnmX!PEdeJiZ>6LQ8wdg0vM-~ZtFf~?fw>A&gf>Kl&aMfGZleqwGnAFpM_=chQuRg^kKJDDGFgqgJlHN~6T6sVxZF)HE(X z#*{IX`S^Mj`nodY$X)sX>-F7yUEDUdw1Osx#nmUOU*U`tb6 z$fAWiCJ88~{R=gHDxBb<5>aqbJ+WUPNUsKq(Sv>ae$c6!S`n_~syx>=s&(n@@~4f3 z&RFt7&oV*9sqmvmLdU!6@EOs?N8R=|^OL8e@}=oV6A}<*;rKCdu<}Bnx4T=CC*b`^ zW6G9~M*QS#&I=b0O%#)1#jtC{|2SI@<#(#amT|J$baHkR3kAMOk^l zYDFm1N4r&#qUXzn@`|&U1wQ zr*3v*XD3X&L)cVR_8%DRde_}W(l>YOhH-yo?yoG}HK4}-ZsM+HL>SQvThv;Z`0hnmCtCFN4Q`T}KK#93+e>j5VY=oOO2XtnYR-yd{MVj>HkJ)4>hn!X(TC zhd3G|b-~1L6n#wvhc_=u}R`tiI`|Hc6LA?Pz;Fty8Ap} zp5F)BWz;MO;=A${;#J#clP6pS0xlE*4JgJL2`gVbb0t8!pNlF82*4t4ngb~leDU({ zfG~zdlrGpY+1TUGmm&v92P0Evr14oUHm2iiT#XRCPIO{h_SaZTcN+eKQmWV7%t4)l z012P>z)8`T-WflQl*ivI3Jv@Bk^+WW}DVJV68hjUUJT zj%AW?bU0l-K46l7GWCT^RC)!|0RQ234J!72t~~@{)lSwyZ8zE=WxXhtd%F>}iEk8ctaJGBcqQsiR=oDDG(Hrzz3XKeMICl4bxfNX+%0k%~ zT?j%|a2kFhD|xpp2Bs~-N4YGIH?ciZwPw$|XA>zf^7qs~guuyJe19%)gyc2Pz-Td< zo2mnwZw%1%`|~#(OPE$7wxpy?LkzS5x#SDs)|a*;c$4{@p=&sXaRpCM6(^J@VOTEGS>cB;{uGVu=vX=LK4#aE74nPf1&EUAn;)^KjVo0KpRgg zFO40R@?*fR!SFkZLUzZ>c<-MB(E2|{>37&d!~d)D8~Kzyli~pUR*L%Ec4+QK=S{fm(&00EcIVE{7MKrw>pA}5{#P&D6V&)4q+FT#n zf9_W+)yAe3S0yC|2XW*M8U23%MC(?ghBFEvu9#iiz;y0NcVnBHEQPTJlnnWfN9krx zz2ZXShM=QoSkJ0pu3zGLp~nntX&v!YBF1eyOu6Q&EM*yOjt)oKuFe9IA+3?%Mct+X zVo1EroqrkrDP)OYMV+B6$1IC%EW()#^-wf}U3?PieJ|vG>aPx`pLZ}P&r9sVz3Ea9 zg0Ee*Olroxm=H)UC8HIl>|$11Z_ZMHa@Us!gi9ao7Gf*rewHHR52o}df=QXr1`*u4 zqR)~)f*;({3J;UV`p6|Qa_pg&b|3xAXY{nyLHX>rccR1$utK=7Y%T$;Rxwa{EpiB=e)!eM4rc^7L?ARs& z^5WF2Br`jbGoyM6_kV0M`ius>dVs`c-z_!1)%zVE-EGf=rCEcAXhlU7LE#ngDaZfS zPIcNXU%C$bx58J!o~be>Md4C8d=g@Ui{H2K+JO$nvc&OKw)#@ntPA#o0JzxgqN5l` z2yFIUe^UQg{@wz-)O}w=w}2mO)EU2jI(yJ2;3y(>=cdb0l!dNdFMJi;7Wf`4+DLy+ zRna80*qxESMa> z1TGBb0&{S3)zL6Kf_r)Cfjdk~Vqw2$^->x4Pj+QRg#Qy5iu{L$AY+V5Z7+tVe=V_} zc3_QD7nDFdp(wCuoS}Zz+vM}8V0(I8r|$PE?xWN0ZF9I)@wWQ>JICGL&ahNf1s$%NE5B5i`dP4 zhwFOw8cAr?m+_pGv?TVh7^XabB|*>e$faK1eZafs(MGnQp6QZEWvs#L8m_Nc0d0<92gRXqn{yQ6QqyNWSsqOJR+){ib+DctxkB~j1(1l2iw$k@OE5{1p z?nvCm4uq1kD5epa3Vn_y)NYtsKZ@V)JhWa}Q6I z=*0FDt9pl?)4 z9*@YhgK~R+0H!s#J_}`k-=AoImSs(6jCg!-yZ37L_~iMG1f%g&0I+O?9Et&!ivWL% z*E4i?HM#!rL|@$cN1%ZI=Ziy#(%!J77bQ4zD7_6OPvFHjn&Du@*tpX)CPM88pLcmW)ngNmyD#D(_8Q_WLAN ze0?0Cqlawxc|X58!;wSgNWox zD+H4;gDzaK*_TnIx`Ak@_w4$G2MN}=Du2<~bSgp8?WO7SUQ6LOq6e#TpwSrPQsQ%% zVE^`={c}^yQ{6!{;~ojp6f~GtflxmIw9fESKSLYBu>_`?+yLsadUsBKVSbUc9*a$XFXAJOsDLKx7Gx+EXT|P)ofNb0QgAgz_?^cQa-ZP z2kA}6a8~k2&kh~}tg<^By_t1!i`;Ou$5YmA##!seSy10dx3~`!jwixFpm;t9=0ZwT zNluy0pR#7?rxMbNd2Ycp7f9~BLuh#fi6lT_CWSDS_b4E`ZaVP*>hJ;1?sCyU21Xu4hi>F<=< zg_#_3A?3S1h5Qu~Qk1kh-;R$bvXFDY7u(D1+(0qp zXQ%DT(fT<4Mk%IGv6gKWn3zF$;-(Sa|;Io z!WTzdQV1c+zp3z}ilbUKog>gZwck|vNrmhlznJ+AIuG_xjI-(MxXrH|_LbK3<}PVb ztO~vLN%a|0hcDW#|M2?}WTzoqW2Zc`qxalF&F}87;k85^@b$foBLAdeOz%9K8f9s3 zL=uCh_e7OY3lp0%%R}KmzDqOAdc8u8)fLGH7nNuW$g>9K_5RmI7EaLUYCQKsHs_@!42mu7kg)X1#{TyG>#>t7<(~= z8Fg4*7VOB6g><#7?%t(Xiolz%(LhEhRrsv0WFLmQzLB9YUFz~{nCD$&8Tu2?g0pPeTnm1$>zj#hxKt>ge zLbl_;t8qgIv-EE`mPdcrUS!NlMAl`tgRiCoCHG;#y_?}so9ZqqZ?;6 zz$>}Ay8LLqSEjV=v`m#72lgk_ChKl%zr4J-9jx6a^LnTRu6b5`=3CSerb*0P$WH@n zun0Z}QM^A~i181zK0PuisMUZlgiMwOlH{gHO_Wcclos8Ner%W4RuFBvA_2+XGhV4f zwSfG)aW)y6os5R)NS0yppI&O(O}Mb}6rD|8q^Y^=C+ ztF&sJ1J=s*8=eplds`f=_jX>StY=pGX+)iQNq1y_BgMXB*bE|OVGTOKxh|Yo&CUL- z+rGT!B}^${j}#{uJK~oz-w^Z$;~uO0S0GN|n@I&C88Z8iV9QzmX z%YS|BH5#_{rD&pL<58ljrVR{g8U(Cu~w1g9~ zEj7#OSCAiT^qEwZOMwc|(slJN3HkfPs08qnz^}fjs66gX`snp>mB|`=3U7&1x_$rl z(#$^pOCXdGI0W+BB})m4EZsPz>kk_mv7lQ`|Gv%w%XxB;wTJ0r{(yPU_DK-q3_K1o zIPNS1oQNzX*pN{T`cBhQ0Gkhb5fg!f9I>pg@i{{7KbSo%)v;Zk#Kv4O3&-x~XC~%%3}{*n zi7HkX!fAT0$tG2$ZECZp4=?gb$4g?2HsGEI0FEvx4`kyZl9xzgS5l(}&dZ4AQX;)7 zS282~3RDMijhom2RZZL{HV8A0GsFM=l5zPyni{jXYvcRvk{f&Vt8?7q zpB-{fB+*_|fGpiT(FfbOzW3s7kZVcL?O(xrxctDs&3Nr(s41;i=4jY?MJ=2YO3~V~ zeNWA9tz#!_-v;!)#eNfOR&ZJkOtQ?1;~|x%9|qpnRPzV*Qy~`sSNi&E`n3BucfV&| zx$X_`AFZeqdV&0woqrXSC2E3iJF8@vj*n=6_SKM(FlJZ*Ai2dclQx!yt*^FfQY~#% z=TH-2)ss-IUC#JOu6*vq8cUsSuFj`_jQ2I?{6LDz)c5faOSDv64I~!YlGV+K9Sbu# zsh=Bn@WXjeNt-cgrfkNK!;C7~HLg*L`So-&pH4YgnF7PdW@x(WPL?_$w>sj|K-2VJ5%Doj@BjxiwSQbw3N#V8HMk$PU zGy&0VA(k-S@8MZ-p%U8qG}^%}6y@7C?SS}GvA%o;_WW3Jk5K@l+8jF%A9@hSH9+6> zhBaq5pj=AjLBbJ2138MaUnw~}e(T?2F?0BjT{@0HLHV8dtyIM|^Bi7CVlqjnG+ndE z5x8@O8jSp}@H0Cd0jz^KMCp`PR}Y!P8aier;r`m5r`WANFSO}bWg-U(?ERpq*S!@> zVNsUrE^Da*3{7Y-$Q#Y}W4&Kn{y%h^7RIn8sP_(Z_z27)f|OvA6ij?`&j-W&F6u!; zD_%LQ#W%+{EV@M(BVHiOMmgHUyuvD}t$@uM`KWpYpA`H?pHKs*PgpYb4o;asm`*z0 z=>kIr9^=SGxB@rSLL9k>vMi{>P!y1E5j+e#g-N>Z^q$!yArq-g;zFR@u75jP6)Ug*c-^>(xUSCSfiwTT#0wmbK@EiNxH>?}S;J zIo$AXDGryd>&Lg(JhmD) zI&pY@O&G^e3;1+;oj1sCx?a526aP0^;LI>A829&R#$g$FU+Z#s`PTdn=ST#vrz*j- zxmKDri$SEm`to>dYhOe6Sl~s%-e~BkwH=9dd zUS6s9j7comZ9-kE)j?v`{Ywl;XV90bj!s@YW9G&v_p9`Kz^sJIRLY&lRO2JpXD@nC ze0#YCs&%UP+K(tcv0r~Lu9AxG6F?WX+`jK^YMy}YU-|SDkH?oa$!(#p^Q)`Pf)SwI z`c@=xJ(((JteCbL*EA&Z8@zr{XzxGUZOxzc2yx}#_uGvdBC`zW>$}OP^We{xJA4lO z2onN-+m?;>)&nlDFRvGVqpc>7#?DIb#Mmd7?a+uim&G3W?c z=MZLsNf4-1XruPUD)hy|yz-_on5u;Q7DQ+dqC}oS#)fxU^|YaN+96H|mRMT^gRb;l zx*7Z$i?|(pah=11`aR#Hy(9uDI)t~XTBZ4|zLLjkOq@nSl(>2bs5Q(VuKxbnlU{Ln zK@C+UJe&hQ?^{^xhNE&vSn-rm*~QW|!r`xP zUf1s?odlm|3H%N;8{Eht{!y(0??;=)KtKtcOrAfi*1J8Y>hJmT>*IMuB+hvY%`bin z+AVui*{SgOtaG5%%)rCnWaD7xphZ40*oHv3{}fVIe7itOI2BUO*1C_K&&=Di%Go=SzlS9-+X< z^;%<`RviUsz{TMnC0JRjMvGCzm)}cD#H{T~Z?HcQ#m+s(k^PuVD;3sBoX;xorfYRP z$W@*%s5s4cU5!T*)Z`py`%(g_A)J?Gx^+-UtI{=^7Ik~klA4S7H>Z>!k{T9#ld`CB zi}?vq+a-Xb7)bc)Z?WBy`qBEoUL(q5pz|U38}cV^I{0K+(CL-=(O96XPLC)qOv!QL zem-5yW7F?#^$Y2Y!#Q)FtoW=zRTg2B5jl5(TpXAl=ot&NTz4Q>DbTaAEcg7aHT0oZ z@fhg+>&bR|=|8XapA-M6F9&)cQEb&SDz+s%rxNj*UNYm%%&isqL)ly zB%QrsG$xhfUcP7v!b{ZF?b*I8u%g4!cg=F^tJU{-`g^o=V9VWkG$4YGhdTCmci-lW z`&hmMZfB3|19!z?M3(Lk$n9xvfw*})pVv_c@;M0d^FaLp&z28C&O@#9H!c@e_QG!j zoz*MQyY>0f_8WY6=b_8zlLnYm_!O$%{Uob6CBN4T|3~NUlB|a$l=k9JUmQBJzbG?k zy$$BWOOsf;MpMBFCQzRT`nAjz_Ke(}Duqatok^OgK+EIgXq}!}p!mL2I5?5ynPSf5&N}h-{Q@1xfv;G` z3$Y?KqZ~P@GqrXF@bI&9h8hl31GS(1*|ZCGJ{8lu?PGxFn=QVQ6JMR*@IK)D9MHD@ z>$s13F1o?CKY3N{jW>f);}1cdkl9pZp&oR=7E;mB(t}m6UPbY--DCGRhkqG;A{9J8 zR)jXB{h=DpJTpf}Tty9sF}eCR;=BJZY|IJHWx!3@32zT0EhwLKcsxmTzD_%VQKdOb z)bIa(S`oPVp>D;Nq*L48#YB1$aVtoNI((pc0!~1tr}T z87ra+68Cb0H*<+;<{}%MyH_&>cRmab^Aq}k4&NkRw}JCw_(fq?o%GdcEdmC5Q;SA5 z-?zCE6*+J5qhb~MuF;C<`e}(J)+|%88zO?=&HAcQsp3|=boAntH=p_KP2<04T1StE zTMOvRY~vRxbfnh~iw>x>8;{2vZErxiCUbmn6;rtsvlpWQC2-RRC0pbjd?}YYhc{VUbeP>5JSH%hQIrrR;rEb zVX`W%Pbj<7pd}05kiANEQt6@KV5L{@#PXgYwaoGtOCps_gbOaXL@-+b)te3dieaP5 zt*QWF?QX^9Y1l;$5-0v-4WkL85$QcapP!4)?9L!EO2ffNpN9xJwu!r|IEa^h;v&Vk zFN)+6AE{x{5KcMkuUO5Hqj-4^r zR5I+4+lN%zxn(&?>f1qN&Jt3ljxXg>^JRt$=F zZOM<;S+VZe1vMCtUTqV8hwEV3jAsT`)M<`jHS%P&9zAgqa=+W3v%eB+K|IS-4K5{3 zV|`$ofGS!FAykl_dS^ZbxP^|Jy$QsO$%}tG-#2pnOoS@$md+|*ro))iikiqMJhnwn+QQvYO6~oke5xW8f!+&wRqim7of3Zp3`>Si zn4Y5qaK9ED5$3*c1tnP4a_hp{rJ+X2?vHj5E^T4RiBJhH3y!wt#DiV6Q5{^e;^9f;WGWZ1R+u_?$VktPW>u81G3NG@A zzCaEKIG;Na{wW<|ohqv~v&u|Ckx-mJ&oUZ;T?t-m*t(^czbp}!1)-Ms;3}4OmyZvJ zLte?7&MePXu-Ge|%UU>SFJTlRC?3p{*0-4tM){4sYss`;Z zN@OHts>HEChU|?8??{-j2MU)H`#Y^FU|3uqeAVN_kTIO8Zz|1^SwE8n)A|k zHoT|mr!miB)w&(b24p@PS1@|FFf^j31(m*Cyiz=6dWKPW3ni0!dJi0_qb}|Y)3ukR z0}yLP#CckQcszSfyPh(5Q&^)_IqPJ4DkU-v>bVs1-_zaonX&k02bv1-! z7~MBhT6RXDF0Z%Q=Q!y8W&G|H`Z1~O*BE{PV!kYH|JukrHX!%NcFl&s>~nSOEl%;9 z0lqBgSMPPXDuLu4X4Q6XB<{fcu$Z)**4w2A{K7vT&PlPjuG{Ep^ZC^K>jgXvayh;J zHrMgE*X=LIWJl-BaNq{2f9#yr3uTCL`hcP@uVjqwNW|WA4LfD}g5wo17gk#AayGsL z?a%y@1fUT^o1J%C+~vLncb#v=joY}*dVeA2u*#j&?WFgV6UnzbhY+vk^%Xh033;^7 zXu+7%e#7Wmu=`seoOo+)3i03}0_b@;N7>pRe|di&(^ECIzKx+DA7SJ3i1SMv=r`4g zueASzU4C@exat+X2`-p^Pvdl+?DjK3I-G8JBH>NzbrpEG2A6!gmUt>Gz!nQeoqY>6 zc^-E6!1#Qg!5=ezaK(ofU;MN?RcT-)cKv!$ZA9cE)xkK77Rvs=cGJF<(S%2w)1=j$ z{C=emk6vt+0Hw)|xukU|1g>8HjiSO?iJsd{%7=fW%9W#+Z~OqNpz{Du$T4r<3cGwJ zk@**-gYfSn^*8$yk4aV`>bTHSXbOpkZ>P}qsIVOyYlM;I#eJgY0K6UjmmOCW4GF`I zd|mqegXr-FMQC)g&mfnxtFHv;#vez+9lf|Am)#I@qRx(xUuGKEmZnS9z}rP2htamx z1G^pYbhQET%HML;pYsd0`72js>hux+#DA>t{5ws$-qMW;?53G1J@Yq^r8LWMKpfxB z(B@3L-7|qBs6DzA!G@o`tTa;%qk|h}Y#WGEel32y96B9eG7Fd3DzfkfKK1xN6l5I6 zZ7(=vUv6pvUs}|F2NQ2GOlgD$o7sVloS`mSN?p#Fw&g8xrJfTL4ua0p0Ik=jti>wC zLBH1>E<5J*wJ$#nrhcIQdu%YB$bqA{r<%1^8pTibA%w^+js@w2d^YgFmtCa-TnvBd zC&xDF^Yw<+B=ao*Q#NBrR&7pqmVlmw{MGP$rn$SPr%9`)sNIQnc^&|N_jFq#x?;pO zXybq3=hclxJ!~@1l?Qoz8?kN8%Gn1TuG#vp#F!7r)fIzAtrseeS}uO%a|<8;F{qYX z^Vc++K78XWpZ3r;r_%8>+w60TwvRBJ6~Qf%H{H~kG&^d1D^lOF;SQ4Fxiq_Id~+e+ zF{ln@iN!SAbbKpA-?7k+gr%i4n{uY#=LfQ!6j^7quZc0fWO|f&vNVrAgpf7IM5nh+ zz&LF9C$DByTi|u5qvGdR*(D0_I}Yveac^yG34t47f>lt<=iM@6`m678XylfXn9hW# z_Gc8u1S5gnb=WhOzX8wWmS`wQ8$pveo3`S)6@N|HzFaNrM-B1v2 H2$25=zog`{ literal 0 HcmV?d00001 diff --git a/kiran-screensaver.spec b/kiran-screensaver.spec new file mode 100644 index 0000000..51a8b6d --- /dev/null +++ b/kiran-screensaver.spec @@ -0,0 +1,116 @@ +Name: kiran-screensaver +Version: 2.2.0 +Release: 7.kb3 +Summary: Kiran Desktop Screensaver Backend +Summary(zh_CN): kiran桌面屏保后端 + +License: Mulan PSL v2 + +Source0: %{name}-%{version}.tar.gz + +Patch0001: 0000-feature-idle-lock-add-idle-activation-lock-gsettings-a7ecb4a2.patch +Patch0002: 0002-fix-crash-fix-crash-in-some-situation-d001fc82.patch +Patch0003: 0003-refactor-Qt-adapt-to-lower-version-QT-d588833c.patch + +BuildRequires: gcc-c++ +BuildRequires: cmake +BuildRequires: qt5-qtbase-devel +BuildRequires: qt5-linguist +BuildRequires: qt5-qtx11extras-devel +BuildRequires: qt5-qtsvg-devel +BuildRequires: libxcb-devel +BuildRequires: gsettings-qt-devel +BuildRequires: kiran-widgets-qt5-devel +BuildRequires: kiran-log-qt5-devel + +Requires: systemd +Requires: qt5-qtbase +Requires: qt5-qtx11extras +Requires: qt5-qtsvg +Requires: libxcb +Requires: gsettings-qt +Requires: kiran-widgets-qt5 +Requires: kiran-log-qt5 +Requires: kiran-screensaver-dialog >= 2.2.1 +Requires: kiran-session-manager + +%description +%{summary}. + +%package devel +Summary: kiran desktop screensaver backend develop package +#Requires: %{name}%{?_isa} = %{version}-%{release} +%description devel +%{summary}. + +%prep +%autosetup -p 1 + +%build +%{__mkdir} -p %{buildroot} +%cmake +%make_build + +%install +%make_install + +%post -n kiran-screensaver +glib-compile-schemas /usr/share/glib-2.0/schemas + +%files +%doc +%{_sysconfdir}/pam.d/kiran-screensaver +%{_sysconfdir}/xdg/autostart/kiran-screensaver.desktop +%{_bindir}/kiran-screensaver +%{_bindir}/kiran-screensaver-command +%{_datadir}/kiran-screensaver/translations/* +%{_datadir}/dbus-1/services/com.kylinsec.Kiran.ScreenSaver.service +%{_datadir}/glib-2.0/schemas/com.kylinsec.kiran.screensaver.gschema.xml + +%files devel +%{_includedir}/kiran-screensaver/* + +%clean +rm -rf %{buildroot} + +%changelog +* Mon Jan 24 2022 liuxinhao - 2.2.0-7.kb3 +- KYBD: update license + +* Tue Jan 04 2022 liuxinhao - 2.2.0-7.kb2 +- KYOS-B: fix crash in some situation +- KYOS-S: adapt to Qt5.9.2 + +* Wed Dec 29 2021 kpkg - 2.2.0-7.kb1 +- rebuild for KY3.4-MATE-modules-dev + +* Wed Dec 29 2021 caoyuanji - 2.2.0-7 +- Upgrade version number for easy upgrade + +* Wed Dec 22 2021 caoyuanji - 2.2.0-6.kb1 +- rebuild for KY3.4-4-KiranUI-2.2 + +* Tue Dec 21 2021 liuxinhao - 2.2.0-6 +- KYOS-F: add "idle-activation-lock" gsettings option + +* Tue Nov 23 2021 liuxinhao - 2.2.0-5 +- KYOS-B: fix Kiran desktop environment variable matching failed + +* Fri Nov 19 2021 liuxinhao - 2.2.0-4.kb1 +- KYOS-B: fix crash caused by double free when exiting + +* Tue Nov 09 2021 liuxinhao - 2.2.0-3.kb1 +- KYOS-F: using kiran appearance background file path + +* Mon Nov 08 2021 liuxinhao - 2.2.0-2.kb3 +- KYBD: solve the kiran-screensaver-dialog circular dependency problem + +* Mon Nov 08 2021 liuxinhao - 2.2.0-2.kb2 +- KYBD: fix dependency error problem + +* Fri Nov 05 2021 liuxinhao - 2.2.0-2.kb1 +- KYOS-F: the dbus service of mate-screensaver is not provided +- KYBD: changed required name + +* Tue Oct 12 2021 liuxinhao - 2.2.0-1.kb1 +- KYOS-B: initial build