From 2d2e1cf48da2cb6c7e8ba78bfd43efe099fef240 Mon Sep 17 00:00:00 2001 From: shuhanmirza Date: Fri, 12 Jan 2024 17:36:09 +0600 Subject: [PATCH] Add example for HTML template rendering --- Doc/example-html.png | Bin 0 -> 79346 bytes README.md | 67 +++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 64 insertions(+), 3 deletions(-) create mode 100644 Doc/example-html.png diff --git a/Doc/example-html.png b/Doc/example-html.png new file mode 100644 index 0000000000000000000000000000000000000000..e6573fc45b3de4529b329a54ae7ab2b8069ad8a8 GIT binary patch literal 79346 zcmeFZgLh?3&^H=uVmq1Gwr$(CZD%It#I|i)6Wg|J-#mWry??>?t@o_G*XdK;U0u5x zyZcvFCsa;G6b1?t3IG5AMqErt0RR9<9{>PY69Vju0%a)11ONaiXD%oxCoU+6FXv!u zVs2#&06-S&98)7HppQJ@Ta}4UJP!|sxQC2FQos@nDLjX-VPrj7WS;-vhPli;wYRo5 zH-+vmC}{{HEg zlH6Z$EKG-SFW=b0@j=(Q1NC}M2^DwYT^0A9?>X%a6h4es@yc+#h=#^B%4#YO!W`;U?x`qT#PJ&rx z{qSy!Qg!M1CCGQ`7D}bn+1qVClqM12iG868JwE3{Q_3{AqeC}!kVC;XK~>fXGl5~o zqrTudUz>_H^$FAzDa*RA`>Q(7<@QU(D#mK!CeqRX6kllw0Ki~#0FbW~;Ma}$b$|85 zuOI;MuW!V!TPPdopIjjQY~X*=z?y#)zW!phV6LR* zq$VxJVQ6bjqiKoWP zJ8=^b{L#?ApTFcZb~FF4B^$@TAM5J@Y5&NfrKh2z{g?MwRjxm%9CGGv##ZV==GI^8 z`D%lQjhUV6&+`Ajoc~(va{j+Hl^u;81Z}Oqnsnm%uV?;l_J3yn zU6G6Sk0<{hn)pl2e^S5n%mc+m`){A|KqahTN&*1z0f-CnE4cxlWk6~v89xsB(wfmw z*^m?Lg9Vt-Y$Xy@wjBH_G`28FO-L>HtRK5+kiMms9<8s}x^XTck{&1a)<#$ZozsH1 z7w!j581UZmy~w~gn4kj=B!IqZ%ZheLI^-FBbU)Z|%yP_h{Ae&7iej=O1VqID=labI z1cS-Mhfq-8-QBH484nr@02%Yw#ivgKkBM2zvROhWsJANa2O{>@gUW*izZ3y!KLNFz3m=xue+2knk^V2&lJHIG*4PLR-P!vX z%`N6XBNPB~Nm_5ayy{FQEe(<#DKV{H9reFFbO^RRspLF~a%^TIKA^v^7)1~^q(nuc z6uAEi8U=n0L#u8Bg?~mEAmVRwAlQP^Ikw!ceF-2|Y4kXb(Hkt1CA?(OQF$-f2gknErm|$c2AAkF zY&lkGtXI-iC)r9?pjfhhO*MSx54>_-J9vG|K6{nV0H8I?Y{SzRv!!-GFYP^;UmlR) zDwX|jgd6CO@>p)AYkS(x4wODm%0U9X+6tv@3Z&ubOX&ND!bvjmdWWea;MG(hvIs(v7B zMhf^zkV4AmXjVJiV_UIZGjw9B4H1PD3>tohvSEkw2K9SH=AiXS^mW~yK6wZkyWxX^ zqrOEg$y8;Ri6X4=I%6J=Bnh*x4a_X@BtObq7YnaN3o2QuL+P1#_W=K;TqJ*`HJAGU z*AbU=Z*QQ^;zNQYS_?IDmjgN5n~+7tN#Lc)d|N_xHKcTcD9> zS%!YV65y6zcFr^(dJN@iFP!9-r~t0)_lK*Sq6U_=VXZL%L)it|>aj*(d@@*wp7(tS zVT=V)-;X)RTWq3O+XHPM9~yVNCkBR-r_eKBs9f=(sG>EuwWWfv@1JP9DtRbyUcoe7 z{WF@1LDJ=B22d_+2AH|hw@%j4y+tFsf2X2Vi-X{agDl?Qy5$y=qn-EMjs?fPDF7e4%Q#epR5Cy7+#}a=IEZcuQemp;ff%B3RfRby}sZ zd7NSHb#z(f;MLNWY8cV=MD9Jis1gzqChl7o<#z#>=R}%zxiN~6S569}|1db?bO!G< zxH6k83UfA=N(}z#vA;H#MGlW%G zRY1_Z&~J%I!TLD3lcLqA1d%{glxkD!d~xv1aA!k#&8XtO6SoCp_QMZgixMLYI=RBvW3DSzIH0oTtEF{2s{mIixK zH!g3X(e1JP<4CDS`DL(!*a>-;=Be6yKWThwSbRL7JWb$bLyo1s`Du_Ca z#kybiiM+!_nQK5IEA4n6aji41>uztY?utH~kd|$Ulc$N*=bW^1wAuic?rd7k#YWI~ zi_dI>_p#=Sq^!xh=mkLWIC5L0!+BS#jNMwNS@VOI8|EsYv#eQpC5o6aiIAcg?!}Cm zzNW2)VMY%#%K>vWAW82dGhfP&jN*o_JPLXDLyFbXm;|3`1$4Y&KfDWIK!*ClZ;+37 z)~f;SydwM|^R1=oePT3=`uDL$(T2dx{d@AqgpT*bM5ft73wvwynZ;EPVz@Q9%y;qz zhF=Xned%0svxkU@w40!l8!=5! zKtxvnAQ$*F7c3SFS95JK@{Y~H;r5H$2hYvNlAnMMGTaS#X%ipcWbeyt2f&onM|8nu z+3|*QiUn`@7vZVbBM~=ogn}=I%#{YV3Nuweoa`f!*(Lb|Ilr(<<%Zk@Q$*{Y^g0f4OlQFkU(baKRL&hVm<$%@PAo^yJo8Y!CEMFWBU z1PH`r+Fy=IE!rNOXmYsMod?sIJU@6t75%l0V+ZgN7#N0kQ;K;@Vpzlz1T1U2fyOry z04!^oBjoo+6Y{TZFjW?hYdUtd!C}6l4&~&TRv%6|*DJkK4d2hHopIVJa~(V_%LSW| zberEC+VGIdL3efx>giXNr(UCT0qYJ#@P#{VthmM_adAd;_rju@Ghmx&7si=VwzG2e zMS6G+n>R3{#j9U0(yiC(+_V_#YBQ;$#Ark5gXR-1NA&XZ-Rt1k!E@t?n0x>pnKib`inoEk(xlHG7AZ#9Zq}JYSj}^?O616-6`GxG{@xi? zFU?K(NB?-ZpUnFX^=k-*Uv+Zmj*_-R*rr4mihNduz+qEI$f?uDm^P&-M|%@ z&fllZqN-VBL^x~#bu~@)AGu2Fz z59gjTl3A=N71EseKgHL#OCU%I;?K3~(d!Dc1kN}Er<#I9gbl576S_)BRkuG2FJjaw zW>HyOs18zL?>)1k`WT#LZ3XBC*%XaaCRS=Feur)np;`KXM6x3DKZiw!^WHj|P#P-I z>I#)lK-yHYc)^r5we^ikt{wGn2;`oiWC$e3QhfgM%R|hDKPcwz^N9762C}*ORtj7- zUc;8=fK>cS(0Qa!W5wqFWN4S=_+)B<&hj&p^>%)D55cbz#ueY;mUl)>>oh6_QD@I68wUW%M&)nC1BKm)Q;rUaOanx$ zB`Op8zXZZp=;O7-CspurG zdrrit5PNFmoPd-HW)8}DK7Ijlw2bPUez|p*h!Y|Q5_LDu))(i~TOa43Wl)DJTw7I) zWjr{sa&UIb^fqg{Cxou`fYz%}nq9$6=o}ahm%bitz0*c}Dt(%_+apyRbl@vqX+xGAH6DD=SMAJc@7#%^ zCKygcK(I&Dp6NM1Ax8+OIrJ))I3=~beD@$<`zAWI;dTtNzC6f&ZggK6 zHr{z7XMn0$w><>g743YrhJ`M3geSV;l9piw$YX}Tam@guc7Uy`b9})grK-WlAX4*p z7OsS>|+3_(t%q6!Br2XE6V67&ZTRY5l- z>tV#*i%Dy-i*&4GuR^%yz`WvO2k~7ZFho+${+=2 z>B}C!18_ec+LWh#Q~Q08pMQT1$5sc0L~+>H+|@qFLYac?f~9utt_Z`OrP?x4bxLPd zrL0Avkz0WZ3*woo)ALs$h&DGUdBplv#&sSV?ocHiEk&(XI8!{^;_o)hNzG}CAQ6*i zdByA}(#M|QKKB&GV;j5$a+BzjOg@Y}A5Pp8sP{v^OK5rDUi-?^v3({B2Dcs)T&L

xvZUPs#Wf{Xwrxr|nYb%`m_#(u|6 z%F=>*Tlk?vuwTSkSi{uP=u2A~oSl;z;ha9Qo z@b{`sM~Uatt1heuF8SJ?eFUO$#C<}t*-k3slZ}RS&xOIEhy6s!lCYj}>TufhSJG;a zcje~zF(B`kaQ;%7(O0ZRs+5hO*Wd?&HBxx~uxJuA;*GUkHh3SI9~B06&h&|wQLP`! z1Di1eBsHf3u)xfWtYS6Ip~0XDeu@oXW|}SNP7=xKOTcOv3Ygq0s?tqxj16s6Z*R!@ z$E6m6Ca=?lu3{%zWd$b21>{K)p2A!5O^xMqQo_AF*P14cxeSID_fqb>OtBohJMw3B zm`5vv-s+h?PTOI3!dM+E;oNDMiDZNWbBe(=hpi35Q0kC&V76})%2Uk~eG>*IkYSLu z(%B(gY5U%Z^RM4mpLt%e(nmbE#A&6+l-ya3Tgb?wHyumtgW->rAa$Z~Ck2!AybO7r zM50-Mzrn3DC~scl3?LBR!Qwu~3%w3@Uv%~NHOUk*DVxSB$0B!PGJcYU0cMd~fCQFa zG`TV1zLvTHblG0quQE(}>$p`oLM76&g_Eu*_diFnPG2~79NKjlj?f*=xoM}McNYrj z58r);+2(WRYMX`D5Tvo0z)HY20?a)$&st%^Bpbi|d$F*c! z(@mo~UhOv^0ZE^MU?$eeDg_sPks}p!g(U^03OI+!1STNR;D!6@X9txH$TO zIUKv==gz71(oSqo5FWZ|G{AoYmJZ`4Ed{A%-9D)WT}Uaq{pw(-^pdQtwGV_kmUNLA1~KlpsrGH}waUa$fI>F! z2nbP$q#8A~D)b!}5rUHbT{HGOV(j-Ve9TW$te3lZ$L6DTAe{N&Q|cNF1ZN@P@hJsW z?Ey;}vbIn*uM!3wt1|cGqIA)CFD#H|qTOa;3tSEo|G9i*`MJ=;U{MwB-LnXg$V70J zA)ZDrKXFi_g@(_V2eB7(;6&-vP_-KJvke&#UtCq1RYoCAjy6GO7TL z8EWNov(#^>hjrYqdU|h@$!&+OQi+qHnHi~s-CL1(BjJ1k4AvZb{;Z-+vE7S10l7MG z5vQ(Laj3T4dnrxVE8&x=GnCHDP5_<{S%HgXRVE5(;g~DXs&~m5rOMCaqTxk8#H;Z} zV)5T8@zj2)w&|dwTbq^5dUsTi-erEE^?Mj@6(6VscuHm>Ha)Z~au7=7;{15$LYoMD z(XaLe<%^8ELYr7Pi?Ba$FCR0|sE-SFm*I=_nwHGfC8Nh5a4{b)^4!l*#_22_VZiqM zC6V{~TlPAUs|=3nNw_z1JwTURm+2~uue@wSWN0`KRpTj)yU4=ReAip0Z!#NfJrZTL z%HZg?y&K}=)snE@-5O4aMX8jW65qQiCc%E=z!Lq6FS&l74XWtpg>!j?si^1V@a=y7 z8<6)Ndm?tm;k%VA=uIemA(L>*@CspROvjU>EOt7k)6im_vC0>6td zq{%PSWs#$ezAFKTSarV#{;QXf>M-c*5Cn3vsXJ78iN>Y9eU(i-n%jUHq88%TP)DhO zr~#Thw7PVo1`Rc+lZFa&x8{-hMyfVh36(PkXcpETkedLuOD6TL-+Ww7=&YGGAuod* zVVDk@OVUhcUuX+s^MzEX@Z9;$6?5m=*vLNr27=hY_+HwH+%%4MWR+3S2m?vp#)qf{ zdK*%BfTDbxh<12#B*UB%)^|fpwdjswrkM_s6&A8ULUHvHc$CX~YdRAz=Vy+n{!Hr6 z0dPtf3T9JTrqeZSU>*wqU1LzapmUlXS`x7|q4Q>I;)CX=yhK}IMJh2;xO!|Ju+E_5 z_}PIc)h_ZH{IpzeKE?LW&TZC8otPwgzrH2hx{TgL^+LMNb=jdTP%N&1h06-f^0eDLr^I*VqX> z8PlNl^s3-hZCQf8bNcMfwt>p~J}!eReZAo(Yo*=@^vyRl0G_>~v1uOP%iIeLb97rb zm_!egF}KJ57bFlp-eMWmXs(HzpZ-}Qa+=!l zZgOCWbRxogU)ke?Nv5H+ESMoK@+mX0kjs+kxA< zxJh01yHcsEz~w^WgAc}(}#SPL0t zUlhZW0Cl)FbzE7;B6Qj`=4@Gk_J>4J$@LI|PHoiSs~chz?I+GRqOtKclvKn|Z(Z%} zT=qWgV0?VI#_pbEJhL_inT>Ti?cOt^#^pE>-!8XSJT@>!1*c;}vO2GA1r%ydvd>o2 z)UmhRF#zY7O&jprx&zSz-P?o3avXAj94{*JPcV(P%nnD2Dsj}uX4b)EbA!{Efx-zZ zr(Y?NGPI_#Gj7W;o&2=h-=34srJtH`*(5%UUu8D7@Ie%IS$1!AcMzt;LmyY5EIU`O zW0*$|UZsHgz?~}trY#BgJCraFB~|z(EjMK(D$+-K7K?~jO7T8aN{`7d+2zAOI4))9 z-wsu!nK%2&lDXv^dwX20^<5(@Hl+B&!WsG;m7yo`1XnXFg!b_-PzYo~SHU=0256(* zE*7vZDS)KeqKMO(%P&T3G9`+WR+`B-I-0b|fU>AeSB2PCsDlO{6VN0z0fZ(;-B$1D7c@oDF-VacRHC<&Hd5t3h3*qBb2sWMKQl2gTmvP2MWH z)l5w}ef=@zw@NKp(S1eUQtfWQ*(!ru%%jYahPpHyQ;FsT6brb=q_8UAW;73L`|h4L zYYt(%<496=LgL{Z`A|Bf;#n&X8t@jf>^#7xw#qv*G!RK7PB^Fz%v6`Yy?h_G$nW71 zGi@E9RUO{Y^H|wD*A6JVU-&KJp=i~nhvv^SUINf=k_Iz}c!nvtix(TX%pJWooJPF4 z6ktnPMgEO(rh-n+DdEzUli8L*xN<)V*O!pee%vla0;8mL-+myBd7Gv{MC2;SM_hS^ z^~yzrSt|1ewitHx^3frKrrY}wy z+_+{L`jN2*_Os+iKjBG4Zibp0&?1ua9uW_=rN7g;?Jy1!K2!3R#+)zVcmm2=y?|$m zq~S_KUHtmfuD^#280uUK(zxlU*kv~MP9If_c z!TVz{Xu$dfldJbJeJR#P9WAu32Bn6kmMc@yC@}qG0(;_6m(%4;>>Ko$&}D2N=)vXL z-cUUOQ02NNSNg1oBt+ekzKl|>&IA&xl)&Q;gkgkU1V>L_)VF6*%+}RWq z)zSX6UHS(|@u6B;L$<+nNvS>`!u!S7K_nG`Q(*e8u!*sYfY zj=yZ1KsZ zw$*ibV6t8)Ff_r2l5QX@Ry_V#b^?Fn0d6~p4>THK10~j11Kk{U%mxyny}vM4w;oQu zUBSH57LxFWs{>mK!rjsA5V-2?>uSOm#zz|zze&kLU+Tiy6g^mu&@1Jr(0Xy^(yv9j zqa}Ai1#2(Wa)X>kZ_w43BA?Vl3aneU-%q4+%h<1deb#U^>`TUG4q z)4-YzuX{r>X53XDHNQw6;45KpSwp}#NuU-!{Q1G=$KaxU#+eS5KW*(WUGuv=w^W&5 z8_gqLwK^N%#ImmM-OFW=K^-617Q}cXq>~)`>NmVp8m-!&I(832bu{PG9op7zB$qvl zc%Zv66SbOa*G{`PY-szT2qSI6?#=llZ3f~HG)?DW6PY7*;|NVkL_rfnZQ;?Qw-W}8 zounBI+uQMe){Iu%SexCf9i^vPbz=SgCIeVKcm=O??HEnn$PFW4TuXUd>;w zg7pDS+G3jb`_blQG;6Vi#6>?Z+0tDEADo6m&Cy(_#IU+P0&<2QXJ|yS5-cBQe*L1& zw|=*gSt$*F+*^sPf4}XLeEm+qPEAeBPJKMsQ;)}!Zv0!;w~XdlL&NFrxt?f!ydDeu zQwodwvwAPr$~8aYr#YT?6ZyGYtxOi%xyj0PNSwJi#)v$Pt~4iZ#atzTO{=9jTCU(s z=Zk}4YHahx&UXFRMmoRay{F3j6@{ml_Shg)LY`9wo+@WF zxWf0Bb=8|pwyZ+QxJ?J4_Lb;I0w3Ae{;P{-G)E@tn?dEi+nrJmZt8uFm1{D0(xYhX z$Io!l*@v>r7Ne3buBN&7v>To_vh(q+8qOBI#KAf=#CzijG7V zs`urz%=)Pdvf9N8&88WsLJkIHla@7#?osWOLOcHV?v)d&xVUhvk+#Gij;&MLAh;W{ zBMk(0&i27+Y4!%yL|oi3jylBJTPGL6mDK*!Ifwemyn%|L$ZO5yi|G>G9RX?PK~(qc z`IO;+eXHGz10hWyUZ=`QOo{tsDCFOCF9TS?3kh5(U?wSyw@mu+Ni(=C@*JyF=^O8z z-&zQDWa9lS+4ZZ$18)+xPiaW4?g$wStx~c^cNt)%QaHtVJ)2Qf%Yvcbx4)2F*)5YB zZ?}aq^15tPO$6B|75PCy^X7ub^DoOkc93Ke+SL52v~QpyD9D`~Brt`D!SDpg(dZrD zF4}6Z_baAVc-J?w-I0NT_I1>O>lhGR7{JlP82h!&*qTyr5ssb)1NV3amEIe5aN{$) zK+~+w!WvrhaJNMP?W7^9%n}I_*r#&EOychY(~fdwcZUseqB!kL#e@{rt9~*4LkMzJ z0SfMQ6=Dsk#iu%`fZV|T%vkpL#3&`=Np`ax?Z?`BF2TS!ZgcS%9=mN5YE_6=52)7s ziCpOn?kt$5O&42p1q??w5`_2!8VCLHeFh9IX*w|a!;5Ay+=)>8XOc2s%<=hES};U zT;>N`K(M39BL^F(LCt5wsozD=bnlM${VTf8_{!x|WxIakApRxoH*TumO_k(4I zHbG6iR~+o5v{0e%^rEgh3^d$VSGXoez@)}qqM4swLKACG7=WAa;CX43>OXPThiFm5 zbXIP#<}qukpx~i`Bi`&+WTVB)y|~~p3lUsGCB@5FvqG#soHx2P5$)XCn?}C$K8ggU zT+}}aEkw7dABbK2SWcLw(<@N$j609*q<%zbvmp`DDi5aJumz<(zf{o4wtj0gFz$B- z0pa-0F^%EeuviDWi=F7r0XrJ+sgzc~IHka-8COw$V{KsC+?q(Y1Sdvlu(%tje>%Uw zW@)u&^=PO96Fo2z`n`GT%GqnCXH@CyXnY|`HL#UnDqr_Hik@ot07Xzvy3X(lVRvH{ z#R~MWF>hX|Oq%X8uT@P>(X|Tj4XuOj9k8 z-1&*pAV;g$BT&wvKA;D!29nSg-3wASI3>J=GKX-UXg$yv7x`tx=kLfjQGxC}PwPJJ znr_x9A^Sx!*Z2`gsf)r)b1~EtuK`j0)+%v1PCD(`OL>%f9L>pX54a{SB=j3}4#H!h zf2xe|5e%97Vkhy*MqKEr8-Nn=rD*mcm11l=r=pWzqK>nDN|bNRv)e#&;?S2^ds( zfnyQF4QpiV9GTSvQW)Y=!jL#?&f{wXrmI^P_%;!&{qKE`tz9Dy6S{(q=Zz1wNue`kC6eUfk)1V(u#2eP)cSjPME9hvv%VA}XWYN+QkLP|U0ti*|L*q2DBj zaz?V>&)bDvKZCLoEApZm<86*~2#e_K-ohNYtO`}!nBemEHFpSz@-iqrC<)TZAh(T2 zAeK-t^4$Z!-S39Pc+V-|&v(9i2_8p43W|0%>(NgpjRabuk|4qZ@jR#b%AzC2&gzv0 zvoQhr`5@TeIKzV0PqQ!a^@iIE)OKExFP*t3A&Ojj3wuli6Ub9m(%zHF4Kw21--#MUc_KHyoO{R?c7yR$a!uYn z%y6E5Ty=%|HeQN+Z7Cx>hsrm(sbBd^d_8nfr0O&t4XVu*p}jbN2Yj1Uar3par+RS) z1H&9jzjOWEhLNVQe*U#a*xP9Ntxrwid>wOpM}HS$M;Gz8^w-+vT}mY-KG;xfhh6+h z1>`Xd?PNz+2&&32_$gv`3}u$(EHkp?JA_iUKr>if5Qc@h&$%P%lIsu0@WsO`o$R0L!TWXe%&@D-`en~B2rH4360UP_H;JaZB330!fXu>5aB1)4 zy-N6?Z|kO}MW2%DBpB#qlw8e!pa1#vNwZ)4)g=qKcpOl<5ZM>!@o2rmM=#U&^F&?j(@%H z!HK^h2Y$|=`7hUpzXDarmO!v)=zKlhlzIv$7XF1X_AvcXKM_flU|7|_SZ~Y4hS&j^Y{5O0>4FB+t*ckT2vC#hk*pPfZj*XI(*ni*% zyXY4BM4L>d?9D> zc-PohKoBaKW=G10?v|O?vm}|!aV@wkS{=yx%7lO$%jKvJIVfktg%jC9geOb_w6}c8 z5bKiNiwrF53#`n9C-`_FwouM7g*MZ{9c}}!xNt(nf@LSwS z@#3ZMS#Ko+JNI2!kLQ#t#Hd^#kXP?AxGmKy`76vE%1_x~)Z#j(-3ku3?G%!IgoJAa zRMS1y!%akfT&y}VQ~PKBRlQgkxIa1@pBIrVhEab)R;6b)Iw|0oSr>X<C)XvBLz3f zj%OYw)0H7e8HF6V>ak*8=}Of%pnU9#)@3R0R34UkX}Z!|6~m(9`_em|fH;mo4w>^$ z7Y3S#-PW~SYgzR!IQVpY=fx;)3`*c4>&3ERWo13tK&TF8AfQb|WyA7Pj`|f;#`$gP zAF{`$&8iq(FZ3Danw7ZSXRP=8%L)jVr&X75-;Ar&HD3(RdfLF`8r{kV^%A@}ozl=? zGSsoG?xcHtyq5E@IHJ>x(ZQ+V>71M!rN7m4|Mvc4{@H;5{gi}I3~kHRI`)LfVnOvr z#T&BTU+eItGklQI8el%--3n|W?Txv5EW5IQL6fVXNmZWmT|XsI*%F2B*+{0-+IaiU zp?u;OnwJ?==Zc@{TZ$ewhwe8&w7=n9CD=rSY>JZ;jME5P;@4ZTf;;xjJcRgjtRG7` zYPZZk%Rt5`OyhJlmh$TTKqzJ4ES#K@h2Xmh(gMgwpl;v3$MVFJxr;A!MiVaNP=cqn ze8u!^aq*hDT+_TDi#VT;alF&O=;T!yjGLLuO= z;>;s@=*va&f>PLuhJj)ZCKvmL@3}rn4u~>uK`6YRSeM}O{3g~dzQ?#;ymLut9QX*E z;CQT`c2hX@Gk8gn1H-xqZ}rxp>OY2^@f5303Cgd;nuAZbi{u>-HWen_(bYSW^XJQW z?^)F^(^@B#ueDTdyO-hm0u$`7I0p-C`UV}-r&U_6c@gpby(F{kAoW=v46ZLIj?@mp z9xf__*k1+iXsO-pwUgH|_V-XWES&_?(^)X`RM$irNQDO!O7jaHFTc~g0R7sF$i2Cf zzt0f9HxF~m^A0D?=^R~`*tUOXSDICSuel zc!xrifo-JAQRM>vT(xuN;OxZ6SvEKacw*eEkz-}R1ub`Eza@d%NhSV?Rc$&|(8xU3 z{mGrwia{lZ(x8QWi|R=y32H(b#$c|4RUS17Pj2Pq46JMhd)34S`Md(F=DU77Yxvi(cwxbU{Q!g6)Qo&`E zodZAOoUg9K?n6=*r4KA>SHf}~_?(5Pwa8BtBU@!wX3ZXb=?BWW!}KtJl5d{OC&bXB z)qcl~1ZtOWQYA%xZj7EQ1I2vb3c41wIQ{uj9wysW38D4smnfn?u+bQTNyh{&TFRy0 zsW)KZn~z4qDWOTDcdZLH{~CE4(wbkt2?m#9+J&HmG>MRq%hE>mDw3A` z`X_Mw35hKCU5b?Pn`-rG_y-tPO44;nds=1+9gd;~IU_vr7OxRVCNDk0yz*<+BAv@D z`;pUPwd)S$izmlhq=Sgz%`0imLsyt*xMfKDPVhBeS7a4wXJpUd=?I(LO!*uHW)eXS zy+92k0yJlP$L;0v*ss`cFMVENa%n6?BdU(5UF6$_M`q8S&s+Pw?zCk{I@mUR+QT&309w9E~7i+1^D_oLxjYX}inAh}C%zXRn%9C?`=@!*G-&%$2u{)2@gV zZNsaeE`qgC>7^%W0zEa$=(vF;Eb7u>*XvFK2p!(Q(FUEty=YN`kzm?x-8wgZ%|xjb zj1>Y3ZFxxCa3;b-+t5Nw2|(8jA!Ymq*M@>by|<2|nJwjFm@sU4cZFTuzSzuvea3d5O;?A5@w!FZ-B- zEFmz3i`YtT2!wm% z;SVEHf}|i?n?VJ>*gb|-FhhFtjRQIGwG1qfWOccg)fkaxFBj3hf*T8pm<48XF&4%4-bMJmh@A+#cfF=OU z$AUJPF4O$+mj2DRMW9jqtw(n$g53Gg7F)@8bo{;Y@-TLpD1 z8FlQa%7hS)QvL9Sd;rWXa~iOT?XVH^R;9-9O+1}9yv{s0v_IDlH`s-cM-Yzp9Vp{; zN91s>z3Hy*j5{&8N`eL0(iG1=Jz3r}8Mu@XF9`Q?oE^v{bG9zlS_aIoGsn%u_Zcui z)f8Or{^6hh0?6x>PznNvbjrven5!45`cMgQGUcp#a|lFa*2@L%fW`?;YxZ#WrEqb@ zj;i9#jC!)p%F)#xg=pO=B_cv+Y#QoA?$ow-ykXv0S;h8EhbQgL3*Q;quB%Z$4I}PI z8DuEjz6t#_NS}p*{*W#1*RNWOVd3FG#v{(6jEuG72dT z0&ffGXEnIrpr%8nU%{hmnk&cXE>`=GDi0<9I=1f@%-76w+AUz8ih|C|S<#J8 zTBNWTkp)-CLKl&OQO9dDcCIcbG3xIOT@Mhz z+NTqG1GH^-r9{>s{$rF%ewC;LNb}t0r$!Z`;R`~C4`|g_T?owtiwQLsHi!7qTaXPFO?GzAn<1Ao7}U%kZ#SI_wcSPUifpw`%ny{kwl0~#F82sS z;xdo)U*|!RkvAp~p?eclcy0STbGe}s|4Nj$*sT8P;swCsW&-6vw`hjq1ZWnt4jBGM zYG7Bqr9gIDSo#w9aUcn-Ktog1DNRLfXVqZJS5yojFRb*+k-9Mze5-ZyaKE`k2cordbYRqhnMip#T85!S0S`@@B0ne=Gh0pXi zv?zNs8eYUVODwdAyB`)wY<3T}!ABkDojU04MyM1y21+WVI~!l5v1chL)>YzQEa<&E zT4A)q`%U~I6i9l7@L_N*AY>}R)D{~n=q{23)8N2*Z13TcTWK&&QEUfOrP1neG)Lz| zwMSV6cASagsVfkc;^Fl!4gykBWlPz9cTz_sH0WAI%4R1qjkmey;3-20b2YIMy<@*MEpyihC**ty+3gQdhsD z*d@$oVOqvtHMs)qWKE&E2UcdqvQw%JxI=t#{J2Z+)V&yjR#^sykuj+OX;2Ba(TLi; zp@h{y)5A=68!{t{RqbPD-K<`*Nus4N-@Gwn4+v(Xh*0kdSNZrN5)g0Ov(ZCtaply} z`Uv^@yaL_t18a==FmPldO8*|M$N)}gn6EDh?N*Xwj(RXCe|Gy0l4RKU-KiNaJ;H)m z5$W5eP6^l(og0P7ck~X=ah9J;GXr|UV&v`c@sCj&*o}%dXMLBD{OATuo>RoT76u4f z>%@4#C*TFgfz+3)a$qo`zQN44fV`bIG@VS}(jMR&cG=t^+!}2Q;7!tCs<@Z{NBxds z_!dpKRy#YtE5#tPwIT)VeH$}^NbeB%f5?05ueg>kdJqUff(O@5AUMI@2?2t;ySuwX za1X)V-Q6WfaCdE(&U>Gi`ThknYt5{6SO3(vs?NDpb#Lu`&OT$xq5t|2Ged59 z48PECZWp>^OmY@BT;;6l`%IC|xA*F7@gLC}9fSR5s|l{T$9T<}-2H>e$oCuA*s1Ll zz7GoM`MDig_`--;l|#@ z`Mry|<`Pl|x7^wTiOqG)LTv7+zOBmFjf|`p3}}^E$uiWO=PQ)a9@m0Q{_p^xoZf(} zrO9~w54$G0-htHRJDlju_D}8vO=;hnHBdXZRyCGRS2AKQe8e6+u~%L~#o9hjB;yrO zY#z=%Q7ITgsn7!AH{&pz+$i|9ou`CoKHtXfXc}I&<1BKSQ1?h@{4@t!-9a{s!VQuw z(xB=PzX8oUQayZha5`+O4~#yDp3N(0MCvDObhO2JeL|8EOs))VZc1+SYG5^{sy!cA z$biQ(bu$=uF;x>#kI>Ye81rR8CQg{LPwezo9~KVc8%dd*QZrYTdN6s?DPp z)nDasrcVRP(@-bTS$TL{Tv`6Hsvqt z&VkCovnjI;oPDjg#gTg-j)5L2DD$>SHO63UR+Q>zY3l7f_VWc)BGwlfOw^64{X?_s z{QZ!VaY|JvqdasBewAY=o&D%wjg_k0%=3!Ppx~E;>%&0>=c%Hy(Mz4Sl&E%q_cW=j zivL-ZWpiO*%9usnk{EX1r|;XJXuZ%pGQKPZ{M`0d$E<#jzQ#M*5Y;_Z6!9TDNg%p? zN%?vC+xd;1DX)(JQH1LLoBTBRQ_DQ@e1IMy2oJdXNpC$n+QXOIr*LC= zKEQ+0^p8&wS`-+L{41*nBNDn&YNz11RZnYhKCBO+6rf6rqC_!J9$EX0l7=>a^y?UF z-BdSn(5uX)5{=x3b*9VTFcU{*Dnt|eSfz^i>givq%7u{#X3ATv~XwGQ}?+5pb4Rg5n=R}@k#A|ki_*~!tO6vx`=P0aKF#xKN zrvqD2l_+V6zc*yGzM@o`tgnB(s?7EyRe)XU%Ggh|Ubdr}lT3xv&tG2~P}8(Wx*yMz z(5U;@>rd#wQYmAdE+Xd9aboka*U7Jglgx&Yk4#6H@ZLehWOZ-4!g^-iG}BCaLNSAY zyBkVe#{H{k3eRe*RUNaRG!dk5(ftdt)YC?|yfe0RCO*?DXTWYKA$2ci*YSyaBTcSI zJU(<`Pu>bh#CQbJI!O@6OK0fTjfeiP`b{(4hUC?PMZFjJt~uh!Fl%z0vUGWz()Ot{ z%kog##2VzZ2Rxb$Ip42PnipI;Znkw_?dELe7)>4~Ryp<3N{jWcp13rBBSR@FEbc!c+2@qq@A8f3zd@hdqaZcbb9mt?OY+l(NF${S!jN#v#lsQWz!1+7i4W{d`E zW9dZaGD|`S?C+*V3))J71sQ=n^DB0YeBULg>$6M|?lk=0X-LsDf!McPk6tW(YVz-? z@L;j#YUHgSHa<`H(+P2Oec)xQBMNrOgEA2ix966C9`(_BU@veRJWEV~Djd}k-E!){ zd8-5E_}d1euSi&-RiKKYZBH?OG{-kv5kgvt;cj@~L|p?W9dTxQqw@`>oY!r6p9wjYwa;oT<~LPqP%r%BIO}8!oro;j zZ3e)-cKpvBa!?TVfEFrae^7c5Z}hQ{z^i3tMAA-yk{*uKr+5Ft(w=5Bn*zOQD{s#b zRtXnv{U5Bi&`s%;14irxzJmZR=jZz$>S_FZe%Ex7r&BUSP7-?OIb}C8SP6E*xo}EX zKc8vd-hSP4n#)pv5GPhQ(eXL1$ffglV+V^~6ufbdcrf22`DCci`*kOG%>mhIA9Xc< zbynQP1*Iwws@BYxrvt!S*1S38<8{k(gJiI8D>UhEw|KtC@_g&l zhklH0yOG4<8!D5)t+!R&3I`D1`qiPqA?3Y*jg&~MQ|E` z2qv$w(k_oc7&{-qucq>{)GEh0!FDF|PS~nMX5XuU#|<(M*`4{;`Qk#QDs|WoG5>=f z_euYUiJtT-{0|eAX?zoBO0cg*cE;rN*dI5hLTxlh?4-9!vPo zEbS(PP)*0NImW>G0Cm;4jS=igyX$XGT6}P48Kua+h=>Lxp)1ViO?{bli}eRAu)(6@ z@t=!ubv|s#YF)qmGz1=hFE%zn#aZ%zozU8xtJTE6-+HQA{_UHHg%!;(pEAYD4O3NS zgC1y?dOBuwHXa9ha0Zhay1`J+5|VLihELu;YM+8lr#pPw{aZulV5yYn{iqgh| zRt~&YCbA&ywG2uR90uMs_GSiNO`oejeUf{QbpJtFR#ex-^M&V^YIVNL6TJ3QFgZFmX4!N=t_QS4;j9`uU6F#Lb zaUt5SrBCd?Ptz80($J^#gjpjxve8ZpST6ZX|tL4f1f-76o?}>A8)!_ecs?!b~vUPKR6RRfpcjtus z21P&!%bq!q)#v|qc)tL2h%&?n;$Ig3HU#;FC?jC?yi@h9YxsK~>K6$28Q=t4CiLIC zLazDGwyFgloBzw2aw0(3R@7;Xa=8B*7uYcON8i2eN1VKRGCWQd9-B zI*WK}Mc{EV{9ltkLA-89QJ#H6wIclA;C?XtVVZH*`Xv4ug~j^E85%LQe1GqJ_zrQR z*OYYm-=qRTA;=!||M8~e7=sws%%A!8Xs;_3;a_PKC10z?HIo@lX=M%_ijk^_yIsML zdW%3pu6TW+(Oq^K8?8u0@N(*7j+Ey0ix<;NbW4UXicI&qdhf;cU`6wjAlJI+Y`Kuz za2!VW1wH)}b>Kv)11?)w7b zHrI^a9L%KJ1TxHj7icm9*0+zNEfUVNw7LW$Gb`#u>nD$!GeIoprx&^xpk&VjRT8Ix z7Af<1kI6K^jrZmEXKNXRO5Q_<+F{Vrn{{VC`OZ-49LF0KJa!-Md6cN$-vvyCNNBBl z$HB~}52kn!j#OVL>b1A37e)@axSK1RBRp~m%(Hr(>n|TDkGfduWB|jZZTI6B46g$5 z_Y&Ps_igV_!sX58H;2RRcyC=y-L#~camS}w#$I{Q#@JrT^pGGPCSme_zPcSoL?4&U zHD@7?&S*yrl`tFg?2uECSM|95705@a)SxmZbA?{eY56sw@kR1l#blg0UwTlD(3(JG z=XQre-kU;iVb5Ex6Qr7KAUBlYb&FIkuVlaA^5=Ym!Fs6}uv{N|JkfI<8_Ye2A4Cq9 zka5ZEwzni&DpB>jZl>mF*_aK&N%{m*<4@~$|Ah9Q+6&;2>y#p^&vage*8NF}#ZeM= zBwthdZmQi|vBqUvcE3X2zhvRbyJS2)rAS!~@9i7IBr5Q2kkFhe{5seq^pNH4!mX5; z+}y`xMsLpcIev~(sD?u+Z(sF2nujtPvpkDAz`FCJVUG{KBv2aYCq706et58nP+#!m z?0CZR%DiagIx4URb$tzbSrV03ER0Dg!7Ge@W4_=ga9w&s>zgY(BaioDK#M={MyVl( z9S!W(QfAww%7C0^qZH66k_9p_vNB@QIn@T97`(XctkI}FdDiRG^&8Fla>;+zs+R$RJ=zpRM#=t1L6eRrH?%1nN4hH8s{<+-B(biwz92W)I#gBHY+`Fm@l zB;d^lf^uwYhvpW?AOZ4_?TSm}4>wE0#u3lpiR(!jC79&?x{>H`YV)ZxlOR|DJg@~a z<}kDmyfly&DY+y*-yDd-uui#MIl-xu;vnxDQk%JeUsalwRQ351lLs<9woTexxKZaN z_Qh@B*Uc*xK|^Wrr;dmTJ(nk5^L&JXVAxz+KUP@?t-tizRh$tGkr54qP;3|7?EM~d zgv#n*gk!m-ENkd$cvY3sPRiaT^m|`?Gfpb*iw|X`%+*Ch!zdrtqAChvvdsr zA#(R6NYpB^z@u%rSO8_A?)K=^&gZ2N20K@PGNku&b$&2T~ovdU4j;+THO(`+wl ztSGWjtEOa-1ggI(F4qB8G)Ve-yqST{vB^v`_?UB`J_5Q^IVAAw6&%6GI*>nMYH1e( zc~;#0wg*SU>)F{sh+9L{&y$xFx6_^eMSIl}D`pq3E_7ex5X-2o;i$KIZGHkiD^Gs6 zac{F9f(j5-8x4kVmTC7wPU*G2EH-2$15{A74|NB|83A_(1 z?tWtO&ieNO(o{5opIC)7zU=cU2}k*137M0An8t$5FGeWN#=>~}RZbWi3mq2rY9_)d zbaoQv3j!iEo!|%Q0`fHQgq64nN1D-_u%%<4E8gll7T0mUy^gpw+q0HC8T@OnBKrA> zb!yTh{>mIYi#E_VZI>O%A2LvLxA3R{PXdNU*1~vJo&EJD)GdRnLq+3Cw$$9Hq|1-= zy1d#vxw{FLp$kPUS%PCO(i;`XqSJ2MODfJ6R@!LZEtmWgc+(}SvfF|UC7}v^880A= z=h?Q}AZ?U)p2ag&Gz-TL9Pipxw7$lnDrbvhgQ$t{H1I{*?u477Mn1hw4E%(@ty*4a zC$6lbc1>3hJ~=s~)L`gsSSq^-CVk$1^#_8*yZhmZvuLYu3ka&_@#H=e=wHa@=d(nW zjK$y9Zlt;);gY?w*UR=#mpU~Ky)D2s&CB7aGXqGqm@G-|gp(%Y@gq*83#NBX4Y)faK=VJcXIm(w$W;Ef zCtDY5t&Hibgm0=+N%^mE61#r5eLd=}$7!>CyaA>IX}qfv7zoBuWh<4QR6kYrMaWBw z-{0ejR5mm#fQfnim!k-?eYR;HZx`b4z9@UsXtgl($T|Kx{oUodHU@Qlb5WgPS?k*3 zCI*UI!CeD+p**au4Cm(-&;BwKX0m;Bi2$SouN!!yIgD-I(=19*bQ@8(G^rf~>4a~a z@Xe)E8`dWER#A6UsceaJ%%?l7F2=1|z&<)zNAj`>Fh_PIbTwcXmWLTxAa`se@~7U( z?A5UAQ>`VlOm(Uo4=@L6-LH#(O}^MYyg)gZ0kBTSC)WSgO%@QiNy-5>;qp(y>d&PL zhtjA@bXL#Mr%kUb6mGutx=f)4V+D0+zI=%jEl>>Kzw3+1^8HousH_NlqaOe5rcsNS zwW}Ug7a+M8z%VCrIr8dK?!~tZDvVkTsS=Iprn>GnE5N0$xMyu(GLV9{(rUw4$qmO3 zw9qh)>s9(HqfT`H%ww3U!2jd+WFRQmS&qLYQeTX)28lMeT^>Z`Mkk}`{sen?u)1$twryk(W)7vZlW5o!vJ$oTl->MvRI;7i75U95AJz#nj@ zFBS5~PbF%bD!4b-0z~hAVcLf#qB1O^x4CEhgd@iGn-o2hnAn82I#UJOX(*ypMNMzS z(Xa(NQjVS3=art9ANXLUG{3_a znHu`Nz-KMHKX@+Hz1KZ{QPh~LAG+^ii<`O&6>wQkM3lk2)VF!%GM6f4nybMJYvRx= zHDS|9X`i?cAY*Zna^AZ>%2H!7=UWw6`?%#TprW!A01ZlK$_FK|c4ihes5wsBKJXAd zdmyxqzCbxHkaQ=U>H1fB0nO#1Gxo}7Or>*Ooq7PTam!{#= z_7?m(BOxIF$LFBTJPES%^Efj#rH4ZCs$=ayD|H6L=u3@7LYfkBaccra<-0_b1l`PG z2iPsKK!HLOrUHb7BUikx$k+Z1!o8Z!qM6H_f_p%er4YP5Zzr56!})-1fX2R|IEf-f zCVBcw0NYTPgt1eMg3iMZH6PY#5rxE=JY1JXf?b_wM1;s}O-gZbjBejZpP^vf1t;$w zR{%P8jWHj8)OGO9*B$A-4Rz4sS+a?GP(Op(hwY*b9w?AAiZFm-N3xxX+txPFR)BHb ztNl)(p0=_+U~3?2pQnV92H*MTfk#df`$96pYAF+xW0AL?yP{{Fe}P{d32h80DLYKn zkTs2tl>g#=<8d^rj~StmC5_?l(iXhK7Wk@tZ!F*V9mV-?ZJNM^ZANamc4`5Fc+0uF z@XHqpR2#G@-(Tjumz#ZQ6NDZl(=EC`@J!mf;*X5mFd{z>gX4C=xvL>bHKt?Gz4t8A z*zJ?;a0CK-##mXhxn`R)_b!Q%zF)a(G%N0G-8{7V1k>SFFx4jCo?{j7Q zb9Mvo81Jsa?yW-YVFJhrXBH(8$#%{JFYe%E(q0PVJwcfKsz1Pp&F_~$eF&&-|7 zGkuE+vio@hJU@pp_Ioj}aG(3aqE*08lzl!=yhHFcOCvQVcRXudl*{bg-hO8fT_K{5 zWw8+@?__g~fCT=4U?HI;DmVCi)*iOO4P&hX>9E7@iUvX`nys!yVh;TtP+H?I)*K+j zR`7n3ROw#34v<}L_0(D+r!o-#g3%JPz^pQRn|GvR0ps6O5<+wnS{&75F6t&Tqj{y;Gq-y zioAB_Oj{W44vV4RX3^*~0Y|z*OS+db0dM)P_xgDo#ZAFp=K>*>23x)S~dNB5j*wxTs z6$Fwoe((g>$HCFlua2ZmcRv<2Bglz6bsp`&JtvL28!uUL<%XC2TRMe5Lh0Q#7acc9-asi_ZBIT|{?dP@DYvEn3nYV3p?1q3IS8arGzqy%#sJE-;*kpe-z z8*ILX+nG|C8eoRUPIIPHwhUUg!zqN~#3?Vr+eZ5!6SlJ&!Z6>OY+0;kB-@K8y1~LQ+te5pp;Ze7F48g&K9BZUAn3Zj>-ThG zNu$e;;tYvnj;_m8ioMt5to$~SvUvwN?4HuosM17vm6RsgM}>@N7xk=`I4Mt2`|T|6Op54TX4vqW%ixB0tOE1O zJRqc6y~`!{{h9RfDqhfTiHQ#_i=5>f0mAv8GjT26$o@%Q$aS99jfMhJ4MlgPa+-KS zQS|0ssX3BEzDDeJa5c-42$y|7hZ8W3ck6dp2jQC?4k$|1u&0@!1gv;`zG_C!7U@X; zGD5E#J4sV^k@DGjQ4OzN1qI&{`>Wg-!KgcQTLnF&Uu$(~c!XH_Lbd5C9Y%W7pP9rwJ^2nIisOXXcedT!;5bPm z_Z+q>MuwV59~J%9no_Ihy|yMr9CPV+D?w*2md5rDGm&B!qUve3hdge^)@)MyJLG2x zlud(}hLKq;%b}m|kB!KYnFkBXP8w77{Cp+}_f#I5$bpv3;&&EX!qy(JqqYm?uIcm&f(K9x?Kj zZ`YJq8KeUjJ~rMhIA>i3*tC_PB;fyWes)^haikP1E;FKVuQWrZG{*EVcbtjhKvKjD=)?HilTZX$m>0gkWT$ZERaY zfLUdHyp8t`^ony-%nW0v?alJ59hm{2PKmlAurQf~m!6hZlRr``V|`Y@jgMyM<5b+b zln>`!b=6*h&!RJpm~newtgRwRwvATzOm%7356ftGis-nQSE!~qIMXMd?K*nXq^O<*s2Ip($_XKOPt%6*My5 z6}3JW1qIu2kwja7010A&&w&^G4?7V(m-@er?U?6!XYU9|#w&Q!TQA&tds~{=fBB=J zU8G)qI9@qoq_N;>9JH#cTIOIx=9eLX#QJa;lo0~5JK==$<_%kr1?Sxw`o4k5_AGlqbUYZH}cCzy@?Wxj-@c% zRkpk_bkVX=THZ>J<*ER9D|G#}cx!ige(Rr#m5zTk7*!8!C!5%fr_@sMYOMUB#4eec z08NY5$iCQg$czSo+d1DuOS|)eI--|G)x_R0aP)n_NF>ytUU;JVQZ|M_cLoT`0R`q% zds6cX}9so2z*tQ7k&aAiA+Vw zP6YeSVRj~ShXx6Zc1!IusS*ip{Ymo$^mtmNVxuxzKTgeJM-^@l!+=D`v}e7Ee<$Tw z!A(=>q$g>NeC_qbvT%VXPF#qHuF$Y>UqzrkcRnv%u|C#!AAW`y&C*Zbhh}+jBID%W z8da2kDnrXWwf0I^8SVuscjBIe4p~>}5AT=MA_!5(bMVKnDiu7G-N0)S9;YS!=J|)K z@h_(o#7Ml6GG|KhpXk$b{;62)_WIv`lysr@hz{LKi`RtbaNJKsEipT-pCH{u=xK48=|d6jtz z1*@gY4fD7&k>5hgInCt=HC&iel*eMQU)5w}lcY>9d)KTRvVxy@rT!sM&edS4dPtA} z3^G}QFu4qLqKe?dz0Z?-29l$4g(62B_zd%9w7fWHqOt4}%aFw641bG9c<(!)Y$mp` z(AT9=5_)gYme9c(lY?jer+3DRRly8sHZQb&*LIG^zXmOb(AreO3$0ukUw44PSjJ%x zLoIpVZ7mC=oRkx%?<8jLG27B4zK{ zK0+)bc1^d;^%!dzgE+ikk4!-g799dB;Z_8H> z4OZZ#C*Qz%@gscsA}V6d{d&(|xO!x3Aa6A9W*m2vLX$6YJQTDqXG(DUOi9nrzaSMf z(DR3fJx74mBH2vUvJ;0*Y;VHX(X|q-UwCtjhAgBWWkwetT=gVP2e{_Th4&CALTq;7 zhLQE4qO3Al)10Yk`Nen~mK;Rt=12RKXn2{Q(mkDmcbp)A+h^@dZ$ZYPf4&kjwZBas zs%(*g`7RG!kqX zzOWY-uLG~&ZX=s-48LLYY5ED%>F?YdtT*}Fbz^%DE+dJg_o86?yqq7!>>Fa@5%b%b zNOKu-XI|e6R;S|f{GV+GavRDu7y*hy3*RVL58Ta+q}V(|$589OW6;_ZOU4Kar zRiw=R3~nx$4WZCk3<&}t3sU!If?&&83RKApIvjH^+;%t^!A6nXcET}7a>5pkN-@d^ z3#H!m3aYKQr<=3oVR*i*=xekbVjXCx-*~43+B_R$1BeJ~7k@lPApx)HI~XbKn%Z4( zGJ`ph$A{SbF(aQt4CMnqDyOH8Xde*k1Tg_weVJ)38|QpH8-!m4^EPCV2jDuMyZl1`%O0DR&IwVOK!4`cUnQ5cQYu;>sK zaruW;;q(bjPLd1STo)&i+3yvcWuL=NK~jB_3np78eGH3>RRmrHvx4INtxV)%%BMjGBp6r-vV zywz#&ag(=G$8E8llHn9aMkzJ0I24RPpo8IF5JJ^2Hqt7wZPj}FF84IKcrMw1z?Fo>%{cwo_J)^rxr@8P(@9e z&lI&9*){3VU%oOuw|uyC%L4RJS6i)n5}&E*e{&I4@{;I3aqrJemlDjZDKBWNiQ6CXwCC@gnZ2ds zt|3}Wun(SRk736HS-_ikRb$gzKWz|S$j6y@%)oh?I465Jc^2f)>YBxvSXOQ6HuX@! zqFs~BA>FLed1GF16!On|Kj5oaWcHuOR(9X8HdDoE&f9cPt83bQ%AtazSDt=OY)l}T zRM=-JP0x|m?vQIrosxIf#B~ss$1Pw`=qSK;gmo!$w}yFXeWrX76~T&atlGaUa$nJG z(Pg$_sc`2h(H@<9;;3diXQ)3@Q2i~yQACMO9O%4fnd@2CBNIbf1T`qDBerUz|H^OJ zN=}a~#$dLg-j}+rWMXCA)B3}6a@Gr#A@FnGJ_FiDc;|xTL+!es{S4`(@2X?U<9C;@ zxiL73LbHb&Xh{^(ss%yh&h<9*{HQk3VHr1Ih+1hw>{HFI%iCGDcW+NJn(3t8(ptB| zx5*K{h+YIUvrYcK6s4<`B20BBpB|$S`0B*o8de}FGODSS_00arTnW=<;uPbk zrVmnaIlk4ZI>}0HDV8bvCi7R7qc3Zr68UQ9+RV6}1UcoR#sYKsR|^-$N%`cNDfTkj5bGBeSV-<-zsN`2Xpf?zPiOFNa9 z>do)KJRLE=z{^8F!Y8T+7FDPrXWV-IRwmQjKX|Qn?O3{EG<8q?1p*3QI3$JCVa*)j zgcXV*i35D9SVWfg>nP*sypkdy)tG2$!Q`n~z3&I=vw;Ap2(U0{*kXb1kFx6{7>~Ix#=~=SMd`Np&g4IMQ6Cf zbSFTQkT5bvv*|~xMz<|w9yxM6Bc^)Irp`GF2zz?qCfKXce!mtVVRiQSn5_s4w_r`- zTrYgKcEfmgq5;G@@xv9d+OQoOVn8O!MKG{KvPMMO(#Lz+45f=WF7@bIvd5WvKA@H|~hD|;}yjTzdV zt8*l8|KNGfaqxS9Ljr01t03Iv*~2F1WG>%f|LH)?k*{zkbT3or$Z-DZTS&^&j1hpF z=rrhv)+W!iiN=k}+^FtTJUf=ZE;#f7oDK* z#XIV(E&0xf7E?EMj3GuEDXIj#U$GCe642qir*3V_Xj+m9pK+-#vU9Wf$lH|_@ar;w ze@$(MAY4yu^V4x!um+Fj*6{|X7w!@Q!-Dr069!4sK!>b$7wleN)<)moG)~$|sFwUU z!s~PvAg3kcZSSp9oAex8$`f=fELdG#U3}cpf1+(2nEV3+1oS%_aWvu?LP?#MvlkpI zo9%)HevhWkHoW7m2V;(?rUR|Haw4}`F!h+r*u6&1&V6crS|9?b@$PuO@L6h_qc&hO?LcWOnM!BhfK?rma;wUS*yGIM5R~#s+X# z=toBN9bFqR;HxJ(P%YGb$ObQYr$|JUzDrXyH{-J7T6idmGk@CX%rBd>{KW^2HsKW< zZq;abn$*!gqtoFx=t4aC1*DlJRDQeVj7Y=V@& z>6p|X6ie2<$8J}ZJrElHAMuipt98n4`aqe~)?UoX~50 z<9h-O;#qvX>e}b3Znd{6SmV6KiykCMz6sWwNlo%6H=G)>!ly*z<#FSLYorcYailEJ zIXY*u*eNK194re=ddSoz1XGObCkzsmRFt!kZz1LO=1ts?9G zaL2?xLNEMuSjPKqz%Z2RUdkCq%CJ#x->79^mS4Ijl>+OC#*dwqh?TJ8f`;3p+(FYE zvCorP{K?$FxNa@FU@hH?;h-+S(|)N7={bs}5oJ9eU@7B~p3=%DBC#Dr4cIEkLo&iI z@_c0St4n&0N_uqua(CKWZDj69Yy4bzF=khX@0YNlUKI;Yrknw02MWM60W&UEot znWiFMBJ>pEZ=lMdAjgTYVc(52nm zF&dthw>Cf@g+SxcP;!zKzjB{WI#?3vh_E17Ep>K6kkY+eSNP)?B)6iYJQ7!4r6EaK zT{y3eOsy-mBR~GuH%$I>yk-2rfmBiox2(bJe8*1<1(jKV-+M9Rx3|VX=Z#f@?4mp4 z<4zlXsry*%-Jnk!KVaiUG-UDNW-P1pdQ)ep=nOk}Kan>myL^NhO-LEG6moN5YJ9;)s%n_D;G~if+fD zcx1{Hi~EI&^uw;3Ef8HvqjR>|L{@0F`1RBGn>sHg_GUOsY@_Dy2O# ztf#JzH3M~_%~<>8D$7r;&Z9{@6-4efWyV|LlbpF8u&& zm_Rw~#v2kt>7jRURq=^z>YdLBAER?&O$VUGoA{1jJi^W-+A*VgbkbmH6eDy!`eH;v zKlPwj$DQi(4{o7g>&2_U=C43NE{VDl2UZrcrj=KH^u_9u?M7KSGsCL{%96#)q@^LoRg$j}vT*Lh z$4&^`IOr$H<&*<8;unjVK@XayhE3*cqMC`lUFB|B=cqt_0aF^I5P0)G$mi@3s!blD zu1ot61*aF2Z_7n)E4;8)G=C1@BMbzG2bfG`#nmo?CZvXQeDF=T#M}gBK~j1{76S%miz2^9d1Oyq)m~Q$mFCd zB!??9uXfkCOq`==acv2bVaf^7*TpuK3@#U+`lY2kPz+*m*JDEb+P zhW`&|K92VDaHeQ;j7H^xf^OPPzEQlgde=wn%)>EGvBLUa-o=unpJ7jJ5<|t`jFBIH z$`DW!QX1iJr2;5KBL?X3>f;^Be`+~GU^d95mjD4nmFal@51~CsTcmWJ57XTLrFlRh zs*wv~m|!FQ;c@<#Mk09o=eg;0*310Q)sV(iAg?y{{+@t8?f!fH=zvfL|L+g0S&c8X z7hae&&tdV6%71g?(*_l6Dg-h%raDHf8!^dI{5$MunQnT|p45ek-}|fhfd4G^i^J5D zO^yRWA!q%E5`Qp-fbcuWuJaQA8NBfuVsQF1oZkK4*0_Wr?lf(#Q~3)?Q~rUZe{(?f zQbLfSf387%$g|?=&1m@RU`{URa7M~5XgvP^`WGBWhj<+SwES;fi|!$a!?_+%y3hZL zDLMp0=!S7S(~7^{%g8{Mz>qCe@L#)sut3J>5X@uw2blWjvU7lRFXQuu(d)l4`lo+{ zkX9_K>a_oL4>3O*!SRyNZ}aaI`;82lPU)ND8vpCQI~viNg*<=90L!J~0lR62 zdu*E>BO9R(5fkZuB9MM{=%K(1cQQyCIcGh!4(58ED;XRjL~xJhvRRew0S34 z&HJ6l&2yFEd5B=k_q>Y4@9bDtg|3FmB0HlC8+M{Cl`nvHM%u z$#VZ+uSP}024WuF^HQQ9GHIr>E5t<~OL&#L3S)H5hn0~hq{)7&*DrSV27G1;{Z_5( z03O?{o*l#o#->-I`#wSNLBF(r@)*)^-!5+=Y^So$qpDER;6=l*^VqmO{s zNrJrxh-bJUyEkrUpfRhzALyX>XmW#*pDJ8UI#3fg)DrhoRmSQ-h5EmP5zVkc#3_HQ?os7r=w=CWv4&h34;0L=?8RZ!1_q>Nq{#}wpx&3Sd%P&Ib zn*tl4CN>(HceFL=G>>kJB)PZ9otbaFSf9wzpnTBuBCPzDJ@x*cBY{t8J|ATt&MC2h?s4!XWQO^(j0TBeSreGN6v(|63_lenD|}D6e1@j?nL~0< zWe_wo;LY8Z&K*pRh5bs>@x7GzNHbD%y1S!5;CVYw*__dGfp);gK-G-@9_MpVBXQh0 zczGn4)kLG8c&qu`oCSuZ?6~(x_gK^{{~9l~5q@Q|viYO+)7PVz>YimahE0!^Ug1xT z<}=yVVi;7lEA{5RE`~`(42S9#JcN~OOLp<9;SkbN9QaSVUyGj~u#8aU%ndC{X0)GH zF=p8BY}D#O-uQRSWClr$>9)&8#?TY9dq-*I3R9?zY_GVy^&*ZJd#%79dELddw2P6g zG0v1kM9DiAGH&11a{`mJk6fH*OQfwIF{cGRXt zZ?#Dkk4FQI$@bf5?MTwmnw6xfKYN597-RAq!8usm4Lts3l!@@%Ca-Mx#?T|%2dYUoo*ZS zA8+Z&yT7`(h!Q|Wew7jM|FV5*a=dvd81OOR+@d6c)9ElviHY(BCz^K1Ksn-mzpYrS zg!OVLFj(?PCdVyC)TASBInVg~dJAZ^ zhuw25q?`^B5r*$8G?gdoPZenpYBeiSpY0LSWYbLI*89ezWi#!3{k{l$SP&}zwl`%&kouRY}+l0x@!W9QiIluf&ZS3w{8*!<>>+Cl`P%g2piAF#F~B$n0^b2=72qFi7H{A`IA& zeX@v=6Y2kxB&`A7Uh;90G|tn>s675va^KyYjbFogd9uyr%y-Bz|I$tR*I4*Y1>I71 zDTV5BDXw`($Yd6Wp4dk;x8&LHwZ8{)@%N_=SytVy*y?e~2_3Cuh8>7gE%yHnTSE{t zc>jAosNGy+>x)hRNLW!fWy<4Fn^n$(e5QS#Q;|*ed?Y{a4`5~g zfAH@A7kh6NP}dT)3j%@Q!6A5XcXtUJcXx;2?(XjH?(PuWCAhnL@ZbcQO>)lp=g#xY z%f0iudsnaSUaPCV`l`As^E?WeD3;ag2PixG@&?1prqs;woaN(M(uOl767_h}Dx;RC z;kqNuSkaGC?~oXdFk2ZR&Ws}gw^(_4Vr}bbXZs?p|De6TCb#YYVGcL#+3=J=yW+4C zWG)4;zb^lq1Us64`tbN@B;Q)g{-6EbMUFxHwRk4vkQ^1HUFPtiBYZcU^@G25Q?5m8 zP{x7b-)scEpSlid-I(P6it!7BYi_Tvql1#xixT-EZLg+*Q4j{`7z3zgi6A*M}If zQBbZ`7q9jIg-oExz=C4V&TMBZz`EPLr)3;RaR0spAmjmJr=%p~jQ?Pn695Rys?z)? z{yUb<4huwl-%L#h#r_48x+*}R_J2r6d&*$%VIWjw#6`s8}cAqP)U#0q)Bk7?5T`c9S;yuGsZ zWY#`tsy!M1V5p}3jI9jSS*SNdDne75#8_=*fY|% zg_ck9)=|Rs6NCV)^`0!c#cjnOp!{^7o^rjn;E7O>K-v!Vp6f=-PWBW95eF49+UAS( zqC2U`@Z5QiEGp_T%U)u9R`9S)fT;#CI#hGmt|{)UKZ z!j4KsIoLXQr8rWMAXZw_LiPRzkw@qSX!u2Efn@y23zTL}$ZgL&(lK{%7YWkFL6XKK z0?mv_Iagxn!lr)wx9U`7i!0aixndQ$7*Y~dTB!89^WejTav5M0Id`1t>o5qeDce9I& zWbcy}WRC(@5zNM*>;~-2qtn7$BUN0QLH@pd?(E)`;2&j9pia3{ zxjRL7l|KX8-Si)c;f+0MJCtm<*%42oep(fIVMyd3cgXNdW_-j8%o2=zn%v4>`W>>~ z3@UQc1@$IUm#nSz{V2m6&B5e1SyDB7yLbc34^o2a*1MjYeYhR)7p>@59dL(N#O zpw!WK;nwTD#;>@+jIU$S7GYk*T*-NUw7V24USc%UiQt^;ZuC|CyJGTW&4EKif^>Id z{Gl&KT2X?+s!g|N7(JwgV$dIcVFIuP+WXcFNA%lq2DYe&>yyFAWbT1MXoGDCt@6jE zh7V-7rXvwhXhI#f=5Pk7(w^jCyXIqj@N;gp)U3_knD}O%KG}5nawp!k;|7FQR_0M# z@aT@lih)F#&esFKPdd9-RfF-?F?Iql4QS3!5&XYVDg0bQGin>>FW{YTgV5j{*t*Wj z*3-KA&@apv@a={m;$%jc4-c3s0otMdgXL_j zK~_U$Pu_%*Gcn`(26A;?t}RKf9|60sNl4$M+fB0sukP||>tPdP)gdhB+r9~q|KM0x8OfoVkm@Jn=yn>HV|q6=whIxZ|NAWk+1)<}9+ z$!)E`E1Wdnn6DC*Qlc+Qz(l z)Z~mnure#TVU^MVhVdiW0xo}r4t#=C=WwmlFC0z>(Zj>TZz^&F{p25R{;jzI0=>lJ z+oCIZ!H35*`Ak*C8#?GYNTfSsKe$1CTnd*FntI-MsU|U-F#@hu;Rx=*_dRf;uXQ(Y z0a*4es*OR?2)7vo4!`M>2r{)L4=1#a;aqPuNQ@nFLmM%e3|62T*`gdw3iO>8$X2?eV zotjy>giHS)(h11=>{EL${Kvd)6}*#94cnNk|Bi@%;+>sSd#%X)SE^g=ohvf!W3u=c zulQyFNxh`{XEm;WrF`OnQuZ@J-78@> z_3i9GDWLiuz}v;U-F9$y2R zzj^#mH_|>l|1Z!|KHwP{?=RzjKjzL?Q*aBt$r@TfP<>-CyJs+G)iiVe$^ojSz&`4q z)wN>+J;P_eoMo+0>x5plCdDGOtqkGChZ|_iEZ-_U8M@pBUiaHR#Nif63=!Na@{fCNUg-=tz zuc@T*R>P|AH^rM|bA-(!OfMkc@Zc-w++nddF+-d0-!e6|I}~yTR@vFx8hh{uUVk=1 zJ-A^=lZOd}Itt;#xdCd^1CD62bCyL!Y;`QV8!lF$bga^SCeDjGLy7w#Xa+E9GZ_jE zY!xWJ!i8h(?xIRQOM(|T z>raG0K$-u-8nkl51tpb3LkTbv;SnMy*|u&jGf^?*I^g|HKr3wmrE-Qw?QQ^LY*8Hn z(s((wii(6{2bw$d+MAn_WURkmrQyn4z5o^aX4Q)!ptL8kqE#i@tJSRjnYEU!fh$6K zoho9*a;?@_fX2hQpIBGl)@jtKLW2th*QwKQJiIN}Z$#zA2mrjsQJ4B{4d1IOw59bI zQN#eEe@P!r2G5}xs&3c?lTF38c?!}^leWV^=Bh89@r3Xj)koW-D+?}31Q+Z~Yz(lf zYLQ9k?g*oG*-xPlFPg+zqUgHf1JmsGoN&Q?lZ37La(fiPiJ#q=0gdwnKe!+_g+OG| zg0~Jo>epQ;94-G6({vGxUAh`xyd%=oRK_qhpYldJS;lscN(Ju-shj`pGk89wtrZ=* z$>)3TY$cdU_SQXkmA&IXKdI}Q4I`VT&GDvw@!=AW4MwMd8m1D5sf}c>Bj18_>X?0TrzsM)k0`BcO8e zWT)fMpmtZq@uyhrHFJAAW!}7bC)Aq<#HW5T%riddafQHbtEZ2i;y$sSu_*@4^RFrc@8qF7HM``^wyf%;2w^sw&;h99_19l z((9C4Q&z{WKWb`feGbH0ct~^%R%|R(^8wWpiSk1lEuUJQ!JAII@-F0RtyTd2dIIyM z?kx}QdJjs~AKw<7Ym86k9jcVH4ouprcum%Seq5;F3H}@^MUR(cv5R;e ze7GTTIE~b-BQeKZoEW@n^?A8{X`G7a*E*-jE7jI3bfJ09jR&p+e6g67mVu0Z=m$~t zhA(AZTaXp2;n&JS#gPkkwhYe9_{-S5TwNmF=TOg8`j<9`sESu-P}ZAxM~@?{8S}7Z z4T2q!FOUr-8uMQqw6MD(FqNe9WXh#4t+>%8@_yx)bhb&%^nMfcJ;auXR#R`nIbjE+ z7&MaQ|GDLV3}sja!gA%X&st^Xs4I*kyi&(I?BkDQtG;IXeMuKi9*G|q&iF3XY7zKV zyu%4}D=qB(uB|-!))G%jrun;;sLqUcXN&78SKA;+pK;|%PvmjFJK?xjgiYL>IE2&( znj75AjJPPs4}5^6?KACIqKr)L)DFDdqJi4v!oFv%;+<{SEuL|SHP;= z$PT~$aVv75FaDKn&8vv|$9K{%w5*_bz;iO+br5*oe!d(ST-=VWi+m5|0;pP<(LDX} z&YBR(HDP!I`)nEK@|wj{d0KRl)gL`WKNz3DyW~Co-ks*tFNCX5L6-R`HJDua2oJyb zZ1FIYNH-xd3M_N6K?`0u|68sFX#-b9e(=s>5G}neo7l+lmae-^@z<$%BgXN0FOmSTJ9*%l(s@gie&%)lW^p?Kg7~>^$fKb1y={itXy&*VR7}7bQ(mzfgiUg`WZGW%-Z7ax< zM6Oi0GrmkC!SFnvy?r&JdZQ59F=sT(nb*H6Vk|H*pnLm3Y!q33Z>(Ex%?DSKi|3M^ zl&P^)2kkPVukTl+$#i4kFt4v%vJwPG%Xi6V;n0#$XcoIrP`-56Wlz5MnjmV?SCr^@ z;02Z9XQg1kkmK$7T}0oObBm_|_JPKT(4SF^xSiarI8CW^EN(3*T9{hoG$z+YY4e=c zrN~JwpjyjXQXs4&QY50o&}<{B-dg{d9f<+?ueIUF9KF6JZa?#c*SU*lP=6Ab`#^7J zkG#?;hYdKV=-?DDJGWkgh3zfN;oA#m;``y~@s+Q}>yoUz_G%2%Vg)g%go&WVjI_0G>VbQT$@1!OA+3g3zoFTi?LUA?_0A}k*`P?O@j!d7Me8RpZfRJk;1j?mIHvn3^_gqP*aqQs z$3@1$Fs)2!^Mp9+d2i1l1qQlZ^IPg5SRkYXSEEV0X8R4r|CZOkJcD^tn&F?Dc&ijkkMsXY^YfOUJ$vh zEB>TT;;Si~^NkBX)UlpJy*0hvYJlzHh1;DljLCUQ|IfihfD3v8v%&Oyn8^ zFjRe~HFgJJx^uT4)KVps0@Sxa#C#C@6!%2m=OJ+N{#S#oiYQ>~G1O8cl!E%MZNO)U zl-c!3IQDR8*$^WJ*|a}_H#E>T485@GXu^K-ZpF$mEo2usVAs*0(aC=%$_Z{42&M2m z83F8DqIkeH3>?oFByfp{f0yK4H^hMYY7+G(uv;MMzeR$~Zr==mM`+k1kaQ+_gCbn& z1$hKj{uN zeV>(VCu+KYRXN<+nU9~tz;l0ryT7UnnSs39WYb0S;&AbvVK?YIUG$T5>3tu|J%coE z1}(JCsnYMHkRCpgtp>oecxJ6P3Gq-$E`t93YBru>=!IDm=0dt2=ywEZ9{%ffbz(zR z)_aT`#L*YaVJP5xISuEpLe_(6y$M+IChG2oMnc<{IOsWRuVUxS`(pLUPGF}8+@gi- zFl;YSgqgmj8V6qvBpYK&|8*V}4cYaIKsaO6AE_hZ8sh33J_hO=5$HvR^h`KA$snPO z`P8YHkqj%7`^R+bpXOT>#SOKgpIg5ssNZ_Dlsyo<(Kb)z2-bMb)e2|ep-54r-{LcFQ}sO#_BKDmvvVN&oLKUsdK~y$di_K4HW~%QoP|OZ?~XR!cZ6R?NK+yX1RbMLXOZ9788M=lKfoPi1O_Ft7t&lE`8qZ(Z<*L*VWD19Knh_H!+4xZ!neoV9ZMfdVR_Bd(TRP-?p~%I}Hsp~#E%ei6TpS{z1)^z;#18P%vl?ESasfq~yiOIGyP!{r ztH3D|t)aQNPL(tu=?h>`A07GiWD>7)a`S1^5$;a0a`!h2>p8w9pwQ#~bYpSv%gYZ| z3bnLfPo&_QItaQyP3dj@tm@4=iGnw^p4g-McANxRnN8)hs4$-j$ve;T*^3_O#M*@Z z&NSc0W;Fb1I+UGQr>=6YLvLo(_Boon);1hhRW&!-0+ggaGK-5C%L((#<~1f zL#K1|goJ{SGO4(*3JndjnfoXb{liFN<`_joDLHjt@4bQN#p~R1h5@rnk%Z_BYnqOL zCx^lUBX=|@{s8huP9@FD492T%?x~4Ir2t%6^2#p-&Q~GDR9+{CdH7_>ttm4GDUfGE zs%ln?Z{mW9tPqHb13Q{X80|HJGkuQNJ#W_C^{RN9$qeqwqv9|tHEMH2IGjq8;qwff zViXe4=C!;Db9DtwTEx}sy-Q8=68iw$W4XC58tQvF?Lt@yi{c)e>XoV`$}&1@2MTPR z1d%X`X!PB`1vf5_!0jw$QV6>f5<*NBz*7kOPmSXRjt#g%2Z7gQPZqT&dN4Sbm-Gc_ z#ceR+#w)JMxFg#Ly3uGehoU}iB$|BLJ*l*a>*cgOVklEn@~^Q(V2~aRN*z=C{>2@E zB5#xlnvZy23eTtdCJL8>c%7S2TgWrV%M`aW9y90oi5#bCbK(OX618&y*;suT6|c9n zzs)gjcmr||u0nM#)au~0I<=UztvWhu*gU;~x{TX#?<-3J#kGTWK&F^vW@kdmN0x+I zOAM4+5x47vZAa52sj3Ot$N)fE7YcI8pwjh<&F3H2p4+UFjJ@K;c$ zzj4L}RtNNPf6X++gU+bCn$>r#zXn9|)g@{)n$+&=pfMKy@8q@SW9Ux+t=o zx3E0I(X1@`5R`S8IFQgy$MHdGFpXk|r8*>;scTK-t6JIa%?C{TMP>h~GYW$;C$$ou z!q=c={JexEix!FSRYK{eVAAc2INFCYdE_8k)`uyv1#kuUwpoV5D=ioW!N8#d7rsvs7#F5OEbn-JbJ{X)_mDK>F?lzN%sx|Lf9Je&qY59>$L-=D=sI%NYM!S>3g`Mc3N6+-oF`6?0E7rk#86gw}nvIelX zHDvvTZyQXYq_RA~$CV9*nlt z>=qA7Nd^dP&5y@RwfAB8Xo2H=C#AOW;1h4I4sgi~sML@R%*fI!7h@d+$3pQS|tWvi0{f}#s1O}r(FbYQwjaYI{eC|JJ{nJ~t>#EN2r;(O5NeNO7Utn#Pl za%gr|++(w{Q*NNl`&8ZsTlQsZSTyBr>+llIqPq81J*(&f!h+Yr&x@gpp(_b4z1xUT zyey0JQ{^d~kYN(rdq?k&bV9KyfVyrtiI^=v{9@x!T=|mNek{ALw z181Q66{C)n#*kp)NI03R|6S6=1uRNZMBH@TRB9<4QO0z+5gN4UQG%e5xqg&*)f5c8 zp-zEZogI2d4{77igMi~)66=m7lysPqCNPGk=jy4gEc)sbs5*;jeopZ|ksMxVcI5zQ zC?_ZeblqEyOe|{+>VB+?CA-N#9l!&CZ$py5G#t?YbU}8u%(iJ%u);Qq>OSm!0j6ZZ zap-!%Q&!%E;aLi?oZEoH_YZa#e}r$vy3q(FK}th`!phkSCC7~ef)&S+9QP^j!ZC1Q zRY-by*YimF(#X0H5TKHt9jIpqSbVN0N~k9MJzn^~UQdTUaYn8DP#p8>fKvdFtb|2F z)aWX3d`w$}<>Dv@BM%6YDQzD;@$yhdZ<4JU3ihprl$FKmF2LwLQ$K4?*9cl3>b*Vj zC@@uR?!>|9DDKT3R+Y>~Rw{4ESW)Zhixvwfd}=7csdxU&P1V6FMy3`*0!^K6^!|RC z3BZ8fg1#mtihdNbE^)~DBiLs)PTZjjBtBD@vitx^=wWV^9<;ikJlz|~eCwuuqh-aO z6-J{5UTDcI#HLz(A3xTDX}ihftN13Ytfi8?rHbs-lYs_{r+qNdJmH_ z+vj*x&CLl$tG*4$n={({uOvl6*;Qxi&89_J3o(g;?N6Uy5V@NpWPPlkTlQaU-l%Me zD2i1>NFb=N|Be(B%(0D&6|u-ga7+vgP90IgSSY6~<$G<^FGRIY+Zu6B5WPhN4GH%l>3DO5Am1P>HlZ3YzL1+K`3!g3eU$ z+7E}1)M}SFwXQuW9|c|;OZUX5i<1&FswXH&{GW>!+W?(v>}-qv!PPQ7d-0&u^@=8r z5zCsvfhpts%Q$~NF=!;4LMW776pDTvlI{TeV!wxgJk=%`JiX>#(%iRwyqneip}ag8 zvXc&e8fAuc@hVl zvm-o|r9`BbPUG-6Y6OYl2P-7HJuOO39$41#*$oO-gxT)Q{@tvI$v!~HdlZSNfBeC! z2vJOYZGt7L_e;^+fF|s%AV*U2;7wS-a6dlfQWJxlr>bP-o_E2~W`?tpre%>%^hSa1 z#YaA6)z=@4MQi#6M#ZL-3z=Zh%&}z!Q<@p}^Uf)Rwy24c-_B~Wah04exwP8lnyx2wv^Y2RsEwBXvq*$w{5jle(-99 z&w9IS-fNgGV6CXB^X~^#q5(|ErIK`tbcM)q)ij0-$5LYaxBz%eJw=9Y^w;|Mq*G5d zp_RT-&_78URfXQvsaiHqtK&*_*B%8~uhHjs!A zN3?17kztc)G7XP4#?gF{K$=E>uqxpQn z!8Ng=QNSwp#!Yjrpg~CkQixcQLHW+}wyV&1+ifNH*2|WD_^BFJos_kc@}PYu^2xN7 zG(ITWT3(<$z$snxTmLrCXcr`uNF8t(3*z-wd5m*wIxYtNL4A2WPfy1CmjeV(yemaz z8_~vxiTTShbgKCh0`F{LBgVSp!}3WmIhoj%vsgr3(+-hk%cQeEb|ZzKh-^z737x9D zg265h@nnq+V$@ASwZ3)C0{~H}u!7qC=_C;u6s@__qzF^z*EV=1LH^;3N&X^(M{dvw z0U@qfbxO;9MFgI)>>-u}L~YDzy~ZF7 z_m~Uf0Mh6@)IF^HE)FWi2%KXQU&9;I`_5rr(jQ#UR9;|n@DF_iRi6Rm?a9BpKo%Dao6Sn-?e)dfs3E-RClviOE*YR-Gay;35)>3& zm&Ip5DfQh%Nq(UPT@0!D2}56=Ox;h7+}@lH0!!Z(TF3Kl#Q0~4w_uQz6+n&QNnjbm z!7t7TyTQh2<1B*z+C`vMFay4bT%&gz?WqM_15!>U(3$nOkr0|)Jz!qRM-BIHv*mj; z4M%6x-)3Yan+m9U31IWLKhjd~%@hn(K>Ff+VDki9!)ynTQ5Pb|cZrDA@imUHGZ^~? z-+yY_h4&>_k44>I~|IJ+spaWJ7#tSRr&EMz_rJ-KBb^pPGlJw`r`2#hJG`ou%2 zB3ajt`4Xi|V`1I}0*C(RITP$1ZlAzJoL4vn$Z^*g?2V=H+)hYZ6gj+61q#yHH1tTC-719RR zR7hpHfIXWHMON#BNp|CbRUzu-m9rq}Q+J=H;#dSiGeZEI(|XD6@l$=6pj(6kpgn-L zd<0#00K$u!9i1n|tTqgg{)55Biee>|?}N%?Z3(}>nKBJIlFKUqj760vTBtEYKGPSlWEu-4C%Ay{-;R+I-n_S@8=}8frBAu}hQFX8yNg+B zi)mZT`mqy_U*JeR-y&pyO;P(%;Huec?`7KRjncZ_CYt4Z`+MR`@X z1Hs_I2Yht2fu%XWloz}HTe<`T(0Qa?mKVo-k1ei#k^GY%elEK_^-^VQo?Q$>^9EjU zp($@1*5EZV^EIyq*B5?2Ctj65hjd|D%Hf)y%d_NHz$x4YMV{=8$3CE&EB_FzFm7*Q z1%BCgh&Frfy_6?uB>iFNZ+X4${c$wi{A}g-(Pj_sav*G47XsL`)A=z|JH+&^f}H1L z1%j>1m2cEODx#myFk{2iI24mUp3>avj`HB`&4}3gKVF}M6m_EYSJ+bIm{ z{!o>n<77!*f1aQctDeO8B^r4LhOQgF1^csku`N@ne3S~06~JtR6Jnx;vP#dWia7LoQs zkq^OYFv897{d~y6`MCEk<2#&mE>ra})=Dp)hh%A#>^^g;geFI^q*&+gN4P7E4SNjeL%W zr>4p0r2qNZ2sueUw38%-XyLf^JP;8@L;XU|k!4`S-&Om%- zsmhv~YO2O)CJ2F7cJTdCe{8(S%CmDoDE4`JDE#qlyGP|sQI0>`-kaZ%(1a=#hV+y4 zKpZdD!E1N`#60l&3pp~W-oWuny!em#lWMV+Q;}sd?)g%QQFK2Tg~IQ_5UfPmsw5Qg zn$&}demO5e2&eB1c7%I;78Ja8DE%lAWZ0x)qb7%#t*~cyXoaTMr$Fxyo`Psuiwz+) z)l?b4nkNCX9@8d#$xQVv&U3X{^*qnl#c1Ay-TUrv{NK9(C|;H3X~*-CT3x~_$hVP^ z`z=i-9M04IHm5?Klk&s{n9%{pjQZu_-`U3~3$DJJBU>;Rkxi7v}!x0CLKoGpV>iHB)dIyij@EyF>?hFaXb>szu|T5_PMjW?mm^jpkE{ z7>v!IV~O-xgaKlh5z(Z3$uL4d@u-#;O^Hjr`tU2fy;?*bEMK{t zv~TokOGyE9b^<~$6QbpzN3tBWZgf7;rkj9*O@}+ISBjbRUS*+H+8=bWVdw^cGQoma z0AD}pN^1QN@ez_bot|q-m?J*$ujE@D1JOn?yHHI>qxZOZZzj+D2_r48B@t-eXvd=B zkryz+(Y_^uv5l~Fq*o+Sm63y-U5bJT3jU82>I?gYc9P4vJ3L_lO23MA)kJ~y7etVi zt8byv^&5qU-kAZ}uV7VZdU@G`A%zGnn3n}}HLEPuRp_NDzq1h5j}BILwa~E1+v}MG zFNqsO^JvOpeh`8oRw4JdFOFUjbEhmWBC_hO3P`?%e|HMDy3B3lz41&jsFE4TKl4v{ zjKa@ON>w4IM8Iy?H#ro5=Xi=tA1kDAc_2&ZZ6(9ipnzYl@g; z@`$+n((DeiQH1^06v=Dwf_OE~BlFS7G@lh|`}YU}&+v+Al&@&LPI(?7Hgr4)tcy^#bgA*+l`)gooIc`)M9~^AZv$ES zd=zc;Y`_MM{HxL)15@j+tj3)%#1^KincDl*o(A?$%;ZE{!r&=>9S7M&VVaC^E0J8i*qLwJw&ps&7 zMAs?|DsPIE0zEGotl$z?@i#eka7|p4TE%Ec+d3te4LAGHNL|}_zYhGTD?Kg6&yU)A zQHl%MoEfk<`90f_?-(h@5NzAsI}Tes$o1-$sQB%Uy)x#8?9(-= zr!%E7vqEh^zlf2>l|WcrhQvuEAtTfDEk&y^+aPGdPiV+?;s})O>T0FantsJ2LQE!; z^;BA9uhcLGN&Jp26h+MAu6!h(J`m6=3ysrb0q)l0m2yZ{3UU8C3h9r=op?xl=!8>lFRhPS|A+% zrLHOY+VLG4`kJBGR6?PEjj4-Lxs_+~q;eA|V|8OYnCCT)4hpkPr_&|IzCi%g#_~#V zL;Y@7JyU8xTZ(ns)6-(z)cIo@brf(6?G#IbtA7*8@25t{fOyveE5fZ9a^n}!4 z5Y*&2;In7_KU5CO*b+%8TB+3-c~gdA!xe_JzZ9i8q<=B(g2W*YaQN4)8l{7OOlZU5FEy#f&39-Bkqvd&OK&*;X$Wyu zsZu^)?U{gJwW<{&BQBv`wFSZxYhEBlmBuA`+^c->6*sruxQxv%D~!w&A*TEE>yGln zvjsVejNfxb0F2tVof;1m9vVsgj%LJuXtt-eGDP<}DkT=nFEG(IqM*>~T(O~jc z+BHkXP~tfqH0&6-lH-6o17({d`Yz|7I#`tnAT>CdEfWW3LociBQGdvY+WU6uv%7gR;JI_r68N#bljzgvGkY^#LUzd_q>6!yJP zYL}F}kxUXbm#0kOmA@JF*D-{s4HSyH1vkj{(#FE*%3_UDk0+@j641A4;AXjNJ>vQ* zNUraJgawO5hSg`yTd2rf=;Q4k@chM_H6A3^p}qbN6jPZ*9F1>Ip>OQ|MHTP3-b=fW6FmmoGtk_b=foxjbH1r>{oYMqe@cisyIUGaK*wMLBEkWE( zh>KJzMlif%xgq^E#__l2%baucZMaI{DA28eM)i=EE6Kv!Z6t}ht)m?Bdl+?sZn4i~jL} zt(n2eGudn1pIL&eej1Q=j9N*ylPO~7pip;XfpD^o03EOpA1WbLDTtJLE_8i#=y!S> zQNjm8l^W@F4A|<4V$%*)UI|jqUx!#Pdim}UhXdVepaTtbx=lpEqR{mm(R9&O|CQ|q zi#YtlQ4?&bA{i$G+F>3)i^R)9N`^i)v6lm4WlpXR-u%Y{Whu`8Mi(*Ty5K6n>CRK$D!!uKI07B*iRgruGzrJ;V7LU}1^R#g5Z)>LyF~v(dCPpVe1iF39OFy?zmUhg!Vp1mlTX6J zn%YDy+aFy@DhXtv$7ZXTq^q<1yQedoK1J?H1s#T5ximvb2JB0BE=35ZFJIZcq z*gzk9Ea|aF7>fbe9O+{7-5fa87C+zzkn%+h<-HZnK04C@1laoNGq{s4a5|(C-7JKX z5weZ}DNGP4LAdTTtPa38VourMi^}C1a{2LpT(CVrPk~>{dUxOYkh&$#6!6XJ;30 zW#NcrbEjgEKcrUdob5ghP0`&7A!>MH-DQ44!-OQB*x)PMzR3P4Ym$j&vt`ch! zrDT)&2QA!Ui}Y*q1+2YOT$-Xeaa<+#?kF-L9Lhe>5pe-yNysb0GZQh>Wb3*aVuBLi zMSC_xCdY%Ki6yS2z zc8$eMXmxh`u%rg_o6~y}`%l)Qunw%0_WJB{bN+-k zA_z6SBw4DlAEZGXQajPk;kRbP<>^ldb&us|&quvboo{xsj0G$(IFx50*Uw@1Q(h{A z{9bq?TxUhk(D7k)f4cP<3xMLLpY64u4;2e81$kTs=2`Y;^O0UU&J@`w(nj0$CshXx z4O&loZNLU~xu#Qw4Gdp%lt+jfYdX!}($v{vN2!G@gTzV!cRnz(CDz?YD0w3TReJ-< z_8}|5%&FP8-1Bhgi@j8e;|FxS#Dou+sNa9iY7F{z1eL5fLw%l8>UCA?_RXt-QV3TZ z^PCK}GAtfyqh$4{(*O40@Zw0%xGpAF&apQ-pC1`AKb=lq*4z_~rkoJf{&R&74U!_R z@weSp;)lFw#;U?sfh2}~bXzT~qIaGhS!=3hyC9;?j^uPnz|34V&CAP+4s+Q-j1*e7 z_H0Qr>PiPZ7ZS!_p#8EGrqLf`c2enTlS>F2c~I*dG*!T=3bNiy|DlSmCZC zVOlUgn3vPF^6e(BnOe;P#^aBjx~T{fpWLQI$RnTD2xl{a0hEG9zu&WPkO`6yyAufd z__q=kSxqoO->`--6^FjQ$d%~Oh!Ni&k)IHXWsDQr8b#y;F*$hP6>2P^iGOAh&4WtD zPbY?8LxsFNg5IJC%nN!4=1dRqYZVmTt6Rvay3cP53&z){t{}VtM!Vm95Ep4kQ zCV)BaLToAEna_XiHxenGFyX!OguPuJ^pC*ji=4Caw`>?L0AD0!*3NCvEXPs9&=LgcR@c-40&_)iP%?vf z!!?i6h-bRFOEAxC#dfW$W>D%k+Kp7sq{cXgEm4pzve;bfxn>qJ5;zkjjW*;o49ME> z1^>t+#Qvkh(MwdoRJ7D$?XW5{!}>G)2jY*`H2~b7P{y1@YAc z;>||<>rV~JsbA?JSyWIv63CWhqOv$qqI|{&F7!{tmDMY_a|5Esxggp_is_As=Xcv4 zOb{!Ul|j;cH4{rMWDM-CsD)n^KUZ%JtL5tNiPAl#U;%)!2d>^?gM?p9SvGSu?%7yZ z4f#Ri#7$vh5!wLQOMK6v=&!f{EGBqZ@0760go!mbe+;6r5_KSy{n@4?Gv1WXqBnaF zDfdvB4UQcnG2QZp2R`-~jBp}aXjEvLQeOe5&$Bc{Z04-M6_C+nf*&>!<5Q4OgXly; zTofhr(CSk77#2I=h0`(|9(wRO^tFRJqVay~dzFBs>xd=_=|W_wz?j!}xcXy9Lh<%% zVp5d)@+#}Q2ohL&clJ88KT6sWS`>I0@=6TB*D{T+o)Z#aSR_g*DecAy%dcYf@aKG& zdxg%Pk%y)NSb})lz5;ahtE_Kx(V}vGr>Z2MbvS9weWG^G3NW~2i}BqUW*&*(!K@}~5XYVamVO8hf(saG=SLyl3KM-t zm@H9Ah`S*vfc_%SG(RuGK%H&R5-9o8{4E-R86a`_wmv=N&ifrTYIll>P3`MK-2hmQF`Lp14J5na!3!GDGyEL-_-mtq(`BXri$c}Qa>^9E z_$7W|5^_&=H3*&t271Lt;^p!uQbP}Vh-hQMIl~dMgz{ID0tXLt3uU@vW9fgljiCPt zOGyRu=XmgOmkRG)x6wVO3#3g9w^bJ(IK#h)x_V?>gq67%x0wx zGNKydNmu^>U*<2M1l{6MQs(>!EvBTh5@7OSwB5vojx_L!?PJKg%8D)ekwJ8NNDG$+ z-FSbD=TAu>1C5W;`ZKG!Kw#2J>(s7!rf^P`;1~^< zq|G;^gNEgy*FW-R{6KklU0bC^#F9!x`*;u({~p3I7KJ$6KLLLs6kSmCaeqD*S}+zg zeJd1Q{RY(lmMV_X4xrDH6N;z{x*+tiHPpGjRd6g4OcIVJyoQvw=lkz>cpA;m2(H>w z1X8pi7v|(2k=?FF38R=?OCiVbJBo2{TtUv_d)3EU56VOuXmyf_jdH97x+??(Xic!6CRqaCdhPPH+kC z4vXC-?`P-S`|qB!e;C=Fo*BBUo~r8p`y$2?eMbdtS_$*o02|`Xh~3p1kjKt$6A~)k zNwZZSM*_I&YqM*J#qEN=xF%8|OOa{c)nKT%>RUtZc`#5 z8k&vmQfsbfTSm_nv-12>8?4S@75#E|7dZpVv#N3$jl|pT2IX*U1urg>KuvmU1@7)= zu?#qs+qyacqim2!WVrAv-oEgQr9?THO1#dFHTDGshKb`dqhPpb8k77Z$H!RLa|Mw=1XOrdi~JHV=jZTmM{5uz z4uuWL=KzNZoe4zSfwWjlYrBFO%`Y0hX}A-btN<2!@@H}PA{qz8b+!2rY&Me z$~us1WG%sxK19>qC_xIp!)LPdm+M)YdzJsyD~fZGOPK3P8(IZ=Ngkx#Lx{DBHCGa> zO_~z6kSgj?dAuy7A!>N3-EM~dmqMw5CbUxP-3nlaV}6nW{eKakip6+L|Rc4 z^@~MI_e#aPt|mp&u$L~=qtiwJbf|>pMx&YsTiNhS`_!ly_3J(f^TX)>7W^r$m9bc{-=gp(n?|JcINwa z$f9KOnbOtH5GV2XpNkJ_5?QE%RmeLlO7RZQ3h;Ipd0^LEIktBk-*b;;V68T5F{iz$ zi@#9hwaX3}?NSv{(sPv>p2HEe#hagB1xLc$smR#D(q!3P?JP2YrJ>aF$u!HIZSn~A zQ6t9)!>g8HtlraTz}l_&|9U7`F>MBgtA(}#Ib0+COXrIr>gx0gGp5McIxCI=c*by? zxy1aoA{68RA&#Yv8D=@*_|f0c?9u&Dqkg9eoZ(8K_++Ob@l*i}P|7*tJ7eQJ~oWCkF`E7i6w)NPe=DOj ziilP`&V&HqaRZvJhNXx76nGiin!v!{PLp|V}s;c^{y%~$SD z0JDr9ZCtIKGcPJ?tg2vSNri#FuwmI0iJVwaErVT{?z?_xG`b*Nbj(XI_57K@QPox( zxUWnu>v60`tw=FLt6Z;o_l?09UT4BKlG!+JwWrHJ2MuCYs1btQq1UJ|x(<;_bw>3n zF9+268g7aLed(x<+hxm4>{B7WC}tRoweY62W=@MLzmqcY=i9gn-Lo9j3%2*X(y!suTQLsrCp( zJY?C3nt6WpwEVfQ;28s2L{4yOam#+$7}+elttQ0rphHj^>i*aqdJ(4#JB{qJM{Ucd z*J}UdggvxzCTPYWYI;aDbRq^Uc6gv|MzQG%HB5M@4 zgd55u)v;BJhhzTak6)Q9U`Ac|sh08Q{i<`j3vEW|=j78Lgx^12f&)9};N`A#PZ0N{ zW%<9qavv1x6GxPc4v6~cKz9NR*ek11s8r((U+0uzyR;NSzW}g19Vd8YEC#*}Cz%u`p>W|kQe?d+2$Zz4rXc~^T(Mkhn<{3;}`6sqeWNPa&9s74_@m!Ju2nh?Z~ zCconHO5O&}{$1k7?1P*ftQQv@lY&BB$#4j{t>469=i?Y~a7%KVtcCj0eAeQrY znEg{H3`6-9Xr|!&hyk5+5q(nD{2S3Yi(j4pVLkPAXR)lij}To3CiljP3NtUv{CK0T zZ9H!Hiw9%>kc$3#r{U*DB73a1dE`kdVhOe z;DZu}npFf&~Ced{ZRXRf&!M{Zl&i=wnTmb>-+I<^e{ObWv1m#kHgfxF}7*;!$fPK2o zkmd-R%vftf@Tv8`So7}*nS%Z#22+@y?gN4CAtu~_U|>g@w0Pv`JgK^50D|=diJr)L zfV7(;4bo<^u~A0C8W?aYR(8#XY1AmjXN@{C;4#MnJpk(Llmi}UJJ0H`8avWJJa3N! zx|uG^>2>U4ek`e_lln*PcJSe|O`}B#lbra9WTFkQcC7$h;~hl$RwulXc?{#DmW}@} z{M~57rv)}qrpP#>h;GmX&w&F3>$&U@z>01twq8F3HU%gWOucY;tDt`bk}=XE=K&MY zwA>O1Bw*@rDBPnE$H@XZA!%AbhtwExg>DHt$A?Kv)F1N0;|_dq1IYh^-ae*C=-k&Y z>A<(F5D2_eoCnr`SI!&o0||bRdqk{L$B+&L9yYV?#$>d6+NMwV|)x5d+Ry=&}aOSCpJA+C- z=I>0kI7~*XruC!*4n#Hjx*vY$h!ZD#*j&aoO=NzH<=WttZW8}M1sbv6-^X4Qf;8;a zxlE&$XvtP2Mkcxn;FJ@|O~Wr!C52;{YK9EAWY7kg_blswHYUv9uO{5aPVsZWw1YP}-}5@q(!Y;O%b4n2R^mG3sx zuAuh*4E>Az;$*+MPmxh0w5ygB{0vUhf=u)8Bd(BB4q^a`fVpiD2^2m4J9MBtC`61( zRWiLCTC)zBzF*#|KiQ0ox|=9=nT?xw5~OuZw46VtuvWC_%v8txOszm5)prb|ZV`zv z@1Z@B8{2ahahT5|-knNSy0V`xoh?P6epU868~O9$ zv!HmMG0*_-dIR3=oNY0?c12s+<8V-r(mw82U<~)l&zn34f^lEO#8Hx$kc8*=B7)O0 zAkz-@uivN(F0VcT|LuM-2N=ULDkL3LCNkTat8?_FVRA@me&Zi(8FKj0d$zhDM z^jY!BzzVXTdFOZHFU=%nJ*@+&L)7LkS^U@oE7l0U*}}tEu;jpD^;kGkgp9iR$Ity2 zbIIrxW3f0lYpf%IhBKkN;OpxI^Y*W8T?@uK4_EH6e62bK2Vn`7`a4M~v{)qu=iGm^ z*^a|o?eQbHtbUlx`thx3eHqTM!!y1`B2Hr`+M>_zhUt6`;%Ui?bljzW_8tC9LIgua z(|m4%=zzTiVwivuBxVu5n>CbJbY!f=Bi|*kFlJ&{RJoHp=)j>(YAZn(9T!hk8i1g< za#N#7uauV8F!hUBiVQ$SW>$8v>wV>05!=kKS0Z5Ey!%QDB2Sjj5iqN?9a5LBU( zxr}gU;Na0BRLI~7h@F-Gj8BbFf_*o=owU${BN{0y;>LRVM(AJW`L!AqyhLdwF_@gv zhSMVxVeY)dDm2BYR}dbu+(%4P?H$*a`&=mkppYsJ4;SdJTS!lQLUB zo)KV+Wra^lkXkwdD8uj>z}u+aIWQfwBP=p>Q%D;2OA`?jhtZw$&WMuaLA9WiSCDJ8 zh~np$L1EjV;=<>dl^zTZ=Ta~tQPoi(n~sEX^cv-K5n##xh9-YP=5P|;dhLx^FhoOC z1w+3S#SL6!`W=l==0`QQ({M#*X$P}bBd-}u?GRxP1UR}uV-}1z9&kilAl~AB#!9#& ze+iUzF7MP9tZH$XE1re-FpCK8aw|D1OBrcU?O@*hIkG7z)BRf`C&@`2B*`EMINpEa zQ@X@p;cdF5hVS-`U5r%JFy7V+5Z_={vbYJAXn7K3p#P21_J6<9(} ziOKpqC@%-1MkX8;nGU?_RzEX+KjIdIwxky%NgnW9|Q_31Wx`A#!kgbb`mw zr3zbQ-qWqrKkSZS(>!()#QiGFo0p+LAyxEkl_^pxoJ||H$gwTFL;iE*PsPH+?RHXH z&t&wRME_LXMBD&D= zc&ok(2eMJ$VK3AKGby8<=3Mm8FQ9reFTIMW*77OvZ}1iBXV9lfIMd(dueXDGQ!Y|O z$X=90&yb$(*b0qQs}c|jJ!i@SW%N?OyQjle&(=n=M=-GppNTksv1t1hx?%hyZQS;!ExfvPyP5< zPqx|&=!-Yh&H=&&Y!r!cOp|uR@s5G0}bzq=eQgsgIjBSOeBnr`%veiKNynD`pL&sz`yTkpkZvF(aX1D;pGBmxze0 zDNvsEwrj;Q=ajyP;)z%f19|>(okGyNDvBLG$8L!-&%#Ey-XOFopK$Sg{86QYB7B`r zQaeL&St08yuF4?GVuQwbvwkr`H+dP|zHSGd10Kw)MRWPY<1zOL%OZjw&fB($7zZMMalvS?2-OXb|cP zKhGl<`UHr1^@<@j$s^v{#O~s++L5ib=Nn4x_?A*_*oo1JaK@-3&M}FC>YE{WHr zN3!5wpZ=im%3{(NA8wcvp}uO=4TN1i02s|{;y2Ka#%A6jI_XLKpm-s<_BLw1`-oj_ zDQa$-b>!#6#o2y>;!TVE79=Tx(mtA`yUv~EjdMN>s>#o;xh$oEZ%OXz3&OphOtf)A zRu|^Ucx^?{1_LTvZL1-DbI@c(mQ|^dT8zBf>W1}t#LgQ&^Pou0GcSjS@N?@aRAY%^ zA58SIf-NYOUmUEq8smZo`D)&R?KtWC7N1c3?j32lPY!rtljZ}xg-K@5ui zjf-vM!uWtne2(3i#MyLCH60Fhp*8X?u9PnT`$7)YFfe0^}hb?jR6W^eS>M+V>7~yG`@q5PSvYNtGgP2s+{U z!;~DI7%nj_SU-nWdU-P6eubeK%AgXEDzjU zu>zn-fKH*_UrzlpJxma%KzS!@?SBY&t{{wt)d1=5m%bsWyHFfp!6Vlf=2s9w**f9q zq_vG2JZ>HZ#Zn*OVNh+C9n%QO6kLQIs1^G2LJ+^_HEa+V$C)$%RXqR1555h$Q&RRp zwk=7fUjIwBaX-j*EGCre2ig9JQ8(m1qB{a2?OI!Dy2^65B^<_GQEG@c-ez@-zrH|f zxHgfbaJnmT|F)QA*P`vS79I`#tC^gW02?~9t(UvUg>bBgvDbxPGaM5DT$qMDllSf` z>s?{xdi-IOV*URuc(sK4ll6e@aqIkHYhR&+k)Ub=NlaR7a+yZfmx~FEh^>RJw`uu} z_)!$;;RO=zRJf?d?d;CKM1$6x>s@o%7MxiI@(FpPUcpA zAxdc#qEi6~%B4mynGdW3_(x?XAe2nM8KgkfL?ami?u_aP4<*ogO4wvX3mMKuB}uls z02Ro_4Um&DPRv+OHTHxz6clwMKlHL&bz#YtV=4Vn?%q-k(I<|lUm?d4ZD&=VK`M4pG^NTTi z8u}T~Y}ObTuv>8~RjjNH;({ zM+Y#s99pf2@QLx;?H=Qk0DCIKmC4eYQCgO-fpM%+f>{xW2?lv(el8H39BS`u3j+p`QEjbb_ z?MWSL+Lm$UxQ@pktu~)1o<9YC1;Y+zD?MC73-;+L#ys_d*AE|_^n&2CudZ+l4@FXd zEgMi}LTfehO{83bU%$?n~1X#XVk1Ni!_| z@U?4E?%UsdsyWQ{*nVR61*ZP({0L&dX4@3$51|4!#C{T6-;d8Lu+lH+%enGB6=3ws zf@05jcM^~z8``4lgAqs7c;-m05q`YSxxUb(!u~MRZnh8rJyVfhSD>nPSB^T-A~b9F z$8$Oss+N5mS=l+bqLry_KGbP&eRCh+E zRDea~$fNpv1uKiNkXlM_a#uHqaCMUX50Mn1y@N(D;>{|2t>SaVD=8X;{qKlVtQnI) zV4A5Xsd4KK5~7kK*|e&iyA}UT*1=4ZD^8@9a5kZqV9UK&%$T@7hqzii3iU6s4m43z zBS?lP%DSaPS z^#xDm9HB^p1Dr%mG+d%>_8|b_;KYKLChO;R59n5(b$K-^+c8DnrAqYH=SIz8a4Gn% zmy}S@&c5a&o9UD=r9xs+ueVofsY%l>epTCjH2q)`mb@RzWyFz1x&J-z&RvZRQse7l z^Sj_EE;xjxAX>oz`zQFgs$GS8;lGvGkBKe1>T`&=?E04Mm5L4{M)V-rP-njuvc+MZ zlsKMW?#{UjQOQvNt8Vd3Dl>E54ss`=*Mqv&OUhOjX-krWoz+7q@W=pp$w5KI3%fGR zB}t+3M9^raL9KQsU+Zd86AghGI_)Y#_1iG^WQadg$S^(^ax6-Y@kc5JQnP-~*A{eZ z5(MlIH-?VW_D-+opG#mwf81tl(nuiW$a#x^wQz>IxEcXaL&YoRrsa9vW9G`>7H5z(umBQ3^h(bXH!hckS4xsgi}5?>8w z+6c)3?(3lZ_?dRR4pIm>zra!BcyI=$&)M;5!^vnCPbR&!hh|e%G{%n&Pf#!5^q;y7 zrE&J_KiCU41I@Q%Pog1WTGq^ebSiUiV5e<}nw(!c9#Ak4nNO9NqfqmNzncv8fOoxx zq^V_+e32z*F}CfC`&foia0J8sDmkVHxGaAj|0P(_jIA9y{L1VJJtGoW;h){oK`JDG zRb4>YU$9EGbE{8n3eO(A3Rs|y^{(78Il23M8@%uL!tB53R%}>Yiqf9$I|M+fBG=6l zlvh13oX|r=d2b3!uA;e}`ZxrF95d*Tz_Azmhk(7?2 zK+gzHt;ORD3;ggQFG2hu8EWrWp_%r(urlhqt0^w3me6b^O!~!Pq)o*rHn=thNVol9 zS;#M?k0_l({q82vIw`_N?ChGb!E^CNhxaX^aytD>9P^45AoVZy?TCrjH#dz$!l4?k z+yByNScSk$$gHR=8R-nB|Az<|Wc`Biq#H0EgLrjS3xt*~HM~O@pdsF{yXZ}W?p1g# zZ!Ok>$((b^I0vNnr8*Q}A~>}FTXzb{?}|8ZGuENNwOeaJdVPL42zipjgu4eCx`ExM zHCU6_KpkqdmFSV!)j0z5UDqcfHijsrS;{8t( zr9OTVn~dl@3FR*Y=4+?>3vd6zUtq}>8t6EeHO|#pnOp(J_uFle4Qcx-6nFpLpK;X^nr|lr(%AbYTbjkq0 zk7#I^Xnc~Xt>yZJ2$S-TN>ujuy<8aRKG3b7%WaL}WV7M?&1B^8&z`t8U{Ly&|+Nnn; z%O6}lnw_IxjltjrdLlaj(t{a(B;84)d}bm)*ArJp`GVLr4UtSqWY`CR=D1z*|HZsl zb1h!uokkyGpPMPlzg%96Vr2ghmlrTIPy?Zn>upwWM&cF?!-@$?C5oY+FuTHzK?}M+ zPnmW|8O697n(;xEerW(5hTd)mHCcJSW>z`Kb1p&}K824w+f)HJ_5YRGaw``$K&XVgqcqkun9@afJoCH08V+t5>oxaClrx^{w>O| zWbQrUf7`n#HG*5sh3d+IcV->|I7`D_f4Y_dm@1G-{ROo?z>?Df+|~_nH_&HC+q1^D zHrNi9#=01G=j--_H?1|33V8#};VXRP@VO8m6(o`u`axyzm17}4(df3?MIg*^SfI%# zm8R8`V&2_X0xO1pbny07FXItBj9!=HGu53{Z_CihRAHE!VHpDgMK$QiA@n}Xh`Xdc zV6>*%s_-YN0H&j%8p@Fjte)6}G*9>^Cas}88=P5CoYms4h7AN6-IRZ9TWV`nx$tZb zP04`{M*frU;pnOgLCa0T{oP;GPz|2hp=uvqLDW!1AKkm6X^7oTbSt)CMTHd^^JBpg z{&7$Rq>HA3Q{c1%=Qa>{{cytdXWE{R6WkcYQ18w((<*+CZB;i<se(&XR~8w(H5!poR!PsHs9scPVfU8@&aYE(5>Vup{uXyt;9i6A z&;VoDF7YmUALO0Yndpu9+Bq(hkql9*UraELU`4r%3Vla%@P(fbZH84UbrPrwda(H9 znQP%Myzj~+PR8)Hv1{ASb^wzBb}7BlQ(`uro^-|U@n}0S;wrym_R@sQc+s%=istoG zxxF9HgiSm>8N*`VAEn^>C3Z)7?yV^0kCnU6ZNwl>ibEn)&4vV+95tv4Z+z}{vH>@OIjvg<1`AIPLoy?rMj zNw}Sq)^#oznT&nn>+lkV{SuipSB$FNJsnrFsMJ6#-g{W(U*ZPKKG#~{msI=Yvz1~d z+NmPLS7x}b2u6ME0wL$Zd_t#azcUSb8XSzYt5n0hS?V_kwSXv{vMvWKB~Ddd3FzPt zY%A&a7$b!GBKI)YE=t5RZb=~w=|EXies@^XhvC*OXn%OM@U*mk)4=)-OPEh#xXRRx zyE`hE{ zJjo`?z5?;p(l~W%gdLUaUeh^F`078OdkyBFs|KRS6gwj*z%|;$S#dY!b$p}WlOrql z0W}}8g|9I+{f2u3vXx0Q-2n31lPMz(mz$kMF}^1v2bQU@V(f2VD+BS2Yfi#td2V0s_KxBq<`OB2Ym3 zFRW?fw;2m{B`FT+@jKMwLX_E)TIC+-qoZdFhC{{jC@{&SU(7981p2DFqHUX;BW6{H zF7ZhrM8;wuln!Et*wBvSnX#8d`+XznBL>$!Ni7&fox9jpVk#MI_iY9_KF#s5NcZ-; z0SOJYX#e4UXP!o14K2JGGg+p1ZL<8mB<6y!P_H|aAq9Y_ai8kDES%%C@(-&1B#zA{V z>*v*Xc8~J)Tey6Ay~YoP`BB{iX9fF0B%kh0uvjYC4C3G3GXN_}w@Q7g>LAjKP_>Eq zI$WeHL?}*?YiNm#C>d?yg8@tiUoy@UYYao2ltw~R8=vVUCvz=|F0*_P$c7UxIkdQ& zEq&0UYBURWKLhc;xeUZCv)FHjfv+Q&HN5_t%0K8k6u&XR1C3g?kx5Dbfr7e~cPH9e zi~pBVt7Ty%ljb0dW=rL-n69ThLf0A38YG`UOx_kac^}jP0M}m23m3c* zh5KQ#{Oe(f0g~vL;ZhikAK%H|;0`U?JKbzHDPqd>MjNaaM?*i^iR z_ET)AFXYl zMeFn+N+-Vx0??$mz0?+28C#YXn(=n3nyz51Rifu z^JTn>b5K|YhtKf^{1x^xA}pFSRQbA6 zZ8#~JD^XZkNf(swMIy;K&5~nHSJE~<;X!&VGEwA8;=}0>V6w#g>+)Fx)YRjTD-rqL z!GV=)+F-X9OlT(VG&*Pm`Ta^OkwP$1)j{4Rh7t=f> zyp>tCdOMX#<&9+q`;ORb6ak@Oyw?z|MVXNGXvh9PRrix4SBl4e;M_+aKuuUc1PH^^ z5uKvzn>h2g`+)^@`B-#LfT3q??nVmxGBiplR{*eBZlDT0Zl9cp{AJI%Ft-Qi1GN%{ z`k$4JVm`aPVP@!76!rQ@51bH=F#@M$5fi63tS;*Oql2E+B%{l1{hJEnBSY-Bp7uj# ztR4>?@gK0gCezc3#DwM6m1OyOWop-aa*0z*hHOEC{;8F@jIPFk0;#kNq~6<2OC*}a zU~%N5I{jg2@ZTjdbnxCMCf_mzYXn-(a@J9ifQ9B5?0-Ny40H{mG)QPvy8k2)eD=_~ ztpRha!QV)R{&@yuz~Z+mSeQH$C=T>8Sr4uH|5msCVN?WrG)c%u>3)`umH@k(QY=tU zj&GJ65{~shbksy`*zAL|GqpdT*fmEU-}(L!)#xNSfC3(8&k``=H&N+^+uF*1$_<>R zDq!D+T;PSZF=j4a)@Go!8~DHZ5A*RSfv$o6H_ZQMlYlZw4{=3V4ClkYB2mEdt~~@O z`hSby|KwCGA%H1|Mx=wc|4!2tOV~p^fz;n4_s=(dNI|kOAW=2N>^p0EAMf1XOj!>S z@Jud4%w?GWY|1S|(nngH7t4GGj&Xkv@`vFJ1c_o4hXd#S8}9k1KVbu-?fU^-x!mt> zt>tek#1Zw8_QMVIDgJ#PFr_T!FRJl>(HYu4Tqd|vi2pF0U-QuJnakS<&3;EB&C3-3 zxt5*~h|s&UV~J`mtdhZrJyg!yBuiUb*CIj~{&p)M)~x5s9Y@k7423jyYbo6Jr#hRgJ8O`2KdB)sk7> z!73Oc^_;$it&Tx)vKhtlT z_L-r*k{#d6WOC;0ddj@9_R4wGhj->z-3{4cd~Ijo$#tvx_UNVxWtEoTub?kFPQQ+| z`ek0&11YU$kophp9DV3CqwMAwQANDqu;kN{bYr#|a!&#madB1NvHNz}dXPgzo^PDj?X!vTT{ar}XW!-WS7YmE- zSAN?aj#cLm$NFSpYE9z?k@5YzTlv(?SoF!CmeOMN`*hz8<~D(|e80Zd8)p4j>%jW) zdki7GfxzZResl(hfmQ@Gndh&356fGNFkh*)94J>#$#-2+BRN*aGV=8fVG;xC$fl{m z7!IH4@(oXc5PctZ+nxox?cUYQeBR@B-D|f##vJ~e+SX%S? z{9 zdGuLUZ1qm;Bqy9*Dsq#cMU>4&SJ+;8)0}(ZPGC8?{>r3I!C&%XP`Yc1CwsZ1S1yP$K`=R6sY19ql^AUEAu_+?3hR-ZR&=aBrSh zLnbk~se$%)b$`LR^Vx&kjiZ*=GcfPQl}j&UFYg@z0Xtoc zf?xA*e|I4;+RebcTt?*N=6K`c?9=u1>6GMZ+r#_bT&i-)=g1IuwxBZDUWA9;GBZ_g z^wMy*Z}Iz)8VQGZ7*5*EXvpAXA9BH9*Y>_+9jUmy;os+-)W}%-6aZnysoKQTB=f0C zz)})!w9lU}aQ+CJ)_w@@&Br-2yA=fxI?cRw#PFnrPEyVq`3MsOj*c-b_p6o|lRLd1Jf0Rcq?Tu1`}Oy?mt!m<2P z0tRTxt*`Xq$XF&0BAAFGh~EW3kirEd2*ZV3Q&P!@zJCuE75eeKuBEzOcJ6G3G_Ueh zeGpKkvbmSJ$@Or55) zBRbP6mq8HYA+}V_0jAVN_w#1blwh}Y59V~ORXM4fM9;`t5;|0&xA+trF}x*u-{18j*6EwZnm*S}jdqcbxF$wF zTo1-C6NnVI|6%ZPRLzXkrsNCnCJeqw7?F-bRyM0dWjazXB$SJ^&0DgturSJ7c7w}szQTog zJJ7R$^l9RCbVt1#;|2qmmfS9>Qg(Qh8L&7TH$2iBi2Bi?N%qQL%{+B$H<u3$ah zwKdFMB9q)Hr>ZrV62YlMxhqSy%5$|p(7XK%rNPj_dUB`djZR@KCl%|&j- zVxI6+l=&8K{+ON@`4FYGSw8E=vxm;*HGorXi&Vn8>P`8&zGqP~kXkLB;m*i>++KAs z5RRZu)ty>5Ops!O8HUY(!7|vy<;2RHyzZo=BpNy1Rb^<~orJN*{&3pwgquE8SkCa< zb##|VYiX6Nxx$OhHzuumsL8d|RhAw3pzxI7`2L0^)@cBe3km~$McVRxFW+trj%Ssl zZARC)bI?jg+k`if0BuE>KzvvBrYF2)Kgx#dhZ{D$6j!4I!@CSW?anOPXA3=Hd9yL7 zE7w0T>--Du9xhp#B#}3u^_iADB8N9Q9j9e+e(NrN46EJ-=L@{*PgzbysUDM%AziyO z37M&#`(ITr{N8iCbn$?i6nhx@BJ;`V_!6x2^#nGA%BjoKwTYsfdLK1WjT-O#m-8?` zxQJn86m^n61z||I8sMsdmLnmK9-Ii5*u#hnO+n`i-haUC%R zKJBRR2{de?&uYhxylXqUgKfb+(oH0{cj`>^74}!%jv8*avzpL-1VNVhvs~&*#)Z+aRH`@|-IwrZHOgL#ABoWI%!{HDz${bor`ug~6g)&2uYajCy(O(8_6jkiR z>%3=W@QQQ27L7i;EDXOltaf_@ZGKpEO{F@3mcAQO{GxBshP%P8G5IURxD^`WuRHpN zh>d6uZrnrr3!RY3F`G*)Dy4l}UWf8U8#IVd((8Zjekw)9f_oCHNXwfL&6Id|0a)0o zvjAlowW^Nh0pgL;eijw5<0_@Au$@21w*H`v3K!Q!t_-!?HTEHg(Q&&PHfrJ}mGeyU zMoRpi4g7T?*h*YjrQU%yiH*K>E4Jxckvl7ac1%=Zg4gNYum93YgjjK;fC7K4x_F;> zXc05^*pD{}SLHI(sD;;&O7C~6c$`^IU^}aRuWA_(hJUL$Gk1GkR2~1uJWe;qwLqi& zoh|8&ZDzX{q_XMay<^r4)Zo#oT!Z%6odMUz)1an2fnE1!?z0d4)v5X?M*UNp5fKn< zD{HB16eogE`L^Nsa_}3gqaoqOjDNv5CA>-J zSmuo0$fj-!^{Apn2tsjT8QU4Em zug{{yuO{zx!U0m131h0m#iCwx=aJ_ZMd=I^m5-M&z{UJ34%jf#w5WL=n3ha@UZWMYSun~FB%fp zCEbBNsFBes;^WY@z(SYR@9v6cuipv6`EmQo$YT_iXcf=I%zxCO<&YhuS3wc6{^7}I zFB0%!1#nZZtzh$(;|{D;*DG`yfPiT(il4vnhI1=}6FE}xa(J@w@vcM1$$7vay~7E^ zR}!Uvk(?BZsd{DdoX6vAHE4dpbi>b$b)l3Uk@LIAw|g+5AEnTz*p6~J3xM_%2h7#PDZ&e(ZD`tfEr<2w z(rP!8B0u!5jYOiNgyF$@&Tq4iQ@jz%pf*g_^ZhL>yx1o!JbqH&h+1%<)FcKtW?)9j z@JNFec3uaxh|w75;md-Qxx4!nWb1wDiu0q?=;E_#xG}nMQ5*9gm(Wl(uTq4YMG90UX zSn+ylojeDxH9Z5Cp-}#~_{46pyRZup7Cp)}S+nhoIF23T5s(Sb3rLwm#6#Z_%IY0w z4%Hiu{dLi?W0X2Wi~Y}gRvS)P6-zuu2#X#Q&4Wj$=m`|)6bcoqsR--7ai;Iy_yvX} zj3i<{TGW&AVNSo*rIl;oOs;Fq#=u*sF4>=|QJ@(3$xhTnpUd`>9vT8QYf%Y7$CbCqnXn7gBwi=p!ErtqIpq60E29vn z)87;Q#x!M=&O*iYr8p zEI=2F_n#}gWT9#i;B5WV+=?Yzbq7B^PfL4DRuuXEj80!TB@O0XTzbvh*<^=e4NKa6 z`O@*S=G;+3EaHU0> z%8C=0`9e0^z83W6_^v_zyKG{%uM;-q04?91(GFwpuSRwAR?OtXYGU=48_HR?Groe$ z8MFr&MygBAdOx?cVyZ7{w*3uI3gV)N+;(QZ3%l=89n~kkMWuBR$aa~d|9rg4O=ewD z0o4hy{DP}>4K>u&yl`n%A6Gux`s0=UsnHLO^<)KtVt+aT@cuccSXIEq47*9}*U+UIs$CYCe42 zWdz}OPkz9s46*iUK8A4uBV(fLtaL|u%_!l>y8u#~FPHP;vB`$c>Vg)MHz8aQbQ=`f zMp8%C6RoN5D%ajb>X%UyE*nna?3=nb<@HrznI$ZLq}Iop84XN+#Ca^&K$o8?J0~Hdt=5^QLNMdYGO3A6MWptYI%qd<6QT}d@I=&lp&}=*GcK}_nIg-nDR;6 zIO2z1C!C9~a^79Af%c<>M_J;F)o(5yO>=rz3a~fz<5ud>zi3i24lXU>nr&DMJqq9 zKxy;YA?F3GCkVp#Gemwt0TMd8DXp)D;BL=``$dr0LA74%6;#uGp^>JaPirowxxIDb%ZP$U$XFSxKf5rA}Wxh z>VXSk0zdv40=>O>8h({bnoG%EgMt0Oo?|09v-i2PPO1h_kZXuQFW3N%MTUY(sKhB4 zP@=KL!k5=5j$yT~BdkJ?85(Q+DD_{PXXb+4ri7&q%xZXe=2>{tobb~r3~NY_OAj_G z$GsTe3w$(x?U@5ODgf7t^Sb;>VsHI$Z9^8R%9;mWf`7akREaq1s z5Z)+^C1&2KTdK${GZ56FBTsCu*%QvCXP=lSa~2`Mxt~}6_!W4Wd66pkLMH(&2TuVa zlK)++bxRDXM)&Krn8lRqe>djhB2q3LjX3s%5q~uNpHI)UkiX#abYOB!!hg02TtQ$4 zqfLihq=X3E!BqOf5|I^-iKQ*Cr zeca2XTttb8QU%0Nr1xF|Qbn3{=^a89L6H&=MLL2YT?oAsq!UU|x`f_4(g`6T0RjXP z9`5_hJU_pGfIIu+&g|^Yp3m9u+1Ya*iNN%N&Z&NC9O`b!AG=+d)NICz|BkiRZ)!@9 z-;Xc0U5`gV_fB?K{wJ8g9JQx+=+`lJ7I>gq?|;T?!3z6%AtHsj zHZrWg;S-ljw>Ar3QEct0LnNxWKIH-t_qBO@bc`M`0I9(b+WoX9BGW6D9?md!P_|wO zssHG^eR!Cpf^B>#`a8}%%v;)7ziNamG4jv0*#Xg<`~CMRpmUtCiu2f}R_`>PYme z%u1ZQ0ZNvPpz!|UQ%}qX3ifep6=XQ+d7*YdzpelN+w;Liz?*(_b#70&l<BSb>dxU_V4git2JZj;@2Jjk$MxYeuYLS_MDKxRM9Axnp(`$rC+3S!Zh3)p zit%yvHXoG#fhv$Kq03zqalNCP;Ca<8?S%*#TBBVZ>uSCUzIk7sx^F>S`jb0iWZo^y zVnvfTC;l!UPBts&vi83@viQkDDc}(|s{e)hRa4&X@2NoH7m0BazDO=p3?ED8E`} zSgnP^S$r?5?uc?O3zW`xjdnfn z_B(bDY#oc3BMNqmdhW=C=s>Je5{%tP@3W{2b<=0z+(R;<_)w)fay)QhVj)me_i{de?gj)=g2!%i3}qU7+!ZF&c(2V-cb5O(qt zi-!hn^N*t-hV`sh4b29Le6_exjzC-v&vcP>YSB&Aty;?b?M03NChp>sAQS#E7?qFH zRS1pE%jeyL47U9x$QMqt^p7ScLzMUA^0%W>9;wmFn|AjU5114Uf|OxiuOp(sLBrrG z`tITTUE5r)f%gkx_f+uhKzl8|k+Y#k&)hd_H9zA&x`}Sbeu1xdUq4IhjA!W@(nld; zKBJOk1^Q)$j+wT*VT@fp(3JR_cMC%>swvCfF|UzZQQ)lno>t&iRC;g#p$2ZCYYL<< zYS)eFKLo@oBXtKFhogaItv#(H!4Hx5qK+~^QC1fdI+DgGgRe42tUOx=E>--3oIeb= zKQ!iNJOqdc;PUkwsb61wseh6EvW8dY-vq=w!a)g-!XCIlS*Iew7sRwFsF%SAQa1!=bRyq1VD!k$jZ2E`8`#E_r8T zWxTI9wER4fCcFD-jpHoH=|zvtC;DU|I(!n`XLCCNjL2(pI*U#l>?}!mOzxcXu~GQ+ z7wd=J{E;_pPQneSX^maj&kYIP>N7hiTs;n=HpF9~jw;}B4jbGq*XcqqnVtq0+mtd7g5YcR?IG9;5g%&)Tr-$~>)_w#nUZyjfi!QuF~m#(FND;YR}38il=h za=G#r6R@L7iz!)T@F4;>%ct*5>Vd-lc*;qrs(1Q0x?e=#*2ZImyEz)V!*kB14XQc! zON{_|4T8XDUa=Di<)RW6Y>=EbfDBaqQNz5Ng!eF8Xg6bo*45myJ(uY1P`bI+8hg#_&()csCrU!=cE_K%AivE3 zzxH~v8jio}LHR4K_Fm9rzZCN-Bgnld*sot7CV1(&HLg5F`If8Wy=J)#B9Q>IlOz5QByASLs$M8s+RPMm~pfFA>BR zQp$Z&$+jvdU8GF*(Uv;U0!HE`JHr5RBhYkN?}Trd7PAMRJB5q4Eh~5_9F_&B)>1ImLI+xIIE4&p%HlyU5Jg6r~}@@XGS&vm3XK zWNS}I7O`uZ=MLeu13-{#BjiIDi+K>_27H4DQ$e(oT|H4@kT0*W6FYbBKLz9=4VP%l z*l+w5x$g7JP4@1HiE?7vj7%o3tMr{tdi&13_vX{;Rm(#@xC-OhmxYq^Ov+EeoQGC| zv^LeC>%XP*imh}uvD}j3= z*NI;kyRsHxSENe~QmB^AfhU&ERBc$SZ~6t!_pPXQ)ufR?fqeFFB}a`x=%R^Db{FRZ z%PV-JMy3AW0bHjE9+s>h)>ky_a^_1m79&xf#QddVr4F?og}2W1qnH!2s8PukB*5{g znw>>J7(3>`VD7?ymnb{iCuE9t=oiaQOkxL_8Sxudu*ha3zYDa-8>?`}%@wo0!hdGm zJ|=kbYF5dSqc3zi#m{3EJ8=4tX28^zx@Rc!OPcNRP~qVI=*3F@2d2bC)BDQYbh*CC zx;w;iT}L_&J3?xK(yV6N7?^J##(Ci>!{{#Rd)yd|PXH$rtW)b|n}?absJ1Rv|7TnHjO(_!lWk?v(Lda_TN=*P*er@~fbsUdp?lLVtdA4ItON+SHMNorH#d#8=>#B# zuA@GBn%}XcXE(enGWE&SsT?;ZTpr3gdiRE=hC~h&K-HQvzXv2Ll~Hmy3=^Kww7ALc z+i{goPF7luGD-pTO61?kZ22{(+|S?RuvI1re%C}6?@T8XiY`gF8l{6|_Ct*A2-h{x zQVt1<7;2R*dwK4EB`j^2wuf~fUADYIR&i5+7754i*t^129as5;+B!6cKHSR2&+Oze zZ@Kt;EwY{nyR}^W%p7mU6&K~(lHSndJA1I>1kD%*9`B#NY}Qn)mK+UWe@q!0e`$vbbw2JD%!XWN_`h|JzO2zxx#$^Q*}`eMkCVUGAawPC315@Tt@P zWP0Vb9#8)>=Fk3+{y7_e?Bc&z_``%h%>3go{(n5o%^&BIm7O=ydd~PiPki_B0Vxsm XpquOGSqMVo#&vtDrmG5jV*CC-oIu%} literal 0 HcmV?d00001 diff --git a/README.md b/README.md index f7488e5..199fb5e 100644 --- a/README.md +++ b/README.md @@ -31,12 +31,12 @@ See our example LaTex template in [`Doc/example.tex`](https://github.com/shuhanm You can see that, the variables are written between two `%` s. https://github.com/shuhanmirza/SpringBooTex/blob/49782f4cdd94a3e620f92739f7b37f381c3d77c0/Doc/example.tex#L12-L21 -And the pdf has to embed an image named `universe.jpg` +And the pdf has to embed an image file named `universe.jpg` https://github.com/shuhanmirza/SpringBooTex/blob/49782f4cdd94a3e620f92739f7b37f381c3d77c0/Doc/example.tex#L37-L38 -Let's prepare the JSON payload, +Let's prepare the JSON payload. -Now, encode the latex template to base64 by running: +At first, encode the latex template to base64 by running: ```bash cat example.tex | base64 ``` @@ -79,6 +79,67 @@ The JSON payload should look like this, And the generated PDF is ![example-latex.pdf](Doc/example-latex.png) +At first, SpringBooTex downloads all the files mentioned in the `fileUrlMap`. Then, it puts the string and list variables mentioned in `stringMap` and `listMap`. Finally, it compiles the PDF using `pdfLatex`. + + +### Example: Generating a PDF from HTML template + +See our example HTML template in [`Doc/example.html`](https://github.com/shuhanmirza/SpringBooTex/blob/main/Doc/example.html) +You can see that, the thymeleaf templating has been used in the template. + +https://github.com/shuhanmirza/SpringBooTex/blob/543bf20ccad01250303531e9491080804bc48aa6/Doc/example.html#L230-L241 + +Like in the earlier example, you have to encode the template to a base64 string and prepare JSON payload. +```JSON +{ + "templateType": "HTML", + "templateSourceType": "BASE64", + "templateSource": "PCEtLSB0aGFua3MgaHR0cHM6Ly9odG1scGRmYXBpLmNvbS9ibG9nL2ZyZWVfaHRtbDVfaW52b2ljZV90ZW1wbGF0ZXMtLT4KPCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KCjxoZWFkPgogICAgPG1ldGEgY2hhcnNldD0idXRmLTgiIC8+CiAgICA8dGl0bGU+RXhhbXBsZSBIVE1MPC90aXRsZT4KICAgIDxzdHlsZT4KICAgICAgICBAZm9udC1mYWNlIHsKICAgICAgICAgICAgZm9udC1mYW1pbHk6IEp1bmdlOwogICAgICAgICAgICBzcmM6IHVybChodHRwczovL3MzLWV1LXdlc3QtMS5hbWF6b25hd3MuY29tL2h0bWxwZGZhcGkucHJvZHVjdGlvbi9mcmVlX2h0bWw1X2ludm9pY2VfdGVtcGxhdGVzL2V4YW1wbGUzL0p1bmdlLVJlZ3VsYXIudHRmKTsKICAgICAgICB9CgogICAgICAgIC5jbGVhcmZpeDphZnRlciB7CiAgICAgICAgICAgIGNvbnRlbnQ6ICIiOwogICAgICAgICAgICBkaXNwbGF5OiB0YWJsZTsKICAgICAgICAgICAgY2xlYXI6IGJvdGg7CiAgICAgICAgfQoKICAgICAgICBhIHsKICAgICAgICAgICAgY29sb3I6ICMwMDEwMjg7CiAgICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICAgICAgICB9CgogICAgICAgIEBwYWdlIHsKICAgICAgICAgICAgc2l6ZTogQTQgcG9ydHJhaXQ7CiAgICAgICAgfQoKICAgICAgICBib2R5IHsKICAgICAgICAgICAgZm9udC1mYW1pbHk6IEp1bmdlOwogICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgICAgIG1hcmdpbjogMCBhdXRvOwogICAgICAgICAgICBjb2xvcjogIzAwMTAyODsKICAgICAgICAgICAgYmFja2dyb3VuZDogI0ZGRkZGRjsKICAgICAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIH0KCiAgICAgICAgLmFycm93IHsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNHB4OwogICAgICAgIH0KCiAgICAgICAgLmFycm93LmJhY2sgewogICAgICAgICAgICB0ZXh0LWFsaWduOiByaWdodDsKICAgICAgICB9CgogICAgICAgIC5pbm5lci1hcnJvdyB7CiAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDEwcHg7CiAgICAgICAgICAgIGhlaWdodDogMzBweDsKICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjMzLCAxMjUsIDQ5KTsKICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwoKICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDMwcHg7CiAgICAgICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CiAgICAgICAgfQoKICAgICAgICAuYXJyb3cuYmFjayAuaW5uZXItYXJyb3cgewogICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjMzLCAyMTcsIDQ5KTsKICAgICAgICAgICAgcGFkZGluZy1yaWdodDogMDsKICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAxMHB4OwogICAgICAgIH0KCiAgICAgICAgLmFycm93OmJlZm9yZSwKICAgICAgICAuYXJyb3c6YWZ0ZXIgewogICAgICAgICAgICBjb250ZW50OiAnJzsKICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICAgICAgICB3aWR0aDogMDsKICAgICAgICAgICAgaGVpZ2h0OiAwOwogICAgICAgICAgICBib3JkZXI6IDE1cHggc29saWQgdHJhbnNwYXJlbnQ7CiAgICAgICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CiAgICAgICAgfQoKICAgICAgICAuYXJyb3c6YmVmb3JlIHsKICAgICAgICAgICAgYm9yZGVyLXRvcC1jb2xvcjogcmdiKDIzMywgMTI1LCA0OSk7CiAgICAgICAgICAgIGJvcmRlci1ib3R0b20tY29sb3I6IHJnYigyMzMsIDEyNSwgNDkpOwogICAgICAgICAgICBib3JkZXItcmlnaHQtY29sb3I6IHJnYigyMzMsIDEyNSwgNDkpOwogICAgICAgIH0KCiAgICAgICAgLmFycm93LmJhY2s6YmVmb3JlIHsKICAgICAgICAgICAgYm9yZGVyLXRvcC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgICAgICAgICAgIGJvcmRlci1ib3R0b20tY29sb3I6IHRyYW5zcGFyZW50OwogICAgICAgICAgICBib3JkZXItcmlnaHQtY29sb3I6IHJnYigyMzMsIDIxNywgNDkpOwogICAgICAgICAgICBib3JkZXItbGVmdC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgICAgICAgfQoKICAgICAgICAuYXJyb3c6YWZ0ZXIgewogICAgICAgICAgICBib3JkZXItbGVmdC1jb2xvcjogcmdiKDIzMywgMTI1LCA0OSk7CiAgICAgICAgfQoKICAgICAgICAuYXJyb3cuYmFjazphZnRlciB7CiAgICAgICAgICAgIGJvcmRlci1sZWZ0LWNvbG9yOiByZ2IoMjMzLCAyMTcsIDQ5KTsKICAgICAgICAgICAgYm9yZGVyLXRvcC1jb2xvcjogcmdiKDIzMywgMjE3LCA0OSk7CiAgICAgICAgICAgIGJvcmRlci1ib3R0b20tY29sb3I6IHJnYigyMzMsIDIxNywgNDkpOwogICAgICAgICAgICBib3JkZXItcmlnaHQtY29sb3I6IHRyYW5zcGFyZW50OwogICAgICAgIH0KCiAgICAgICAgLmFycm93IHNwYW4gewogICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgICAgICAgIHdpZHRoOiA4MHB4OwogICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDIwcHg7CiAgICAgICAgICAgIHRleHQtYWxpZ246IHJpZ2h0OwogICAgICAgIH0KCiAgICAgICAgLmFycm93LmJhY2sgc3BhbiB7CiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMDsKICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDIwcHg7CiAgICAgICAgICAgIHRleHQtYWxpZ246IGxlZnQ7CiAgICAgICAgfQoKICAgICAgICBoMSB7CiAgICAgICAgICAgIGNvbG9yOiAjNUQ2OTc1OwogICAgICAgICAgICBmb250LWZhbWlseTogSnVuZ2U7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMi40ZW07CiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjRlbTsKICAgICAgICAgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICAgICAgICBib3JkZXItdG9wOiAxcHggc29saWQgIzVENjk3NTsKICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICM1RDY5NzU7CiAgICAgICAgICAgIG1hcmdpbjogMCAwIDJlbSAwOwogICAgICAgIH0KCiAgICAgICAgaDEgc21hbGwgewogICAgICAgICAgICBmb250LXNpemU6IDAuNDVlbTsKICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNWVtOwogICAgICAgICAgICBmbG9hdDogbGVmdDsKICAgICAgICB9CgogICAgICAgIGgxIHNtYWxsOmxhc3QtY2hpbGQgewogICAgICAgICAgICBmbG9hdDogcmlnaHQ7CiAgICAgICAgfQoKICAgICAgICAjcHJvamVjdCB7CiAgICAgICAgICAgIGZsb2F0OiBsZWZ0OwogICAgICAgIH0KCiAgICAgICAgI2NvbXBhbnkgewogICAgICAgICAgICBmbG9hdDogcmlnaHQ7CiAgICAgICAgfQoKICAgICAgICB0YWJsZSB7CiAgICAgICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgICAgICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwogICAgICAgICAgICBib3JkZXItc3BhY2luZzogMDsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMzBweDsKICAgICAgICB9CgogICAgICAgIHRhYmxlIHRoLAogICAgICAgIHRhYmxlIHRkIHsKICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICAgIH0KCiAgICAgICAgdGFibGUgdGggewogICAgICAgICAgICBwYWRkaW5nOiA1cHggMjBweDsKICAgICAgICAgICAgY29sb3I6ICM1RDY5NzU7CiAgICAgICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjQzFDRUQ5OwogICAgICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgICAgICAgICBmb250LXdlaWdodDogbm9ybWFsOwogICAgICAgIH0KCiAgICAgICAgdGFibGUgLnNlcnZpY2UsCiAgICAgICAgdGFibGUgLmRlc2MgewogICAgICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0OwogICAgICAgIH0KCiAgICAgICAgdGFibGUgdGQgewogICAgICAgICAgICBwYWRkaW5nOiAyMHB4OwogICAgICAgICAgICB0ZXh0LWFsaWduOiByaWdodDsKICAgICAgICB9CgogICAgICAgIHRhYmxlIHRkLnNlcnZpY2UsCiAgICAgICAgdGFibGUgdGQuZGVzYyB7CiAgICAgICAgICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7CiAgICAgICAgfQoKICAgICAgICB0YWJsZSB0ZC51bml0LAogICAgICAgIHRhYmxlIHRkLnF0eSwKICAgICAgICB0YWJsZSB0ZC50b3RhbCB7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMS4yZW07CiAgICAgICAgfQoKICAgICAgICB0YWJsZSB0ZC5zdWIgewogICAgICAgICAgICBib3JkZXItdG9wOiAxcHggc29saWQgI0MxQ0VEOTsKICAgICAgICB9CgogICAgICAgIHRhYmxlIHRkLmdyYW5kIHsKICAgICAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICM1RDY5NzU7CiAgICAgICAgfQoKICAgICAgICB0YWJsZSB0cjpudGgtY2hpbGQoMm4tMSkgdGQgewogICAgICAgICAgICBiYWNrZ3JvdW5kOiAjRUVFRUVFOwogICAgICAgIH0KCiAgICAgICAgdGFibGUgdHI6bGFzdC1jaGlsZCB0ZCB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6ICNEREREREQ7CiAgICAgICAgfQoKICAgICAgICAjZGV0YWlscyB7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDMwcHg7CiAgICAgICAgfQoKICAgICAgICBmb290ZXIgewogICAgICAgICAgICBjb2xvcjogIzVENjk3NTsKICAgICAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgICAgIGhlaWdodDogMzBweDsKICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgICAgICBib3R0b206IDA7CiAgICAgICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjQzFDRUQ5OwogICAgICAgICAgICBwYWRkaW5nOiA4cHggMDsKICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICAgIH0KICAgIDwvc3R5bGU+CjwvaGVhZD4KCjxib2R5PgogICAgPG1haW4+CiAgICAgICAgPGgxIGNsYXNzPSJjbGVhcmZpeCI+PHNtYWxsPjxzcGFuPkRBVEU8L3NwYW4+PGJyIC8+PHNwYW4gdGg6dGV4dD0iJHtkYXRlfSI+PC9zcGFuPjwvc21hbGw+IDxzcGFuCiAgICAgICAgICAgICAgICB0aDp0ZXh0PSIke3RpdGxlfSI+PC9zcGFuPiA8c21hbGw+PHNwYW4+RFVFCiAgICAgICAgICAgICAgICAgICAgREFURTwvc3Bhbj48YnIgLz48c3BhbiB0aDp0ZXh0PSIke2R1ZURhdGV9Ij48L3NwYW4+PC9zbWFsbD48L2gxPgogICAgICAgIDx0YWJsZT4KICAgICAgICAgICAgPHRoZWFkPgogICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0ic2VydmljZSI+U0VSVklDRTwvdGg+CiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJkZXNjIj5ERVNDUklQVElPTjwvdGg+CiAgICAgICAgICAgICAgICAgICAgPHRoPlBSSUNFPC90aD4KICAgICAgICAgICAgICAgICAgICA8dGg+UVRZPC90aD4KICAgICAgICAgICAgICAgICAgICA8dGg+VE9UQUw8L3RoPgogICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPC90aGVhZD4KICAgICAgICAgICAgPHRib2R5PgogICAgICAgICAgICAgICAgPHRyIHRoOmVhY2g9InNlcnZpY2UsIHNlcnZpY2VTdGF0IDogJHtzZXJ2aWNlTGlzdH0iPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0ic2VydmljZSIgdGg6dGV4dD0iJHtzZXJ2aWNlTGlzdC5nZXQoc2VydmljZVN0YXQuaW5kZXgpfSI+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImRlc2MiIHRoOnRleHQ9IiR7ZGVzY3JpcHRpb25MaXN0LmdldChzZXJ2aWNlU3RhdC5pbmRleCl9Ij48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0idW5pdCIgdGg6dGV4dD0iJHt1bml0TGlzdC5nZXQoc2VydmljZVN0YXQuaW5kZXgpfSI+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9InF0eSIgdGg6dGV4dD0iJHtxdWFudGl0eUxpc3QuZ2V0KHNlcnZpY2VTdGF0LmluZGV4KX0iPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJ0b3RhbCIgdGg6dGV4dD0iJHt0b3RhbEFtb3VudExpc3QuZ2V0KHNlcnZpY2VTdGF0LmluZGV4KX0iPiQxPC90ZD4KICAgICAgICAgICAgICAgIDwvdHI+CgogICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSI0IiBjbGFzcz0ic3ViIj5TVUJUT1RBTDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJzdWIgdG90YWwiIHRoOnRleHQ9IiR7c3VidG90YWx9Ij48L3RkPgogICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iNCIgdGg6dGV4dD0iJHt0YXhUaXRsZX0iPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJ0b3RhbCIgdGg6dGV4dD0iJHt0YXhBbW91bnR9Ij48L3RkPgogICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iNCIgY2xhc3M9ImdyYW5kIHRvdGFsIj5HUkFORCBUT1RBTDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJncmFuZCB0b3RhbCIgdGg6dGV4dD0iJHtncmFuZFRvdGFsfSI+PC90ZD4KICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDwvdGJvZHk+CiAgICAgICAgPC90YWJsZT4KICAgICAgICA8ZGl2IGlkPSJkZXRhaWxzIiBjbGFzcz0iY2xlYXJmaXgiPgogICAgICAgICAgICA8ZGl2IGlkPSJwcm9qZWN0Ij4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFycm93Ij4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpbm5lci1hcnJvdyI+PHNwYW4+UFJPSkVDVDwvc3Bhbj4gV2Vic2l0ZSBkZXZlbG9wbWVudDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhcnJvdyI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaW5uZXItYXJyb3ciPjxzcGFuPkNMSUVOVDwvc3Bhbj4gSm9obiBEb2U8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYXJyb3ciPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImlubmVyLWFycm93Ij48c3Bhbj5BRERSRVNTPC9zcGFuPiA3OTYgU2lsdmVyIEhhcmJvdXIsIFRYIDc5MjczLCBVUzwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhcnJvdyI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaW5uZXItYXJyb3ciPjxzcGFuPkVNQUlMPC9zcGFuPiA8YSBocmVmPSJtYWlsdG86am9obkBleGFtcGxlLmNvbSI+am9obkBleGFtcGxlLmNvbTwvYT4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBpZD0iY29tcGFueSI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhcnJvdyBiYWNrIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpbm5lci1hcnJvdyI+Q29tcGFueSBOYW1lIDxzcGFuPkNPTVBBTlk8L3NwYW4+PC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFycm93IGJhY2siPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImlubmVyLWFycm93Ij40NTUgRm9nZ3kgSGVpZ2h0cywgQVogODUwMDQsIFVTIDxzcGFuPkFERFJFU1M8L3NwYW4+PC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFycm93IGJhY2siPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImlubmVyLWFycm93Ij4oNjAyKSA1MTktMDQ1MCA8c3Bhbj5QSE9ORTwvc3Bhbj48L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYXJyb3cgYmFjayI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaW5uZXItYXJyb3ciPjxhIGhyZWY9Im1haWx0bzpjb21wYW55QGV4YW1wbGUuY29tIj5jb21wYW55QGV4YW1wbGUuY29tPC9hPgogICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5FTUFJTDwvc3Bhbj48L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGlkPSJub3RpY2VzIj4KICAgICAgICAgICAgPGRpdj5OT1RJQ0U6PC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im5vdGljZSI+QSBmaW5hbmNlIGNoYXJnZSBvZiAxLjUlIHdpbGwgYmUgbWFkZSBvbiB1bnBhaWQgYmFsYW5jZXMgYWZ0ZXIgMzAgZGF5cy48L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgIDwvbWFpbj4KICAgIDxmb290ZXI+CiAgICAgICAgSW52b2ljZSB3YXMgY3JlYXRlZCBvbiBhIGNvbXB1dGVyIGFuZCBpcyB2YWxpZCB3aXRob3V0IHRoZSBzaWduYXR1cmUgYW5kIHNlYWwuCiAgICA8L2Zvb3Rlcj4KPC9ib2R5PgoKPC9odG1sPg==", + "stringMap": { + "title": "Invoice #100", + "date": "January 1st, 2024", + "dueDate": "January 31st, 2024", + "subtotal": "$5,040", + "taxTitle": "TAX 15%", + "taxAmount": "$756", + "grandTotal": "$5,796" + }, + "listMap": { + "serviceList": [ + "Design", + "Development", + "SEO" + ], + "descriptionList": [ + "Creating a recognizable design solution based on the company's existing visual identity", + "Developing a Content Management System-based Website", + "Optimize the site for search engines (SEO)" + ], + "unitList": [ + "$40.00", + "$40.00", + "$40.00" + ], + "quantityList": [ + "26", + "80", + "20" + ], + "totalAmountList": [ + "$1,040.00", + "$3,200.00", + "$800.00" + ] + }, + "responseType": "JSON" +} +``` + +And the generated PDF is +![example-html.pdf](Doc/example-html.png) + +At first, SpringBooTex prepares the html using Thymeleaf template engine. Then it leverages `openhtmltopdf` to render PDF from html. If you do not want to provide fonts through HTML, you can provide it by adding font urls in the `fileUrlMap`. SpringBootex will download and add the fonts during PDF rendering. + ## Contributing Please!