From 8dcb7528f9854bcfc37f33dd00e73b379d00ee40 Mon Sep 17 00:00:00 2001 From: dominik24c Date: Thu, 17 Nov 2022 20:33:20 +0100 Subject: [PATCH] update endpoint of downloading examination schedule in pdf format for coordinator view and fix font issues for polish characters --- .../routes/examination_schedule.py | 27 +++++++------- backend/app/coordinator/utils.py | 34 +++++++++--------- backend/fonts/Lato.ttf | Bin 0 -> 77208 bytes 3 files changed, 33 insertions(+), 28 deletions(-) create mode 100644 backend/fonts/Lato.ttf diff --git a/backend/app/coordinator/routes/examination_schedule.py b/backend/app/coordinator/routes/examination_schedule.py index 504cefd..fafbb4b 100644 --- a/backend/app/coordinator/routes/examination_schedule.py +++ b/backend/app/coordinator/routes/examination_schedule.py @@ -1,12 +1,12 @@ import datetime from apiflask import APIBlueprint -from flask import abort, Response, make_response +from flask import abort, Response, make_response, current_app from ...base.utils import paginate_models from ...base.mode import ModeGroups from ...dependencies import db -from ...examination_schedule.models import ExaminationSchedule +from ...examination_schedule.models import ExaminationSchedule, TermOfDefence from ...students.models import Group, YearGroup from ...project_supervisor.models import ProjectSupervisor from ..schemas import ExaminationScheduleSchema, ExaminationScheduleUpdateSchema, MessageSchema, \ @@ -104,19 +104,22 @@ def download_examination_schedule(examination_schedule_id: int) -> Response: if examination_schedule is None: abort(404, "Examination schedule doesn't exist!") - distinct_dates = db.session.query(db.func.Date(Enrollment.start_date)).distinct().all() - # print(distinct_dates) - nested_enrollments = [] + distinct_dates = db.session.query(db.func.Date(TermOfDefence.start_date)).distinct().all() + + nested_term_of_defences = [] for d in distinct_dates: date_tmp = datetime.datetime.strptime(d[0], "%Y-%m-%d").date() - enrollment = db.session.query(Enrollment).join(ExaminationSchedule, isouter=True). \ + term_of_defences = db.session.query(TermOfDefence). \ join(Group, isouter=True).join(ProjectSupervisor, isouter=True). \ - filter(ExaminationSchedule.id == examination_schedule_id).filter( - db.func.Date(Enrollment.start_date) == date_tmp).all() - nested_enrollments.append(enrollment) - - # print(nested_enrollments) - pdf = generate_examination_schedule_pdf_file(examination_schedule.title, nested_enrollments) + filter(TermOfDefence.examination_schedule_id == examination_schedule_id). \ + filter(TermOfDefence.group_id.isnot(None)). \ + filter(db.func.Date(TermOfDefence.start_date) == date_tmp). \ + all() + if len(term_of_defences) > 0: + nested_term_of_defences.append(term_of_defences) + # print(nested_term_of_defences) + base_dir = current_app.config.get('BASE_DIR') + pdf = generate_examination_schedule_pdf_file(examination_schedule.title, nested_term_of_defences, base_dir) title = examination_schedule.title.replace("-", "_").split() filename = "_".join(title) diff --git a/backend/app/coordinator/utils.py b/backend/app/coordinator/utils.py index 2dde9ec..713fb9a 100644 --- a/backend/app/coordinator/utils.py +++ b/backend/app/coordinator/utils.py @@ -1,9 +1,9 @@ import copy -from datetime import datetime, timedelta from collections import defaultdict +from datetime import datetime, timedelta from io import BytesIO -from itertools import chain from typing import Generator, Union, Any, List, Tuple +from pathlib import Path import pandas as pd from reportlab.lib import colors @@ -11,10 +11,13 @@ from reportlab.lib.enums import TA_CENTER from reportlab.lib.styles import getSampleStyleSheet from reportlab.lib.units import mm, inch from reportlab.platypus import SimpleDocTemplate, Paragraph, PageBreak, Table +from reportlab.pdfbase import pdfmetrics +from reportlab.pdfbase.ttfonts import TTFont from werkzeug.datastructures import FileStorage from .exceptions import InvalidNameOrTypeHeaderException from ..students.models import Student, Group +from ..examination_schedule.models import TermOfDefence def check_columns(df: pd.DataFrame) -> bool: @@ -78,7 +81,8 @@ def generate_range_dates(start_date: datetime, end_date: datetime, step_in_minut current_date = copy.copy(next_date) -def generate_examination_schedule_pdf_file(title: str, nested_enrollments: List[List[object]]) -> bytes: +def generate_examination_schedule_pdf_file(title: str, nested_term_of_defences: List[List[TermOfDefence]], + base_dir: Path) -> bytes: pagesize = (297 * mm, 210 * mm) headers = ["lp.", "Godzina", "Nazwa projektu", "Opiekun", "Zespol", "Komisja"] pdf_buffer = BytesIO() @@ -92,44 +96,42 @@ def generate_examination_schedule_pdf_file(title: str, nested_enrollments: List[ title=title ) + pdfmetrics.registerFont(TTFont('Lato', base_dir / 'fonts' / 'Lato.ttf')) style = getSampleStyleSheet() bodyText = style['BodyText'] - bodyText.fontName = 'Helvetica' + bodyText.fontName = 'Lato' normal = style["Heading1"] normal.alignment = TA_CENTER flowables = [] # print(nested_enrollments) - for enrollments in nested_enrollments: - if len(enrollments) == 0: + for term_of_defences in nested_term_of_defences: + if len(term_of_defences) == 0: continue - date = datetime.datetime.strftime(enrollments[0].start_date, '%d/%m/%Y') + date = datetime.strftime(term_of_defences[0].start_date.date(), '%d.%m.%Y') paragraph_1 = Paragraph(f"{title} ~ {date}", normal) flowables.append(paragraph_1) data = [headers] - for idx, e in enumerate(enrollments, start=1): - new_date = e.start_date + datetime.timedelta(hours=2) - group_name = e.group.name if e.group is not None else "" + for idx, td in enumerate(term_of_defences, start=1): + new_date = td.start_date + timedelta(hours=2) + group_name = td.group.name if td.group is not None else "" if group_name != '': - ps = e.group.project_supervisor + ps = td.group.project_supervisor project_supervisor_fullname = f"{ps.first_name[0]}. {ps.last_name}" - students = e.group.students + students = td.group.students # print(students) team = ", ".join([f"{s.first_name} {s.last_name}" for s in students]) else: project_supervisor_fullname = "" team = "" - members = e.committee.members + members = td.members_of_committee # print(members) if len(members) == 0: committee = '' else: members_iter = (f"{m.first_name[0]} {m.last_name}" for m in members) - if project_supervisor_fullname != '': - members_iter = chain(members_iter, [project_supervisor_fullname]) - committee = ", ".join(members_iter) data.append([str(idx), new_date.strftime("%H:%M"), diff --git a/backend/fonts/Lato.ttf b/backend/fonts/Lato.ttf new file mode 100644 index 0000000000000000000000000000000000000000..dfa72ce808fbb783042da88ce1bae5d9adb54fb6 GIT binary patch literal 77208 zcmeFacYGYx)&GBId+)o_s_w3Omy0C#-g}iT8ymS>#TlTbn@U`PzX z*vNnhaSSBHad1LOs1AuqaDYG{p-B6EpV^fq!}BD+C%@yq;y+I%h7nnPUEwrq1-Or5sfLwNw#XRSPcRjZ}x z<_4vVw{dRcswErGR|%C#xsuOatJZE?`TExe4^?XV2&G=1zj}G=)@99?UaeHUPpN3_ z>J>|te=+@UZ*l#NTwlMM6W$iyMEb{XWuvXSIV*z z8A@B1Y(3vtVRCT&9IlV8Thh8>`oJ-_C>1GH%DLwJ^&8vn`^U;Rl(OxkkBiUWu;To4 zuWz95hFY%QpfqKmzt&_@c~zMjswS#)A*H-sw{iU+l;6BV(K6R5EvPP4R@Dryg0NDw zYEZ@!m?meek9IZE&I`%<nM$5YG{;cE|=X!^HtfJQA^2yJyTYSF0 zf1`SPvcBsZw(XWqj_uT&+Kk3d&@`iit-2O6Q+s2F8l(N)W;A$>27|$5G#D>Y>PI6~ z^Q82Bs%_hhDQbjLpBpTby0&ZIwmz!eA5-c&`P}#iBvUG;3B)%3HgnZJqLP9UIy(a)nX9ulrcQHYv-pB^y_$zA3)8Wz`Z@ znc^Eaoxf2Pr#QEWG{U7FA)}h6ij^&WY~xcG=PpFTO`J2TkP54a-nyn=mBrcARTj<4 z)zdW#d?2jHe4eA6noYB74$Y~#G`Hr_yqZt*YXPots?lnVxZ*Z#Es&l2;y7V{#uuG;rrtEk;Hg?}r zGv@DmYD{*#sfnvBXL?GHMYE|sTj{f5kT4vARHzIqVYTC6+>YP2lAinRCUAwY( zAxHZ7pnB>{Cp7it6C=_mK!Q3zV(dZfk{MLSt{|Q*Cko;Par)UbhPLgMlV{H#OHboX zRTu!e5-T7G!bN`}Wzw42&%r~?94X~iUsFlVsztRv+8AxNwoqH5eNEeKc*gLY;Wgt^ zu}~~4mKRIJiet60L9sEh2jYo%al(+WB)o}0A}f)Xs7OpmG$&RR{k*v4a|2c^n_I=y zZJJ5Tq}GwzENy|-tZk*%qtyB`wFYCEv7A^;uXW&;YW4T3b-7-vMy*=%GxifiTa#Qkxdj+s{_@SAzxk6lAA57(n-kyo%^Sad z{gc-}di~wk|ML1DUVroT-@JbC_1j;+_4k8*ceBN;F_&1T+k>@gA$m|mxAAL6K-R!*Vr?Zne7v%gR zH#2v7?$+GhxrcJU$n)m)&0iAR8owZMMZwL5O@?j4QdvSPZ__*PnBj${Bk9=ix`RIp6KQa2b z(Z3!2*66>E{&Y;^*zb&n@0&Hn4`Pv>l# z`}o|q8jBmxX6WJZn)WySr0JJUuQdI!>2C{eUGR&AriHGB z3l?6v@a1zd&Y6DBZHpEz+Op`HMUO2ywK%l6b@4Oj#?HN_Iiq=O^Iw+!eCg-Qs+TQZ z{)-iJR}NZr-l|(xy|=o4^{mxbx74+~x@O3ld)9n--mvqoJnycxnQPx`b+@i;y{z?) z)?c+I*Y#buXx+Yb@2s!XJrl!AE>JQud}U+YRT^Uxerv*0EsVi7Vx@!l>cYD`jNCru zR{<5oizSL@kbgu~mdYkN=c+uFj|avX8da z{Tb`(RRiPFKs87WRzt`LhN>a((R>Ue-#9g1O<)X|q$V>SOl4e|u4bs241lwV zC397yny2QgCbd8f36$`h{Ado>f0r zzf#YuU#es3&uXPQp^mFxs~@RV>I3y1^`iQX`mI{6-c^59S2Gf|sPj~-TC3Kn+thl- zrSr*uHZuOTF+y!oe^Fc2cD0Q$@nXjKgX(tmb>iVAI@CS>sXwVx>K^s7dQ0=`W8Z6xe6KM6-J~8?KUR;b1L}x+gv8-z z>N54T+M)KUqv}bLiN_f?zoEXbZd5-|-&5aJ@2k7jZgsP|SAB~l<9hWNw(ykti5Akr zT7;;QNvzJ&vb7v7SIaX^n>%HSbHQe%$n~q%uUm1RbxC?ZHoaew+FPbA zS+=Qdg=Jl8H#@c4nA$B!?Y8SX$AabS+mjcTg%$zspkBvH?3Q>WW%P`wM#a&=^v6cYgl-C(=KBm zyi)zi@Va`$v{N-gH=4WDJo75GMmwY)G0a!@LraY@bs?X%YS*ZBhVQE7>{|@aB|qof zMCcRf(liZc-wy4BE`zp04`{zv-w~pG8*~r!x#5p0ZaGh_HQSZfY)~(lzpgGaf1qA4 z-3o2x_!W-dQ7;%8)jy2iP)+7i^?@;|Ua)5I8Rsp7>C>I+1AYIV`oI)c^Gx4S1?EHQ zXHuv2QRO%NNT;ajL$wh(eq{JX@}KO_qy1kP8RHETRip8j9FI{C7{96Jv!7?|Qu7U0 zs66A})MV2jbqD>vL3=5A%=oe{$CH)@b%&gX=9#M5%RO1@4&ynh$?%-&&-ts3$5hn( zw2BzNs|qMbj62mN+8u6~uUXi)(Ec~Nv8VifXmol%SFSPsMO{PRN-R^=T*LR(8si#u z6QAED*z4yes*o|D7ILoDaD!R`E#>-ON!z9mRJ|dj?&kOk&R=hMm;S9$`^?`~SLxKQ zW`ljXj=Nz0C9*ao|0=rB^&q-P6MC>hPe5VFWhqg8y7eGB=uPzNyK=1SLiCX)^br-E znXXdL2=4zCStfEGU5Flf6M9HMH)+35o`ya$)vBg5dJtXoCU8j~U#(*zxTN$F5uJ%n zL~dzcWYu;5ta?G(qm3s`vN04Z5W2n$lKndH6u*JAJae;ZvAv+?8O~ET zLHo47CF}Vt-+Y~#VE&U@P5DA|CNtGJYAQ63On%159ffD9EO@rc zhUcgpc&^G#e#&T`2hUge@R*9h<0_u~C!>1;UZ4u#g{lxA9hsyO)%M*I?ZsVaq+ zsWN!EDu-97isUC`0hRD7RRynB)$kfsll+*hpcdXo^?~ zs)skI2KWFq06tI+OnyZ6FbF>SxtsdQB#udlZgnQrl!KDt7-5V zYI^cLGLsqbS!yPHwweW>qh`bBsyWHOlC8{z&r^-?`Dz}#NzI2ZP)*6xWH1Zh=ctA7 zMd}>*VznswE*Z^Yc(XbezC<;{m#QW3Wol{iFXSf6;49Q}_)4_`zDlixuU4y)eU#D8(>(x5=`D#6!JSBNbZBQ4$H>wTrHnkB>-U8pOHYNW= z_OcniRc(Q9Q(NI=GVlx4_T(SQW-f%2)xf`|E{2oYB;O{t`8xbkbqV}3bt(LEbs78$ zb$Rj+WNKHyuTodScc`o2JJk;O)oN$*BpKV)@N3jA_&3xw@N3mKl5dgKT?_w~`X>C_ z>Ra&dsBgn}tM4S=B*WVcZ&%mBuUGAG;x&Aax*_=nSPnge_!1KzfIkme2qNq`|vx|ZSXtQ?eM$Q9q_x=oyk|p!tR3KtL}#XK-~ks zPu&Z@U;QBYd$m{H2Y*1_4}VbYh5t}Jko+APWA=$)Q{i~t9|evtA~=Wkhwh! z->-fQe^fmJKcM!*52{C#FB3%$z&q4I_#yQe{BhNhe2KjG5d2B?IQ+1B0{)bG68;l) zIQb%3;8XCQs-M7*sHfpSQ$K|tRY#J)CGY(i{8@DrP8JORxq3GF8*zodQ(e_6el{Iz;Ty#)WA zdKvzE^$Pq|^*i`$>i5axWaY2I-%zi?-&C)|-%@YDPpUVQzfyltZ^7SIC*gloe}Ml< zy$wGFKStL7NBE!BpWuH{r{M3Zcapy(zy34)uj()G_td-a_tk0m2kNiM=a~h(2mesL z5C2Gg0ROxC8~kJSVe%Ku3_gPYL;W58PxUeUQ}s#m=jt={5BTTmpYSi#r|?eo8N5q< zo_tOv)faF@Y<@vjLriu;eZ+oQx~!>?eO9UUz z$&oJmDJddh3$bQ35n>8)sf{=yF2#s_+xVmnK7%{g((*cDV2qkJ5#g55%65*% zz*{6L>icD!Dg9FKwh+g*&>N|V*mtI;YT8~;e5}!Xu!UOMxHCpfUqRg~=;vm=-Wa_n za`I`6abO8|te})QgGGY6rB^M~w}R{BUg_s1y}weANU>VKYc}J|6pp9U6S=l`-DlTO z$!CpRBXh|Xz5N*YR6}2t@c$Y9WqLo)*4)3xW;uP39;~9bsovC_rGaz5qJf(KG5+0F z6{DSv$hQRA2v1=tmbH>IDgCXWyhKMjrk7gzbggbFXZKVz(4r&UgZ(CSC)yK@r0lGg zQp(QeQLA9R1Y4<+ahGyRk7w5__x^he>}?$}z0H&~VmGs~jP8CU&h#>6<0AiR>`^Rg zqHb|*^h)eoa1qaoA-nWcaM*<8DcPmJDGw1F6!gThr6d;LMoH|qMZYR_huHo)>R8L! zW%_69(6L-E?TP1#Kcre7#CbWAdROzAv@7@uLMvz|MmDiYzar%s(&v=C=coHBt&6N% zbUzTg-=yE&qot+PyFBgjE66#dwWVAo`z^iNTuwV1>7__3@u5f3RG(Mz`8r)r!Atrf zJs0%;`?jSniBu`e5NqE~St41CtS;rb%k&mEa#rvXv{P6~Op}%cD?xN4d9QpTHOjeV zI$Cm+!hJL6q>iN=3tDH}=qB!z$gn|gL-3W_L?($vJ#j?tl?W_XuGHIarPkgaA-Wb@ zU9In1^}Y#S-BEOf-u^26SZqdQ9Z8KnZHOaUr!|Jv7ByCmflGVskka$ zFP17JO}F(f=S-?6>nKSpf}Qx#dRj?gBN&O!Ht^Te&s2H&Sr#GMk?2#!mC}-oPCXH$ zjb2M+lAf=pogQg>>rOuH(Qc2-5&_Ba`4j(4d1k5>L1P2$ihLrmShcj%+d4M#sq`sz zU+QQRQpr;}k)+#lyR{*`kgJwpl~R}JxVNo{q^YPNUMu5(_<>l=zm9}G^7O>@lurs$ zVi_BB8|lX9e>T!r|2N}fExF8K`ZiDRXUa#`F(>UEVMQmY5m@4fpdvod-QOxo-5Jl9 z^N-#Ve>wM%IN4oCjCrM4fcU*=P*9(!V=TwZ$eg;zpgwxWv5H=-)e-5bp{E!BK6k49 zU&)>R@5zG1`cluJ9psK<($BlIzVy6Xo-21h`_{PLaNddyJP%Lt^!;*$K`+a5>`(OT zHwU`-YYTMwpY+H4PkJ|ao_Bxfe%AB6>l4=_&i5RY93Ic}_Q!40T#tA+SWBJnnJ+Uv z6=-vRXxeTnHI*7)H*Gh5gL3Mq(Qw4@u<;v)BYK@Nf6ViIpv$n@u-YFptfrM1wfFo{ zd(WTik<_30GSBmReNtz-UTKLxy^VC4W9ftYSyQR@C;3GBC4a~f6RG@9rnnr-8TW@s zy_qLK^5n;T=BbZ7)sbg9W!RNG%jtfO^VO#~^7KZY+)O4r?tWr3_so-;#aOkBK9W~R z{E;Ui7qMz^8LI;F+~z7)0j_2qFV7)vV8(tUPcv?2R(>n9@!Obx-^slDZsyzfGS9xB zne_wAsDG?K<&ftc2bmE+#Vq%y%x<4y4*NVaRhfyt$gJ~^`ty=^m>K?s8R2PWfASpY z6J~NTWlpxS($>b>S{tir>seb`!^+ZbR+P4}hO~xNnqROk^9$Ba+E_VZEQ2;sZcARy z%E;xcf~;rt<8szM+F1Em&sxDY=DpjPiLPfJx}I5R8*|V$=ALcLJlmLMu4i7ko>}F3 z=8Y5Ic;>%MhEL%@3GqT9&25!T0wK5%Q$~I zbOm%JbQQD%+6mpq=l4T~lHxxf~0f z%<95q))pqypKVysWNc_M5^ckRCbQORPVU8m_OeEM3M<-+1+`;Ar?H-P)*nw{LGQ7? zcLXbXkCnVrSkhiBXfGDC7wg!Ib?n7D_F^4-v538_8JLrYsqrwi9p>&+tPy_1-E!w) z?mUd`9me(!V|RzCFG{NZicI?n2gVce7%<8|j-_t=$a*&8*b!28D02KD!$vZU*>jK9Jl8lKVh%AO6seKeXcy?f64G{?Lv;wBrx$pxg|~&7j;2%FUqM49d-{ z5$*=*W{_?M>1L2_2I*#yZe~4jH>-iWSqt3FO5kohvkkv$M+5uNKrW;Jg&TG)pc zn$bctT4=`Jqu6^iZSPU+J*wOL`+W8x^bzz4=RT#riD;<-En%_j-H?|WeORlXeSq_# zokI3i$$QYm0W@(MO`Jv(r_sbMXy7#Hp9cBgfpP;Vp8{oBk!}Fx22gGQ;Zq>o0KyF* zd{XC)1Y`76iojPc2Bp)WbPAMCfl>n~HGtA?qCx{GHGtA? zZ1@x?odTs(pws|Lhgs*hC$9yWDIhZiWTt@3wb*Yn_S=ky?gXK0vE7~6?#{IB?!fpQrrmw|E_cG`@cHe;vF*l9DUUkmCQ zcDfVf%Rs&iJ8i~JccOtZG%y7XOab{RAU*}er-1kr5T63t*AkNpSivra%Avkcf2e`D zHh|{{S5t0>u7_@b_CPm6--B-A^P8btpj#nX8~-I#jsA9_zZ`UzgYI^ruU+V=5&axP zKPS=8N%V6Pot#7;C&6|X*zN+`U0}NlYlNjI+>n8%X#D625_z-HDa$!@}-VYpJ`Hde=i6D7Pg? zF+z>P(h3=+MyZQ9cQNIE75%|cmnC)M*6pTlGgzOM?v5y2pmQF=aBw6Bz_J_pF`4?Brp z5-U52m7T=OP9o*oNclEWzKxV`Bjwvj`8HC%jg)UA<=aU4Hd4Ngly4*DN%Z?RQofCp zqGR3$qK!X6??WF#A3;8>^e9%E$^rwF3!%%P%b_cvE1|2P9nenbX{b9}{FHM4GjXaX zMjatW9U+S6=`pG*Sq&!p!DK&}>?al-Ar?tiwx3uenc03~(GlX%5n|1ee;H%$DgV4j!kGby=_WPknp##uCr~^90XOBZqKu*h2@oS|hE#Mys!pvo+!o&3J^w-q-MmX7aX1dh*)8w3C~t|7PeG=vL_a zv>~=2HgJOSAG!Ze&?)MA2l@;2F7!UAkKH<0w$&RDhlSp@*JoRNHJdT|lC7K;2 znw>&(X)K4PKKAxuUN1_wturHIhzKlf2k>of%KaN&UVpAuvsgu~$No?vQ zHgyu4I!Q10p%v-jKA!#U=b7Jrp7rggm&fVlakO)ko*t*C$B9x$>EUrA)k)TWQklf< zy)udM=wT1N98WKAXS_UsEgrxYhoF}e^!j%E^#uNUf>^vB-JHN@Po(p`c5JjA8*RsL zPcm*^h^-#LRu5pSys^W64*R+688xZAsN4=Jw}Z;CK06x-=kF?_>?f6JLKGKelwBsWO@R0-f$N_xh z0NS{nF+%db6ZlFyzS54b9KeoF;4kgi(H`t*Pp^z-e6NgVJodB)d)k9N?MY`ex3eB# zCa&8-%E8_Zd6S#b)MhmG8k%_xdzykh?ZG=vVN=gxQ_a}aZ?UO8*wQF$iE#nCjB784 zu7IwDu7Y+zJE8A$&(rKru>TGBz6iYxo#MWCpg+^zU)aA3ou>Q=`%k&PirzWt8S5C3 zk53A)v|^|n>I?OUQazkP54-34Q_%nA#Pnn6|8jciME9G~{bqXWMBkg~u@k@Dj6RQ| z&!gz`DEd5#K98c$qv%uobQ@S71>d9eT-E|MgYRZ~?WEUEdhDdfPH^1}uA9MCdhW!o z3-GgIs2u7G^@qlR-*{*OGz*#oUCsG+=z8b|Xb*HF^gZZ4KEEH@3q1fm2t5ov0_}$$ zg$_Ump$_N>_xz0gGte(7A7eim%{HP@!EO{VwH=_AQG~bBk8_|3tnr}q& zjYxPL36CS;aU?vBgvXKaI1(ObVTf6y`OU55$gUK$In2&qf|amYihITI~t-IHXBWtX@M^F-l&YeLI$(ZYIfM^iAj#-Pb!m*JFMJCi94-MIbpRS zph#&%K(j@qS~g05jk28TaOt?vKf6_M0UQGd-J8Kc$z-RCU}Loz%~rGBW)m4KR*Qqr zsL28bvgx>(4WK2sAO%p0oB$xz87)RToiN!=beUV^Rufp;(#_ee`c>RuOKlc3VCAG# z!=~5U8y6i%`2;;7B)HhjP8}DKSN>9B8chgcOX0#NRu__65F%B1N-Ij&FnXeSli=cX zTd^0qYO&jT;X;4(e@JDum>gDmYNal4u{dmYtH@xpI;lC03!OkeD9CKIi+H*g#d2r| zymg5!Mh7^U94TC|69JEkO(MS4>d;}}dZXQDm(7X>Xco=tn?qNyd@i+}*^r-}LEvt) zxEunAShW0gu3M_Gp=(_x5zt~)(sw}7agi?&xjZRcq+fItd&6E*9Tkr9 ztX7kg{@JZoyB#?!PP>C^E%e$Y%BC$WnNCkg1IW!q z7=~4F!Mtcea1krQuEnzGGhzaO)TZNt1WrO3xZsq)Vxi)6b1vOH1Q#6@X+<_PBC=a7 zPBDC1I1_(#9BG(7*|A|&pe2>*8-3?KiuA+omAziE=vr{G*%aNEP4sAz zM><|VuUFyhcDu_V@fL85qQvxu^5~b_;cz<6|k{gofyd z)#MTou#}Xa$>*sG%{G&p`pr5sn`{^#p5b&lEh!v4w1DxjxtuQ9Y%V_Jq(ktqTHVrr zT~yh#={VA`)qzLbZ6?v5-z~vUESf)Bkm}&rHn>P%>^6rVt=JJl2i-xuq**03bG6)H z7F>M6Zd}|LxZr}Lra{rW3A1>>#RYOMg1OD>ay#4v8JELH%@_tQEg{E7qcUo^ToAEZU+v7mD4wuspT!M=gTmZc{E(C4*f;7?>qgkqAK=D{?4vWWP z#lg&W{E0w>~uM;K9|c4HXe_~?soV+UZ>aPaC%%p;KDGRU_j*#8bvc^uZTxTqb~>`fx)Cp zj+OWW`sj25Cw(^iL_8dezMvgi zp-PdPFzmP5T~E4oE}?<#xN(h7g+30?ht*ZFFvzfsv`t#OLL&qP zFLr}_Bfmqp4u3SLU&RgKP((IwB*aEvbot$3Q80=^RXUFJP&VN4yMtJ;1<1X58D5vi zB^J$}kGf>D+kD^aVpcK=*nB4ynecJl^!Bayhu<#=QKjgy=02A_;W) z2?KN#iFISPTG=}@gMkp(L?U)~(3=&>@Mi?P{%|nY?+@VKey7djbNjq@uMgv}W{7wg zzYjn2$lyekBDvjb%W$Bd3>qT<`2xV=bcMqqr*0j=?2vvHH)KRIWbBI>x<{oV}l#2;xQ93z$Xha>)= zfF5${f+}wcM7cr7C06JM7tvd0gz?QCB!8l#DN7CpZ8kdX$_|G!z$P=(;SKw8GqZwO zA%8F<918|RxOc#9_xZhkp9AZ$`D|Gt9%0Sz%k=sf;T-{sLnL?j>`|vD=#0_`X^B6? zkm>RuKiJ5Ym!V(94bjXj*@9Vu4sGc2`?7Td7CEH>wxG^|C+y4chWs|aBhz1)+Kb5Zdk!NmzK(F`3I zawHByp5gY^;X@E@+ zKLKALg-gH|a6|(|xdCtqh55>T*sE726@p6^cBbPJ$|xfE2`*S=D45~a1yz9{XZ34g z;8Il17q+b~PdJ>LWn-`olUKUKKpBpR676;hp1jP=tei+VC&%f}3?_2&BIq`fommu# zWH{ZXth(gRfHTkK3%m1Z#N~2^G8_(<#|Hu) z5kE6CktIPzhML@*JlP_7*=)3tf+5c@=!#OM0k*Kt1ED}>Fw372w1=EIp|V)W7xamz z^B0!NWOGEqx!^+BMx#59C;Bi5>cTu7jr$hl-EX-vU$*3JeTp!pGkNW zCF)x=)8WXBX8H=Uv-4un%>0-;m=i9JC8CM!NHjmYEE>&rd)-mLE0lp-dBTVqb|f;0 z5B`8RBb1LSh?!I=wGlWIo~LN%E8>W_V;MDt8G%S3njMtC%v7!ck7mTNGlCTT$gOp| zotb(0nc2Cy(ac;Q0%m5aNamU3#7*X+s{3d1Yd2nhc6LFGchv&fcCS6%QR%GH3G)}{ z<;DuKvl0cKa9(D4K~Z*5Zf15OuPP@em#~)|a7UuyXr?zK>U3r}3q`y@$QO+yusQmY zW%o)|1kNIFDBD{^BMc+aT$jh|55?ngziu6Q#k*z2!=!*KK z0k&+NN1~CuNGzO_;f#6;qWwyuq0CTDZdm@Z(?hw(gKcAHgl(G0?@zLr9WThv%g@iw z%183->?{?{(g%JS`#p@%s_%d(i&MTpZfJ;ZpfRNospg8%gT1SqOKBYC=?0M7gS1L@*F;?&KvcX`Xjmi zQX295z1cCh*G~{EEDXlQb8v#FIVu$%q-22s3SRyG{Bat^UUnb zSY|;+e$QC-B( z))WmaC@AuW{fP{JPK+P93FhT{Jh`4~Fo8eBKhIwsj3$EBG!hK@ z^NYk>vdYTJ!(tXiMfGL+RoqZrSuInkd1`jr;-w;jmKGC(*y{5{0#PRo$X25BcwxLEUXxdr@D+yo z6;2*lm|KurTAn9=#UvZD1%oApb=Vm}ihfj24u^duwf#y!zofW2tE8m3xI`5e>zAf3 z2balnik0$Y=2TV=?C;OW$g3m_WLH*JR;2y~0`xd%SZ!_Hz{-jN10#vP#bX8zsTxvK zQrS>Dsj8|bBRiuqFH%^RC@an^E(-*T0z=BmO3U(M*=0oy1w{-_85N#PDy+;Xjtq^) zE22Xqxs}mqq^u?siRQ%X>gsc9^=)jOTqO~9@W3ImRSs!jtE#Hf zit>Irx>8hWdH1#K!G$+f`MnI|3+5d>MeN7(qQPog2duv`RvhBtuaU2%n<&+D;Xu7q z&AC!a2l-XIgKFrjyzQ&T&OfO7*JMA&ZO&m$=@a#Gf(QA-nmTyTzmHy_nRmKl>6;(p zJLKBmxzYC+Ppq`R*Y?qd8T<9kGlWAPlUFM!DIR93>tAgsNO+)u1{v&BJ**z;ma+Y2ODaH{Z#>{SaT_H_DH=Rdn#903Ma;4-7o0Ts4pJ;x`>d0(<^e4z;tRN~0qLLtAi4XF{i6CD}3G&sF zATMVJc_}-{>(@bEw+`}>bx^q%jWqLyb&&U~gUYZ7H2oou!CFvltn(ZD4>P2Z1IHDmTU0|uNkdq$OE$Y)2pKMTd9o;omi#CVUP z3=ACnroq&MDuRR=Py{LMNNLyQHz9upXI!s7#tUGkzyG(AJ4JGSSYcR`^w;Xq=v|HG zkM|TctKC4V?lai6P2DB)j;>d~OFHZSu2$Gn5)JYE&oqSI)nidNb+?+3MiRa7E|wF; zy-sLyLQ5$?H)gk-aLb89ykjp9h{Or0Jn%TO8WFUve?u^C^k@}YP>zOZ!?k|Ff`-^$)*M(V? zOx1%|?!4!*u- zQGImZ2;%7D`K*JlqOdTbQjSz)DvAq3!*FoMmGv<&DB~- z1F<5{lo7=EG5z71;Azd%GOR?8YD0-J&rFapc=-jx3QZ%%lo*E@wNRcRBj_<2@-BID zLbl6i&o1sicK(3am`hg->%XG?T)XD=6gpSjI6UI;xk`pF8kt*j?z~A2`GZ=&ztX9B z-G$n%edn|e$)9oY+{(_&E2k_QkTd0iDaBsP(itV*NW7#V%V@YL+<)el1!Jkv_ybSi zIqT%%34gq_$lQ6v8!PQUe&LYD8#j(KpKu2Z-x_t!h>Bq69&5N-UbTc>68ZRr9PC#QtIIAX%1Z<9o(8K zp*1wO;7la15b!H{f$xcAU;J2A3;M=Vmu*g8-=SO z!-kP@zSAB>?@&W5WsWG{o{REr(gH7{8G|(z&3$z2;1KkT9 zfS!R~f=)sIfb>pVDP%w;Py;j`ng^|dwm>_eJeSY8@%Xq_?OQg-XV(O@8DF_> zyD1~}MwI<+8 zpb@|uwBi!N&2^)9~?P^R*|d>TCv=tHCgOm{#5t$ngHM zYVFs)HGT5#jpO?-xM;%o@%aaWziJnFnjrRF`=(^d`OF`Ubp zHD*Y8(dcs;X5G-(HDSWd6W!j$&n)bE)#iDw|NP;FeV1IjV8Z3CjoCByG>+RczwhU- zOx-ZGI5u!vjrLQsC1={X>+oO3d(CQ=@jmYmhbDd!$yCveYfmO~*6`gkX7?Vc6}R8t z^$+c1vwUBnUn)+y^*|A(-hdt`!bBo7BZrxBMatQ)@?Ek3-f66;?Gp?IGROeES}LqJ z$br>j=-jr|>M5VvG9ov3M9b82w{^=l!{#@;RvhM$jx}rZYrlVW)27#c|Jvp(tHY zRO?5=Y#l~skwJ3B2$-)~OBf&X_zgj=jmN2B@8i+OJz0TZ)bnK46TYCwX64vomf!2Mw^pv>4H%=twytU&E2caSc=5M^+<-r5Z>?&z zI}E(f!zZkP2eSMxB6X|UZ_4C1(VVK`kPHWm{W2t&kxU_>g}viAzn+u+)k{7ya!OKW z1ADt*9Vxi}s_gnbW#vX+Jbw)irct*I?~u6Sbex&bp*g%jesO*=qG6 zX#+HSEHx@4Rx~wY8B-C!Na!>Y0gOZdBN4zz1TYc-j6?t<5x__UFcJZbL;xcZz}OuD zj6?u_H<}30ke-vI?V`S6m=QhT_3LU&Dr&-|0}@^vuMM%%Yt z%*)eZhsjY=H=@vB=u7XH8_EoIhV4|G+rgnImfu1K0Q0M0qyJtt;@|^7v0VFgSB+u& zOtGmJ<|GNE_KVaqUlW_^_RsXdt!GW9}V`YNl_x)Mw2mTF#zAOg($Xpd~*~K45s({3ATdiOpK+qS$PPo_dk%F0{q`C5Cn0 zlCr8$(ENH4b}%vdH`8!pIQfls{XtbqEGUE2tCT^+foVA8m?4=TI413LP|Bn9CAoWM zSY}bbIi>zoE@JrmNF!f5B`LXpf?W##O9@H-zsx1J($c@mYP=VSYdprUyU|0*H40Ez z0SYTXVFf6x0EHExumTiTfWit;SOE$vKw$+atbjD3fHa|iG@(Fpjr{*tm3Rf7PpC=9 z$sz?kmoSK(S8HSwfngfygckU6K4BU@W7lIXEeCf^pT6s0OUq-sW-K4I{`y(7+Rq;~ z>iqUuv#wu1%5bEk>w|~q&3jn$b#!PxDRq6&@xb42nlRy}zd!KcM>mZhf73@|<)2{H z9`m()t776I;v>PCeiGr^dx|7_Em34G&4%x zosMSx&t%X&<6^oOL9xG}*xzF;6-Y0{cy%3%6{gX(>*%6&8-+}$6dC|cfaXK1p{>wP z=tk%V&_U=~=w;{~=%0|TbsL3Ds1zCiO@QV@tD&vXPUuGH2hc(2S?Fcx9msn@D!tK% zJTjVo@xGBi!|M?NtL4jgklnL<~WTc?~{wV; z)_lvxbH1^-w(p$thmJnKagfKBYc=(8PZC3_T5#3;vFqmy^yVJ8dfxSGhmKr*=?I_M z;Ryxm1`e#s8M0_&{mAoY){He&O9gs7G_OZn2gw|xvwNTvNR^aDlFMdoSdvelYB-N zyR?2*@v69Sp=NY@-f8Sy;q@8qhG*tB8jPK{7#3?M`#arTYqT5O&KlzbPy35QUmV9L z+LIp`Pn&mO#eYpj#6rE-ZW`%x#s{jUL)E<|?!A3L{zr#0{ibRxjD!aF5pT%v_J(}C zAs=tZ#~bqThJ3ssA8*LV8}jjne7qqaZ^*|R^6`dzydfWN$j2M4E*LcJ%7>Q^UbA>wUJfrJ z^qJZ+Zq_$j23IY-X7RvFCJb9|xX8RXl-*V8_YS|{=5x+}=%P{Kg6hl?Z(dEL53vEVA(=J~V+P(^8jr!yw(xuFhmXDRfmO@y+B9NLvv!$3F{f)me*f^`JGy?| zXTfDN8+R?~-*3?+)8=2(+}Aj5Nb60_&39}bHDc?7t+Ri9nZcIP`AXS@f}vx(7EQlu zNqzmfmrtE}`NBR!mt2G;U4{qLAdjCwk{+&X(oA9=<%v4-o8SGvZx29%yCEc+~pUdYNf?ql|j9Gc#wlP(+E*LYcd1PYX znmy+(-gDl-#Hi+BV=kCgJ!ac|D`#HW+<(lPONI=&WX+iV=Uz2)=9XziGn+Y}f!|zFrYP9vk&A#VHm4(-$=<6Y zo0Bfd@*9s?&LEp1+RaF5*O5Zj!Lb8m<#z)dAnO2G2go`=)&a5(kad8p17sZ_>*z+- z0kV$NYDll8rBvD=OG(T}J^Bi3YI!7O)`p?;t~+nY=&g4zU3|+0!!xQzlyzO}O*CqE z=x?4;1U2x&VX_qhRUpw!@$#btfr^c{g;F{~tS$NZiks~(Uxx8Wd@|Gc;Z)O-K zlus@gF;2T~D&E<5!NrrOT|BRP(Be&k&3Bj;O)@@%O&6#udgetkm=ffU%Z%Zm$~oR` z?>$Lk2SCKZF@@RxXLBb1*$-sCbM_SK?4z?MRK_u9&#y#QV_McKb;o}tYk;|u$eW4W znfkoxpo&qB>E|CKcj$RSlV1BJN$QSl2UP|4hEsMD2A(i>62?x#*a^QB4y}T=Ks%s4 z(7n(B=ou(IdkkYIVckxGXN%tbSnn%S=r3Vn{;y}$#x-Zb(HZ#fXV|xCcH=iqb&T{? z9hivBuw|JCbJ251S#0otitGcj>ZIv`of&s3`dO^3?dj_#w;A4Zc{^W3KX-t&A( za}D}JNovL~)02CQgTMHhkfCytcDc+&K1ZTIcT42sgh*s%&)N&mBBgej?D*L063GiC z`Z}7P$Jet`RH6~fweaUIkD)xjG?egnzL;frPqUA7`uVSce0;mYre%72 z@w3O*mQPsRZ`6`e#a6HNp|icq?8@$2l2JbGf^k#U%^uz`AaU1TbJ?&#LnbdBT|akl zenCZn>+_bgY)s-Uiio*Z^B-KQsH z8W~X_V(QnoUb63e&0;D@6c)=Ay}qz}q$^@bYY0{|d6(ttJcH?5^P3CiA*d8JYbO3$9x=FjPAD@kR3%%`O>pPTkzSS2qUyU3XVc z%&lyQIftyjb!q!+yCS0AE#sns}X&q!7%b5^Tlhq`xKc{VC< z1g4JU`MJboD+ze9K9iL(yYkGKoqj^yGuP;m?+|ZP7znOnU@}*X=$X7m37_Sy3f4AK zFI5;=|J74w)>He|>o!vq*E5{rg7^#Co^21c4J?^--q?E|8L|E03%YL7mK}PsU-LJb zx^C9`Exo3xeE$<&zcTNrU3Asl0juYa^hY1KcEPuo*BS2VeBk!oqtBaMI=Szx)eYae zPS$HK;wg-mNYPi@cu3?ySv_$gJqhWNrFXh1GmyBaRN}B zKoe)S8^=B3%y#30TKZoGT8`=3`Lt8+GbSkXO4 zs=&`H2yhhyxC#PX1p%&t09QePt02Ht5a22Za1{i&3IbdObEFF9NEOVHD!S)L|9K_p zIZ{RU9Ek#Rq#}G@f9lk;JZDHf`X(Tx++KhFG)yzS=&+VnuDQH zlJ!e#@@;;5PQ}nU>&9LB^3C%aZ~WD^DO;8|@}H`_XRWB2T$j7*3C(ra?V96oOGd?r z@+wz2zbHT4boaZvZ#aGDyin<&5)pxe5vmy+Jg8$=;lmyC=KIXG7KIf@OQ5Qh>)xaFvqr2;(u9`-tts~ zfn6t4qBFy=wzJ*v=P&k|cg*cPGQ0EPxwPHW3%i>9<@Jew(Tm<|5nt^^Pum54z2z%A zFI*+fJ~+2?v)-zB@Mt`^zxHFELZP*K$j#dw%rX!{o=eFKFY@k>EN~Q3E=-q;DHl`D zKu~_-{){$r1Q`Ag$usXg^*3%o&H2QtNX787O0UUMSzA2+ zuG81u@ZR0?Qx~k{=j4C}yc&rs~P; zH43JmNcITO6WiobLE8TR=kEc&#LcIme?V#b|IaH)+kddz{wbV!lccyrf73w{OMQ*k z-_Ou7xb>E$Rp<0E7&U{_V~-Y8jS~^OI8CVAr^0v7ZkmGo<-P->SrRHiJV!-P7hc;{mB;evU>rZeyTr>Ol{TMe`~qX=2~Ug_yYY#QhB+YE!X zn{#5me2?)Zx8<{Krbn}KzbMGcGQOUh{rM#G4vYJX(lnxa3<;{cWDTAb2`GfbvNrGM z`HxSR%*c_vH)1EcSoAY8&o*(byl3E|Eb&KX#4pTXcOqxe@+kFR8{J>z^D6raH6 z6QctZ5xlsLIK!*UX)H98$7eUT8yE2K`-|1aroQGKR@dkCc{!##Kid{EJ)f8Tc@z3I z@S9|RGe5=H`~N@xCQ>(At!U;Fi**|Ycj`fJ^}=f_X1 zV*GU8btmKJ>Qzs6eSBy8>AU95yX$oO_3z%**m&2wl1URMO|!8L7t@W_)GA&SJI=(8 z4cM{a%vee>Vxz`huHEzMvphzUWibiBMsAaNB!(={spP$T z9<}t$7PZEeTI;8sV=wF2)b*)mUEIE^;kjqJJ~a&LJZj$YyPq$*`GVoI`k!<0q&xRX z?=S3n*8Cav%o7uNpQ8^w?+Zx=kgNM>_ZuDZ9%>MIg2+?StJhz7KiDH;c*NBN1bMqV zJ!4FC&loABvatk-RDwh*K_ZnPkxGzAB}k+aBvJ_ysRW5sfW{j207%Q1ERx)F(WX4#@jIoj#Ve2*k4li*e8pxUsZqfiLOq=C7qX;cRX=m=2a_3I=s=& zn^}4t770wLnzMP*p4~Fi&Ev`LlX%Ne?e>Fe7_twC!uU$1?kg!2_yqaukg^V6NsaR| zCrhpCcYFIFag#y4ygf@!WTpIO5b(%6R9|Uf)j0KD0fm&`SV6#w-&pY*D}H0eZ>;!@ z6~D3KH&*<{ir-ji%!=Pw@f$0CW5sW*-G1|*S0a8R2}?=0-;`hyCHh|jd^|J{S_N%^ zc0hZed!Yl+Gtf)WDd-&u7!pZ4Aayp8JW8`sQev{;s8S=MG-vgJkczR9w@ z?~b?FNo*%};w&bsvy+5`0D%?=BqX#f1rlh11Sq7mg|;tCz=iUbQs~>#Qu=*g)6%!J zr7da8QVK08*vj`ib7wTNod7lO^MCq1&;Nmwxw;x(&D^uxbI&>VoQ8`|Y`Olw=BMMd zL3&VHVe{G~|WovO!c;W8hrFUM`wq{9@)t#N6 z?GBAx($RZCOHo1PqDw|Q_pfW1*F{u>V}ROi;sKzdWdZ`9%89EQ=qznVW(}s`Vb+y%mRuyS)GbMd+3DF7C zI_U4iF9*Ti=lf-OwN-yvKCq^CsQWE>4EczaqzmKO$a5CkC6HHb}?sXQk$UTJ2jojTxf3!O4;-=PFlEi4MHX+)hPflFH{~!LFiH50L3|0d_ z-(a2^n##pq=z6PV>Lz0np4kJ6xDC&oqUoXVUxep?f7xosVYO4x-LlMKG?^2p_PB7ww9v&LGFk8_2!hcb z#*>*5es?~Kkr^CwMJ5;}-qFMsQ3UNH1`5H1h`E5a4ra^o- z_k%1u3aN9N&3K9v%2OngEG215_FbwMO;2G$i{iZy*<6V@9&Gz0+naxL5E0g-nZh?Qi^-Z=+OgAN1B!})L0i&gcu3BanD-}M7VyySY0sNXf;l7+ zp1_<|(osS_vz}YrZnBB*7%j+#W&Ep{WbTA%>vnSj_lV7xl$4Paoo}$>2{h5Sg_N`8 z#5LnhNKdDrTAZH)YJ`-@H(qRSN6!-Nb=)CnBSuX+om4R5IcH-XQ%}Kuc;`~?TSyvl zXH}xj@C)&XCHXCV!W2f{44tM8@;|7FaL=67RAZH>0R*s8(C!2q4!n_oo@%@|+nGN> z{$+fVhHq$9vE!TKnKmI~%pxIA5nI71@K<#zO<-0zc#~;k2X5oaYE^FLMl3;^f;mPIHB}7q4YSR^f)mGPAEN2C_PRnJx(Y+PDSaN`yh&Y zDNj*)@}TtOVb=1nS;&L*%7fCA2c;(uN>3h?o;)Z$c~E-tp!DQH>B)oAlLw_I4@ys- zqV&vt5LxNTQVLhR|3~ zao6qdeC6WZUF+r*A?=Q>|7%+p?p=@HJvK38N zs4E@Rl@97k2X)cfm=5Yn2X&=`y3#>i>7cH3P**yrD;?C84(dt=b)|#4(iQ5O`yeuP zA?|@WSI_`;g`i6j9Wj#w%(I9x=dyHqn@=*|g4(_|*80%a$6u`3ethHjZB;tK&5f@) z)>Lz7*~tE-#rKI1PhC5*ek!{4sly8wEx6PpJg|Or>fI$B2pwDf>z_gpjDT83gm*PX zgV#UIWl;0D28TuR%fY+y^1_X5b0QC)z?MN0NcwWS}=0=uHNC zlY!o3pf?%lO$K_Cf!<`GHyP+n26~f$-ejOR8R$(`&^z}*Wb{JzGW4QBJ0{7#0BNE6 zp(#{Fl_#WF3FSzmnvh*P+_>bL(X#SopY89upeYwgAyZxRMmAKhLeyaWt_QYUaHLvT zDeBWQ(;9Z(vu@)(+iSD(vJx_Vl>tY`)lXlt^V4_nM8mpUs>Y%#AsA{8k4S@A(Mbg6SC7AddUQC9BD_|ytMwSrHr;8QF3)CxYef={jB zQ!Dt?3O==hPp#lnD+t00g0L!lI`=_jf`CfM_!JHK)JZ^*bpb`zp}}Nb0JsbQmjU21 z09*!u%K&g004@W-WdOJg0G9zwOaQnH0G9#aG5~@ID6($ugQ%xYblK4PnFn&Z9C3jt z^nRRi=RHF=Y^*a|rphbF4i5Eh>n%!vAaO6aV0-oY6MI`4c0I7U@6x3aBY$Jj!V86W zYq#IC(V1kw@WEZR{(L`4lU!%#!RJ1+`O&L;I?I+_(ZBFBBS@LU!L+F1w~4pI&G{haU|xTzL3OV@JM6Pht}BKHtBSg_>EA(JMwmY|QKcb7<>&L^SWS82v1$z3AZ znkWMe9c#%0Z&Lc9JdF?EK8ZaAYtgqSHJ!jyC%D*$_WGH-E%5LJGL`T!rP1#%0?LzQ z3_pP)aP_)QJpl}i=MFp0` zR%!0fE!&IErXNZ7Rj#;d!IF6eW%X-5bMe@Y6 zlIm{FC@gX4^vT7G+8TF`gbTaJsut|bur=2>N{aK6@(+%7?H(%m@CT(enMhA;v$aKWGq_Inv>JI0-1|iac&MZYBj<)#D_HwPK&J?aI9o0Qg#Gnk7O&q z3)rVjMHGXk@T$CWt8#qS+AedmwBaPZ-=SD$Ew=6q=Jy2{muhNt%P`>wxx-N+Q}u5N>{ z>lD8LrgPEx0*Y#8S+97yN<63dAC=jgWrUiwEUH#1wzD_>szucN0_KH3QLN62mNf9T z5pQh78yoS)M!c~RZ*0UH8}Y_Qys;5)Y{VNI@v}y}u@S-J%*KU;x6;8dCYgLZ=UsK3 z)t#A~oQV{n>}nNWoAe5=al^?O)Q6OZe!BW0)X)AndV}=FlwaqI6BLmM=|l1+8P^o) zjme@7t6Yp;vT5It9p`CL-sfHvt4i<591c!|eTR|U zc;=h?>Xz1fOPnHSHh4XY`p+>BAKq0t(vq8CDoZqsEYhx?JtZ8SH4;vMn|zu9TB?ww zK$3*CRH<<~azKR2GirRFyt|55hREDRG0}uEidbiM>uF&*NX`Ue#X*bH6kTac_Z5$c4^LiauyU7~EYVd7Hl4v~jv~V}_e?UbcxF!XG$`1M z7SO2LQWaWNDUs0*XhnSZgGIQVNfGfOX|IR~Q0RHG$uS!(+BLEqa4aQQ5$1x$n$XD^ zjiyLiZ_K!l&bcvPeMxMMk$+X4D>Yyk}uOgDXibz6( zi6k$0%M0G}g15ZjEiZV>3*PdAx4hsjFL=uf-tuCayx=V_q=^^O#0!z+RYcO<2cf-c z9t@ZeOW6F;2@eDj;a^oeL8FfoRF$b(qqntpap~5pT*)m%Ybty83>J-DvAc3rcj2mw zwl6wVCA{XjF~7Y$?K3+Xm(_X8$F5&SLhR<-1HBjaQ0t~UE?6>!%%Sqi0Gz_y3#?#e zP$DUmmBA&g4Dq-`-eF*n>_ir<6Nu)I@%=13%4WxpKwG@Qh+@g5SU=i!$x(JjYA`I> zfh9YzWCxb)z>*zUvI9$YV95?F*?}cHuw)08?7)&8Sh534c3?@4{xhKA2IK*%0bPI* zz&Kzp;2_{A-~`|#;03@bz-fTIa1e%Idr@&iO9x@3{n72}>H!4Ywq)b1)r0olzr$=( zEYnSDE)UvOQ7#W9HjVaC%tlA)Ily1B8CC_UEJW0U94zX)g*Mgy`q9vz<8NLEybq9; z*iSQvyoX9*e5S*Y${q?i1DUqyym#|gE`pc(E1NfeWp_iv?yqcKddil~<1Z;RhNs<$td!dARp_X`IEAYZr;DxQg3tNE~wgN9~ z1zy++ys#B`VJq;$R^WxLzzaI}g3e{Rtw+NJ2m&I2PQWl=1K?u70l*Q!1AxZ?&jWrA zcpV_qxxAj}&_gyoJH>f2ArZ6M+NRrV@2NB=aYh(tPX4H7+wqO-Z>i#1*Bo!GIlPo? zGxtW1iESp!9g2abr#qS|>NhN(`o|L0J~Ip&Itm&hEB~{q6_0~N<|T<8Z?hx+nPStY z_POkLvn0zbgPu%VD&_qD20h50{~?1O>2_ocjv4fDXpx(4&^tQT`tTNJ&f9RL%E+Zh zzW{??)#oLmxlefQgQs}g$a-ef>z{w2XL1E>dX|B%n5`eXK>oi$Gj7cprmHa<4aH5y zOB%}E3n43c06wuiiHQ$7dL;Q1W$|y6#6OlL0~&5X9-tb~1sDO01NH(A0*(Ss08Rp4 z0GtAx2Al!NJHNRPqAcJFbISQo+2*gpX5|cJ$95Ob&oT=(ozq{IvE!y<;Wdlx1SIzlTq0bC~Yjt%na5J)wf(YP}WwJWiVvs zW>SXFidN*&4%7}dhFA9#RaQX*uLLz+FE&HX`y<<3)9DD7_D_ifrpSIPdHa(<6&59ZK=IrLx-J(xoe=Fo#V^k5D>m_rZd(1SVjU=BT) zLl5TA14KyqWGP+R+y{{n;ZYPpG_XL55OORcBqF7DmQMV|Tdg_nTkCe*V6r^u=FFyI zt|t1tBe%kvQyFlhN?~eXchZHs`4fqz+(d4z(GuO?Ikh6cE|Bc-I1&m9LYUF(5MOar zcny1+jOlwCcG82{D%cJt0qdn+S}$3g#gnk&BuEjoiUgdsF3#H1s4BRO995%Y@jjAH zt_3QzK!p~l&;k`&ph62&Xn_hXP@x4Xv_ORxsL%oxTA)G;RA_+;t)i39eGnNH2+?7F z4KyTOC50>{5qOU%Vu5)h!?r(t_Ua2xw2g(+Ib+A8+Xwdz6bP?P?Z5u+H6#2Rlit)@ zmWWLA2$cQa zSkvTKLc1IxhFB&9MoC9}?3AB~j=$F)v9UeH+D55eOH3Lzmp9zEFWna66ror;7_5g)YJ7p7c6|JS*z1_^gws9JEhI z1go$I^PC3KIp5kW8)4NKQ)43KKT%hgvT`|UPqsBp58C4nNADk{puHTenX{o<;z;y9 zZqq2m?7b`|M1Kw8xR{&b{+MWpF0AVSCk|QuFWOuoosV>qIxa}hFVrF~kzYHN zZ{>GP9p`@{OgLwVC)_D(&Vn zp)0VHTBZ0d7dk>FuB1iKnXGoo1B=XdnnuaE=0uB3gp|%ziLSF#*6OglO(pwo9XuO! z;*7-;kh?=p=0wg65HBJDmHf-EIP+_>vupF6cBehiwXro~Gx!TTLtZNFlppqb!}%UG zy`j!Rzrhx1-PjetjoefINWQbdnIG{-#>Y2SH;nfc7MK!!)eFmOwrt!O&TTBo(Cacv z8*;-NH*KjdUs&x+G!+!~jW<+p93R(koGyBdTZFlht&eg9qfDN%r%4!(C5NYY zSPF%k(6ph|juyxcGer|u2$vA?J4@Kd+(S~DEXoyuDJEy1oJvCS6ge>I+~vw-CK;8< zbhF8HE0bwVQYO=xkK#Ku`A+VsnR8jaWfSJIp)^CM&nRicTyES_Gh;4+0EP(Swd=WW z36uO^;C)RaYXNd?K!ecXef^ZXN5nKyRHyVVA=xHQVFLPWIsK4e%55lc^=HqOZ*lioL3mC3 z8ywKDqr8VG&mx7dDsM5%94&`KtCCjD6eW|gy2K$g0&;|G7A!R{eh(5wESXu1fi1pN zdqJ`vSOmEs1ISS-#Lzc(*UrY~%l>0m0+n7!96k_sQ+Z{7WMMUOMz#e}nOEy}b&QPH zN;gEmUApx0{-WhKTo5wpdaio>q6;Su^zkp6?SD1YmiR@z%bO-n-o|GIGqqxdw>;Oy zzl=f)Z?FF1_GZ1XQE1w640P27PFp12rm5vb=GCW2U*^pxX{7~)RmY-G0Qva)cJlYogh3UH+~#gd{*)?Qgf{P)T{T#hHClWHt@k}8!TKNq5zWu}>yIY0`w zMy?Gh!FUK!7zo9n9G|xAHoNW1l^edee*Q(njn04(1x!S`1a|-fv?x?`$MtuHa`5ig=U4`9is;k%Z6c+Z-wY!kN zn{KVRgWY<&{HOSwkD)5)bM@-(!oqH(4rG4?IzysZDlceKFqsP)g@zi#SFDN#S=9_%z6sb*ljJ&u~v~~uO zj~|mIsk(}X51}FSAB;ap=N|SS=axm6El4$U%M51GXycaBS(WHgZZvu`w=H_}Dt6(= zg$&Qsh7|l!kiXqznfz_-p4#YD+!eKZG<@6&tJjo}hc90LAU_VBh81IPE$d{lHJ7#m zwC>W%JNb|3_b1;6#t)ypT-Yok=dflump`HD#+=ql?~a8l$2A5<3()(TDMfYgA#)xZH7`%uBQ?D2gRXqLY{1ks2*+3Mpmh<;{z2#166I) z>=BL2k%hB0t8&TK9b1=Fj&6u_$To?odxLEwV{3{#8*>^KEn88zv3qaIP4S0qvQYed~zO|eAXx%is2nF*)`T8Yk2YU=QKDy`0{^VUkl+sf9w0?Y~( z2$>-B45Se)ovonSex-6wKO{&$rmG)fyB{07e%J*1VH4${f=9L33?NfjiFW2g$J>U4KC+pIb`G_X@nGc;6+*ww8*_D;uhv% zq;u0uAE10ybPugyUi>BPr;1|hh8p8D0SZ<&R51EWyhCTysfd|OCT@@kj*v4?uNzG_ zkmCk&+&~VY$_?bWfnhf=>;{J2z_1$_b_2t1VAu@|!)*bO$;6H3rx=74xjO$K5}9B_ z@lj`coDSMhMZzreBp=Q+C5Q>0@^C|rzrG~BV8tyP+q(hK5&ET} zJJAB$05#<5L8eA#i1$O%`@tuENP0gcy&sa^4@vKbr1wM8`yuK5ko0~?dOsw+ACle= zN$-cGmohbyr2mwIFiC&@L1anqhonb>2S|EK8G$@*tWI4aSh!GO;koByJA*-F7XFlj zFcv=lAjHB*ul$iBTm%_nEue(%u<(-mmF&5c!U7pV1BKk;PcFBAv-thn@4Rw%qTR@O z7baMB(Z3lyY1?kOR=A0qxp z(f%INoRpGtS4E=SUW~gO{uJIn^{SZLLb792Xy+dlDXu9iCH%})ezbJawx*_Si%OMiXHMf#S=mrSPEG?|8*{YV8n-SgDOtp-|CKJ< z(n!7RuBM!vCg6@o-LHkH`*kHwMq4Qd#Ya^BqP#;)>HK6h!032ETph6JfbiAH#o8;Q zo4TXhxSPAV+a}%JL_HS>`}sQEFqY?D_WLYqm8_$svAx%TSm%X1yB zU}bt^SBgG`PZWHXeY)Y)^6s*{j;1=_%cAHma2t~JZ>Cq*)MsW_X4yI;c8(Lr*3%QL z7WVNCc%vrGGWJGH@Rorlk#!n0T!wcGz65~wLhsoUd(Q?^(;H}yIe`~pXBpUQQ8k?j zOcI9;f%<~#)~$qRdp9VMK3M9QbvQdL?be_@N-r$E@A9Jgk<708?mn{O)GvzoO+Kw& zL{&pUYtN}G&Tq_jI7)iLqf4E^khiHjS(mK0dMuaehCQWig{{MO+fZv+U&QANwdI(3 z-e52!=H;fR6;yismANV9Jc^}O_>)@dQUooVjh|?*<3;SzrL*bqi=F3eI;W>vW3>I` z#Zv}bV$Gc#HjPw7O@`Msyi%0M<2 z%1%d8hvi3AEUL4daixN*P?qAF?vWi?-q%$)k`q1YOcCLdTCKIUbVaeLwuQggWJwOj_0vcW(U$zv zi;>ppX+rqRNohGLjzD@+QhLCVl9QIiFN}T4O-o8j%cXbRAH9=%5rpm~eG?Wq`8c6u zZ6keC#650_iS3f9MauFWjD+INFjaSnwzNENs3x_nC0NklTe>2xyge_!KQ%!YecNO< z6$LzgXQFuRSW1gZ2=;dPC+^bTXfT-c&Y#tOA$qOwD4(8th0d69a%xRER)Jxmj=x2` z6|a`TCBkqH3{s{`iWVk6p<=bAH5isi;E1AyA=P7Rwu(iHEMa>zw#KI_Yj!Hu>{MmV zPQ`SkVrQ0$omnb&W~tbjrDA86ik(?1c4n#AnWbW9mI^jb#m+1hJF`^m%u=y4OI6nF zPdNx%v(G<>v@?raugNiIm((=~Uz~g8E^gh_6AbojYHi=t8w~btY9HUYaeVW}jpD5Z z3$}N3Y+q2IT&I3><<1>fUA1H9m9#>C13RprV270gYd3aS`B1ZHhb71}O;)QyR)3X< z7v(Oc;-`pUft@=jAa1XTvpekP>U`B_(?705;vSRkah%+L$1>ydwN|6eWa0uQvsN^l zxLgwwU|FNrnxog8=L?YAwUF>T#KWL3AJnB{&8s-W2ihnF=tz%yiTr=W+e8;EwuPPY zOTsr4M#M5vp^dv>+Q(g#$vXqz(v?~MVXZ|w2Yr-9g8GZmE{^31ot3q>h?do&IMb~f zB8q3CL?l7FBgpJy95D^}gSKlN5iX{iTuLOE=r9ctI4vDn;GA5X;49=D*#p}4Swhy0}#%5ZB5Pg;NP5$1LX3G;Y6Feye@8={v z`)pDscPcxM121-YqnDpbHj8U*RMCKDycaWG485UK^V~^I7v`iJK>XN+$1KI;mco`| z!Zwsu;v=0So=b^0aSwXSaW7?lEXC}@k`8Nlr~FsS3MtnQfdrOkZXV6tytuiYb)cw) z?r33iOEQWyG%{UsC_+zjOQ&Fvvj~qsM$8h-Div)eU-!pqZ!_oHu1@v(kJRhB?K%ga z!n-W{Chwhwg{Rcn=YRH58eemxo#&wAq{X3TYPF0O(9fX62{+=+7Q*whio0O~vPg@d z6MA_ZG$S6s%j@vU#1&M!ob7O`(9?t-$|y**y$Ef(4&pipJg&lD>LiZ_{p|%Y-Ek#N z^U63x%<>b>qWY!uCrf8ieLXM(!!jPT9IXuLF%|kJQQocy>2?U|c11|HLrAwnNVh{s zw?jy`LrAwnNVh{sw?jy`LrAwnNVkKM+99OdA*97_&*r7Q@lhQ&zKAV#7_iIJ!Q z!fSx=8X&v|2(JOcYk=??AiM?$uK~hqfN%=ht^vYpq!`mMcEt7visuk36`HDzc=TJ|GH?`={V6}oeRyF4&7>(NKZPTj-{f3GK<@asxoWHrR zrlK$gqo|5>cxIIVvw)}KWEIN$oFMx&d6rfh=}wNk-}syWHhch>Gh z&4|a`J1p^;Qm6`l1qQ|j9>SIa9Vk%_#4Wb!RI-`?Wp)s#g-Vw=snqJJuf1mWF5s@^GdCJiOtA_W++)!-9*|fhwZsL9u`hb3R99vJcjBaGA*9$M zKnHYuq}9OhE(8PGAWEupS20^AlkZBNe90ZvLA(w)XOF_sbIVGt94L2YU zPz~q;i~z;~djSUlM*$}QCjl=2P618>=n!QKo)C&NGr5)npXKa5Ub|=6$5*P+QDK{Pm)yA6b)NmrF2lBObNpQ& zUByOU2z!N(>y6tAfuE(iFcLo_HNC{o%Ow7s*>B?F`-z{~{fXSFxciB3S-(;4*F%-L zT^hd#}1q{WL!7H&Q=X6y+mD6q!L( zpkH$XluhsusAxL`~mH;TV+P zl-P;KpVC=7HY_=D$n#A}Qq1^<(ho`dMX7j?L$2hLol60qtVWI>wx{w_tcK5Osh-a% z(IMCJxh1+quIKY6e}`1cM=I;Xf89kTeWsphp1Pl^`Y`N?P8~^6%mc7zFv4OW~vLp?V zqg7Y~g7Y~<>SZlA@%Yh_3|P0@*z6&nW!?L;RfUZssUYq5x_WL zFW?~HDBuL(B;WQj1VTjH! zL}wVHGYrughUg4KbcP{1QBsnL&bbdFi_WkjI?*7}De(ZMz>^G^QYAk*_>8uEdS|kj zf^!6L-@t`0R>G6xLx>HkT}hP(c0Ir7YICNo=!q>CuR#HVOI{k>o|v2x`SQB$ALguF z%>TLbKQ>V<0`1Nv{Zp=vuda^E`o{lq)${zML;GO=-pM_9j6?uUU- zdz& ztNTy+D4^u;q>_Pn2x)`GgYG0lIr-AgT^(UPr=MLOf%8RwCmx9YKE6N#<)?TaRg#0^ z?V29$YZKV82nYqEAHtbBhze>!1VG0n?`B^6e;8^QaH;QdAjkVZv-%zco!!}GMskTWaI401!I zQngyCl+U7(=dWD6e_2Us=RjwvKhn|N5%E_nyP|L1P4!M#!pyn#OPlJJH~H&E){oSc zbq{ryr8lkb?!0_u)vDIr_lmcN7OkylT;5q7sm;wP&++;5>j&%FcMcTC4%{^il(sFZ z43zgam3KAPwhvZkbT<_gj$F5L(j)w7-SO>p;4uXqGp)=u1nnCJf^ao^1TJ=6LR z#O{A(TK~pa|L>;t56Aj9P3wO$*8dyo2WjJX#lL_LTQvik6+&Ma}p<0aJ#O zyDtrdX;E0mf_1}!b;E*n!-93gf_1}!b;E*n!-93gf_1}!b;E*n!-93gf_1}!b;E*n z!=kXx+y{|a2PQ72a-#t|L<62s+7uA$$m+O}8jN+y!8+xb-*T`{Ip(??tWyrwDF^G6 zgLTTmI^|%UaP5@2O`V{vcj|5U)Ro*B`{|590L) z@%n>!{Xx9`AYOkEuRn;_AH*CED&lAEgQ(&MLHBaRxsv`6b%F)u#8V`eoEdRlOm%=& zNlo+?rgKwLmPGA=-mAtU36`lXWh49Mcdl&@Bv=e?SI@F_l~+GinzDGyB@v`!E{V(E zY_f>9z6Um6aigpBk?8NFrY z{sbT8Q#^EC-=a768Q_-4L??kX2f-0KlISTiay|fXeLhF?4lhoM{1Q zg{)x~fEiyp6Ybvfx_m+ z@sheuQq%|!{|j*niF7*X)k5I}5zt`-bQqET>%_mqfDM3)0S5p_01p5j2Rsk>IpB4` z`v92^=RSx`hY^Ji(I7gMJeDx5Q|imACaOUap@>n?8!}&#QJ6Ag5*6b78E(_tDcH3H z!jzpY<-V^^yrTY^o`fWk*DZUv|Mq0jyt8RzUqQ{zuk9MW`{H(_j@=O6yk<$J_4;l1 z)r?%byh5;K)fexfnfzlr*xpl#LsHzK`O zp=F0>Ho|r;?A#nVcPJ(%5!dvWV9#*D5<#Ud^khzgf=3a2Y78GY?QElM+NZ4)<;7hR zf5P3M*Y_?BWT6ptpA#jB9MO~<$C@R(KNm4!H)$gFinEknT;6RETV>1BD!VuA)+ zO!Bap0*nC00eb-l z0Y?ER04D)208Rl;186ZJGap!*F>x`FRSYIB21^!0FDnKU7lVn5!NkR2;$kpyF_^d* zOk4~mE(Q}9gNcj5#Kj5|&wUV?i4m8^bXzotiDM~knNftLv8D9{0ba;Ypc+KjIc5~! z6vpctDTUebEsM;4Ti`(ZJW6CXazkX;WVcsLey6mIJ5#);cj()i1z@%Lzcg{z!hO?()Uihl0f z)9tzB|E2mDYMy(t>`t$LL1*|VPYBsVP=hz7Gs!+(RcDgT3u=Ixsxz_J3(CnN?bq!J zaihVAd+u2X&w#~b;-32;MBJ3)9)UlMxKlygsUYrD5O*qwI~By83gS)$ai@Z~Q$gIR zAnsHUcPfZG6~vti;!Xu|OMyS+E1CNsGI1j)i4iv%AZ{d5n_l~3W)`(osC;q03~GAo z)HNd;SmBHQ`BD3f1Zto|Mn6PXjD9xB^ka=aB(4!Dzfh@WE1i0#IzP0gQ^aF=YzIBd zix!W5$+{$4gjJ!hB)H2SLEqR0R5 z8nWEp-qwtoiUOO~#eFfl&Xgn`_}~&xX-lvyY)Ulof9HQ_D|EXHQ8fcqo*ojOVs;4b zsYYU^#k4LAhIetx8vXuKVOU#OnC?d4Gz)N9Vhhj5VMrOFOxTGJm zCaQ|=sAAy~uyIio2PP^LEu75*CMd%9-+LcI2LCpNyV}5AZQ!mpa910+s}0=M2JUJD zceR1L+Q40H;I1}sR~xvi4cyfR?rH;fwJA%-+y{}l3mGmLccB69nn7&mKIkOxlMy6j zqir&yK+*%Hk0@t!Od&!~eq~yMaL&?3v^AD%8>N)wr7^mk`dfUJBbhQY>q3P#qvc#B zkEH!Dt9fL~Dvo4G^vdPUEPn*P-Us`cRkDr;XkFk;JPuHyU#fH?trzp;_2LY!s3abJ zNZSH_4{8oU34o5156HwG8Z-{gCl9pCG#$M=fwSv>=+`nIm+a_0_CYw1H!^77r$ld7XDA8>O3nv zUtLjXi^UPBGl&Nn0iRQ)k2Xy|_wWRcmkH9dO;FI7%;%ZtV=(}^n2m05G{wD94C=xd zSIg!>b$wK`U`-%GUwQQ&w5Wstgalq4CuG?IQ~(w!0167gA_ZWP0i?2a#E%Kw%LyVD%!~Cc>`RB934zVjm-VHy0g&OihRfY61+7T2>7yl=Pi0uACmzW^R zRX{eKt4xSJ(y_20r6}NLJp5m3r4X6S(kn~zZJbgdWM=UYS3#CXpO{q?_DS5Uy*pMw zM9xZ%3{8Tjl(s=gzyuhu)lYYTB}xZ?&>bSHoJm1yROxqu!8>so}>oqXa+RVB+A2Jz>_dN!hk2BCn4*+l+{mq zM|EpNuN1*=TItQ$FLI;bGnl@)3crQ21P?E*Fj>W+$+!5omQ^|oL;M~{x0eyc;FP2u z^W&SiwJ-n)N~XU01Vg+eAE$#lxPrOp$D5kZfg;Y-NyaWsq!TkZfg;Y-NyaWsq!T zkZfg;Y-NyaWsq!TkZfg;Y-NyaWr}2*`yjGpD^nyJ8nkazR}{%Su2wkbT{b`JpG-4E z8Y0TVGC7gE`QW`P4!nA7>C$7b9$0bj!Ogis$K*G94m`DM=hFvzdk;LlbJtS`dc=yU z?+s3UYcbb9aOKj{^-pmL_es9 zhkU9{?NFUtvdHn13hHMnD10CkQinB*3TB2B%!Yv35HK48W<$Vi2$&54vmszM1k8qj z*$^-r0%k+NYzUYQ0ka`sHl$#7?t{pf4JnvK18WxLnnI3owq`XbYZe-eI~rgRX~34F z0khTsgGd85)eSI+G{7LzfHkWD29X9BL>eG^8(RT|hc8_;kA@&MI< zF2D$29IzK~5O5T50&o)W0^k(jG=MgqdmhamE497s#|&2L-Nk#9;wy*_dv9r$ih!S`-i{iUt7wOj96bK`dlQaV=domw_<*+70i z{u$gin4dqmPiSIZqv5>n>0TqH3fHYSAO4b(W&Vx>t()fO&(1Y3Y*U;?SRsay74>P| zpTSgBr2ldzj_JixHe*RIUPAqvJ(_RJc2c^ZqEguXW)5*D7>C_Yb{cm7uQc~c{VXbl zqE+gp@r_)i)V~Ys@nLCYYLI_-T`G#$oqcxy^C+-;I8D|Erq# z`{_B^{pM-+({r->e?|9$llMfA3V#r9hZg$QllTW30vMa@Koo*U6)>os8xu48VYt(PGXUA*GxtFxvKAog!JF^YHYchRFwCY=au~JR3pNs2)cl(;=(i8uy;h-?wI9JJvlG0E$X(BRmvtp z!nBaXC8Q)wqcn|NPU~omr^A-lQdZWIZ|g{{8P(nxY+qK9+gjoER5L=WvCg16DD&)b zh<9ghnq09x5%-v~6-qCz_Lk4uLuWNq71_*jduL7)&`$6L;zs;BqE)qIR|Z{@m&Z%d zsxDHY3A4zstft-6#j3orva;&JArbzVoTidg1PRm> z%MFN}eK_NN99lb7#aT+{Xek_)cumwK!1~5ePA#_2aeNZ)pcNSp4aJ{Ao2_&zj5!k^ z9sIEtchmQASiImU4vTXGucKM|nAs_x8@E~M^tcTNJCIHF>_4=-u#fX`sj!%ml>ndv zN3c`IWJ6_gmemebFf~grZp#q$MY?1KA zhP1ov$zNL)E!w&(gB~{Ffs|crC}`oLnb-ajIe4MMg`|B7TYgZk8FTGc{k} zGlcv3^(Pvjg4_>d>Whl|I*oT@^R_((!pBFvLH47>crUTdN#KBTx@KE zu3}wPtvdEu4VQ|Oz0z}^W9-Psj{S{u4$W&YBYd4SBl()pNlgK$oGRcJ0LucfEMP^z zdw@a<(UT4ON097$A2(z0vr{ojY4*-NjX(MLIZcf{ar{K{G|zlcn&(+hOpI^A6Jv(t zCwAkBv)L1WBpz}}PetRN$62w@xogo#VQxpd0*?YG$>VS;v>|Cr0w_t2o(m7eA@4?NWGa!0Q= zyVBBK=IDOmOSW|0DsZov%~7vl<6 zW2Lc7-%_m0^iO!F;j?cWE``=anMuoFaUaoa(R`L4qbkZ;NmnMVSxed@W^@5s%Astn zeD>gC^sSM;Ma(qV-guh%W>0D)U>!fBW=JBc+4%F01v*=y!C?y;qSwQSSg6jB` z?~u=$OB!r5xQ@Iq6Cemy000~Zy$1>a%fIEpF>$2kVjE5mRvZuPC?42RJg}p9@Y){O zQ9Q7tcwk5Iz>ea99mNBo#82ujxwl&&FYZbP(7{vQ~G zW$!uvlgQb7hL8|q2$OwM(+sSSzjRX5gX>OQhj86TTHcIpmwtv>RoaA7-H?yFG52Ez z;vXy<*izrPl_UpCLN-6UVNr4M!uss&`h~^CiyE@|bvm1+ZPH+NwrhV`wrJYjCG)8; zQSlkG(}38op+vxOn86;gM^p_TjZ7ecL+y{?2WEeOu@G{qweRHy9E=IGoHa zoOR!Jx^Fw(mzg3n}yqRNd4g9KKL?c%MPeqK*9f@Qm8(XAZl zQaQ;=naR_zQj?vFR%-I%P@ApRtX+iuBJ@*aYzNvMa+{(#D9)Vv`_S%-t?u%MO?~oa z5^l}Rf=*V7LP>N{rk6~#*n&l?JGq+vy=zW3;|c$rkCn4c2B9ekv~=Q{iEAHegfR9= z0le6iA)ps&jOl;_wo}=D%9Z3|O(~BZ@??^Wn8JR8+2IiFL?YQ4_a!Ym^w_rMtt%Gg zW@r-(24_}z+tS))x9#Y$^2@BYsb>U^WenY$luGRk5ii!KnX5bolws9|(U-GILuD z+NuBKCW@l_lajbg3!)u-lhzQuh1**U*{#{Bc4f~|gjopTu|t>rgAFAuM4-+TXR?u8T^w>f3O#m6^X@$D;`n()tt z;}bk9u99-`Fb!8IDWx^N#o;D30i4sjK_rOU_ z8}QK%Aj@hS@S=F%DUS%GI^II5CP}{c#<&>OS(avX8^Dsb(y>``j{d*kK`$keB7LqD zN?|FK!cr)OrBDh>p%j)vDJ+FjSPG@E6iQ(!l)_Rdg{4pmOQ95&LMbeTQdr6eNRNgK z5ClX3oq%D$2EfID1Arrd2LO))o(KFK@H#*?=ankvJT%CI&IBt<%n*N6g6In7Y&t*@ z2+lk+aZ^rPTW8+zb*m~mKmWh3Uv$k_xO@K-JHl(0v^xbY$KCe%^4{v)1ieY@8~EJz z1t|%Io$ESQ-?6zSuY0}N;LdiMx(+^f#k0|G{o`=e`kO{~{@}JHX*I)j-nwvc(l7t) za69w~9|k(F`OYPwHT|XCpZWUQ-aP|_BtLDC6?(`|0UQv?3AEcWv(sSlkEpqLb_ zu}J2_IViOcR!k#~)eLLD{NZ2uYo;#KCVe<+;*U>_CE`IQ-${g%BJq}+K6+@Szhf+w{N@2EIOo^KCMkotetv!0sk$#(`QYX`a?;6ZczM#$^1|J8Up`d zoiz(rgLmq%IlfHIG(`D@6syl7w6mpCQ&vs3v@7;NQ>PZ&qedjlBAtrD`6%)Z)yoe_ zOE@nb?8lp65HcsxQcWVR9@jivD{!4hC??&6sVGX28+`DJtj?W&K8ez!C}oFG15bD> zvb?`7BcrW?Bw ztypiZ%6dEZK_pKzVMRXED9J)Sxt__-A)UIVIQ9s4FrjwI_U2$sswkK(CZDr%q^;Pv zKe1`W-VT3@TMq}bDJ#8xtg|#h+cQihs@}Daa7o@HEgv`Y5Sr zWOlD$t{idLy=$v0*R2^Vi3~d&zBTog>({I*IZwY(P@G;{SejFmQ|zrSF2gnYJ?bfu zd*~bR^!=Kj3BT1|2piRPWH_V^=aXPQ$ZhHA4RVV`HW@)N=Gb@0+AL?mAO^DHJKC_S z87SceWT6WQl3J*yD5D@L+JPnDN-h9Wmnl6c8KaZIZ+5>uBtWiV$KV&T?Wj)`@!!w= zYIo;FoGbdmICm`Cyr*kV^hIuHJlZa-<4n=N_q^Q`eTTF5z-r8Ej%gMOpVuzH<2cE0 zPg05Ait;Y;l4PK~KJ5Piphw5zC6`d4F;sfpV=b-EiPet_pXtv;8N zGKYZoocL9m4hOD0W-$T%PU$(Rht4$69ny1QzY0uAUVDe+vcayL(!kagw9wy6NnC;eCb4WgF=jCmzKp9}>BVySbISIl8Si`V2SU zU=&b_mg|px%V5-M6LkFjLi6M^lg|jvQ-fBo#gd-Hf1Uq&QaZIDpQ6!Y8eV)DkCF2v z2$Y_MS@p%3e3BIgERAL50_ukGTCMo-nRjT7LV6@r47(q(1Bj|uG8faflxA21%|J(2 ztOs<)O7RI}8-+X4;Cq5yI~G5ox(V3-5vFgu2oeRm-X&hRLEsUf5#BjGIC^FqgJQ=V4JvrHvISiQ^2+@T z^Pfxg%>uwP)fEU}_DN|;fd3RU5B!o5=40xc`ANFYuI}5GSQqBr)9nBUpF1jm{QZ(_ z#jGyo?v7rd+kwzMPVQ28dfkhV`wp63T8SacsZ1iuUQj#?X1SC}s8|SCeYe4`|B^w+^LoRb`eZ}T zUzX`~qIemG;&r;qMDh9QBjb&dXuctnNPkbE)dD65`6L~pyr@0{$wDR8E3wCrtiO|f zKxh1t-frl|54L1|G$aXx;(A8AuFq~I4!NXF)OQ~ zI4!KiYw1>I)fKqi1$9~3wFNF$L2b4guT`M4@cFt&=Nd8frGg@^Dmg2h<*%;}rxg_P z)%KjqtgQO#O5MUpVRl`yCo?y*x*)4wYG772fq)*-{egI%bdXOFF-4S4ep`lS?MqBA xlD3$!XsEcjsQnZdReHNQ&CTujqsf+7`KUF`t^31|jfU?eCH>f7{EpS8`M<8hH&p-t literal 0 HcmV?d00001