From fcdb4a810508e2145569c8fce32c7b0ccd33e048 Mon Sep 17 00:00:00 2001 From: linearcombination <4829djaskdfj@gmail.com> Date: Tue, 2 Jun 2026 09:23:56 -0700 Subject: [PATCH 01/10] Remove unused fn param --- .../doc/domain/assembly_strategies/assembly_strategy_utils.py | 1 - 1 file changed, 1 deletion(-) diff --git a/backend/doc/domain/assembly_strategies/assembly_strategy_utils.py b/backend/doc/domain/assembly_strategies/assembly_strategy_utils.py index 3751ff45..05066c56 100644 --- a/backend/doc/domain/assembly_strategies/assembly_strategy_utils.py +++ b/backend/doc/domain/assembly_strategies/assembly_strategy_utils.py @@ -516,7 +516,6 @@ def get_chapter_intros( is_rtl: bool, show_tn_chapter_intro: bool, use_section_visual_separator: bool, - resource_type_name_fmt_str: str = settings.RESOURCE_TYPE_NAME_FMT_STR, ) -> list[DocumentPart]: document_parts: list[DocumentPart] = [] if show_tn_chapter_intro: From 91902e91e77e9f0ba6e1c8941a21bdaa0f96254f Mon Sep 17 00:00:00 2001 From: linearcombination <4829djaskdfj@gmail.com> Date: Tue, 2 Jun 2026 09:24:25 -0700 Subject: [PATCH 02/10] Remove extra newline --- backend/doc/domain/assembly_strategies/assemble_by_book.py | 1 - 1 file changed, 1 deletion(-) diff --git a/backend/doc/domain/assembly_strategies/assemble_by_book.py b/backend/doc/domain/assembly_strategies/assemble_by_book.py index a4ce77c9..f0c03c50 100755 --- a/backend/doc/domain/assembly_strategies/assemble_by_book.py +++ b/backend/doc/domain/assembly_strategies/assemble_by_book.py @@ -27,7 +27,6 @@ from doc.domain.parsing import handle_split_chapter_into_verses from doc.reviewers_guide.model import RGBook - logger = settings.logger(__name__) From 19e4ab2fd71be53e8f66f31aad4e15210db38ab6 Mon Sep 17 00:00:00 2001 From: linearcombination <4829djaskdfj@gmail.com> Date: Wed, 3 Jun 2026 20:47:17 -0700 Subject: [PATCH 03/10] Remove some comments --- backend/requirements.in | 6 ------ 1 file changed, 6 deletions(-) diff --git a/backend/requirements.in b/backend/requirements.in index c6af9614..a6f6ee23 100644 --- a/backend/requirements.in +++ b/backend/requirements.in @@ -1,9 +1,3 @@ -# TODO do we still need cython here? I think pyproject.toml build -# dependencies brings it in for pydantic so it probably isn't needed -# here. You have to test pydantic install to see though as it will -# only use Rust backend if cython is detected -# cython # For pydantic: https://pydantic-docs.helpmanual.io/install/ -# TODO do we still need aiofiles? aiofiles beautifulsoup4 cachetools From da6cdebe9b24614711d89513ebc6477f61088f22 Mon Sep 17 00:00:00 2001 From: linearcombination <4829djaskdfj@gmail.com> Date: Wed, 3 Jun 2026 20:47:46 -0700 Subject: [PATCH 04/10] Remove unused function --- backend/doc/utils/text_utils.py | 8 -------- 1 file changed, 8 deletions(-) diff --git a/backend/doc/utils/text_utils.py b/backend/doc/utils/text_utils.py index 05d6486f..b72e77df 100644 --- a/backend/doc/utils/text_utils.py +++ b/backend/doc/utils/text_utils.py @@ -2,7 +2,6 @@ from doc.config import settings - logger = settings.logger(__name__) HEADING_RE = compile(r"?h([1-6])\b", IGNORECASE) @@ -130,13 +129,6 @@ def demote_headings_by_one(content: str) -> str: ) -def demote_headings_by_two(content: str) -> str: - return HEADING_RE.sub( - lambda m: _demote_heading(m, levels=2), - content, - ) - - if __name__ == "__main__": # To run the doctests in this module, in the root of the project do: From 0d0a66b28e1e416e725e28fb8145c1bdc3374213 Mon Sep 17 00:00:00 2001 From: linearcombination <4829djaskdfj@gmail.com> Date: Wed, 3 Jun 2026 20:48:18 -0700 Subject: [PATCH 05/10] Don't add color to superscripts --- backend/doc/domain/document_generator.py | 2 +- backend/doc/utils/docx_util.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/backend/doc/domain/document_generator.py b/backend/doc/domain/document_generator.py index 5c595f1d..f4c230e7 100755 --- a/backend/doc/domain/document_generator.py +++ b/backend/doc/domain/document_generator.py @@ -773,7 +773,7 @@ def compose_docx_document( add_full_width_hr(doc) if part.add_page_break: add_page_break(doc) - style_superscripts(doc, lift_half_points=2, color=RGBColor(0x99, 0x99, 0x99)) + style_superscripts(doc, lift_half_points=2, color=None) t1 = time.time() logger.info("Time for converting HTML to Docx: %.2f seconds", t1 - t0) return doc diff --git a/backend/doc/utils/docx_util.py b/backend/doc/utils/docx_util.py index efaa20c0..2f35821d 100644 --- a/backend/doc/utils/docx_util.py +++ b/backend/doc/utils/docx_util.py @@ -167,7 +167,7 @@ def style_superscripts( doc: DocxDocument, *, lift_half_points: int = 2, - color: RGBColor = RGBColor(0x66, 0x66, 0x66), + color: RGBColor | None = None, ) -> None: """ lift_half_points: @@ -175,7 +175,7 @@ def style_superscripts( 4 = +2pt 6 = +3pt color: - RGBColor for superscripts (e.g. light gray) + RGBColor for superscripts (e.g. light gray) or None """ for para in doc.paragraphs: runs = para.runs From 64fd8295cfa8f4fa43431b17462d34ef6c7fe5f0 Mon Sep 17 00:00:00 2001 From: linearcombination <4829djaskdfj@gmail.com> Date: Thu, 4 Jun 2026 08:45:51 -0700 Subject: [PATCH 06/10] Update the Docx template and make a few tweaks to accommodate it Many of requested changes from PO could/can be implemented by using our Word template architecture. PO provided an updated generated docx file that had the new look and feel that is desired. The PO used Word styles to do this correctly. So we turned that document minus most of its content which is generated programmatically into the new template making sure that the HTML to Docx conversion which handles some of the Docx content generation mapped properly to the defined styles. --- backend/doc/config.py | 2 +- .../assembly_strategy_utils.py | 7 ++++--- backend/doc/domain/document_generator.py | 8 ++++++-- template.docx | Bin 42210 -> 113352 bytes 4 files changed, 11 insertions(+), 6 deletions(-) diff --git a/backend/doc/config.py b/backend/doc/config.py index 8450f70f..f2bf1cfc 100755 --- a/backend/doc/config.py +++ b/backend/doc/config.py @@ -175,7 +175,7 @@ class Settings(BaseSettings): UNORDERED_LIST_END_STR: str = "" VERSE_SPAN_FMT_STR: str = '{}' BOOK_NAME_FMT_STR: str = "
vH9DJ(s3b%GOE6^2&6=T|UzktSi05W)P=r2qS# znRk`I)SvqJ(MxonqqcmbnNc7XtGLtfFcE$4A@L3i>Z#bkw|(8r~|&wf!InFyFs zHY$2SyZ~@e4>Oij$wmo0Oi@)W@$*3AGhGn yiNzk^K9gr213$NQPC9! z2A2WleB+CeVR+&gwgmySf9;m{0xGas15#UnI%P1ODFXE{?wBhP*T4@1jemV~>^=Wm zN&@Z{NqeE7F$+MVeK`rFEnvRoy1 )r2-%vwDk`)pIu#q92PzdRzprgu2`7}IiM~4Zk z-$&@qg}~wHE!xL}m$Jd7Vv&$mTmnEEs_mg&n}6zky+yIOeOyre<>iMQ@>cCL(h)}w zbc+?COj8vBFS3kLkOio6?`5;iE( !c|1EDU^A@55t8Pe&O^K#xUHEa5S5W>34uFWlgs z&hUOZYZ&oV_68)((1c_M3JF$&p(DcsQzHk5FQbzuGwyIzQerUtmN_WT0q8=tVYcC9 z4~?>&7fDD(The$=5oF`#E*Xde@d0JH2Cx~F6 rmW479SI@->xx$g8xU=TL82XG!4TE8a%ku;O<_a1PBn^U5dLGTA&gL(%`|}odN}l zL$LzIy-0x;FHmUFB1L}sywCf8-?w)=GrK#txtpD2_p&>)1Yt>cG4|MXY+4eb#> yLn7SiM>>=MiGPxCN*s+8wH(P z1KIfZN6ge(B-DGjK_ufe1VqDT^jVP&EYpUz(N!*nG+*x)q73qRGxJKvNLxt{@^no@ z+CzsG$Z$VGLBo({A(U)%{Xl6uU6Ssg4wr?{I+r)WYyV^8j|~0x)V&4AF10}upU7Uw zqcY#QnHvZM+Ao!#pz09NRU6b+ya*CMrb^10dOQV)6WCrz`=M+o=4WsTT9}-w+H_Pi zEF&3KP) J*wgtQm>to}}IA%1oO-S_IRk@(9;q6Gz#g|tm=mz7C zahkJ+gKe&X;7Clxq4>9dV9KB(DBC1s)m&0j*OziqRNjM1|DW;ULwC6Lzd8;~2$!UL zq6lmhP8(hh7znpqgo=DeeVquNTcHBqU`d#gpLxVMd1B>94XeIoRpO-qu&+Lt8*@Qu zE;G D?#hjoRHj@OrSiW%qNBX;#jZ_>~S}e}6j?tF^h!c97 zlB^=cm)-DV;L@XOQ9oBhRejb`D4?s$15Jp-Ax2D{MD11p--k0l?;jOs>;6Z& &Y0)GMk{4h<2 z!@J|h-2G0TkUk+&9CWH4Vol*i^s&7itj4mW(>53xda{H^3IY(00RSRU!-8Ab3n`!! z0EMP(;48`)q98S&)1U>AkaaM6P&h=Xk!q3*X>gvn n# zr-_yG(~TeCNn{NeWJvuaL-l&iOc7U?uw!uqm9g+_(wRK6hlQ!EEFBRU8)SoV+d260 zH|ERV8nFE1Iy)uWkB^qf_+|~%yGK+EK_-mOmF7+3M}SA$eMY^^Urk{e%6K+x%p_Fc zOf0NOp1ZyD%3(tcg(#p<46_Ql3YyVKC7S}{V xu>Z>05Ra3atK(s?yfY3B_r-*9n)hReTM(nv z&+r2PQ;7SJ2L%CQN{7cbA0Yv6AZ!DmvVp<7`Or%RAd8CZYO&Y?D d3Q{LTlR?5hX^v@_f;wFTIg|N~Pwe zD14UEj$C}QYu9Mqwvl_+?xt3Phj!&qGbm0=%NlI9zA82y^WrXDu!7zKuJJf_YO_hM zD7ydGi^M@Duyk3`imNc{{VRsEXb`NU%8i>-@{Bxqvi_rC(%AbwhOIXe*qoBX*w&3* z-zwNM6;I$4h_N@4LNp$1qHSZ%hiWDeTb>`%@wph -y*V;_DTuVIL*sA!rw*Tjx^zj zS=D}d1l`Fqn8|Z|&%iiqsp3wU3?z=75lNIz{d#J=F qD?iiv?+Sv@}F?dn7W0PavPeA zK?0gLrLhPw9b8?!ERrL)ZPfkUTs>Y^%Bo#77xG5R_}6PZDra5f0O%PWy%#>2A^fXR ztUc{Bjy2r03l`6p g^#N1t4I{Pw_Ruu)fRb~0)t{1 0(4*DY?p_Oeam@g0$e8yI6w58Ewr| zz>B{RnoHJTzNlyNsh7LPzxsO}nsr|{_O)d7Qi@&uBae9E$9f{$6s)BzYF{tUtck_V z>0Q5Gi1UaW+X}P1*jI*pm56%9Kq2- ivv8BKtm|(!AquP7{MuZ}Q$0zWqp;B2^sDFV1dv#) zrKoa>h+SXltJ>V$r0b^FM$+kjRQB!fr-nihKFG;eRAljSLvwv!^mY9Gzxr 4Nq`iZ$eN%MK1?)yZe2BG0S`SS~vjZ$6vl$cUyhk2s{bqcR{TjFOC z+;*^)%ndS|et{TbN(*AIYz?|FlH@{0YvXHu?v=L6;6EOuH7xs&OM2(gq9){7zf+mU z+DtMl0&D#AI|r-Zl!fk~#Z9}kOqcOEICA>tL7m0>ScA+$?9G$pVuQnAqcG5;;>8IC zVJ`zOm3AsTVF4 m!udMXO|NO5svK4&?sHWL@!HXsQlxGsx{ PA@wHydHA3H6NB_2RsB-eq4Aj{#3o1{J*7O)TQS2s{|Qf~AaxljWLZn%+ir4Adj` znzqKB&n%ZtoUVTe7^-xcJ8E3d);_inG1Bxl+C0CPv#Z{3wDv?mH3H_JOLzY50Ui1A zZ7&T(6CM9Ds N0D#QeS_`q}r= z`FiG2Pz(FVhHOJ5 XSN}q&x2jsDtnVA=e}&t*~X{F?<*9r`>VC}{_K@T zWwTrQNez&5ZQm)sKe%5bLr_gUciKRL-^pyWZjQDQIHyjvGJA?p6Q=ZsC=O5|x!(y+ zG6_1G(Y9*TrKh?HnA!9ZMcsd+eIDWl-p_TR(Wl#_QL~d|=f}dNpCzBZc44r?^Q|HM zf%b(#$w1=Zz!Hp}i88}8+UHv!1u6xHSV(gmrX&ut(4IKSMc%6{L`+ImJz*U`f%5Wi zGjqQwrO)p7oh2DUm3n@4K=*z3oTSJ!yqAf>%H!@YlaoKa-=~&J10B_Z1U+7d|3Y7Z z%rNk$DG1alMnn3Uav$@0uiBoL{#_L=u=EI5wDy!P{_5~K>h8}(9?|(6AA)VL3N3Z4 ze;!{@CI+c0o!Ia!LtqZD^59w2gkmv5eHrWJpJxnpU~%@b5GdLyzEh0@O%3%~KBgkR zGv9e4_T@0^3q+}p1fPQ3ho!7&l#?!y7#MftTKYHTi> !P&70DQ!Xmz{GE?eENJl zLjl}B>~QRv>AjD>ygZSm)vcjf>?LL k-s@l!0~p)eFjMJ`^M)V`2j4{x5 -KW~btR&mI5QD=P;OK#QRFGoA+ z6S6kvmc(DxViyyR2P0R&@(1I3_7U7bG<;;w?_0iOQGp1x`m4XBefg^q;x13)6jkvG z*Z$?R`kfyoWNNT9t9g7@Y(okz=^6LW(%BL`OwZZ#5YiieCPinSlaF!Toh_TbLsU7d zYO*Sih7&rPqyNf38v58?@)W39C$GqrIR<0z1^n@Q%&8K*yY8doTUkM&o4C~Z;Riv~ zx=E+ONPimJRxUe5&aD3nI*Fk=MG^msgdP65+T?r}`6ZT&YO!A~n|mj <%-$^^A|TQLXGujo;x^G`y3>=cKny3nsncbA{b zO0e_UKDRd8c~U0S?r3T7k#28^^yvo}$f`{!+Eu3Z0ZyD*?l|JFI1|#$D`L{7{Ic-} z49g2xlu}|Qs(5gdxOd3E=<)s-9r1V)T~RKan2oU5&+{_ ZG^VaZ!N8oPInOQPfBJjq`#pG2_{UvL{R3_SZ~%U0cMX+!Bk5Hf1lU%1>x@ z`{apD#xKPcVL3|0stP&xCzgtsGC6lhhnM|}xI|4v4F0$mik`BN#f6a2*P0Dt?z|ss zi*^t}UA+4R{YQ7s@&m6@`&BR?^G +B6zaP# z psWcpo~1xA+JDur%BfuSGPPim_=;li7ldg^GD;u)Wk9v4LD2Ag&ZKw$E&< zTQ9Z~X*Z}K6`0Z_pPVlZXNi8c%y`ehO%aHNsA;k{d4A@^itJCqo{Gvz%wU*IuOBWp zm7IOb#8fIB(7qdHBWq1+^0*x~jK*QwGj@a5kXYbzFjC(PWcZF`N7|wo#-fY|>=x&A zN{n0eb)T%B7hpu_lx1`jE@(#24&PBZUD>`lqGA319KIJ4uAgQ+bxQo&AgkPCYw6d+ zg72>!K3ilIpDLA~m!7h4!4&n8%kf#KVpmnRCL+U<#o@WCM8pX{Qj1Z|PKiim(O9u4 zB*lQO+It0^!ym#O3!qnE`oDh$);AW+ve;h}awzRk^1lJ}hT~w8`#IJ%mkv^cIJEDy z)%eMe3y`=NoH*gIjfbyb7>b!r@qP=TtQI=s{iPlgON9Dv*pH-j8B4;@iVHf}N9jVG zbvg!lQTEpC#}ocz)?p%Iu&E;!30!@|Z$$1b$O9bLOS-p`Qtx>+7#QnfE9#3EzXn0^ zAGlqS`0`bQGrD@wT8y$U@JJUHN`Y9I7{!^kdMjVA^4(I}uZ%&>bJ>&vr*)cP#MW6tvjX zIL#i56Y~ZVnD7{Ci_>cjdYJ#CumQrrde~qJI*1e(@6>YRelO=CZo$YFMsW(yzXMaX;v6@@vAEi!MU~h#F!l7&}M|+s8qN^&=kb<=h ze0)d|ilsXKV#~>VHKIq YixEdHRvR=eT_ puNRM%oC zVK5YfjE)1W+vu62GQ6uqb|b{OgA|4oHFaRlfF0gCN#s 3BgMPnxapsNH6de+iQM4^g*bMUz%j}#e<+iOyo$)v5Vahf-$4Zl z u;M^j9A_#&N@nW-Wd!mK?{!KA0H td?ZYLnfH{aL`tX4|J9@99- zj J4)J)1L1R6c}-un6`neubH zy=x4y>z`I}#d_;z;)xQY^}2nP#aFAo2oP)bLej5z-$bL_btW*^`NbiOYRmKr%Xcc~ z+1?2yXvF-9FQJ*xA)O7p+H&h#;4G#z%MBIY?^Z>tfe0}RuWXBsDPbc{H!R_K96Y2r zzAG(P6;5T;^^fp|tqfhGCB8X6ZKrIx>+BOVVGR-Zn;E5ETiE`Dlw^Tb#E$2<`W> zuPzIPYd<*Osp$h70MhR8vKGN`YDy%ee<6*{)>Ts}Y}B5Q+srN! #Qe8%eKH($lY@S|l!oZ$RzIt4R#hm_k|BL~+lR(g$iQD1#TuD@l?()#5K(-hmur!|%J{D=|!O!VX9Sh34_ z2BxR+M?33kwypEV4o9VMdIUA+kjk2dYd!xvfCMO+ij3=6H>Il;1DtJDL6bXW`Im+F zFV!#${6k-%hz^IP)^220+Vkm}S9RiN_KaNI^_+mH_=x_oPquWl_-|D`6CL2$Y7NUa z9#7;>4%lE4&%#+itRH$_6BAz98MiY$Ok --CozBH1Zj&|dWH6}MhG|X_MKmtHEG>r7J%Xw%)oIa#Ml;k z HR^Qd7)u_c)uqwKj#vIJFVXLVti1tWZq HlawV~t;vbKh^t68k}0Xv&XnlusJZG2x|7 z_Y*oYa4W?*Nx(5V>Qwxr&9~Rd4G_>+Y)F?1%)#>=QKC`T5aQySm QHVRSosNeVgJUf|ub>b#ZyicPO)W0t8>6j6#ghWl?km~U zE|R}{(R#G@w|Ty``be%aN|+x)&@+2kN1PP(p-9y<4BT(1O78TGg_zGXb0y550 m7fo*PP (!4(D%G@hW)xIkI zgmDn6%VkzgT2FL7NJ^rDE`yW86vzyK!&oexfXz(`#NgWEvTZlGALa*(iV)Ugo&blq zknRO3NGSpf2D$9yvQ=oc?wDg^KgmYIS6y@&SnPvPM(T?ad7v=1aGImm*drJ%8{{;p z6^>5_HC`hi=yau;#Ud#@;b9^~+fR7U8D`r^vEXrqwM2!1lGss47)^2z2@r%P1KpPo z4@XRI?!_R$RyO$td_ir3W^^?)`XC&zBdw<9FH-R{>eqLFZ$>3tcIwPUg}xuv57no( z>pOx}N|)TvvCa9Uhl1inl0|b9ZQVK479;RnW|lk*XeCpGRm_cU6W54eayKrlLt?^t zNsnUI+9@{Y3GJ~$xpp3)Urn1U<2*_ZK_1LHXlBmfZmN1h9!2Pt^SJvwg3sU+x<{QL zigRm3S>b9 g$Z%0$a0jlus~#%=<(T88zf2cP$0i+zTDk3x!UJ}b5>2@ zLXV$9N!GgpsV7lCfCop63audPsP}I(J}~dCV2kj4xOXUP$7R~fJFFH`kel}AM|@7K zxCUqjq>*ZiwqiPog`#T?UU;yH@MLDqODsD)UjVIReysmkW U&jPWSIRx`XAq=8SwCrkmJxaA+u!Bp(LcY;vt(f-BmJ$`P7isdV zGP0o{QdcYio8(3w;~&Qi>qraU1Rq5#xeD3nPJ11uN`5LM#iZvx+tc^_(;y}zl#-E~ zywOz;o?%-NZfiDRc_-tb^VYOfj6{Qs*MrT(Sm4Z5P+%$g*B=gE5g_Y_1;ma+VoWaG zSr(KS3~Cn1v>7=AD-y~)q8g2Z$g{15BaXJC8XVssMR35c+ncQ|I9}-gzN5!t7JMTd zGj)txu9C@dCjbb~>E(|8(Ie-)rQI*q$-@oMzhWxziS!FZfmDw>YHChXQu(B|^M0Ts z(1F}V*+Ag#xC~qT)|b0T1PEr{rD97K#vbfl_Qmcr>eya?#qN`;CnfQ )ue;+g zeF2g(xyW$_^fjfUhEv)`Lpj4jg|5CiK7=q_!V8q<7bhC3zgv fz4vWLfO{I%<(TVuhF}Vek2DLDc30k;gsNEqBo@Do?CN8 zeTC!p4xXJ(&Rv%nJu4y}S7Ca|K7St6ETxElZK&d8qwtB^>$;6CyC&IYV_wf=)~hTT z{o_pWm!Q1HL4BV+AD oUWMwNo3W^GSvB7>T?YczvLB}8 zRWQF;RM>zV!To5604J<(xV3+Is$zf!6OER}gA~ogc_0Hq_`ZDtm-S%*c;I5bywoLI z=8+pXq_TFJug2+i&rGM~^_an!RJ3#>R*TbHAlgSxz6wJKAz@rBQy&kX$?!0d9w_`s z_8SBmLU&4tmx^+%D6hWcVd=N3x8|_^xZy(9@k{|wK(tdM$}(aOc=`be;IPV6$xKzv z1&HWc^gGjktTke}3VVew6$yHb^&Icj)FT##H6ELJ6TQz{f0&7^PR2cEV2#Xef>-u+ z% >i7kj1Mb>VQT=$UWplw z{XP@e9)F7_vX0RkvIA4g^*gS&Q^1}Cj>j-vN9ZDc1w^%R58tI4$k VPN(gZND0WM?Y@qu6_dCk=`V1Kzkqd?^u)dmc0AqVHBXOR#sWA7 zctfYc_mMb}=EA|@0WBg$?s8a6!#2KBRAR)sLiwgI*)#o^u*ml9+Qi{tOuFO{apDz> zRuBTr_7&fXQRSIJ_0LH2?2=>*y^%+zC( EISi{uz}d;$%J&VO?rfGy(9p8PzX $gZ><$?1hO@lvAf< z$md|%h=7mYrU%S#MOT#QK4IaNXMiAFzR|@B4`j+yrGxmEf;$lHRtUV48oLgf<-{%4 z48oTsHR(fzM;zc)EfVl^N}3^>L(N!d>R0sZ2!fS!Q4^&^wMeAEE3AhFr(uY?>W5 zKu~v&CqLCSzXpe>pRArSkf`(V3NkPkz)c!jp(AUXrItg#&^K4-!lJiyX2KMl>sz`Q)F`xe-kTygB?pV9@H z1F)r&@4=533wm)0j!T+`P|}H$=r_xFH1H88P&P$`rdk3jTvO32dPs}QHfL~&qWOH$ zBdL%aRdNgI-GxXpg(G71g|nEbddZ{O_sqDqu-~MdHu$^pRLK$Xv?smiHd4=-8Af0} zf}hjXgO*(fi`$d2|8V5my*yA)`<1d>DMU{{-Zx>(9Mh=%{-CBV4ieF)I9R-!GGV6? zj&VWQ4hXm=ukh-SkYycLPSEGqOKl@lwbqh`g=*l@s#FsMuOqTo4UWry8nTPsy0JX; zyK3(wiirCflNpEXb-GlN-^mMQEcuphxwD|dmv|Q5$}5MD#5$2z!sE9jc?e1}6uJ-e z#ZHJMf*Y-&z6LVV1q#4lC}qdq7?2`p(Dg|RNAPD3yARB@l*a6ewF+ZF^U)Pm-e=(B zjO;@FxvPfh8U&5DEpui~x5(^Ki2#^?%q%r+%5?;G`E<&f;5pEEmgu_7Yw`1Kpo~rg9x#?;{|%41ej*ibxgbIx2JDL=3|ZES4@}0@NJ% z3ZrM1z_B)TF=(IQq@C(-Bi~IF+c>!WG}+!+=99~v4ZO>khyOy}snuR1TuQ$X*r_ys z@GM| CpnW6)W@Jg#i7o>mo=l`aDNbnSXr5%5FvLY89R{lP z(y2|n5G<%k7HryKDcY5VGDVi&mBmS}924_3R}p2WZ_Ni=p@w{EVWHb9OBD*3;P_Tm ztmyj5j;^mPy NlPN{j6B=-MEHmbLn@_=+!X u 944Do}0LuXoK#X=z=M#h;&m%iOn1pKv+StFKz=)B2vW!cc;(c^POo?Bd%tG;t_ z%zZf@#PI}{tDhU8Q|PP`ir-g?uF9lD%oBH#mMuQkSkW+iZuf^L+H_KJq0U+lZ~DHz zN_9A^XB*K3^Q3snQF{H>nS+Z#w3`)|WtrivxJpWwk<~W&5Yf<4Fq;+CNF9`= 65nkS9 zsKCK7T8p?1F8*Q|SM=cLLIBH_>(LpZ)fQLLRIveGA*soyo%-M3$u`!0mu_Z~)eG$w z7LKxouw(Ons#&LbKX&JRqX3VUr%EgF4O~8)7h=W<`_wBRnly%BEifwgRcme79NC^s z8KLE<41UXJ$rEf{@|%-Z36K+^gouiV{fHB)4F^~J&^$v})CRnH?m4JSn?A~Fuc%C_ z9h1>*v6xW~n=X 0bMuT<&Gu|ov7s&ufG@tej7l0? zuPi8x?<6RPk47~V0^hwqxXg`k&o*# b2v`RD?Jl4^Hnj%D{Ku!g4wORVb z!~9j-T9ry&7UEF3-P#&B*4m}sc9CvqS}%#HsKCrMzsgbZzwe_x-Tr3ru{*j-WN?1_ z2ir~0?DCuN%&M#QDhq@5EJd;i%Tdvn;A zG4EHr`)tAt@SSWbd#sNouL?ehy9_5?x$Cz`mv01nzP&P67J`66Z1W-_g30c-DxUY3 z>p &W zp6e0JW9vtmOT@1vmNr?HT2W$cy4Gjp85D0qQI3ucZy2`Irzvh!Xl?RF&m6|hEqk5; zSUu{`>ku@FcCFvdO;tFvB8P+AuLj@#+C-oW ^iam)d(tQlmZGM>A|K+-&mn9z&wD1A{$L}%TvSRB8|y&(XDIu))Ha|}931Fc zaCm)_U}69CRzn{MJjJ2z5{47~yV6nfOEd7w)l1?lJyl-PRh5q 4atR2H@{g!2Ct}AF$w(P~hn$2ve+#ID3|}Z{ zmRpCtG)%Y0{>2k=*e`=RP3}<6qlu`xQf9 Fn<_@eo9o& z ->-^Ef2G2%$*6!ru&G2k3V8^LYXL(fPG(_m%#W+!hcc6Q6erBp~$e0 z<9lNFu|F{-9vYj(#E-^>o3H9?bDez5Io?LWyEg~xqx?8PSh=bC?)CbAjwHl|sh0X% z@o|;uOgCht`gB7*ioc3pDI3456y{*1o+2%EV1?96ZP+Qz%*!`5nz3^T+3RAxo)p8d zQ>IYF%5dY)4ltGl3p=rB>P3qn@{L^$^cpMG4$SVQG=%tnt)q<{920u`z`3)9^e~u_ zCHE6_S)Zi_2?X##K8|_t~*S{fdC}IJ$QC~1ymeT|Cl)@a`zVkALj<7nncU# zBR;p _jhAxX&%Z?KA`H;1ny6e&q6tw#5UleS)S z^vNX?o7Fd@7xbOklWp=C&|@6*>zfsoZEOyyM>UJjAxAO!1UV46!@<*AMTv9713v>G z#R;U6Ub002ZW?%m;|l5BXS+ZnvKUt_v7Ye6B(@zDcycB!th{ZQ&F!>0$en4s_7|JO zLV~&AKHWJ{a5f%GA8X>x241N&7ULisXv%>KqB2q>kymB*S5{N(Fw G z;O#=%sO+d2u0eN=Jg5A&c - g)Qdy;14AVthcI#EjH_rc+96YX>ap2nHhb~_N=cXF!&G?D z89tY8c#$PgQ5I`JpiWiIM}*$g+qX~OYKQ`n8$zmYSURWB(uh)I(+}ZNPRansaU^+i z7tybXP#1!dCl$eS*OsBux^aSXb`%3C>Fkbks?1$E{&~S*<(Z(Lkgs%258kK&ppYdw zz6khMFAUr0^SqLWa7k9ud2NK m}}A*&bYQ`DH)>T zVTJt*WgW1&O9gG^YWl2Rl;t^ku)=QHV&Js{K#g%%Gppvs2i;VjiIX9>=@ghvKb0)B zpGgWzTMP<^9n+JKuwaPBo{!(2h=mzq?a#CBhB_yUx$p|H(!hk6o8OheEF$&UGDwDe z!W$A<%;1TfTT+S+6WaHR;OO54KN0yqWbgBfr_YN=a<(1} @uJ@9@ZpqhNCSaLgAHvY1qAZY9B&lBZ_cek^2&XGx0B%-J(@ z(pP8-ybEBw@;$LHg0OC%orh}6R-Dwp9LmVVeY-m-=;Br`RYp$#e2nrQBolC}j>)OU zB~!y^OEHitQ}6Q#)fh0z>iqIWlv|Bjxc}A&7pGt?f}_ketJf}}b69vK#gH$> +>9^o@tLO6Fq%e z4*)b`gAx@UAsl_`0HBKwFIWhGRbtu~Ksk!boN_85!gn@6 n w>fL} z#!%DIk!p7^G$1V^eS)+RZsRuv%Cmw&Y_3zx!2A;J^)hUm3>Cm;;;bN5VAjMhM8qBr z8pBdMwc@|Gj8&>SyxBq8XbO2>)BY1p{NT9^0DAE5AOw*08|-oU$K|@)55V4t4gr9` zAnb+Yo)C sHu!Dv?-0c4oFkLAcbSkwf6v5!N4J9lPId({* z0v`gmlOJN5b{;l8&?8Y>?HJ3vDAvpFnPA3L+Kg;Qlj^pLUfSPa?7jg2vqVAw^ino9 z?*UkRVq78rt(-X6Bm|%Y6dYnEP{Vt7KuVRIZoz9T@OT-63J7J17IEd=0Ng^Z_iZkO z{4je7HFVJc3`}4V%Ebz!tjUf|oD?#xPyoUJ0CB^kSjicc3_cg6_PEk(Xqgi{JWME2 zI7ID3hh`xNzoATId|aeaB%WqYGf{yY@z93Aj|?-OMA7wbZ2cIsywGfAkfVC4@tD15 zvQhyE7h#^qlhbKHe&EQZNqcC?@DlydwEwqA2nip2WC%h2n}zv9)&(czp9hEO!6Z ;;;`I8o*gT~T!T1#bfrtSBMYlbG(cx(Hhql;>2d{LaPh^CZMWC0rWXpq? zGQ)~qgN7BTe|0?s95#Gvff+15kCG6;{~UlsB{l@Zt>N5%%Kx#LJ^-5s?0-0!V9R;t z`ZDk_q 0J*oo$pa;8V1q?8v z{csy`B-)Dw&UbK)M)3R%knL67!T`Z+Z3qD*tOINhe|Y1s5m<%*FycQw20V%+h6|Zx zfI%H|c3|+ow&wz403reI4>EjckB|r3dt7QILI6fJ;RvQhcFIscRyOM8FBpUyjT53v z=<9!5K*JoW0%rg_&;c_;zBKdBbrROk&^My7# |9`#HJmmbp`zSky+%!%+XxBI-+0y;NBWeu2Bt 5Ad;THFMMXssP; zPQpC(kIdY`wHCaQU{zw24cC`%dD_P`p@sT;2el~|Q8(0hwT}nG8M(g n}a-x+kWqeJxh+XZh#@iPV|gEiTo&tuC%{tiv#n#Y+
H4(m!b%=a6?KNFgzRuqI-bN%D4jMFzTFEiFn8*}LO-zA53zB=AGI6nRG zxjR=b$nVc3bzQ XyDO=2 zYP|D52HzcQzj%6kHETf7Iljh4@Mr_<>qC%>lo3lIXw(c*IXGmC1ooRnJ>Pmpqrh&j zaG`8d;LQ&SrLx4$eBSxlp}h|HelmfmPZgL=-~s$bsE8Q|<=)eEvYOQrH<`yj9cs~; z*g=@BFoJYEp1qLlT*?0|@~d9UQ4)$XuEb(R{F;IpI7gGq>_FO)P;a|{DeIInTM4)j z-i3OI4}%k8UDPA~_;B4e)RCs#Nq9W-A@S#`ul!v|PR@OS!zPi6qH*dZ{(%u`JSfCw zw)KP}G;V7e8AlZMj9KoGRZ#(flxi7XaY7J;{nFw(P5W|)>p+?X=QtXRTzQ+~lqmQ3 zCyr2TO^z>xLw){nCZQgPxUw#(V24=Ga}SqhyZtYdN@U06_vIIkbPc#Dx=hjKH0az) z0)a@xP+8}=BI`giZL^B1^Dp|sj|t$=avvnP^=~GTj{T<{?mha@F`k!0PTBNRu||k5 z@!<5PBpxrm_< Vx(oieRe-4(82MTT4h;4MNjH9>j9&W%at=yg?YXLy6z=GM9dZ?=FV`OPu4 zgq&0YaiXjS-_&UPPDAb0_XY8wzgG=eZPiW!?`S)Qa4Vc w;J=t>{aG^wE3 z#+UEkV$?zhIXw!|PP+)KnwWW!tq+K9{9aT0*Rhf#>6^LSN08OK1^%Z`n`=Q_OD)Wa znPY5v&FG5vk0+T6O`bFJWl>QPl|D(2xHAt{X3_>!xgWc++p>Mqiadi|aVI_vy6BV3 zb=G{gl;;?vHE?bx>xmu;&sJkWkVl5f%1U$yE-sAEmEy=bMtjno557HWQfHxW3xzom z 2xb^D zooo+ #Ze7S#{!sb%}|>De*9)~R!wYGZqipwQIrMU5>n zauFHTq^AHmGh&*=IWruQGEEyQ?dD#}n?$ TW#A&Ku~%A-$x)?w><|O z@qtA}{zLIfD;ouLrWa!tBFMR4IUgrm?;SD9$g0x9La=3T*Hq<=j`6!^EUjfch$f*$ ztB+}#BB8&m9Mf?z#%R5yNmkuDX3nctk;@f-2vYq9_{FLY{R*vW(ll<}h7SWeRcE+Z zKpI~heuduD>rjopxM)ZGynWru)AT;p)wHCYSisHp_O5GdySp3L)WCelcAQ>pbX>b; zimwGXLjC
^&sH9Zl7ow6p*` z4>SmX4J7-|7##=zKJd{29=xahqX6nadH~{o6Z$}||1x0!0B>CZSpQ`*f586&`XTShUzW*+}%&__Sfbe|aX3rk{(XjuEKs9}~Bf!J>PYtGk zFbo79tm3A4su>*}JB>;6+U@HJBW-$6mkdH^n5C2*)HzDp#@t5n%1{#`FsGoWM+m~1 z6OP3ja0XBgFaTyh v2~Ng0ccTSqqmJjbRsnr-uVYl@_Vw=n zN+M1raqs_j-@o*Uu~^wy%fG+MC$Zi}7+G(x<=^e)6W{&pzWcexZoR=yJl})3`HWy# z`TOnSN$a7f_e-AvN)tk+WBu--n9d=(6Qy6}^0#}q3sx^ydt*K>#>AZ@++QZ(3f`Xx zB97kQU%%gcMHyDydw(i_|LiEu`zj6hMfcy;x5WM|l2^woIQO^T@8$fBXP+{EA4Pmz z8I7}*zxgCD`*o2{TVkC+S58~|7*}rF>qW=%)aLgGW)kb0fv2x@i%dQ*!;^VmPZuc_ z{B}nCaVBB9X#LE1v)p~VJoVH2{?EhC!26}vZb#X^^r8#9z~?2rSAaJjMN}~t?F%1? zYrC%ZZCS+-+a_ {0&q^*2 s+mJP4F9s1(H z;^F|+776@qi`P03hYn6j9b{XWmhqjfKR7My-YVqp?BnU|D?65x-j^E=I&lcUeOX-> z0e-*VS*2M=ZU})x@W;T#F@12ycZXjEyAX0dtz(&_-&^-umG%L?9T{kqs0G`M+tXh$ z49Pnu`xtsnwuZ!>^n2;u#fx@bKkfL$uC(QUy${q|Mm8gn<~_vZ9+hpOzA @Dtv)FC~WX2$baZDMTZpm3=}+0Yl;EQ8(oiO8e+#6`s& zn?(i_Ln5|ryWf?EMQz*L{VV|>CZK^<2Aj>-UEbjV6DlIl0^mb#^vuM9NSF~3zEmz~ z2b1)`HpFU8JX+ZvTY-#J7i&mfbvaaYL@OfJ4Z-c~>_+@!*s;b^zS7Gd!!26elqq{! z>b&m!Po2JtzfVA(gcl`qv+1Z4G0usTO}PLrip015%<8l2IkZc^+(~P32-xZvG-mw3 zqM~b+Fd~)S8mQY@nS8hMi?k2_wcx{eEF^xV-ROvpWH3F|q9}%)pIr7W>-OxeN4Oc4 zWIE!Z)5W2`*I-BkRYFNt16m|X4*^}A|M3rQ?en6<`gIig>b0~;jfrA)W#}$x_p%G| zNh{$smb7E#8JCJA{o;^-$kfWFQX7}APM*TJnJ61XvP|0F$PY^J@D#WC^3hi#WGV=J z-r{uHVsLlSD#ieQPo#movU|1?eJ^oUN=9tz04n1AzW%#N70nCfZCwu)*m@UxBeiXs zq;OQJ$&W?YsN9DprM9<`f2txqHI`E7)mRnPUorwbXRI2$=*b+QbIO15<0%#!ofXkm zfa1X%G0Cu)S(WZf7EguzR~pLljP?(yvZA`aVV8s-7T)vfb4yMTr#X%(guySR1LxR6 za@NfdO$DE<3FOPf@ybYsxK5AkSr-vxtiwiW_NUiU4O)L~Cb&Vx^KmH bR-y=#>g=A?4EY}nrh@u zikvI5TxJPD<5+z6m3#v=8iI{_O*%z*1B^K#A7PRY0QE=_<3u`bS}81V$%dZg@JfU` zdfemz^uJaFXcGHoy4kZd9a%e-3py=7<6NSG<5)JX%&HPMea|=7EO6}FB$F@W%K`nl z-Z>PSopUWisowTuOBk(VuI3Z= Xvrt*fiTyRct<9! zPX@#<+D_hQxHnU!MI54=pna09t!n;Az8LG^X{IHY(QxliS6EpD!$NVkG@lgjnP@Nd zVgv=(2q#$XtMOjRsd&$x_-^bFSE@X~xCD`u;cqN(%Ssd`xB8y84l{&+Ei*Yy7ohHc zoJb#?xEb8R4E)|7-9)BB=ZteBC>C%ud?xy=UH2q!zf<{nQ-wkct`^J`xhDqf!IbNk zIaM~Sgq;{zu!|h1i4|CgtNScQd@Cygxsl-IbNgqTC1U$EO9A`W>e{cKzFL62`06}S zp0Tsc))}IRLH?x|anzh?O}A6XO8T&fqpNE?d6q)+aN5qbGs{ykQmX|uY`4_{B6&>e z#WZKX6J8uLHry%)dkn00e0cs)29aK9|6IjtfEs@T>5!Gag0&~m7l*v}OREx(Gh 7W^AS}D?~UYwF9uSzwbYB`iFnFTM5uO=((Zh-tNw>($pJh=iEu}L?uJO zg&&6`R}B6>O6RK^MDf?0&WWUB*#A!3j-;n=Pzdwq5{sR Y5l{U-l#GP|yw?d+cKSW|oz*(+joAlbA&L<29^T2*Y^pp>wo zkqPqXM9L}p^y^U0uEZ$Bg)$^JI3)La!ooOel B>aXn9-5@FqIr4 kxGn_V(wt5+%F?v6dtkn+5SjT^c-H13pLSfL9uiH^ z6U&|zruNJ>kICiz6| N5Ci3}>Ayl}5jAnD(d$CD!x*pBo&0fSD}@;4 zmJ$<7IUD!hH-dCl%U3ycmP-WP+XjyM&?$(^R#ba=h5C#Nd-bd3jE2t+)!jAmG*iR0 zyz6b{0@X4|Obsae<4k|@AB1>MtCB?EFyR>`66;MMB-?I}1`B8Y2WemjN00wBp{Nqx z%7cjbVOSfA>j#ZkjPfNY_=_c|vhIXK{g_r=Zlq~JC&wL8{~M^yhVeJZ^Vc0PCf6)r z8?KLcGu@j?PdiF^ge4wr-0e|@@S>^7I;k2#102O9y8hc2WzisbNbl}1?gdx|fyrkD zV87N==xn!IDJ!-(rDF4 9Rwb*&1pa%~Bjv8t5 zaGTUZe0b-Jnp*f;2N@>|A{5iPu2hlHfbrcubJ1{#v?z(26CfHdqqgeQ$Bml&@s({Q z*gw^o6gVQkPzhh>q-|NpBT34nWF?)#8yrGj&nh2|iqJ2#c&}3{7iG6-?cYB&omu+1 zV!v=N42(l-!d}a`T95vGy~pR{l>fHqfKAT+@S`xwM%Q(Ue&?^Pgj|f$u-lu`R$wOP z;%L91?xaA-d4$I)bSJiZ5L?4hr?e>(gzG2F_)vaIcTAJKf*;Y#u>sET8ddmYa~P6m z=OxZRponJo&TD?cD~-i?UY`l9m931$v>Hw|H0ytF0+9Ba*@b+2h_!Rt*=B6Vj6OQR zPWMZqu78!visJbT4fLp2ayH RW;k74-8usK7^pVj*P*EpBJvteX^sSOgrEloK5Zm8l>jqcHbHt=*Q zhgK+a!(oYX71JGVK%=1>BULDSzm@=^Bgzpvyi&5&dacSBkAPV|XmqD 4Yom zQ&rM0H1SCfofkgoO(-gfqfkKW@+ &gY33 zU&c2gvK}n?pfu`;Tpr_f&$ib$hGEHLA_DSJUV&Bj^x!AJbP+Ud=Sx%TcLvvZxzEVY z*RCjphy=HJntH^vB?opUQz|i(mS>eNavEoIFQ?SMB-i4o5=I^KgS2@-q|HHxEl9tR zSb@jlRt&o-(jjKhg1JuTACAcc{iCWd%J<9tp2tg6h2B5D+4jatFIN)$-lbqaM=x3= zDTkpFL5(~>8>qe=c5UZRlBAAW;{aEupPkO#w{|h>NxMS}l`3@+|EBF!ex*sNYnN)R zShNp{l$9wV<5S*Elt)*F2-lAJV(@P KH6Vh z `Svxlh9a1QZCtS?~N5^Y#XkbUhJmrpXMH}D6f?6|bXp?t40x|LD1pRCug8g?i zguGuzOLUSj%34PjU86Ua^=nY6^R0Q2)u2+yk-t8!Av95`p-ZQ-`3b!l?@DXkyGa;o zZzTd>em+|ya(v{ZE*$-nO~p3&H|rd?(wV)HXM^`PJ@|+>(olE0(6EU)W*-vo>=$R^ zdJ$X98+aRo^^3Yc`0h=@*QnZ*i9W9~J53@{aAx=7d^er%-`88Kdm$p%(>{zlCRP8_ zcJD{g7bmkERcp`vjG3Dh{9CbUkwh;_rvu!jZewA+w?jE9)IhWJZ!p9(_fyqn%C28> zU2nQH-;fB`I4W+DD%{)k+0Gj=!szb8Q0(jrX*$xo7U##CTxA_eJt{$pAuyPV 1PY`ENzq+y7TI%z97>(_4;?Qem~_DS&OD_5>#t5E7a zz`iW f2VU;T)UIf?e)oY %TC z046vRgQ5h%dh^)E=XL#ml0IDmKq$$Tb; uU@D-j+h9 zolucQo4*bujMN1z1_Q^zAQCakZy5QU9H<9f?T_lE!r?vcH!U{q-*}Q@W~gsNt;%es zJ<(?O{2JW?{pjAj?4qQtKVVWHWKF#>`V!Xhjj)-LP`hv}OF3_-GyfchmGoHe(1*Gr z?du!5gwqq0?Z~ThEg9SMHdIR2iwo~T4LxPVnu+~-)F0XctqfO*sjDhb1JNR+nC0R7 zi~leV^c^9!LQf(jgRk-ap67q~!Jgo*MCl;m8Tja#>vaR3ZYscFY bRc*@_b)JYSc(((E>90lt;b6tSvy2Vv`bngJ*p0^ZYNe zLYnqqV*7cP^hp+BbtHulT06HUj>*!D#BcYfw!HCB=Et6vOOwiD|NB7B&Pf? z7AQ5HorSeZYjy95_XKo4xb6$v{5n?rVTCjBw(3YRKddm=GjKPce_c^n@QRVZMbo?M zoGcGuk}_Iq9&*J0Ff)*z-*z`PJJX*w%|gbH%0SJDkvE-%hmvKWdQskMt0GxT+ps-m zBt#dUqxJQK%`6)+zL5}#O-KuV;uT^DJaV&~qz^w$+a;#yNguH~ZA8gaYn&nTiXBSA zh+uCkcM{gQ|0_ww$g6Tu_UvXm>{j?^W@0o4f0EIXIh%F_N4Dw${Fjnq(B&2gu-b;x zg?>|Ac|RqxQ~V6$u5td{_v=S1tyu)iiR^_(@Tet8IE>+mox%_78-|AGDHnpk_LvfE zoxV4ladejKV^C|h{tJOYP?uf_7Vl6IqSjJ^veOnOCvh4{1-wqS#KdBsllP07w*E=s zjJ?i<)QeqQ+EjAQlJku38L2NW Z%1EZ7_V9P>aUk#F<^ z%HfQ?0|ViYupfU(>F+|@;LLJcIgkz5Gm4|~rgiIQr!MIwd{#}V9l%f3!Z){D<~&kt z6Kku5+iaV;Cc4Q A3fpqc8_?ab##8E6cuTsm9Z`B1XY8Z~x75cQP^M{}OtmhC>>fw%u4Q`+ zgS)eQ()KeMkhM{%m(ZtOx TlEx3=G7cF7HO7*~NG@mRXKsUI)sRQ>O$*c07|+XB!!GW6}>fyc|~vWz%e%3$s^L z#m62}Ee`^X*~4Cv89m4 9`98Ma)lmIhn=G>^);tx<1L8=gubDU*q$tT2{5iU0b8Si?fIP3FMG%9B>v5 zCPoX&cTBm6X|>8b8sp{7hFuCwdkY^RYxrJ2W(@)U!&tTAuJ1+%9VCRqqsEx{vE?r* zg|uN4$Kex~!As)6WMEDNhvP(@O3+#`?T1__)T;S5nIs6_6LfWKc*l9o3gXTo^{_C^ zqd{o#^Y6Dx9N{9leKWzZ8|f?S4SAlqvG}9A`aEU_ GNNx>l@q00UE^DMc9~t_Md^_Ag5rSJ&KuL~I6z+< zL#vJ9Z3B^FK;92z-WM+a8sQsr dILv;!9< z%`*fB!{( Q1@?c_!>Tc_KwJLc(pmeufdnC zyLUW)t>I^F@$S%Y@oqRKb7^hy$IHLpvH-#(on~b4WeN2uKf7h wz6|E{VsRw=`*{9~#&k a{OJMr}|CvV=k9E!-h@xJ9A@~VXj<6LYGt`sXKQI%A)DnqKaye2Q`eonj@Cr}`p z23_p{bvme*U| Fk^^z~K zccVMFy_L@fh`@uqN>mcQrwfp#?pp9f;we<|B{+FC_Vaq_uT#eEjVQ{3Hssq9Sf7O! zj@<;~_H2Khs&oPMoadn8A=Q`@7WL8qgg4PvycP?qzX>-vhh7X_D>={;4@pg|YC!(d zNJ`gg6irYO1a%FLOa>Y@{I-bE5q#74ItxX6i%u0-XwWi6u|8T L;h_Dg{)HZ!BVYs9#X8>zZrFLjQe1>%;mx&s#zIqeTqn!Crxk=hvx1USwOUXueO# zce^wU9hp*P@^6Whx^C DX-^DZ)m9MhsqX5_Wav4*Z_#cy!XMmcCfe$EJK{Dv zoxvMW(fR(dLs@uInPKR@TKm}Ebui)jz=h!r?X+ag7Nn5q=Vi5*E=HnhQ*qTO*MGQO z`B4e2-BFOC?QM71_}Sg**BtbSwHb22g@fEQi`ApsHf7@fzV$-~Hxw)p*P{7(5<`Zu z?^Ee{8w4!ZRLsGyGfq4_Tfr6!AoM7BVq*@tXCJDv{q0*|PI#Yr* !E@sxwV&!McQW-14sgaj zqqWn2$mrL`xV<<1P~Ey*Jp)P{Sfh&4L+Uua+LO+Vl7{WPstaR=XQY3@283T6sE2G7 zNH^k?_^}Pj`P|~LNmp?48{~Hk5dnnpjCFv_8mBLCD?2zuY~TT7Ki9FsFxHOTc_=hB zX;WWuDULEDTO0KoMMk6@R;NCr$B @>ooQnGC+rj^BZ``y`CY#nkGJCK06Z=(d|$<}sh4(IT% z7z0^``JuZoS-ai!SieTlq8r#7ssas lys5@*+rZsr1S3Q?c9{Oarfn3oNFjMt zp-l2 GctqA&Zj{(`WQ7yZXo!}x__sO0VxkI9#ouiL6DF#H<{tmTY+4d zdt9RlpJrpm5x>!s$e;GFr^5!V4+w%nT&NhANzTAxNH?%QD5ga~X|A9(S+vg4+L6uK zV|lQ0GkvtrTrEpL;f0${ysj`pYRK{UmD90G*&${8+|4W5eh4 4VDZ1B0geOi)w0U_<_4t_8x&=#*^{nMq50tz)@(RF~>NA0pF1H<#^{f-6+V zNd`O%Z8Wb8QltaNnVDWycT-c5&YPT%)6&qGo4dO#ETdH7XU=$Hw(gh0v9KMh#dD&Y z6)39{nNgCKtayg7zGm9$(MQQ{GjR N8j_{ z(xj;4?n@rgRU&e$!f7<}KVU-^7v20D)QzAF>NyVU2_A8OR<7QSrPe^|Ns-Xr*}viH z=hAi7^}S_AkwNpR-B(HDhZRCTTbpkYm`21d u5?K_v-;TFW(MH~Kp03iJhq$||oC;w%F(v*81E h=H)Tpkxf{9phC+mDC0xplWxwie5rKri* zeP#c)&pi!OAFjO)VxR^Gz>^e8=Xlzg+7j>bn6 gvuVh`VJcd|I{b2OJ&?*VmA$qr&rK9bdkm53;TuB3Pj6~UJnB_JkrCU< z1tq7TN;>fx!@SER6SfyW79K?JhBI7Y th+W< PJ zZ>~LjV0Uwh1|j^Nu2EgNDuDuXEl4^Jn)`>A6S#%VT-~8ucIGHdsE#j{ (hN*droH}qXRxDO+HSHsp@x(q#=(V8@3xKMm>3cWLAYsT{k)qu>Op)6x>%2O zJQqx-?=$K3#lC<3C9dzO;OQ-PiZeV}E4ot$67k=QiTI(mftX3nY-F6(c1u+(_ny1p zbZ$4IOc~vtwNKV9pY5S>V>EtETzg;Ew<76=1d^mR%Eqi=Q5p-AFRWbG{uo$*&u&KL zWc3`12bmjSuy+KO{!GCRhP|aC2a?Yyxz`PNR8yXLO{mUi7gKWSX#Bu~(sRPT&7j zG1^R@>HkfAKXFDM82>;{XV^35 +(0lI|tn#Ylkqx;Lcw?2MTwhB(4_E@RU%H%0Q$tG)h=J z|AtxvBX=aWPsvP0VXeT=B#Na35gYzDk7+w4;W)h5#FRLrYv!Y}Ri??8DirJ6%`u8y zXF%1)Z9G`L#B=#uMM3=Y#l=h0QF@|#z-<8s)Srw0;2%Np!m`Yz^V=~0EiJ{cj|tYn z+bf!CNr6hbkF~qk88y}zEI6|{aBjNkOFq SI326kUM9x0@4Zx*^eDYB*5Uf6Q^5{B|9R4&Ccl=|WGhBY>UUMqHO z0-Lsf=g$pAM=M6Z5!^2-$MwE-)L5k(xZnFyOf>RZ8Z4~WYO+bLKrG&*cJ$5~DO#Do z>d+%iu%|4!3zg>J+@0G5@$v8}%*B|KP3Sr$?EM@bHr0t6W0agDef9L6)?XDS^Wi1g zrwB|GJrl%~2~H>Jn{}+mZ2)lEmhNt1#iwac3(?nBm{Tf*$)wQ(lsIQqJ(lJ%KqheF zn!F58G1UzlY8pk^?Ju_y!3A&UIm$4K!gNx8s)=l~-z*Srn>R>)Sro3~;~z_1kL3Ib zahR4{0h!O~zVbMgWjtiXf1#4@e(=|c(Zk^JB)r8r=Diu++4$um!X$u34~+99P?oMN zP;edMs3)IGvsv5?Qja&AXRqhrg 8n)rf>KhvjC-|%lfyJkiwLiv{JlB#P;;l_9;Z#P)s#1<9%O-lLS5(+_TT( zpF_!4a%)w-%x=MQEyO8@>GQ93r(gZOG9g*j)pUX4C<}B%EP{H^<*|Cljp3+b4Vm-* zIL&9&-lRz-3++D@TAqWdb{`){t~*(otuzyUrKR$p?aTIL0J{Fw*6LrkL9_p?MSmVT z@VXRv4ZGXphZ#Ynb^qm8v#EA(5RLRF?7{de-qcK2@c-#v^lq6CFg>QKrA4rES{mif z(-@S>%Wc^5Bji6=iE`!6Q0n2Rud*JYtgnF;HRsH Zfi>;~{WBNQf~t3aH&hPheu+kzAs=T9 zh$P$HLS{<*^xN)5(lv{Z;|2$nb+XOLcY`s0KgK7(U0R%|k9?m_kc;dh>fWp@HjBFZ z`Tl;{H8d X4XFd}0C=3Jd-UCy!a9yoDJGKm=!X9*`XO zUvJL3v-$b;ObtYnCf--8OY!jIr4~krfV|F%=LqlPNLiLqJEhpW&$z3K$(sqU0GIHt z^Rn38VV7bkSU$0M4{|_lQoGI#JZ0iN(wWikM Fa%ad~WniyigfL z@%-w+<19`79I_`{ZYFZ9Llw&zGDJzj=0D(#(RvVg>)Jih&O}t6S*mL+o__s+UUKg% z$ysRJLM+mn(W5LOJ<*xo@==mfiQCBT#sm<*ybxt_Nn?PzHd4l4dTPwqAyJYX;p;a+ zExsXWvsNy(;{|RFg`2%Q(8(w;g|@LH>BiR|Y4NWa=xaznV8Myw`T|<(=44f6M`kBg z4Gms(Q@Bp!w3&8+BkkK1q-CKjwt9_S-SIbMR*Z{FND!8>NT*wPZ_P5Unkg!s26(fg zIBPHOi2kv8hr(P*JWWJc1Np}?E}@w{ w3J>+8bR5lGR#hvCtteRC?qv>A^E9B7B=n+Fgw c;dO2n z?YoWS2k9m6-+;^cy1ebh+cRRR=&a^GGW;oG+Zu_6RHZL3Sp^$O;YZ$|eb9)x$D`)i z_Mlm{DmPTJj0Y^o%P+$7pfFNxI{AyIa~50?{a)B!WuCiuTQ0-u{JmHKKz>2FuGfgl zlpJ|U^`> gz!j5*5vL`&p z`{1`-0Cnq?6v066aXxYK^DmK#eoSH--s{n4I1=GGPk_m!<0}Y8>H;g~y7zvTQ=#v) zYxOks elHU@N?%LK7o?S60H|(P)UEZwVzQ^E z_ElG4&nFcR+_|yn;SS_3Z_oC}7Xyx|KkDkGqZm 4rCyyQ93xx9_X*$3xY*4x;V2T_!`61gh@+Ric%t)xxZ} zR=Mx}dkFVzU{ur!2cX&-wpfYYCiAVWE`K% d!vV;<|284sXUTzv3Z3=J|ohr2Y 0Rxz&S?=J3+deG$pk$Tkgu%lRU_K_S3`~vD*lUqX~!O}K>E1}ANJuK(t zA-iIQ+=ujF#S?}~U&%6EKZGj;^le*>Q$4o!w`_W@u;v?AjraxnGTO;N$Rpb^O1|d6 z`hVKzrbOg{ PRnf`Xs*d7)_{%PyqPa?2z*!VQ$p z1i3QI8IWI!P_>|kL1@x7c`N7*ik%KC=np7CE64<;v()>ulB(^HqEQ&n@QeA`PEpV) zKzqsbUGUc=`3F>Bu0}~Hzev}2bV 3a zl2(tfQCL;cp7f%Zu~jeV)lNZLD+sDFW}_xx=l!zOFO|lyD6eNSz9Ry32TiJ_$$`U| zH1 LeyXOTdKHb%`26R8WG)1)V$e1!Z}51 zNJ-g!x--uRY}CS*6*)ca9WXLktKt}BN+(B&IS^#y!e);BKt#Fpstl8;8Y+rcv3el# zln?J$zZ6$#P%BzUinzdOm9Wn4gd=Z$OT`Td_iW|XFJB4+TcD&(z0Sd80*ohJI>g7? zGwb|@V%+Uy0g-V&+V{?0Vn8}lNnl9{C8NPPbH`9N_k$1pZ(#&2mux;>$%h9u(aSre z6LeeEhMAIkO-5s>Xt>P88DfsHMsNKtk$~q1^~zR(`T1E$1G*O+5?in=t86aNkdJ9r z8(Y(!mpa3V8^@{JV=~g*Qe)&+rigkcwxMV6ljP|J{SkYfGxAsr_}x7hl5O&c12mM} z#;kQVqa86QxN Z*sQpS&2z{5-xN6mBo z;g6pbo2CUv _M3j4DycfAizOx4IC3-+}Q`SG18)rgd*qt6)hOml>{s6P)Q z=S!1qqiT|G`` 8cJu1II6AjjD2HmVe JN9u_JDe!Xj9AMU@=4fA3$d<=1KD6Egrtgm0HoI`v@WmB2X57Roay0g(|+Mud2c z{EUtJXYt1_`(w3%`_ ~%e_Za0QzGlDW7O|4<*-NOiLo8(q?XW#b)3uM#*mo zOQN90iJtm3izI(%q8D!sG4>6W3nU=q!R;%vcl#$OpVRJl`5YJMs5kqyj1k9`Df8F3 z3#C$gZXOnZV_(*RePD$iKAy_#8>VTkGrzBeFF_k)(9+kpuTF{NHn3mao2}j91jaTJ z;52?%$7LAfn_w7n?3|SX*oQl<#yDU>gEs*z72ai*HAks*xkWtAbwJlLz<7t>c)B_@ zhW?e=En*vd85i$6IZwy`t*K>*`wW6xf=_sKwBfYAMABN{uvau}M2sfd_xJ~G rt3&SB!x*qj)(c!;TwXqpYzuk;5_SwvoUS)NB(|N^4|9 z;NH(xW)$@v&4P+`Ard2ab=f|$P={2sdv*IdSTSFi4{kVa4n4>c>QG-DWb8r=h~z4@ zgq=YXs7&s%eS&t8N~{