From 6f9d66206483aef278f43227b947586589c8e73f Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Tue, 8 May 2018 20:45:34 +0100 Subject: [PATCH] Yet more updates --- openlp/core/ui/exceptiondialog.py | 2 +- openlp/core/ui/icons.py | 6 ++++++ openlp/core/ui/maindisplay.py | 3 ++- openlp/core/ui/servicemanager.py | 2 +- openlp/plugins/alerts/alertsplugin.py | 6 +++--- openlp/plugins/images/lib/mediaitem.py | 4 ++-- openlp/plugins/media/lib/mediaitem.py | 4 ++-- .../plugins/songs/forms/songmaintenancedialog.py | 3 +-- openlp/plugins/songusage/songusageplugin.py | 3 ++- resources/images/exception.png | Bin 1709 -> 0 bytes resources/images/media_time.png | Bin 975 -> 0 bytes resources/images/openlp-2.qrc | 8 +------- resources/images/plugin_alerts.png | Bin 762 -> 0 bytes resources/images/plugin_songusage.png | Bin 946 -> 0 bytes resources/images/system_close.png | Bin 813 -> 0 bytes resources/images/topic_maintenance.png | Bin 2468 -> 0 bytes 16 files changed, 21 insertions(+), 20 deletions(-) delete mode 100644 resources/images/exception.png delete mode 100644 resources/images/media_time.png delete mode 100644 resources/images/plugin_alerts.png delete mode 100644 resources/images/plugin_songusage.png delete mode 100644 resources/images/system_close.png delete mode 100644 resources/images/topic_maintenance.png diff --git a/openlp/core/ui/exceptiondialog.py b/openlp/core/ui/exceptiondialog.py index d43005451..55591ecd0 100644 --- a/openlp/core/ui/exceptiondialog.py +++ b/openlp/core/ui/exceptiondialog.py @@ -48,7 +48,7 @@ class Ui_ExceptionDialog(object): self.message_layout.setContentsMargins(0, 0, 50, 0) self.message_layout.addSpacing(12) self.bug_label = QtWidgets.QLabel(exception_dialog) - self.bug_label.setPixmap(QtGui.QPixmap(':/graphics/exception.png')) + self.bug_label.setPixmap(QtGui.QPixmap(UiIcons().exception)) self.bug_label.setSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed) self.bug_label.setObjectName('bug_label') self.message_layout.addWidget(self.bug_label) diff --git a/openlp/core/ui/icons.py b/openlp/core/ui/icons.py index 311b09dee..fe34522cf 100644 --- a/openlp/core/ui/icons.py +++ b/openlp/core/ui/icons.py @@ -74,6 +74,7 @@ class UiIcons(object): 'bottom': {'icon': 'fa.angle-double-down'}, 'clock': {'icon': 'fa.clock-o'}, 'clone': {'icon': 'fa.clone'}, + 'close': {'icon': 'fa.times-circle-o'}, 'copy': {'icon': 'fa.copy'}, 'copyright': {'icon': 'fa.copyright'}, 'database': {'icon': 'fa.database'}, @@ -83,12 +84,15 @@ class UiIcons(object): 'download': {'icon': 'fa.cloud-download'}, 'edit': {'icon': 'fa.edit'}, 'email': {'icon': 'fa.envelope'}, + 'exception': {'icon': 'fa.times-circle'}, 'exit': {'icon': 'fa.sign-out'}, 'group': {'icon': 'fa.object-group'}, 'inactive': {'icon': 'fa.child', 'attr': 'lightGray'}, 'info': {'icon': 'fa.info'}, + 'lightbulb': {'icon': 'fa.lightbulb-o'}, 'live': {'icon': 'fa.desktop'}, 'manual': {'icon': 'fa.graduation-cap'}, + 'media': {'icon': 'fa.fax'}, 'minus': {'icon': 'fa.minus'}, 'music': {'icon': 'fa.music'}, 'new': {'icon': 'fa.file'}, @@ -113,10 +117,12 @@ class UiIcons(object): 'search_ref': {'icon': 'fa.institution'}, 'settings': {'icon': 'fa.cogs'}, 'shortcuts': {'icon': 'fa.wrench'}, + 'song_usage': {'icon': 'fa.line-chart'}, 'sort': {'icon': 'fa.sort'}, 'stop': {'icon': 'fa.stop'}, 'square': {'icon': 'fa.square'}, 'text': {'icon': 'op.file-text'}, + 'time': {'icon': 'fa.history'}, 'theme': {'icon': 'fa.file-image-o'}, 'top': {'icon': 'fa.angle-double-up'}, 'undo': {'icon': 'fa.undo'}, diff --git a/openlp/core/ui/maindisplay.py b/openlp/core/ui/maindisplay.py index 181d241ff..50a4dc1f8 100644 --- a/openlp/core/ui/maindisplay.py +++ b/openlp/core/ui/maindisplay.py @@ -43,6 +43,7 @@ from openlp.core.display.screens import ScreenList from openlp.core.lib import ServiceItem, ImageSource, build_html, expand_tags, image_to_byte from openlp.core.lib.theme import BackgroundType from openlp.core.ui import HideMode, AlertLocation, DisplayControllerType +from openlp.core.ui.icons import UiIcons if is_macosx(): from ctypes import pythonapi, c_void_p, c_char_p, py_object @@ -492,7 +493,7 @@ class MainDisplay(Display, LogMixin, RegistryProperties): path = str(AppLocation.get_section_data_path('themes') / self.service_item.theme_data.theme_name) service_item.add_from_command(path, path_to_str(self.service_item.theme_data.background_filename), - ':/media/slidecontroller_multimedia.png') + UiIcons().media) self.media_controller.video(DisplayControllerType.Live, service_item, video_behind_text=True) self._hide_mouse() diff --git a/openlp/core/ui/servicemanager.py b/openlp/core/ui/servicemanager.py index ee228e01f..fbed8ee9e 100644 --- a/openlp/core/ui/servicemanager.py +++ b/openlp/core/ui/servicemanager.py @@ -251,7 +251,7 @@ class Ui_ServiceManager(object): icon=UiIcons().notes, triggers=self.on_service_item_note_form) self.time_action = create_widget_action(self.menu, text=translate('OpenLP.ServiceManager', '&Start Time'), - icon=':/media/media_time.png', triggers=self.on_start_time_form) + icon=UiIcons().time, triggers=self.on_start_time_form) self.auto_start_action = create_widget_action(self.menu, text='', icon=UiIcons().active, triggers=self.on_auto_start) diff --git a/openlp/plugins/alerts/alertsplugin.py b/openlp/plugins/alerts/alertsplugin.py index db2ba1c6b..ea019eb5a 100644 --- a/openlp/plugins/alerts/alertsplugin.py +++ b/openlp/plugins/alerts/alertsplugin.py @@ -28,7 +28,7 @@ from openlp.core.api.http import register_endpoint from openlp.core.common.actions import ActionList from openlp.core.common.i18n import UiStrings, translate from openlp.core.common.settings import Settings -from openlp.core.lib import Plugin, StringContent, build_icon +from openlp.core.lib import Plugin, StringContent from openlp.core.lib.db import Manager from openlp.core.lib.theme import VerticalType from openlp.core.lib.ui import create_action @@ -139,8 +139,8 @@ class AlertsPlugin(Plugin): """ super(AlertsPlugin, self).__init__('alerts', __default_settings__, settings_tab_class=AlertsTab) self.weight = -3 - self.icon_path = ':/plugins/plugin_alerts.png' - self.icon = build_icon(self.icon_path) + self.icon_path = UiIcons().alert + self.icon = self.icon_path AlertsManager(self) self.manager = Manager('alerts', init_schema) self.alert_form = AlertForm(self) diff --git a/openlp/plugins/images/lib/mediaitem.py b/openlp/plugins/images/lib/mediaitem.py index 8eda8a232..7be3d7823 100644 --- a/openlp/plugins/images/lib/mediaitem.py +++ b/openlp/plugins/images/lib/mediaitem.py @@ -193,7 +193,7 @@ class ImageMediaItem(MediaManagerItem): self.list_view, text=UiStrings().ReplaceBG, icon=':/slides/slide_theme.png', triggers=self.on_replace_click) self.reset_action_context = create_widget_action( - self.list_view, text=UiStrings().ReplaceLiveBG, icon=':/system/system_close.png', + self.list_view, text=UiStrings().ReplaceLiveBG, icon=UiIcons().close, visible=False, triggers=self.on_reset_click) def add_start_header_bar(self): @@ -212,7 +212,7 @@ class ImageMediaItem(MediaManagerItem): icon=':/slides/slide_theme.png', triggers=self.on_replace_click) self.reset_action = self.toolbar.add_toolbar_action('reset_action', - icon=':/system/system_close.png', + icon=UiIcons().close, visible=False, triggers=self.on_reset_click) def recursively_delete_group(self, image_group): diff --git a/openlp/plugins/media/lib/mediaitem.py b/openlp/plugins/media/lib/mediaitem.py index 0ab3b28f7..3a26c433b 100644 --- a/openlp/plugins/media/lib/mediaitem.py +++ b/openlp/plugins/media/lib/mediaitem.py @@ -153,7 +153,7 @@ class MediaMediaItem(MediaManagerItem, RegistryProperties): self.replace_action.setDisabled(True) if hasattr(self, 'replace_action_context'): self.replace_action_context.setDisabled(True) - self.reset_action = self.toolbar.add_toolbar_action('reset_action', icon=':/system/system_close.png', + self.reset_action = self.toolbar.add_toolbar_action('reset_action', icon=UiIcons().close, visible=False, triggers=self.on_reset_click) self.media_widget = QtWidgets.QWidget(self) self.media_widget.setObjectName('media_widget') @@ -177,7 +177,7 @@ class MediaMediaItem(MediaManagerItem, RegistryProperties): self.list_view, text=UiStrings().ReplaceBG, icon=':/slides/slide_theme.png', triggers=self.on_replace_click) self.reset_action_context = create_widget_action( - self.list_view, text=UiStrings().ReplaceLiveBG, icon=':/system/system_close.png', + self.list_view, text=UiStrings().ReplaceLiveBG, icon=UiIcons().close, visible=False, triggers=self.on_reset_click) @staticmethod diff --git a/openlp/plugins/songs/forms/songmaintenancedialog.py b/openlp/plugins/songs/forms/songmaintenancedialog.py index fdcbfdc84..9728858ff 100644 --- a/openlp/plugins/songs/forms/songmaintenancedialog.py +++ b/openlp/plugins/songs/forms/songmaintenancedialog.py @@ -23,7 +23,6 @@ from PyQt5 import QtCore, QtWidgets from openlp.core.common.i18n import UiStrings -from openlp.core.lib import build_icon from openlp.core.lib.ui import create_button_box from openlp.core.ui.icons import UiIcons from openlp.plugins.songs.lib.ui import SongStrings @@ -50,7 +49,7 @@ class Ui_SongMaintenanceDialog(object): self.authors_list_item = QtWidgets.QListWidgetItem(self.type_list_widget) self.authors_list_item.setIcon(UiIcons().usermo) self.topics_list_item = QtWidgets.QListWidgetItem(self.type_list_widget) - self.topics_list_item.setIcon(build_icon(':/songs/topic_maintenance.png')) + self.topics_list_item.setIcon(UiIcons().lightbulb) self.books_list_item = QtWidgets.QListWidgetItem(self.type_list_widget) self.books_list_item.setIcon(UiIcons().book) self.dialog_layout.addWidget(self.type_list_widget, 0, 0) diff --git a/openlp/plugins/songusage/songusageplugin.py b/openlp/plugins/songusage/songusageplugin.py index 455ab3713..7c327f410 100644 --- a/openlp/plugins/songusage/songusageplugin.py +++ b/openlp/plugins/songusage/songusageplugin.py @@ -32,6 +32,7 @@ from openlp.core.common.settings import Settings from openlp.core.lib import Plugin, StringContent, build_icon from openlp.core.lib.db import Manager from openlp.core.lib.ui import create_action +from openlp.core.ui.icons import UiIcons from openlp.plugins.songusage.forms import SongUsageDetailForm, SongUsageDeleteForm from openlp.plugins.songusage.lib import upgrade from openlp.plugins.songusage.lib.db import init_schema, SongUsageItem @@ -63,7 +64,7 @@ class SongUsagePlugin(Plugin): super(SongUsagePlugin, self).__init__('songusage', __default_settings__) self.manager = Manager('songusage', init_schema, upgrade_mod=upgrade) self.weight = -4 - self.icon = build_icon(':/plugins/plugin_songusage.png') + self.icon = UiIcons().song_usage self.active_icon = build_icon(':/songusage/song_usage_active.png') self.inactive_icon = build_icon(':/songusage/song_usage_inactive.png') self.song_usage_active = False diff --git a/resources/images/exception.png b/resources/images/exception.png deleted file mode 100644 index c7ace707e3a21503efe02b1b32cd913926c7dc92..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1709 zcmV;e22%NnP)4Q?BA8iq7DN{gO5vCY)0y>mQ z)D02iOs2%mq0@yaS+dQM83P$QBb#m-W`fz&jYNUCI3FzX z=*#-C(Jf$XtC=xRY;5cX^rhh>ATbyW>r^V0KZ~)EWeP>PiLp|f&6cdw>0Bv{&7IEJ z!VHzlhDc3C1Xf{AL^uhk1wrV<;st!CGHJw~(n8}&hdt_Fk6`L9&QYGkcmp7{+wIF8 z4##dT+OQEY8jZ0&pRWyznwqxf9sX#ga3?EZC51vxYL%Q)y-~D!p}2cfjqojO9hsS# z?VNPj2t-9iMSH#8wOi}#2YS1P)23P@Ii1cBqNAfpuh-L(A~F5(i_)adB~>F%%wd*oQUYtb|gCudG6$-d<`l_ZC=fRG22vl&oPi(wj&l zye`TQIw?2FP6b9Iy{0$bFPAAl0a^D`6X0Ql^NI;--SxvFO>ZX?)8CkKBVJ9vADT*I zGXpdx7@*eAUZ8*Mdb-LO-izooQ}&LHvYy6q%y`ss9L#wn&izD-#d5P%q`iC|3txiy zHQ+jOp6B;dYHBKFWMoh#+8aUw-B78i3-2$=6trKYIhT@>asq3lJP`pNa+J}@C@|G- zxBJs~WV(&Z9PzZtV!`g<9J#)`>@9kuq=b@^k_dvM;b?EArPIx5dx&78+fBP-T@Nax z+Ep4bO6YHRr36CVeL(UyTRPXUK4=8HXrc*eAG|uIsKP3|C76iJ#b0>9d*+Nqi zJv1{gifXemsb_2!-F6CeS|+FD`7gkc!bLQ0uYo2RtQ%MgZb*@zVQ{ zkiODn{>$U>P!`mFh38+braSosbY;Q#h4+f|+zHE}pK6M3fF&6fXMC zGyK=STNFP#V0%&#T35vjx1Ym;U*eo!hIyA*LN^_;bSZHdH76v{nVcNz$$p-?l6}+- zZEzuO07(InYEAK9#2UsSpMo^TTtB+qy=NmLs5LT@@^Q@K%x0QtFj5=Z-DV4Q_)}>+ zLLY;EItXyP2y>H2TjQL35e5y zQjAI&dY6Er)QM#~VRI@wyT`_u`DyBap=CtcwKk208X-Vl^C417M2MG4rL+sv&!IX- zqYt5l-r0Z)7(WZ$v;~44T!c?UK-u8)9ci}P=^#uO!7JqYc_SkuF?j{zl|TW}&O1kVrL zxz%drYlw$JK#%fy1g)Zo$;$l>M<~xZ*x@=%n-Ax&Si?`*K{(iH{QjQJ?d{z-<5t$K(7HGLRkr^Gxv{q8E~v7}tO&00000NkvXXu0mjf DNC^_> diff --git a/resources/images/media_time.png b/resources/images/media_time.png deleted file mode 100644 index 77ba33c8c48cf0fd537057f57183ff8d4d6f2319..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 975 zcmV;=12FuFP)PV#qs)L)#4b{$^%peJ8WC;Ge_}L0 zua~!wcF_YL?=8N2?mg$8kBOp)@1eQ5*)TUZcYv=jFfi~?tycdSiA3U5d;1%L>FH^? z+wGnS1On%Cxm^QS~GI5=qC z+1Z(YaPK~Q`}Y5=QKysTt5ncvGzf)4h(@DWTVKyy?(gS)UY|HQIXNdn932}QdnOS$ z9FFL%8#fERn;T+7eLXA8WS}Z9$0-=Y$E77KE-vPN76fi@Z*QfeqvIS1Tw7b)qii-? z7zqW_7X^VSlu9TJ2E^9Zz{zCN3DOh_g#wN%SGd1kzC3BNHr2Jax1R?=*4o-S?C5vs zs;W#fp63w_29Zy?V=F7rn$6fhI6#=ZI7+3k{pk~`tE<@?x106#^>Ot7nh%G=<(X_o zG#ZU89*?7#bStS_>g-uOzj_rqyB#}zKlFM%ac~?b znU*2_d|n>bcXyE}D?=WU_Vo0iw6s)`kxr-K@p$m+pI1edm6bUzl}hbWDA*y5&WJ>w zpD&S>S5zRS)1kAo6E!t8n3|eGB9Q=P1LPYl77Mf6?G@bN;o*OYL=x{87EWYj*zxhP zM6k8Bg_4pIsk4%d^?JP+8XCgL$Ove32!a4=eu3ZE*tkhXUZWt%KL-Nf7=yZ?0Mt#o zNMzEPot?$<^0JhPmX;RD6OyavK=Awhj(9AN-=97eL*a0S3ScDt`}_NnCzKV5i~@&= zi3ylYCalq#$q&zIl+9-ILy@*fuTU!3=H{j}GD$>NR~NKeEml`oF*-U5Dtsong_search_lyrics.png song_search_title.png song_search_topic.png - topic_maintenance.png - plugin_alerts.png plugin_songs.png - plugin_songusage.png - + @@ -25,7 +22,6 @@ openlp-logo.svg - exception.png openlp-splash-screen.png openlp-about-logo.png @@ -44,7 +40,6 @@ - system_close.png system_mediamanager.png system_volunteer.png system_servicemanager.png @@ -53,7 +48,6 @@ system_edit_copy.png - media_time.png slidecontroller_multimedia.png multimedia-player.png diff --git a/resources/images/plugin_alerts.png b/resources/images/plugin_alerts.png deleted file mode 100644 index 331aa268725a4edff3fa6cab7dfaf5af24708c2c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 762 zcmVz8xpUII{8&=iH{wnUDxx6o*XQpr9@S zFA7f~5wyArj)7engn2gzstbkiqQW4^o2U%CF~JzoO$Y@oEjOFGxwX#D=9!*z-Y(o0 zQwbk<`S`x?dETGrWkiIXV2m*U4FEj(r*8lvv=^C(b_IaeKp-$7%W^`Nt(9kFmQEb*nE7Psy^?IqR ztBayjPKwQXiHJy&qz3@_5)S~tZnyVDm%lIP5+5is35raDTrL;6T(06>jn7at{N)#b z6NTa?0O;-Qt@Qi-eRcKC_36+(fN|S~@H}|_-^lXUJE&`DvkeRkTqt;90$|BxGRLp` z`_FAAgHTsr1Ed20I-3=AHY>#hx%don>+f;v=GF56+8JZu1VM0DR8;s+oj!Xq`ROt= zB~%pnI#Td;q)OJLXMdu$eUO)BITH*9=a|Ri@x7aV`>56uZi>(Ll#p-S-98`QF5Pu? z_YC6M`lSYE%SBUFRn<|4v#}`^ewD>Op@g67c8A+32*R;4RaJ9_VQ3cj;Fel`NG<2K z4it!wpY0ZJYUYhH+a;BVtcGD|0MIfrGV&yqO2ufONT<`uv9Yli0FE#K41f(l8-N-B s|?9jsO4v diff --git a/resources/images/plugin_songusage.png b/resources/images/plugin_songusage.png deleted file mode 100644 index bf110aa6dff6cbe89fe174c5e1af42facfd1194d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 946 zcmV;j15NyiP)Z zy6Lv7N=dgY`2`^L53r~dDz)8rfhs{mg>0)tRxDcDlEmWx9>DRH@nt^GOwU*aMR}z& zGmCTH@0{m+!#R$F_r-CX2w;q2CK8Fb8~ZadwW~s z0PqwO|0mC_tgJjrCX=)2bUHpcIT=+h&3&P&>UR?p6C;|Yy%GUDd`ene zT)ZpGvcMQ~JAf#P5Cj1n&!f?C@b=n5V*CSXcz8ImzP^5s4wLfvyy6<@)6>%`vmD`A zyT->61@$&iG5P=;GI9_O$e0-)g3l|1y1Ku%w)S#$b#-=YYfIw+Tx2qt2smEn+? zi9aa>GE2<_@L?)TAHO|fv3@24W2tYJDGN0M6*ln`aSsUZV<5%A4Ew&xyEq# z`WnTn9wpm|$K#{XXw(x31RMZ^b)ng8{yQXCwnrBE{F^SuS`I!8`w$=VqGnjQsCUsY zOmw;?0)D?p9ENJOnmrf+80huYrQS$Jy|8SK=!?*sCQ6kayt0FbGd`qZ3Pyt>T5Sfu z-#=6?m#udVF8BBMk3&Q|M2ktsgLp6*fG7YbdI#B)Ci2B=^jII9%|P6wN~L1mGH^j2 z92^uxs?gr{kbBjFR_Q_wN^s!{ltpXCd9??<-b1NW5~|fI69rzly~?3b=xgoG`PMHl z8kinY;0%myjQ9nNha_~(K1u|#)#-qpK66xWk^A|l@BbP=yaCzmwC(7yhmWZWv2bu& zX`@_cIIFrWctq}qP!$J1?i5+4l97MSw!XPFa6z7(mYPhOy7T*S9qB|6$thYT57@R1 zSFKiy{c&`pXR^E-4*}<0=h{= zK~#9!WzSn^)dc{@@z4K%&e_h+uIFq=%jRlhi`pDHEu;s75`r%D5=B@K77|LMhcYtB zu_)9aeCwfntVjt2>7mQOAXr+9^^#1|9GtD`ZtZrqbGCB}A8nt9-{Tj40h@h9LxO!V z9temQ$rQNw4io<8j=*th8yKhw!#7%Y@2*Yv^ax`yi{s-m!^7olE_Z&Nw~vw86c}Jj z6W_OP-`>~P->3c$VnnTx?4w_de8rShOxK5(ZQP zN|Z|!OC5~hy?t0~b6;C=n z)zxm_N=G8;IHwSVh$J|ijD%uMd4=Yrnr+*49Xe*Zv@SC@uH(%k>N`8dd%G=7PDs_) zOYq`*G)E4Q?%sk^EO23`--RVK`hNN^?k3WC<(delcw71NvYRrn(QjIEF!*z;P z2uhTT6iX}?Q+l6#4nX_Phs8U3RT`;kCQ?HTF$&>1CPG%%bL18opHJB{Fr;&U2HSaeDWsC5=5FFCVs!)oxmmJTNUXBK&;g!bWF-JV!{;2kpSPBY zt%j7V5fT=NZ_tEgE_}eDQKnIe0AT%Feu*)BAN9$KbX`#*QJ}75wan!|7&yquoBWFk r1U3tiK&qRTdZHuDlvzL)B>?yjfS~`FyINaO00000NkvXXu0mjf;$wU` diff --git a/resources/images/topic_maintenance.png b/resources/images/topic_maintenance.png deleted file mode 100644 index e3b8555dd99ef5de2097c4fa5134630d260c9b06..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2468 zcmV;V30wAwP)y{D4^00|aJL_t(|+NG6wY+Th9#=m>-d-G;< z#>Vk(Cvm)BXLlfBDUdd8Aw}$gCJ7&nihWj4E zeb4?4`H=!J01flz;&9Iqr23-ph=i+)%WLy%B1M5ppWmD%U1i5cl70OrV{OrijzMVZ z)?A2XHFX#rNdk<)nH0Eky@fyC`6jYqIFH|~{}m3LJBd^x4JV{GjZCiu!{2 zx-k(~Ou~U87sM1eBh<@$`(Y5l&SMp4jg5})pDc*SIcp2 z*fLGbBFZlh76uB;t55e1q*nj3`m^U_JLJBKw@}gG$6r@Ji5s1paI*6RJPc$LAXJ75 zu<_C-P`-01LwcCH8xG#w@T1ueS(VI+CC3#PTo22^8Hh3c!vGL4_2jN}wJ9m{tNp=p z8F}#F2i-mFUu*}$v++{Po%r>h>+xk}EO!DIHZ)?u8O2i{ZAEOKA9b_pONy`K8v=EF zelneu#FcPKk)D}3kj!ODuLu&Jpmzi<(tB>Zt~4Sdkc`_!#fiDQte(8d_ES-$Qvwi# zj?YfzNWhTTH}(N)t7};(Uy(oLzlxQ!m2r2HOftAl4j2=R3kJp+yb7k*Kt>#yHG_r} zapHhciA!aXb4h&R@XkKh$M$}Bl5YRrT4-_@;J`iO_oMkwf2N57p#0$rRyuwX%r&G- zu23LwFMi3OePrr1q{TdWhR8FZ3z2dy>1W02;>7LUJBffNp8h*p5_@tRAO#HBBZw{} zya(_H?^{-p_5yV!q>^xzf)E^BOL!)DwgCbWK@q@oH6V0l9-^bHb9C_XHD^iCttWz}d6`uQ7ogeNC4`xdzKGbh5|PL9}}7B4Iz**!8sVTrlwb(NI^;k9}I-JAA<2r zdJ}2YSMnc*`R{|xN!L=lIy*xGjALWdBdEQ%jJcCUEa5vG0Ko`&!!i=WyMdV_$V~6O zvJFVdAh|ZF3=lv{NZ}@x>-395!AIx8y1>BWWe;Gjb8~J3k`z`v(M5OiH{-&<53IwO+>5a%>fC8 zX*ja*BAY+E6m{n=qU-4sEa}-iOP~)hG;y0hi@Yz@toYY@4+gfyO4*eIiAR=K23wdXal; z{t|OOxlEac$qjA*1h{ZAw?ipHib(G`Or|lI@(003I&o}dSE#x7+2ybrO&lnF55BG; z%&SNY=oKLupk5j z7XV{`lmy2Hpg4ts217#O^iK8rfr~%hTYqhe?LOOq(<}BN->N|K)@?H<00M^FlW3p& z8b%u$X~-Eu1lH!NOXLlW*MwG?c0l-Lfz zW4HoV&_}l}U4xybVMA6D+?=Fj{{2Y}?EBlZio<30N3Oon@a0&9f)&y*P@df0c=9hev*11br=I7;c@!XM2wvinRg@#1)L4n2p^Vj-Y#29KT)nI2t3D=-(ebhCblj z5yeXHCCK>V9T(D- zcxC&m-_3wWVPOG?Xxf0`8RCpn+D@}%GD)^=!!QhTrTo7Er4*{G=Rot_4U9!&-cb-V zO5v+Oz&|Mj7p7sV;^JZ!4u{dz)rH~VVFKVlQpbj3HB`vvS|eZ0pqbp|B!6n z`qKJvIB$z#n&|I8qqG68!PwZ?y=`r6n}je->E#b7Ey~unF(9U7PRW;D4I%tG>hZd| z+Pj;UEqfr6Uyw1dfB*hRT3T8*nWj0*aU6RpiSw%`S4+-x3z!z4YUtOp&ab+;PfuIg z)!FraV?#rt#BWvU&q42@Lx(<{9B6?I2D?NY%?PN(TTo*alb-Q_5Tb0000