From 1bbfcde872ecc5850ef7f9a091c3141b96163eae Mon Sep 17 00:00:00 2001 From: touwoyimuli Date: Tue, 19 Nov 2019 23:27:54 +0800 Subject: [PATCH] feat: delete QtCustomStyleEx files MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 之前此QtCustomStyleEx文件夹比较混乱(commit),中间夹杂着太多的QDialog相关的提交,在此删除吗然后重新创建相关的文件信息 --- QtCustomStyleEx/.DS_Store | Bin 6148 -> 0 bytes QtCustomStyleEx/ExCustomStyle.cpp | 215 ---------------------------- QtCustomStyleEx/ExCustomStyle.h | 131 ----------------- QtCustomStyleEx/ExDefineGlobal.h | 18 --- QtCustomStyleEx/Examples.cpp | 54 ------- QtCustomStyleEx/Examples.h | 30 ---- QtCustomStyleEx/Examples.ui | 186 ------------------------ QtCustomStyleEx/QtCustomStyleEx.pro | 45 ------ QtCustomStyleEx/main.cpp | 24 ---- QtCustomStyleEx/qt.ico | Bin 4286 -> 0 bytes 10 files changed, 703 deletions(-) delete mode 100644 QtCustomStyleEx/.DS_Store delete mode 100644 QtCustomStyleEx/ExCustomStyle.cpp delete mode 100644 QtCustomStyleEx/ExCustomStyle.h delete mode 100644 QtCustomStyleEx/ExDefineGlobal.h delete mode 100644 QtCustomStyleEx/Examples.cpp delete mode 100644 QtCustomStyleEx/Examples.h delete mode 100644 QtCustomStyleEx/Examples.ui delete mode 100644 QtCustomStyleEx/QtCustomStyleEx.pro delete mode 100644 QtCustomStyleEx/main.cpp delete mode 100755 QtCustomStyleEx/qt.ico diff --git a/QtCustomStyleEx/.DS_Store b/QtCustomStyleEx/.DS_Store deleted file mode 100644 index 5008ddfcf53c02e82d7eee2e57c38e5672ef89f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0rect; -// } - default: - return QRect(-1, -1, -1, -1); - } -} - -QSize ExCustomStyle::sizeFromContents(const QStyle *style, ExCustomStyle::ContentsType ct, const QStyleOption *opt, const QSize &contentsSize, const QWidget *w) -{ - switch (ct) { -// case CT_ButtonBoxButton: { -// QSize size(100, 100); -// return size; -// } - default: - return contentsSize; - } -} - -QIcon ExCustomStyle::standardIcon(const QStyle *style, ExCustomStyle::StandardPixmap standardIcon, const QStyleOption *option, const QWidget *widget) -{ - //使用宏, 来表示方便和快捷 - #define CASE_ICON(Value) \ - case SP_##Value: { \ - DStyledIconEngine *icon_engine = new DStyledIconEngine(DDrawUtils::draw##Value, QStringLiteral(#Value)); \ - return QIcon(icon_engine); } - - switch (standardIcon) { -// CASE_ICON(ForkElement) -// CASE_ICON(DecreaseElement) -// CASE_ICON(IncreaseElement) -// CASE_ICON(MarkElement) -// case SP_EditElement: -// return QIcon::fromTheme("edit"); -// case SP_MediaVolumeLowElement: -// return QIcon::fromTheme("volume_low"); - default: - return QIcon(); - } -} - -//内联inline的函数+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -//实际上,只需要在实现处添加inline,声明出不需要写inline -inline void ExCustomStyle::drawPrimitive(ExCustomStyle::PrimitiveElement pe, const QStyleOption *opt, QPainter *p, const QWidget *w) const -{ - proxy()->drawPrimitive(static_cast(pe), opt, p, w); -} - -inline void ExCustomStyle::drawControl(ExCustomStyle::ControlElement element, const QStyleOption *opt, QPainter *p, const QWidget *w) const -{ - proxy()->drawControl(static_cast(element), opt, p, w); -} - -inline QRect ExCustomStyle::subElementRect(ExCustomStyle::SubElement subElement, const QStyleOption *option, const QWidget *widget) const -{ - proxy()->subElementRect(static_cast(subElement), option, widget); -} - -inline int ExCustomStyle::pixelMetric(ExCustomStyle::PixelMetric metric, const QStyleOption *option, const QWidget *widget) const -{ - proxy()->pixelMetric(static_cast(metric), option, widget); -} - -inline QSize ExCustomStyle::sizeFromContents(ExCustomStyle::ContentsType ct, const QStyleOption *opt, const QSize &contentsSize, const QWidget *w) const -{ - proxy()->sizeFromContents(static_cast(ct), opt, contentsSize, w); -} - -inline int ExCustomStyle::styleHint(ExCustomStyle::StyleHint stylehint, const QStyleOption *opt, const QWidget *widget, QStyleHintReturn *returnData) const -{ - proxy()->styleHint(static_cast(stylehint), opt, widget, returnData); -} - -inline QIcon ExCustomStyle::standardIcon(ExCustomStyle::StandardPixmap standardIcon, const QStyleOption *option, const QWidget *widget) const -{ - proxy()->standardIcon(static_cast(standardIcon), option, widget); -} - -//重写重载的函数==================================================================================================== -void ExCustomStyle::drawPrimitive(QStyle::PrimitiveElement pe, const QStyleOption *opt, QPainter *p, const QWidget *w) const -{ - QCommonStyle::drawPrimitive(pe, opt, p, w); -} - -void ExCustomStyle::drawControl(QStyle::ControlElement element, const QStyleOption *opt, QPainter *p, const QWidget *w) const -{ -// if (Q_UNLIKELY(element < QStyle::CE_CustomBase)) { -// return QCommonStyle::drawControl(element, opt, p, w); -// } - -// drawControl(this, static_cast(element), opt, p, w); - - switch (element) { - //滚动条------------------------------------- - case CE_ScrollBarAddPage: { //增加页(在滑槽) - p->fillRect(opt->rect, Qt::green); - break; - } - case CE_ScrollBarSubPage: { //减少页(在滑槽) - p->fillRect(opt->rect, Qt::gray); - break; - } - case CE_ScrollBarSlider: { //滑块 - p->fillRect(opt->rect, Qt::red); -// p->setBrush(); - break; - } - case CE_ScrollBarAddLine: { //增加按钮 - p->fillRect(opt->rect, Qt::blue); - break; - } - case CE_ScrollBarSubLine: { //减少按钮 - p->fillRect(opt->rect, Qt::magenta); - break; - } -// case CE_ScrollBarFirst: -// case CE_ScrollBarLast: break; //未知 - //END+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - default: - break; - } - - QCommonStyle::drawControl(element, opt, p, w); -} - -QRect ExCustomStyle::subElementRect(QStyle::SubElement subElement, const QStyleOption *option, const QWidget *widget) const -{ - return QCommonStyle::subElementRect(subElement, option, widget); -} - -int ExCustomStyle::pixelMetric(QStyle::PixelMetric metric, const QStyleOption *option, const QWidget *widget) const -{ - return QCommonStyle::pixelMetric(metric, option, widget); -} - -QSize ExCustomStyle::sizeFromContents(QStyle::ContentsType ct, const QStyleOption *opt, const QSize &contentsSize, const QWidget *w) const -{ - return QCommonStyle::sizeFromContents(ct, opt, contentsSize, w); -} - -int ExCustomStyle::styleHint(QStyle::StyleHint stylehint, const QStyleOption *opt, const QWidget *widget, QStyleHintReturn *returnData) const -{ - return QCommonStyle::styleHint(stylehint, opt, widget, returnData); -} - -QIcon ExCustomStyle::standardIcon(QStyle::StandardPixmap standardIcon, const QStyleOption *option, const QWidget *widget) const -{ - return QCommonStyle::standardIcon(standardIcon, option, widget); -} - -void ExCustomStyle::drawComplexControl(QStyle::ComplexControl cc, const QStyleOptionComplex *opt, QPainter *p, const QWidget *widget) const -{ - return QCommonStyle::drawComplexControl(cc, opt, p, widget); -} - -QRect ExCustomStyle::subControlRect(QStyle::ComplexControl cc, const QStyleOptionComplex *opt, SubControl sc, const QWidget *widget) const -{ - return QCommonStyle::subControlRect(cc, opt, sc, widget); -} - -QStyle::SubControl ExCustomStyle::hitTestComplexControl(QStyle::ComplexControl cc, const QStyleOptionComplex *opt, const QPoint &pt, const QWidget *widget) const -{ - return QCommonStyle::hitTestComplexControl(cc, opt, pt, widget); -} - -//END+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - -CUSTOMSTYLE_END_NAMESPACE diff --git a/QtCustomStyleEx/ExCustomStyle.h b/QtCustomStyleEx/ExCustomStyle.h deleted file mode 100644 index 6449534..0000000 --- a/QtCustomStyleEx/ExCustomStyle.h +++ /dev/null @@ -1,131 +0,0 @@ -#ifndef EXCUSTOMSTYLE_H -#define EXCUSTOMSTYLE_H - -//Qt自带的库 -#include -#include -#include - -//自定义的文件或库 -#include "ExDefineGlobal.h" - -CUSTOMSTYLE_BEDGIN_NAMESPACE - -//一些工具函数:绘画圈,叉,对号,阴影等功能函数 -CUSTOM_BEGIN_NAMESPACE -CUSTOMSTYLE_END_NAMESPACE - -class ExCustomStyle : public QCommonStyle -{ - Q_OBJECT - -public: - ExCustomStyle(); - -public: - enum PrimitiveElement { - PE_ItemBackground = QStyle::PE_CustomBase + 1, //列表项的背景色 - PE_SwitchButtonGroove, - PE_SwitchButtonHandle, - PE_CustomBase = QStyle::PE_CustomBase + 0xf00000 - }; - - enum ControlElement { - CE_IconButton = QStyle::CE_CustomBase + 1, - CE_SwitchButton, - CE_CustomBase = QStyle::CE_CustomBase + 0xf00000 - }; - - enum SubElement { - SE_IconButtonIcon = QStyle::SE_CustomBase + 1, - SE_SwitchButtonGroove, - SE_SwitchButtonHandle, - SE_CustomBase = QStyle::SE_CustomBase + 0xf00000 - }; - - enum PixelMetric { - PM_FocusBorderWidth = QStyle::PM_CustomBase + 1, //控件焦点状态的边框宽度 - PM_FrameRadius, - PM_CustomBase = QStyle::PM_CustomBase + 0xf00000 - }; - - enum ContentsType { - CT_IconButton = QStyle::CT_CustomBase + 1, - CT_SwitchButton, - CT_CustomBase = QStyle::CT_CustomBase + 0xf00000 - }; - - enum StyleHint { - SH_CustomBase = QStyle::SH_CustomBase + 0xf00000 - }; - - enum StandardPixmap { - SP_CustomBase = QStyle::SP_CustomBase + 0xf00000 - }; - - /*枚举通过按位 ~ ^ | !来计算得到需要组合 - * //0b对应的二进制 0x十六进制 对应的十进制 - * 0b0000 0001 0x0000 0001 1 - * 0b0000 0010 0x0000 0002 2 - * 0b0000 0100 0x0000 0004 4 - * 0b0000 1000 0x0000 0006 8 - * 0b0001 0000 0x0000 0010 16 - */ - - enum StyleState { - SS_NormalState = 0x00000000, - SS_HoverState = 0x00000001, - SS_PressState = 0x00000002, - }; - Q_DECLARE_FLAGS(StateFlags, StyleState) //而类型定义(typedef)和操作符重载正是宏Q_DECLARE_FLAGS 和 Q_DECLARE_OPERATORS_FOR_FLAGS (均无关于元对象系统) - - //静态static函数 - static void drawPrimitive(const QStyle *style, ExCustomStyle::PrimitiveElement pe, const QStyleOption *opt, QPainter *p, const QWidget *w); - static void drawControl(const QStyle *style, ExCustomStyle::ControlElement element, const QStyleOption *opt, QPainter *p, const QWidget *w); - static int pixelMetric(const QStyle *style, QStyle::PixelMetric metric, const QStyleOption *option, const QWidget *widget); - static QRect subElementRect(const QStyle *style, ExCustomStyle::SubElement subElement, const QStyleOption *option, const QWidget *widget); - static QSize sizeFromContents(const QStyle *style, ExCustomStyle::ContentsType ct, const QStyleOption *opt, const QSize &contentsSize, const QWidget *w); - static QIcon standardIcon(const QStyle *style, ExCustomStyle::StandardPixmap standardIcon, const QStyleOption *option, const QWidget *widget); - - - //内联inline函数,然后[自动选择]是调用静态函数,还是重写的基类的函数 - inline void drawPrimitive(ExCustomStyle::PrimitiveElement pe, const QStyleOption *opt, QPainter *p, const QWidget *w) const; - inline void drawControl(ExCustomStyle::ControlElement element, const QStyleOption *opt, QPainter *p, const QWidget *w) const; - inline QRect subElementRect(ExCustomStyle::SubElement subElement, const QStyleOption *option, const QWidget *widget) const; - inline int pixelMetric(ExCustomStyle::PixelMetric metric, const QStyleOption *option, const QWidget *widget) const; - inline QSize sizeFromContents(ExCustomStyle::ContentsType ct, const QStyleOption *opt, const QSize &contentsSize, const QWidget *w) const; - inline int styleHint(ExCustomStyle::StyleHint stylehint, const QStyleOption *opt, const QWidget *widget, QStyleHintReturn *returnData) const; - inline QIcon standardIcon(ExCustomStyle::StandardPixmap standardIcon, const QStyleOption *option, const QWidget *widget) const; -// inline void drawComplexControl(ComplexControl cc, const QStyleOptionComplex *opt, QPainter *p, const QWidget *widget) const; //这三个不用写成内联函数,且会编译不通过 -// inline QRect subControlRect(ComplexControl cc, const QStyleOptionComplex *opt, SubControl sc, const QWidget *widget) const; -// inline QStyle::SubControl hitTestComplexControl(ComplexControl cc, const QStyleOptionComplex *opt, const QPoint &pt, const QWidget *widget) const; - - //重写QCommonStyle重载的函数 - virtual void drawPrimitive(QStyle::PrimitiveElement pe, const QStyleOption *opt, QPainter *p, const QWidget *w) const override; - virtual void drawControl(QStyle::ControlElement element, const QStyleOption *opt, QPainter *p, const QWidget *w) const override; - virtual QRect subElementRect(QStyle::SubElement subElement, const QStyleOption *option, const QWidget *widget) const override; - virtual int pixelMetric(QStyle::PixelMetric metric, const QStyleOption *option, const QWidget *widget) const override; - virtual QSize sizeFromContents(QStyle::ContentsType ct, const QStyleOption *opt, const QSize &contentsSize, const QWidget *w) const override; - virtual int styleHint(QStyle::StyleHint stylehint, const QStyleOption *opt, const QWidget *widget, QStyleHintReturn *returnData) const override; - virtual QIcon standardIcon(QStyle::StandardPixmap standardIcon, const QStyleOption *option, const QWidget *widget) const override; - - virtual void drawComplexControl(QStyle::ComplexControl cc, const QStyleOptionComplex *opt, QPainter *p, const QWidget *widget) const override; - virtual QRect subControlRect(QStyle::ComplexControl cc, const QStyleOptionComplex *opt, SubControl sc, const QWidget *widget) const override; - virtual SubControl hitTestComplexControl(QStyle::ComplexControl cc, const QStyleOptionComplex *opt, const QPoint &pt, const QWidget *widget) const override; - -// virtual void polish(QPalette &palette) override; //通常在此函数内指定配色方案,也即配置调色板 -// virtual void polish(QWidget *widget) override; //当样式应用到窗口部件时,polish(QWidget*)就会调用,从而允许我们进行最后的定制 -// virtual void unpolish(QWidget *widget) override; //当动态改变样式的时候,unpolish就会调用,来撤销polish的影响。polish(QWidget*)一般用做窗口部件的事件过滤器。 - - using QCommonStyle::drawPrimitive; //重实现,使得父类的多个同名 函数 (不同参数) 任然可以在本类里面使用 - using QCommonStyle::drawControl; - using QCommonStyle::subElementRect; - using QCommonStyle::pixelMetric; - using QCommonStyle::sizeFromContents; - using QCommonStyle::styleHint; - using QCommonStyle::standardIcon; -}; - -CUSTOMSTYLE_END_NAMESPACE - -#endif // EXCUSTOMSTYLE_H diff --git a/QtCustomStyleEx/ExDefineGlobal.h b/QtCustomStyleEx/ExDefineGlobal.h deleted file mode 100644 index 9aee8ad..0000000 --- a/QtCustomStyleEx/ExDefineGlobal.h +++ /dev/null @@ -1,18 +0,0 @@ -#ifndef EXDEFINEGLOBAL_H -#define EXDEFINEGLOBAL_H - -//用来定义一些宏的使用: 尝试写大项目的架构 - -//定义命名空间的宏(在定义 class ExCustomStyle: 的时候用到了 eg: ExCustomStyle.h ExCustomStyle.cpp里面) -#define CUSTOMSTYLE_BEDGIN_NAMESPACE namespace touwoyimuliStyle { -#define CUSTOMSTYLE_END_NAMESPACE } - -#define CUSTOM_BEGIN_NAMESPACE namespace touwoyimuliDrawUtils { //嵌套于命名空间 touwoyimuliDrawUtils里面 -#define CUSTOM_END_NAMESPACE } - -//定义使用命名空间((在使用 class ExCustomStyle的定义内容时候用到了 eg:Examples.cpp里面)) -#define CUSTOMSTYLE_USE_NAMESPACE using namespace touwoyimuliStyle; - - - -#endif // EXDEFINEGLOBAL_H diff --git a/QtCustomStyleEx/Examples.cpp b/QtCustomStyleEx/Examples.cpp deleted file mode 100644 index d73a19f..0000000 --- a/QtCustomStyleEx/Examples.cpp +++ /dev/null @@ -1,54 +0,0 @@ -#include "Examples.h" -#include "ui_Examples.h" - -CUSTOMSTYLE_USE_NAMESPACE - -Examples::Examples(QWidget *parent) : - QWidget(parent), - ui(new Ui::Examples) -{ - ui->setupUi(this); - setWindowTitle(QObject::tr("创建自定义的CustomStyle风格")); - - init(); -} - -Examples::~Examples() -{ - delete ui; -} - -//获取当前系统支持的默认系统风格 -void Examples::init() -{ - //当前系统支持的系统风格,放入QcomboBox的item里面,且打印出来 - QStringList listStyle = QStyleFactory::keys(); - foreach(QString val, listStyle) { - ui->comboBox->addItem(val); - qDebug()<comboBox->addItem("ExCustomStyle"); -// qApp->setStyle(QStyleFactory::create("Fusion")); - qApp->setStyle(new ExCustomStyle()); -} - - -void Examples::on_comboBox_currentIndexChanged(const QString &style) -{ -// qDebug()<<"当前选中的风格:"<setStyle(QStyleFactory::create(style)); - return; - } - } - - //不属于系统风格,则使用自己的风格 - ExCustomStyle* customStyle = new ExCustomStyle; - qApp->setStyle(customStyle); - -} diff --git a/QtCustomStyleEx/Examples.h b/QtCustomStyleEx/Examples.h deleted file mode 100644 index 476078d..0000000 --- a/QtCustomStyleEx/Examples.h +++ /dev/null @@ -1,30 +0,0 @@ -#ifndef EXAMPLES_H -#define EXAMPLES_H - -#include -#include -#include - -#include "ExCustomStyle.h" - -namespace Ui { -class Examples; -} - -class Examples : public QWidget -{ - Q_OBJECT - -public: - explicit Examples(QWidget *parent = nullptr); - ~Examples(); - - void init(); //获取当前系统支持的默认系统风格 -private slots: - void on_comboBox_currentIndexChanged(const QString &style); - -private: - Ui::Examples *ui; -}; - -#endif // EXAMPLES_H diff --git a/QtCustomStyleEx/Examples.ui b/QtCustomStyleEx/Examples.ui deleted file mode 100644 index 33c8789..0000000 --- a/QtCustomStyleEx/Examples.ui +++ /dev/null @@ -1,186 +0,0 @@ - - - Examples - - - - 0 - 0 - 1235 - 695 - - - - Examples - - - - - - QTabWidget::South - - - 0 - - - - 滚动条 - - - - - 10 - 10 - 441 - 251 - - - - - - - - 0 - 0 - - - - - 400 - 200 - - - - - a - - - - - b - - - - - c - - - - - d - - - - - e - - - - - f - - - - - 1 - - - - - 2 - - - - - 3 - - - - - 4 - - - - - 5 - - - - - 6 - - - - - - - - Qt::Horizontal - - - QSizePolicy::Fixed - - - - 20 - 20 - - - - - - - - Qt::Vertical - - - QSizePolicy::Fixed - - - - 20 - 20 - - - - - - - - Qt::Horizontal - - - - - - - Qt::Vertical - - - - - - - - - 470 - 10 - 135 - 31 - - - - - - - Tab 2 - - - - - - - - - - diff --git a/QtCustomStyleEx/QtCustomStyleEx.pro b/QtCustomStyleEx/QtCustomStyleEx.pro deleted file mode 100644 index 26c2f8e..0000000 --- a/QtCustomStyleEx/QtCustomStyleEx.pro +++ /dev/null @@ -1,45 +0,0 @@ -#------------------------------------------------- -# -# Project created by QtCreator 2019-08-26T19:16:23 -# -#------------------------------------------------- - -QT += core gui - -greaterThan(QT_MAJOR_VERSION, 4): QT += widgets - -TARGET = QtCustomStyleEx -TEMPLATE = app - -# The following define makes your compiler emit warnings if you use -# any feature of Qt which has been marked as deprecated (the exact warnings -# depend on your compiler). Please consult the documentation of the -# deprecated API in order to know how to port your code away from it. -DEFINES += QT_DEPRECATED_WARNINGS - -# You can also make your code fail to compile if you use deprecated APIs. -# In order to do so, uncomment the following line. -# You can also select to disable deprecated APIs only up to a certain version of Qt. -#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0 - -CONFIG += c++11 - -SOURCES += \ - main.cpp \ - Examples.cpp \ - ExCustomStyle.cpp - -HEADERS += \ - Examples.h \ - ExCustomStyle.h \ - ExDefineGlobal.h - -FORMS += \ - Examples.ui - -RC_ICONS += qt.ico - -# Default rules for deployment. -qnx: target.path = /tmp/$${TARGET}/bin -else: unix:!android: target.path = /opt/$${TARGET}/bin -!isEmpty(target.path): INSTALLS += target diff --git a/QtCustomStyleEx/main.cpp b/QtCustomStyleEx/main.cpp deleted file mode 100644 index 953ffca..0000000 --- a/QtCustomStyleEx/main.cpp +++ /dev/null @@ -1,24 +0,0 @@ -#include "Examples.h" -#include - -#include -#include -#include "ExCustomStyle.h" - -int main(int argc, char *argv[]) -{ - QApplication a(argc, argv); - -// //使用系统或者自定义的风格 -// QStringList listStyle = QStyleFactory::keys(); -// foreach(QString val, listStyle) -// qDebug()<setStyle(customStyle); - - Examples w; - w.show(); - - return a.exec(); -} diff --git a/QtCustomStyleEx/qt.ico b/QtCustomStyleEx/qt.ico deleted file mode 100755 index 7213a9dace8875b2fdba3a0a834187695a174c03..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4286 zcmc&&>vL4~8BYI!PCxat-)d(%9jDXLI@W4O#a650tEIOptn-sgRu z_kDjuMa7T!=dQad#NQQXe^OEL(~63UyLs|f#lt+seR=TN=#NWh=|)9G-*5oEJclPd z7`S0X|CI%tJJ*k8_{b(0!9Yu?5yyPn6sT|3ao=kILUjK4np z1h%}e5wAY?41Ry_udwB%=do?`OK562gRd?dv3vh%Y<;s52M@L4$cOKty{!$2)G7*v zJS6^5028w=3|!Tsw?~7PW))P`hfCNE4N%urqqXe>4pr{L-(KH<>Vx}nXzw24J&mm| zK8H6qZ^COYZp2^y^anipz8z`b~T>+87CV?kTj3_ksGp6e_Q)qjUm?PoDHK8sww z2$NNj_t2I6h8lU3F8wsL}Pil zJz|hwI}CthON9R2^t&Y(i606I3cSRAOcB+m3&Vz1z28&p+Np<-c}Io?FTH z&6i(BXU8C_4m9B9jZfjlCmzFnzxWyU@7WFQQV3_xFQAqDk9SR@yVr^vqfuz4t*|=+ zFfDtqvXY_p3a;Jqs zVzsyTVs^fOjuU5b|1a;xQ;$A^GaaX3w>jVsgkZG#@y#U-z9aVFPz1LoeYkpU95%Zj zUT=h&d(bl+MC0LVe7y5*v>tE2gDYZCwY1`R`$_Ei;C&q4yBi<8^#)!c&nF-H4eDyo zpnuRrziROJ*SBHU_MP<36qfW(_XnG>X1~ zWqf@xkK`La$$j#pZ{>V8_C33$Bj3(K{59`1O^0 zQT^|K66b`}TrKd4sZzJ#SZgb)K0b&o^!Veyy${c9*nrw9HEvwfVr*;y)7l_(dIck6 zdi0U|sg8@NZ|Feh=_{C-Ho&lCgUMhct_?na0!EV)10(btu`dpKpwar!%v!6jsX>dV z@5V+nF%M0`_w_Zh26r&$AH4f6YLC>QyL%W*1~-WB(@PgF_QM;BBeAlEp`kfkx;T!} zkwx6Rxd@ZVk4Pkg$r&fU>2qOx&d1)vAM;pU75E2A-0SP0YN$tTHL-c!)!xopUBc9q zk=P!1yfIkG!y8N@o&mY95`PWhL;k=RAV(nUTiV0c7_E7arKpibu9WM++zS>X*N zBB$CprNK(_MXpApTm{D8Rpu7Ao)6+VJw*xxC2?qTVRV* z#35o3s}dK_ip)s>=g$pea$*@qqZb;D9=Ti=0#9&WTPvbiTtkX^kX~bdYh{hsR~<&> zj%_$~vJ00li5%(>2qt9SEjBk2cY6((}80n+c7qGR&t!xn(2WV=;jU7FNA!)Krh;43^sd^c~z*x zD!q4{{k{>M>~luekydMilU#JHn-IC{^>*|QSm@sbX6C}wHp^=d#wHZT89*=?#f&b7 zzV0vZ#nFxE|LOqTUIzxR>CxXehl%kym@O{mAjpAB06h8m*2Idz6(zhOO0=I7)S;uJktllW1j(ktW~V(l!!Vi9-=Xl5LknY9r&CcWYD z#^LcOm|KWpWFpR-#ARGpuTJuQRMx(mUKwT&Thf~(??@yfy&!skz`xRcL9PxbdkeoS zdY#7`Mw0ku;x2GziFqZk#wTr2TCYHjTQK* zvz4#C9lOeybaXe!dY3?U*te=R+KQqE6N(lZ@Iu953E@gbNiWo$FBsed` zA@1c_BmO`bMPA1fD>4r*cMM79M(C1bUl)Baoz6*~!C;u*5E_J7dloD&JLJE`_wuXf36rFcaRi`kM+r(}MGR;#>c zT6VMFI_}I|p{3EE!XnQE^OR?9P3(_tjA>#^5gi*E{UF~%V3!sk^mqcOtE zn#|Cv1?F9F6u5~*0%6u%I$f%t_1`I9i@jGUx+2dkxr;qm`PqM4MGS&VHp@L1HE=oo lFfQ3)vv5z!IUS9}WQXnlmvdMCe}Mnj`X9zA(Ix-@