From c1434378bc01c826d3109e1de293bd062a2c0319 Mon Sep 17 00:00:00 2001 From: Sergey Shuchkin Date: Wed, 14 Dec 2022 21:30:23 +0600 Subject: [PATCH] 1.3.10 --- CHANGELOG.md | 8 + README.md | 25 +- datatypes.png | Bin 45801 -> 14855 bytes src/SimpleXLSXGen.php | 787 +++++++++++++++++++++++++++--------------- styles.png | Bin 40909 -> 53137 bytes 5 files changed, 525 insertions(+), 295 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c35763d..6b4f9a7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,12 @@ # Changelog + +## 1.3.10 (2022-12-14) +* added borders `````` see colored [examples](https://github.com/shuchkin/simplexlsxgen#formatting) +* added formulas ```SUM(B1:B10)``` see [examples](https://github.com/shuchkin/simplexlsxgen#data-types) +* added internal links ```Go to page 2``` +* added custom number formats `````` +* added 3 currencies ```$data = [ ['$100.23', '2000.00 €', '1200.30 ₽'] ];``` + ## 1.2.16 (2022-08-12) * added `autoFilter( $range )` ```php diff --git a/README.md b/README.md index 3a05894..3deb84c 100644 --- a/README.md +++ b/README.md @@ -39,16 +39,22 @@ $data = [ ['Integer', 123], ['Float', 12.35], ['Percent', '12%'], + ['Currency $', '$500.67'], + ['Currency €', '200 €'], + ['Currency ₽', '1200.30 ₽'], + ['Currency (other)', ''], ['Datetime', '2020-05-20 02:38:00'], - ['Date','2020-05-20'], - ['Time','02:38:00'], + ['Date', '2020-05-20'], + ['Time', '02:38:00'], ['Datetime PHP', new DateTime('2021-02-06 21:07:00')], ['String', 'Long UTF-8 String in autoresized column'], + ['Formula', 'SUM(B1:B2)'], ['Hyperlink', 'https://github.com/shuchkin/simplexlsxgen'], ['Hyperlink + Anchor', 'SimpleXLSXGen'], - ['RAW string', "\0".'2020-10-04 16:02:00'] + ['Internal link', 'Go to second page'], + ['RAW string', "\0" . '2020-10-04 16:02:00'] ]; -Shuchkin\SimpleXLSXGen::fromArray( $data )->saveAs('datatypes.xlsx'); +SimpleXLSXGen::fromArray($data)->saveAs('datatypes.xlsx'); ``` ![XLSX screenshot](datatypes.png) @@ -66,6 +72,9 @@ $data = [ ['Green', ''], ['Bold Red Text', ''], ['Blue Text and Yellow Fill', ''], + ['Border color', ''], + ['Border style',''], + ['Border sides', ''], ['Left', '12345.67'], ['Center', '
12345.67
'], ['Right', 'Right Text'], @@ -77,10 +86,10 @@ $data = [ ['
MERGE CELLS MERGE CELLS MERGE CELLS MERGE CELLS MERGE CELLS
', null], ['Word wrap', "Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book"] ]; -SimpleXLSXGen::fromArray( $data ) - ->setDefaultFont( 'Courier New' ) - ->setDefaultFontSize( 14 ) - ->setColWidth(1, 35) // 1 - num column, 35 - size in chars +SimpleXLSXGen::fromArray($data) + ->setDefaultFont('Courier New') + ->setDefaultFontSize(14) + ->setColWidth(1, 35) ->mergeCells('A20:B20') ->saveAs('styles_and_tags.xlsx'); ``` diff --git a/datatypes.png b/datatypes.png index 9dc3dbaf8aee165e2ab5528a73a19b9792815e9d..9b0c822c21aa63ef6248aa33f4a4d35ab0a960aa 100644 GIT binary patch literal 14855 zcmeAS@N?(olHy`uVBq!ia0y~yU~FVyU=-(IW?*2b*}>t#z`($g?&#~tz_78O`%fY( z0|NtNage(c!@6@aFBuq^83KGlT>t<7|L)zp@87@W`ertzrEOcXpls>(=g*&iefKfh zA@Iw)kN^Mw2XViCef#$9<;$1fzkh%1*s<5IU;q35@#v%P3>DsQ-n_YY@80A0um1o4 zvvT{U@9#feym#~C$B!2-TzGiv_RX6&A3b{b>&N$9#}EGh|Kt1r|0hqLeEH&K^`7T{ z{{Lra2>$u&&$G|(-oF3L&=mUr*Y~H-p8x;<;o7xppZ@>9Id;S04<5ypQ zo;!Q?=D+{*&b|Bg;|D|E?N|T)-?@FeuBQ6?=Qkg||J$~8+vnFWLmjjk>o4nsWc+)y zZN=sHjQOXE3kn+|Jo)()o!y+D99y~T_y7NYF0>wb&1~-LBBk>G^PA{pw|cJsiUI(Ay-;m6+o z(dFmO%FO)#;%r>@jQ^hw)u)E)s>!%cJ9zQSf2X>Ydmn!O_vy)p$2U*?{a>6K7(MM0 zr?Ba|XaAfcQnP!vKi=Gt5MUFVk<(p~ef|08qD^~aR!CXvtXbnty>ZEl#bQO4No z+Ku~vK73ud{j^8=oSkp}oxXYb((M-l5$#{@o`|WbOWyLla?J%n=hA;qUZljOotvIJ zX~XeLD;qEF-+Ji$?X_#y=Gdxeu6XicSF3SK_1SgP@(#S|T6_1_u9XijKF%=b{&I55 z!$tYC<}M65_T_wAX#29AmSNp0vo54x`^7EoYkKT^->K8SDQUt6#yZJ!<`<+M+qV4T z;rpBR-aay`Q@mG!|Ce?NWt_snYktE~(S3Jjhujv*Dd z-p*xr5b?bAz4rZ;>c4VX(04tx|7nP*&h5(KNmqdo}Ub{i*YQeZAcL@BWVd zf8X}kFLGYr>iGD0?U$239+te=YVe{yleNn9PiI&|SVPzXUDhoj$5wptkXXFPR6uX@ ztSEP`np+m=3udR7EAsf)Lt-iitOhkN$2;@ z0S??U=jU2moX~rC{u7q~V_Jz5<6D*c>%Au1Rj{7f%Uu4$tk>-I#pYE#SM!`1b!Fcl zkoNw@vum)6$>8m%e)k+-u)E-c~64D;*jp0?NXe`t4Xb~~x5 zAeL}!MtS&xvXem%>!R%UuzDMhPu}bF ztd06?zw|BDmmip+nZ&rR#HsP=!g#++ar=Iq=8t8(BW+vGm{lFoxKjDno8EgLo%RN< zWYVhYKBAg%tVeLNx?k0HgW5m(lhu1==bQY!Yc|^=XlFXRdy303sdZl!H5M#i+U%YZ z(Rf%nARtWA&P~QmqgU#CW`9fJ;we+yzx*~x{1vkF+ogZ(+8+}A9 zca$G4w%4C!w(5TS%I-9uT=R(<21Qxj23bm4;`J{lemLnqzej>0@y8TH*=db|lea{- zdCvcLlcP#S z-&8Gw)JrCotRbcuth)-%UW^Z7?(@A?+09h{Cuq@u8~OicE>I6n_z+Y$&%1OB(|ZXS zXEVm^(j#+NI=*&gY7E*Y~P%6aQ~m?Z2nM@rh$pW7*+E3w!SR&v$JuK7Z5FCn}*7>JXjl zsm-d>uN^Aay59WY&-HrZYkpZ=_S`Y^Yxbc}FVdZUr}{)S@*Rp>bfC-Fs=(N|H17D; z3k$R_O^ZnN?CsjNhw19h00VCA4Hv6QUj%G^va~vT&fPi=-n)`D&3Wwi)*Yylw`bVA z@wxfz0_&iLo=#2HF9DJhG!wo{rs%bbx+gvkp4;TXu-NT>M~Updr@9Fa$E;+d8v71) zEkCfwB3&IPwZI(9yI7ri6O<;kv_rVY|EOr^FHwR)~#U3u5^B@*cbWM#p zPttlN^JXjTMRc&{1ko4A$r=*{`(wE_ZBIurOB5k|2WOR z|Np<{wxIv~r?TFv{dK%&Wn1{jM5{*zlsbR?JM8}d$MN_3|3CiFu%Wl_#Raopp0B$X ztl9Ena(}hLpVS3coL1$pY`vGTeCw3uE16`gPMB$hI{5c8Cpa=rRd(w%54`kZYp}Ed z7tf?~SFW%7rlqs#!Xl9iE!Ikbiq+p9iM5{W2wU*j;0cGrB#msnzRB;87zO&gjDE(h za{hwET_1aa*u!CyH3D8rRZR%qyX9y^wcT0=_k|mEK4=(B`|*2OAKRzDm3!7jXJp)s ze$KAJdgU0`gN^*IAxW&0{1=uiX)sVz<2n;I+pbYq(bxaR7N)oDOC(b_HymXQ`=P6F zKX2Ya_Ipv>ym3GMy%=>(eV<*Oe&(SN>!E9{c8*3z&RJ$Y4=z+H3Goa~>MWIQ4}0*| z?Batf8ed-i^Lf^tnoCFpA^g0#}x68TS$DGOzYm+ zFQPmcS%2g$d6yS6$#OMQ*7DF@VukmO>=pEwCu~%Z`?7@V%(nwuC!BuFvgCm2`}xkg z>5dY2`Sz%aD6m#cePUF2QQoas@!Y-6pVNLadNG!{J?OpKYI&(_0ZV@F&S>$gP7_`G zW0%L)ay@_Beram}d!ykI-LIUluOFDYu(~sF@ z1kDe;^A^PK;CYw+wv+wdt3&P68|T~34_nauAWqF_ZvK}27fg=1WxNlO5#B7EwAs~J zRCc1T;DXe&wPD?Yk@|e0ze*C?RQKGT5z$*@Xpq)(M9(C2=XGASTB{9dA$z)GU*u;c zFZZ9fW^M1uyP21l`OdYe?$a ztL)RX3Q?!Ucl}tOvzzFzO$m3~ljWAC%DsNfTN>}oTeA1U%}JtFpb&-{W6)>~Zn zfBu`pcGSH`tDpP(f$l}3pB)eWWVH27P(6K?|ID`rc3+1HcMaw<*dMp#ezy6-bnbkJSHFcjn~3 zOf>su6ZvWChdm{_SIP?1xQ@83K0No3wPES9(;{=^FBs4Iax(5U7q{i>63x~(MU#ph zzdu)+pc`nTzt*9eYso^lA95Qf@X2j|@~}H?nbT)x;eD1&{cmUARpknKo|v7jQWv9K ztQquW%1!m(%tyRio|`Ve-MG#9j*oxFpRH^&7!ti7|Kr$PZYVlS-e8yHBY{Fk&s*Y3 z{)Qh9#~rab$f6(frSQg)D8)D>n|$824zmwh-?zK;tZKpjaNdgFvptw_h0`rb zSu=O)i^SC|xieqqo|eg-`>wQT`n-iN_s+j*w$uBzTlG=1uCQBvyL(PI5)-Xa1U-u>lXYAinO@Lc7B%&&5vpRWG? z<6zxo<$|O;uZkC6oVb~<&X_MDQT9M`_yM&yjVl>`eiTS+wlmwuvhVPsKWhUvNH&=N z{!%b$;eut!>)9^-Y+T^B{&b>u}x>@gR$wl5f zfs&bvte>YmEa#px=lKo>lV5B)vK!tqe0}_#tz+JSH%kxrn4L9h`1+FJ&mZYU9!t76 z&tBg2nR$+=xx!~-Pst0Nvpq#T?ltr}T$N*(DJLMk>G8s)?eDA}oG)2*++))Fl?mCK z<|`^5_hrlR?y0va|7HG7`jj2>4BbG5yk*=uF5$}`^fY~D&i<+D8`rq{mBgedjX#p> zT8;7@{{|+_S{=tzm?u4LJ!^h;-{%dL(*28`e2rYT{Ni-BAghAw451Fc9&7(E{ik8^ ze^15?;VX-yI`Us~_RntE{$R?Y^ZY#W)`dUkO!v~7G|fW!L&^)e$(ur3FX|r@>g@g( zkvQAFHlpzERN3d-Of7yn^eDc+r*$VR{!7)1(!==;S`GDog7?37n!Mjj_?%_sSBo4M z-HqJ;|MQ#*@~tg;_;J_X* zbN-tYUi8CR>w(|3KCU}%4_0j`I@fp3H}YG18N>gIYrcVD#_#5eY-*e?8_d4zo8Jce zWg?-0>+hKg4 z={IkB{{ELBp7r|pcZr?a492I{uD`^vt#{kc$C*Xb)yj96&C+FzTe&Q&fS%-jo&*iQP9-9 zA8f89_qoJAMq)!)r)c_y;usIPH~9>b9*qgvUt~9@Yc{;kJh?RR%}>TZHiaAh>V2P< zx}b{rSjpt#PBEv>!?Dj3{Uo~EMQ7_>Td@8!^A4VbM%jN;6GFs_G8BNZWTfeCeu7 z`vQ_uCr{sh@~`E~pPx_uVfZI(eJ9nL-}~`zH!sc-IKR0& zVguuz=N3Pt7gS#stPftjWV+kNpNvm4yPIZIMXf!?+{t@DRb>4{wzx$y?~DvjTg#S) zzCGeExPk3OMT6x$i)*fbofh19*5kq4Rk$pyQ~&Jk=jA59jI@H?J!>Xtj3bDxb-_b)9anmsoQ0?ma$}owwa{ z7FW$;h_StOIC#D00`-hPQ6?rHONF20CCyw>u;8m(va@IYy3et=(JOvRc=wU(>lh=KD(^IjX%)G!bB5ei zg|feY`<|?OmzFRoJfByFRj>B5`6w%}p;@ zcD|Oa+<8DfE8(isxt~cs#y^TD8&oDu|FqRwdhMsPQ)8r#z9@~@80juC_w);vozV&P zM%4>!4+^^Pe9y2inrow5w`HF| z{S0Blvx)4xrJsV7mh-k%6dv`7l{)&2o#p7of2!$!bgUfTiLt!1FghTj@y}{Qn&h|p zjk0gVz)oJL-dItpGTm+CbM`Ga`r`hHzMHF5ew=s5#{;qxS909Fv&ZO7!gke--ZgK7 zR;x^RGyLy#`0JVbHQcA7n_BKHbx#qxo#CAnzEDtdru+-7o!+-wRk*gOl!?Pt~=owVZOwu^C_dspeiZ^@Xl zZC+IRiMztuPao^@tlFa}`Zt#GUdfefei!YIchBrHXq;5m1aHXChXSEQej(d z74iO-6XUeIm+ICX;5^;2T#c1`&!6sFsuiNu+@}iGYQFir?xWaTg>vb=WsC+}N;jzA zOTPCnO(pWpn(*Vd=il8g%2B<_#QB4%+37j?{SQLV7%g9__8|7|kvBX$rE_wdMEf=D z1uvECy78RVPfytT_1c1S{;%(Ig*;!>@AW^hWnNbMgU}26C-}AbZ=M;Ze&X)umk0QN z_H6ygQ?C5we+;vb~UyArwn-G<7)QH=T3;rjpkzgM4KnYi8igVw8bziQpDVW-N~ z$}20(I$r&qW!hj7`Do4d1N-a0yXl5Za+7;h;QlP&uX9HCgU}n#-?5lZJvVW;c=;Cl z7|9$9hP6U#IqrRbUL5Z9uBd(c`Aw@fvM)$oCwlPrznXVmCt}a?{qd5B$q7dks}yFZgqeosUKHRk%{}v&p>^jc#WweVw&F}iv-nKfp|#n~4LJ2-t{J0G+2P?TfQ^x*eg2UpM1 zeR4ne|7%GNGg||x&E>_3`(J8TEx(32Hk^4{(if}j`G2*X=gkXgJkPLhee(U7O1lFJ zhto3xZm#kE`RbmXGwaOVrOf3&*xqgEHqrcM6}1260{iXENqXY^zcy|x-dmq^@}#Y0 z{<4#cZn#Zv5Lv(xx8naPQ{RJ89-m!&s_GIawC-V&WXvhJ^ZxM@n==O_gLhZ{N&LLv z*R*$59o;4m&X-iZsakrbG|oQE;m}hrQIGapnN!!fuD$eRGvl29b7F*iK1i9Q?UyLK z;Ih!t$n@FO#}9N;m#>UkVbqwuJ-M@gvcZ8PGXr)XYEW9!V9Ig+Y_Z(4FBPAsIRD)t zHmPuD-tHN5cFfl_5r6b%?u?wDCXphu8~4g~IPiQC|ChtMYW5=0nmUK%{L80m8H>+8 ziF)+vgvRp;N5$V>{_*hmW5cc1Qm!FJ|@L=|ieVM6|4y{SoGEI*OOk6Q%q56GkQ^qSo z_In<&_eBPt`Mb=yIY8z4r8_sKUZ^Q1b6)OZZ8Twit{C(Dt*}BO8)5^jR9X-!lt5RLuZnsul*K^t5zh?V=celyA zx17KGPfkR+ygj=&aF#(#_qN_|vvNcH6SlpWap!j7&aKMb8LYR=W}f=aCL4 zdHSXVXMgy~HJ8gcA4u$&vdC}U?fRGQD`KMi(6jxx*2reEZGpzv{Xw2~$>V}@$o@1WBrnIVov;klbETkc*6oSe_T zsCe$;;=RGMAB$CdGTfT&r+wkj`E~av@UmR+^_X*@>P?nG3iF9eJVq*kt|wzZ&o1*pMWj-eT-zjAd#@Y8*r5&%iJo)JsCf&bprq%d6#7=(Xqkr9MPl^AmW0PD( z-}J7!>L;6eZo);a3>$}C3r;tG=>9*6rRCOA(Ttbr;my8{yA~{8+dR!e!8=*&^d?P@ zcdH~;_600nE3`Lp>H^*3y}2_Nuf4oCckZ(EjH>FkHnnnlj@v8dSw_4_RQH#-Cu``{ z8n&Qa^ui;N+0(R(W%h0=IFiLC`6UM@N4 z5hhl)!(02qwXp4zpRAL!&Rb@;x=L6jP48)t?#H7g4PVz4eEqE2xNccq_skm)-(^NI zvN}CK5!+}WuQ}m@7h`_*hp!DASTrn79e(jHeG5}Q|6JwruO)NZ-!ko9Eb#oL>4VPCvwyuj8!yF?5xx+w3{{N?QeXy?-mTAv?V1o!ny4 zis%yDSE+8n$b9ZW|bcl_SedV0h2HP-GOhwmyxHE#dbYUTOv(e|K4 z2PI|~?e^~PtgeFPncHsQZbfF%_Um=a{@8qEFMD+VF`13emuz&`4dvaku&h3yfvI@9eA4M@8Y1GYCw~Z5pIRx=$rRpf)E*=` zWkrld^UQB2oM*|nibTxba{hSR!jklJfqhZzPxQJBCf~1NeA79hWcyEnZ6Xg|`(_;e z({Qmima%I`E|2x}ROQ%18hY0j-#ESSq?^y1Ng0pqKB;MmO+9GXQk7|Z^1+LzQ)k{< zb6`eUmHn>GhIn99`YESHM#o+BRyuhzw%2!`t71@-<{Wbd)-c1c#9}Vew$<@pmR=O&jANR zR+d9G&TV2r3|U)msg{=?V-?shWbQB{Rq5lJ?pxUlqr(<*o>?bpDRfs?dzK4VwZg9r zrw^RE>GvU_vBIMiu|Mnj#~jShEQ9Bj9)BE_A-m7~&4e`VKBv++`xm`JKdwEw{+>Vn@4k&2 zJot|G>Y6%x%GTml>I^EYom$g67iC^mqmgPys-BEy^Omv zvG~nj_t{&$-<@l%T`jfgYUyRmBb(WuMow@3;&;4QsCnf+fq$<)bA8|}eEs6vXI|#J zA?lJ{*^6gey$20H_3|l}d5Y}${8m}NV`7|h*o^2`fqYqqJKx8y*uU^Wg+uDk6%!Zh zt&W{#Q5e`9<^CjZl4W>vDvOVD-<8dJulR)ZGge)xa0p!--*cklcg(SrJJ+9|SiD2( zK)}2uwLQ)qvBom3o7+P^R5U8=tvmCScWb-F|!)Z6d0KU7^iDK=gX5hCx7{7K-u zay08L%MRJ)2iEH6TJKcNx1Y}PzGUvazy_uA{AKbT>k=P-Y-q@TZePLvX8D`TN44+I zXF9lg&MluquPdi5-ybQo*Ye7eOQv5G!VX9`Z(w7PH1^$_^J9v7LYTJtfi;S`cHeZq zO7qA*E1P#SsIjNib}@tNJ0s92dOxSywli}V+itwO|E1Ggr^~uAOdsTqsLXqD;Lf{H zhwD=P%fBDzVU19!=h-uFYG*uCtDnkGk*WI|8a6OUUtjoZ;emZ>=|5lDK0CcpIN=TB z59#2G!X>MHChIUiHT-eJ;z7LN9QC^9kBNF~-JWtLpIGzW=XJuY`2i`vSZ1_%m!08K zRg()V^U>r;PFkdJc-CKE%VSHIuo#z4yBo*GvGeu1WheLin&f%2mFtcFE0bvv)2-R^ z>Yn;C+D-;l#?5V4~FycmX!Np&t0?((F-A!L1Upk|DWh+yU;%obk z9VL=FpOfU<<}>a&QrrEzj@$+#%7$cyI6Kij)7E<4en}6V@_6@-~kCC$Y=U?*RYB zvbwf*?I&cj^`stk8Nx+e2H(eEDLvQ}4xShw&^g4I0p%I`{D zeV2KNLHK6kBZIaxY|o!Op77@2rs9QR2ad6TlKo6A zcjk7lynIOJ4&R34)#W!>C2Tg>&waQ`nXSTHuJu&In$vgJFsw3kdj76kW$T1Lh7~Km zZnas*yr-aKqW6)w*l)rqhZ?FF7{r=DYXJnrLT|lXm=|jEhT(^C%xjk2n;zepvrhkm zRfqb?qo-H=>`;|!PJTY;PWt^b{PuAh1B)cYj!h_jw_YdW_{N$q3LhQ{^X^%6$oke5 zzUavpH*RjXS`?*m>A^1TDQmTQ>NJ&Se2mO{SI5e+Gy2tx)T%u8K!=&7#;=#if7slv z)|=eTc+c9sYj2z{cjTSDTq@H#T}lJQiW#HillQ-1zoVh2e>~5cNZs`TmJoBzF)B6!0s83 zpZZ-~RuF&aqfq)DuF1RaB(3L|AJjJG&Rv=N@7nHuN!fVJ!twu(e=PTGABtW~VXhXh z`1!ljGEP7!eb1_{NxRp0Yu}tY@l90MjVj-&iW~J(?8lTE)n7VH;yk)oA~Bn*KIwX_ zzTXS|T!zMSf0@Mad5xl1T9}g)Lt?&!#ZFwbRY0-)tV!ckpR@b{SCrH?D4$Y1lfJn! z(xL82F`0Lz1bN6dE<(1mX)71~S{SSOJ^{8OrF5`{Hajhp~+iqrg z|2APe+Pm(@sny5Md@{av%(&p|4$CPr;k(M+Hh)qLc`js9Xt?UTR{td~kMyz)OyP-oC zJgDPwufcw`_~-BQi)XuPD+DX>9>{s~^Xv_)>ZuY!>iY6+Z=-j8^Yd{%8GFs#{lUiC z&DK}>7DSx@4_h$aU&=7k`{QQD7w`0cUT^s@eM05ykI$3WUrKe5GT8IFLQ-zYxz(*p zCM+$mC|t;={VV>4h7;LsJC0&V3AO9{ldjd+KZ-yKQmq4CTm`t_xJoXq4YgnlXpM!>@HH-7RYr#wSTo_ z<^=my;w+uK2aZlWlHcg6t-vS7a_?#8;&V#nDp}RWO5F)U%Vu?g!`0Z-ck#zBpO4%X zh`1?z@2HmJiefKRdAZXdiyZcO>ohR>>Z_1sbRNnrY^N3x!^&X=b$)=mG z8${w)ayr(0M zPy4VgmLByuVXBoD=saqWUohNpBc=n3cOD1xsw*2M3$$ImftNU-U{O@ZES7&=| zQ<{I~(w4B9(lIx3pN73@hz)8`DnENe{QTY-=O^u5UiW_4qp1ws`uFEf+}rGIdDnMW z(ypTyXW0h&98Zfld{#F$B*8gOL@Aj-cv1jgc&h+35b=Rb(Jv$nIu6xn8=;+c@ zPsBI<-`aLSx3|45cek(DWZNgU=__YHKO*n;^QlpBxzodntaZ4drvvUUe(j<6JL4n+lP#{@E1N)SJswn1R z75|(%S$QyK_xb5A>H!6-^Bz14@4F^sbxq~Q|8wU{V}l-u-@Y3f=31UB|8$9j`Tf7S z*!5Lwc+UOXW_|QqRM%9-n|Z%i?pn0@%D>*m#NAg9nVmn}f6MvaXZh#URzbjzFEa2b8Oq%cVVsps(}nUG>_dl z@mn}5DfhceclN5Xg}W!V8$Go>bX_h~D*DLvjBxv5(7B{_MwmwSJ4?LJ>`#J9?zopb-f;8V)Wk0t&| z%Q@uqe9Ey+weyq({x_}DayW4}e5>&E^OY-?C}nrXH~rol%JyJ)7U#DIEf24~PMR=% zQS#+=^F4e1^;{NZ-M2Mq@vp|McXvFBz8#&l<5Y+Jvj3-UJh&bGqs&Fzk^SzxW9OeO zI^Au=n)};&U435k++Vr8d)&5O$gAk>Y6-o%IC-1gicdd}b`@Vc#rgJw&aHO^nLDp8 z-kkFP-L~s>f6l%XzrAPAMa>lc+ZXrh-uT8kRcpHB1;$m^JYMa%8xf*C-O4#M`n>M3 zoDiFfD>ZZ73)L)_%lDp+ef0iOZADoqb&BJ4QZILyGQfz)&qN=cC0aUkv(9AiXtcKyoL;2hhsXvx>FSHHf!&D-5I9; z0?e2E%Rg}YA$LE-vpF zzu23rBtg8ZHsexl$%WZ$lQ|8d?56BKq3iN!yivkdE@BVgi6XH-n{W~-R+tkbUaY15l{L4;Qm)|_c`fjqx zzc(EX3pR9|Ik7W{X~$OQtemMEOj&m9X7iKIH@>&`?kdSV>HN)iSu5iWwm(_AgTeS{ znfV;o)P~=;Zm_I4I=`oJ_F+b`lLfb4Z4E894``UM`wnCZ`HISub>Ums^Or5pQ@Q

{;{%*Ej3l-kF~>_rdM^+k{vj6m-2+ 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 B-?ab$ diff --git a/src/SimpleXLSXGen.php b/src/SimpleXLSXGen.php index 8db5529..72b88c3 100644 --- a/src/SimpleXLSXGen.php +++ b/src/SimpleXLSXGen.php @@ -11,16 +11,22 @@ namespace Shuchkin; * Export data to MS Excel. PHP XLSX generator * Author: sergey.shuchkin@gmail.com */ - -class SimpleXLSXGen { +class SimpleXLSXGen +{ public $curSheet; protected $defaultFont; protected $defaultFontSize; protected $sheets; protected $template; - protected $XF, $XF_KEYS; // cellXfs - protected $SI, $SI_KEYS; // shared strings + protected $NF; // numFmts + protected $NF_KEYS; + protected $XF; // cellXfs + protected $XF_KEYS; + protected $BR_STYLE; + protected $SI; // shared strings + protected $SI_KEYS; + protected $extLinkId; const N_NORMAL = 0; // General const N_INT = 1; // 0 const N_DEC = 2; // 0.00 @@ -28,6 +34,9 @@ class SimpleXLSXGen { const N_PRECENT_DEC = 10; // 0.00% const N_DATE = 14; // mm-dd-yy const N_TIME = 20; // h:mm + const N_RUB = 164; + const N_DOLLAR = 165; + const N_EURO = 166; const N_DATETIME = 22; // m/d/yy h:mm const F_NORMAL = 0; const F_HYPERLINK = 1; @@ -40,7 +49,7 @@ class SimpleXLSXGen { const FL_SOLID = 1; // solid const FL_MEDIUM_GRAY = 2; // mediumGray const FL_DARK_GRAY = 4; // darkGray - const FL_LIGHT_GRAY = 8; // lightGray + const FL_LIGHT_GRAY = 8; // lightGray const FL_GRAY_125 = 16; // gray125 const FL_COLOR = 32; const A_DEFAULT = 0; @@ -51,19 +60,64 @@ class SimpleXLSXGen { const A_MIDDLE = 16; const A_BOTTOM = 32; const A_WRAPTEXT = 64; + const B_NONE = 0; + const B_THIN = 1; + const B_MEDIUM = 2; + //const + const B_DASHED = 3; + const B_DOTTED = 4; + const B_THICK = 5; + const B_DOUBLE = 6; + const B_HAIR = 7; + const B_MEDIUM_DASHED = 8; + const B_DASH_DOT = 9; + const B_MEDIUM_DASH_DOT = 10; + const B_DASH_DOT_DOT = 11; + const B_MEDIUM_DASH_DOT_DOT = 12; + const B_SLANT_DASH_DOT = 13; - public function __construct() { + public function __construct() + { $this->curSheet = -1; $this->defaultFont = 'Calibri'; - $this->sheets = [ ['name' => 'Sheet1', 'rows' => [], 'hyperlinks' => [], 'mergecells' => [], 'colwidth' => [], 'autofilter' => '' ] ]; - $this->SI = []; // sharedStrings index + $this->sheets = [['name' => 'Sheet1', 'rows' => [], 'hyperlinks' => [], 'mergecells' => [], 'colwidth' => [], 'autofilter' => '']]; + $this->extLinkId = 0; + $this->SI = []; // sharedStrings index $this->SI_KEYS = []; // & keys - $this->XF = [ // styles - [self::N_NORMAL, self::A_DEFAULT, self::F_NORMAL, self::FL_NONE, 0, 0], - [self::N_NORMAL, self::A_DEFAULT, self::F_NORMAL, self::FL_GRAY_125, 0, 0], // hack + + // https://c-rex.net/projects/samples/ooxml/e1/Part4/OOXML_P4_DOCX_numFmts_topic_ID0E6KK6.html + $this->NF = [ + self::N_RUB => '#,##0.00\ "₽"', + self::N_DOLLAR => '[$$-1]#,##0.00', + self::N_EURO => '#,##0.00\ [$€-1]' ]; - $this->XF_KEYS['0-0-0-0-0-0'] = 0; // & keys - $this->XF_KEYS['0-0-0-16-0-0'] = 1; + $this->NF_KEYS = array_flip($this->NF); + + $this->BR_STYLE = [ + self::B_NONE => 'none', + self::B_THIN => 'thin', + self::B_MEDIUM => 'medium', + self::B_DASHED => 'dashed', + self::B_DOTTED => 'dotted', + self::B_THICK => 'thick', + self::B_DOUBLE => 'double', + self::B_HAIR => 'hair', + self::B_MEDIUM_DASHED => 'mediumDashed', + self::B_DASH_DOT => 'dashDot', + self::B_MEDIUM_DASH_DOT => 'mediumDashDot', + self::B_DASH_DOT_DOT => 'dashDotDot', + self::B_MEDIUM_DASH_DOT_DOT => 'mediumDashDotDot', + self::B_SLANT_DASH_DOT => 'slantDashDot' + ]; + + + $this->XF = [ // styles 0 - num fmt, 1 - align, 2 - font, 3 - fill, 4 - font color, 5 - bgcolor, 6 - border + [self::N_NORMAL, self::A_DEFAULT, self::F_NORMAL, self::FL_NONE, 0, 0, ''], + [self::N_NORMAL, self::A_DEFAULT, self::F_NORMAL, self::FL_GRAY_125, 0, 0, ''], // hack + ]; + $this->XF_KEYS[implode('-', $this->XF[0])] = 0; // & keys + $this->XF_KEYS[implode('-', $this->XF[1])] = 1; + $this->template = [ '_rels/.rels' => ' @@ -75,7 +129,7 @@ class SimpleXLSXGen { 'docProps/app.xml' => ' 0 -'.__CLASS__.'', +' . __CLASS__ . '', 'docProps/core.xml' => ' {DATE} @@ -97,9 +151,10 @@ class SimpleXLSXGen { {STRINGS}', 'xl/styles.xml' => ' +{NUMFMTS} {FONTS} {FILLS} - +{BORDERS} {XF} @@ -108,7 +163,7 @@ class SimpleXLSXGen { ', 'xl/workbook.xml' => ' - + {SHEETS} ', '[Content_Types].xml' => ' @@ -128,38 +183,41 @@ class SimpleXLSXGen { // 01001200 // Простой шаблонБудем делать генератор } - public static function fromArray( array $rows, $sheetName = null ) { - return (new static())->addSheet( $rows, $sheetName ); + + public static function fromArray(array $rows, $sheetName = null) + { + return (new static())->addSheet($rows, $sheetName); } - public function addSheet( array $rows, $name = null ) { + public function addSheet(array $rows, $name = null) + { $this->curSheet++; - if ( $name === null ) { // autogenerated sheet names - $name = 'Sheet'.($this->curSheet+1); + if ($name === null) { // autogenerated sheet names + $name = 'Sheet' . ($this->curSheet + 1); } else { $name = mb_substr($name, 0, 31); $names = []; - foreach( $this->sheets as $sh ) { - $names[ mb_strtoupper( $sh['name']) ] = 1; + foreach ($this->sheets as $sh) { + $names[mb_strtoupper($sh['name'])] = 1; } - for( $i = 0; $i < 100; $i++ ) { - $postfix = ' ('.$i.')'; + for ($i = 0; $i < 100; $i++) { + $postfix = ' (' . $i . ')'; $new_name = ($i === 0) ? $name : $name . $postfix; if (mb_strlen($new_name) > 31) { - $new_name = mb_substr($name,0, 31-mb_strlen($postfix)) . $postfix; + $new_name = mb_substr($name, 0, 31 - mb_strlen($postfix)) . $postfix; } - $NEW_NAME = mb_strtoupper( $new_name ); - if ( !isset( $names[ $NEW_NAME ]) ) { + $NEW_NAME = mb_strtoupper($new_name); + if (!isset($names[$NEW_NAME])) { $name = $new_name; break; } } } - $this->sheets[$this->curSheet] = ['name' => $name, 'hyperlinks' => [], 'mergecells' => [], 'colwidth' => [], 'autofilter' => '' ]; + $this->sheets[$this->curSheet] = ['name' => $name, 'hyperlinks' => [], 'mergecells' => [], 'colwidth' => [], 'autofilter' => '']; - if ( isset( $rows[0] ) && is_array($rows[0]) ) { + if (isset($rows[0]) && is_array($rows[0])) { $this->sheets[$this->curSheet]['rows'] = $rows; } else { $this->sheets[$this->curSheet]['rows'] = []; @@ -167,28 +225,30 @@ class SimpleXLSXGen { return $this; } - public function __toString() { - $fh = fopen( 'php://memory', 'wb' ); - if ( ! $fh ) { + public function __toString() + { + $fh = fopen('php://memory', 'wb'); + if (!$fh) { return ''; } - if ( ! $this->_write( $fh ) ) { - fclose( $fh ); + if (!$this->_write($fh)) { + fclose($fh); return ''; } - $size = ftell( $fh ); - fseek( $fh, 0); + $size = ftell($fh); + fseek($fh, 0); - return (string) fread( $fh, $size ); + return (string)fread($fh, $size); } - public function saveAs( $filename ) { - $fh = fopen( $filename, 'wb' ); + public function saveAs($filename) + { + $fh = fopen($filename, 'wb'); if (!$fh) { return false; } - if ( !$this->_write($fh) ) { + if (!$this->_write($fh)) { fclose($fh); return false; } @@ -197,183 +257,256 @@ class SimpleXLSXGen { return true; } - public function download() { - return $this->downloadAs( gmdate('YmdHi') . '.xlsx' ); + public function download() + { + return $this->downloadAs(gmdate('YmdHi') . '.xlsx'); } - public function downloadAs( $filename ) { - $fh = fopen('php://memory','wb'); + public function downloadAs($filename) + { + $fh = fopen('php://memory', 'wb'); if (!$fh) { return false; } - if ( !$this->_write( $fh )) { - fclose( $fh ); + if (!$this->_write($fh)) { + fclose($fh); return false; } $size = ftell($fh); header('Content-type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); - header('Content-Disposition: attachment; filename="'.$filename.'"'); - header('Last-Modified: ' . gmdate('D, d M Y H:i:s \G\M\T' , time() )); - header('Content-Length: '.$size); + header('Content-Disposition: attachment; filename="' . $filename . '"'); + header('Last-Modified: ' . gmdate('D, d M Y H:i:s \G\M\T', time())); + header('Content-Length: ' . $size); - while( ob_get_level() ) { + while (ob_get_level()) { ob_end_clean(); } - fseek($fh,0); - fpassthru( $fh ); + fseek($fh, 0); + fpassthru($fh); fclose($fh); return true; } - protected function _write( $fh ) { + protected function _write($fh) + { - $dirSignatureE= "\x50\x4b\x05\x06"; // end of central dir signature - $zipComments = 'Generated by '.__CLASS__.' PHP class, thanks sergey.shuchkin@gmail.com'; + $dirSignatureE = "\x50\x4b\x05\x06"; // end of central dir signature + $zipComments = 'Generated by ' . __CLASS__ . ' PHP class, thanks sergey.shuchkin@gmail.com'; if (!$fh) { return false; } - $cdrec = ''; // central directory content - $entries= 0; // number of zipped files - $cnt_sheets = count( $this->sheets ); + $cdrec = ''; // central directory content + $entries = 0; // number of zipped files + $cnt_sheets = count($this->sheets); - foreach ($this->template as $cfilename => $template ) { - if ( $cfilename === 'xl/_rels/workbook.xml.rels' ) { + foreach ($this->template as $cfilename => $template) { + if ($cfilename === 'xl/_rels/workbook.xml.rels') { $s = ''; - for ( $i = 0; $i < $cnt_sheets; $i++) { - $s .= '\n"; + for ($i = 0; $i < $cnt_sheets; $i++) { + $s .= '\n"; } - $s .= ''; + $s .= ''; $template = str_replace('{SHEETS}', $s, $template); $this->_writeEntry($fh, $cdrec, $cfilename, $template); $entries++; - } elseif ( $cfilename === 'xl/workbook.xml' ) { + } elseif ($cfilename === 'xl/workbook.xml') { $s = ''; - foreach ( $this->sheets as $k => $v ) { - $s .= ''; + foreach ($this->sheets as $k => $v) { + $s .= ''; } $template = str_replace('{SHEETS}', $s, $template); $this->_writeEntry($fh, $cdrec, $cfilename, $template); $entries++; - } - elseif ( $cfilename === 'docProps/core.xml' ) { + } elseif ($cfilename === 'docProps/core.xml') { $template = str_replace('{DATE}', gmdate('Y-m-d\TH:i:s\Z'), $template); $this->_writeEntry($fh, $cdrec, $cfilename, $template); $entries++; - } elseif ( $cfilename === 'xl/sharedStrings.xml' ) { + } elseif ($cfilename === 'xl/sharedStrings.xml') { if (!count($this->SI)) { $this->SI[] = 'No Data'; } $si_cnt = count($this->SI); - $si = ''.implode("\r\n", $this->SI).''; - $template = str_replace(['{CNT}', '{STRINGS}'], [ $si_cnt, $si ], $template ); + $si = '' . implode("\r\n", $this->SI) . ''; + $template = str_replace(['{CNT}', '{STRINGS}'], [$si_cnt, $si], $template); $this->_writeEntry($fh, $cdrec, $cfilename, $template); $entries++; - } elseif ( $cfilename === 'xl/worksheets/sheet1.xml' ) { - foreach ( $this->sheets as $k => $v ) { - $filename = 'xl/worksheets/sheet'.($k+1).'.xml'; + } elseif ($cfilename === 'xl/worksheets/sheet1.xml') { + foreach ($this->sheets as $k => $v) { + $filename = 'xl/worksheets/sheet' . ($k + 1) . '.xml'; $xml = $this->_sheetToXML($k, $template); - $this->_writeEntry($fh, $cdrec, $filename, $xml ); + $this->_writeEntry($fh, $cdrec, $filename, $xml); $entries++; } $xml = null; - } elseif ( $cfilename === 'xl/worksheets/_rels/sheet1.xml.rels' ) { - foreach ( $this->sheets as $k => $v ) { - if ( count($v['hyperlinks'])) { + } elseif ($cfilename === 'xl/worksheets/_rels/sheet1.xml.rels') { + foreach ($this->sheets as $k => $v) { + if ($this->extLinkId) { $RH = []; - $filename = 'xl/worksheets/_rels/sheet' . ( $k + 1 ) . '.xml.rels'; - foreach ( $v['hyperlinks'] as $h ) { - $RH[] = ''; + $filename = 'xl/worksheets/_rels/sheet' . ($k + 1) . '.xml.rels'; + foreach ($v['hyperlinks'] as $h) { + if ($h['ID']) { + $RH[] = ''; + } } - $xml = str_replace( '{HYPERLINKS}', implode( "\r\n", $RH ), $template ); - $this->_writeEntry( $fh, $cdrec, $filename, $xml ); + $xml = str_replace('{HYPERLINKS}', implode("\r\n", $RH), $template); + $this->_writeEntry($fh, $cdrec, $filename, $xml); $entries++; } } $xml = null; - } elseif ( $cfilename === '[Content_Types].xml' ) { + } elseif ($cfilename === '[Content_Types].xml') { $TYPES = ['']; - foreach ( $this->sheets as $k => $v) { - $TYPES[] = ''; - if (count( $v['hyperlinks'])) { - $TYPES[] = ''; + foreach ($this->sheets as $k => $v) { + $TYPES[] = ''; + if ($this->extLinkId) { + $TYPES[] = ''; } } $template = str_replace('{TYPES}', implode("\r\n", $TYPES), $template); $this->_writeEntry($fh, $cdrec, $cfilename, $template); $entries++; - } elseif ( $cfilename === 'xl/styles.xml' ) { - $XF = $FONTS = $F_KEYS = $FILLS = $FL_KEYS = []; -// print_r( $this->XF ); - foreach( $this->XF as $xf ) { - // 0 - num fmt, 1 - align, 2 - font, 3 - fill, 4 - font color, 5 - bgcolor - // fonts - $F_KEY = $xf[2].'-'.$xf[4]; - if ( isset($F_KEYS[ $F_KEY ]) ) { - $F_ID = $F_KEYS[ $F_KEY ]; - } else { - $F_ID = $F_KEYS[ $F_KEY ] = count( $FONTS ); + } elseif ($cfilename === 'xl/styles.xml') { + $NF = $XF = $FONTS = $F_KEYS = $FILLS = $FL_KEYS = []; + $BR = ['']; + $BR_KEYS = [0 => 0]; - $FONTS[] = '' - . ( $this->defaultFontSize ? '' : '' ) - .( $xf[2] & self::F_BOLD ? '' : '') - .( $xf[2] & self::F_ITALIC ? '' : '') - .( $xf[2] & self::F_UNDERLINE ? '' : '') - .( $xf[2] & self::F_STRIKE ? '' : '') - .( $xf[2] & self::F_HYPERLINK ? '' : '') - .( $xf[2] & self::F_COLOR ? '' : '') - .''; + foreach ($this->NF as $k => $v) { + $NF[] = ''; + } + + foreach ($this->XF as $xf) { + // 0 - num fmt, 1 - align, 2 - font, 3 - fill, 4 - font color, 5 - bgcolor, 6 - border + // fonts + $F_KEY = $xf[2] . '-' . $xf[4]; + if (isset($F_KEYS[$F_KEY])) { + $F_ID = $F_KEYS[$F_KEY]; + } else { + $F_ID = $F_KEYS[$F_KEY] = count($FONTS); + + $FONTS[] = '' + . ($this->defaultFontSize ? '' : '') + . ($xf[2] & self::F_BOLD ? '' : '') + . ($xf[2] & self::F_ITALIC ? '' : '') + . ($xf[2] & self::F_UNDERLINE ? '' : '') + . ($xf[2] & self::F_STRIKE ? '' : '') + . ($xf[2] & self::F_HYPERLINK ? '' : '') + . ($xf[2] & self::F_COLOR ? '' : '') + . ''; } // fills - $FL_KEY = $xf[3].'-'.$xf[5]; + $FL_KEY = $xf[3] . '-' . $xf[5]; if (isset($FL_KEYS[$FL_KEY])) { - $FL_ID = $FL_KEYS[ $FL_KEY ]; + $FL_ID = $FL_KEYS[$FL_KEY]; } else { - $FL_ID = $FL_KEYS[ $FL_KEY ] = count($FILLS); + $FL_ID = $FL_KEYS[$FL_KEY] = count($FILLS); $FILLS[] = '' : ' />') - .''; + . ($xf[3] === 0 ? 'none' : '') + . ($xf[3] & self::FL_SOLID ? 'solid' : '') + . ($xf[3] & self::FL_MEDIUM_GRAY ? 'mediumGray' : '') + . ($xf[3] & self::FL_DARK_GRAY ? 'darkGray' : '') + . ($xf[3] & self::FL_LIGHT_GRAY ? 'lightGray' : '') + . ($xf[3] & self::FL_GRAY_125 ? 'gray125' : '') + . '"' + . ($xf[3] & self::FL_COLOR ? '>' : ' />') + . ''; } $align = ($xf[1] & self::A_LEFT ? ' horizontal="left"' : '') - .($xf[1] & self::A_RIGHT ? ' horizontal="right"' : '') - .($xf[1] & self::A_CENTER ? ' horizontal="center"' : '') - .($xf[1] & self::A_TOP ? ' vertical="top"' : '') - .($xf[1] & self::A_MIDDLE ? ' vertical="center"' : '') - .($xf[1] & self::A_BOTTOM ? ' vertical="bottom"' : '') - .($xf[1] & self::A_WRAPTEXT ? ' wrapText="1"' : ''); + . ($xf[1] & self::A_RIGHT ? ' horizontal="right"' : '') + . ($xf[1] & self::A_CENTER ? ' horizontal="center"' : '') + . ($xf[1] & self::A_TOP ? ' vertical="top"' : '') + . ($xf[1] & self::A_MIDDLE ? ' vertical="center"' : '') + . ($xf[1] & self::A_BOTTOM ? ' vertical="bottom"' : '') + . ($xf[1] & self::A_WRAPTEXT ? ' wrapText="1"' : ''); - $XF[] = ' 0 ? ' applyNumberFormat="1"' : '') - .($F_ID > 0 ? ' applyFont="1"' : '') - .($FL_ID > 0 ? ' applyFill="1"' : '') - .($align ? ' applyAlignment="1">' : '/>'); + // border + $BR_ID = 0; + if ($xf[6] !== '') { + $b = $xf[6]; + if (isset($BR_KEYS[$b])) { + $BR_ID = $BR_KEYS[$b]; + } else { + $BR_ID = count($BR_KEYS); + $BR_KEYS[$b] = $BR_ID; + $border = ''; + $ba = explode(' ', $b); + if (!isset($ba[1])) { + $ba[] = $ba[0]; + $ba[] = $ba[0]; + $ba[] = $ba[0]; + } + if (!isset($ba[4])) { // diagonal + $ba[] = 'none'; + } + $sides = [ 'left' => 3, 'right' => 1, 'top' => 0, 'bottom' => 2, 'diagonal' => 4]; + foreach ($sides as $side => $idx) { + $s = ''; + $c = ''; + + $va = explode('#', $ba[$idx]); + if (isset($va[1])) { + $s = $va[0] === '' ? 'thin' : $va[0]; + $c = $va[1]; + } elseif (in_array($va[0], $this->BR_STYLE, true)) { + $s = $va[0]; + } else { + $s = 'thin'; + $c = $va[0]; + } + if (strlen($c) === 6) { + $c = 'FF' . $c; + } + + if ($s && $s !== 'none') { + $border .= '<' . $side . ' style="' . $s . '">' + . '' + . ''; + } else { + $border .= '<' . $side . '/>'; + } + + } + $border .= ''; + $BR[] = $border; + } + } + + + $XF[] = ' 0 ? ' applyNumberFormat="1"' : '') + . ($F_ID > 0 ? ' applyFont="1"' : '') + . ($FL_ID > 0 ? ' applyFill="1"' : '') + . ($BR_ID > 0 ? ' applyBorder="1"' : '') + . ($align ? ' applyAlignment="1">' : '/>'); } - // wrap collections - array_unshift( $XF, ''); - $XF[] = ''; - array_unshift($FONTS, ''); - $FONTS[] = ''; - array_unshift($FILLS, ''); - $FILLS[] = ''; - $template = str_replace(['{FONTS}','{XF}','{FILLS}'], [implode("\r\n", $FONTS), implode("\r\n", $XF), implode("\r\n", $FILLS)], $template); + + // wrap collections + array_unshift($NF, ''); + $NF[] = ''; + array_unshift($XF, ''); + $XF[] = ''; + array_unshift($FONTS, ''); + $FONTS[] = ''; + array_unshift($FILLS, ''); + $FILLS[] = ''; + array_unshift($BR, ''); + $BR[] = ''; + + $template = str_replace( + ['{NUMFMTS}', '{FONTS}', '{XF}', '{FILLS}', '{BORDERS}'], + [implode("\r\n", $NF), implode("\r\n", $FONTS), implode("\r\n", $XF), implode("\r\n", $FILLS), implode("\r\n", $BR)], + $template); $this->_writeEntry($fh, $cdrec, $cfilename, $template); $entries++; } else { @@ -390,15 +523,16 @@ class SimpleXLSXGen { fwrite($fh, pack('v', 0)); // number of the disk with the start of the central directory fwrite($fh, pack('v', $entries)); // total # of entries "on this disk" fwrite($fh, pack('v', $entries)); // total # of entries overall - fwrite($fh, pack('V', mb_strlen($cdrec,'8bit'))); // size of central dir + fwrite($fh, pack('V', mb_strlen($cdrec, '8bit'))); // size of central dir fwrite($fh, pack('V', $before_cd)); // offset to start of central dir - fwrite($fh, pack('v', mb_strlen($zipComments,'8bit'))); // .zip file comment length + fwrite($fh, pack('v', mb_strlen($zipComments, '8bit'))); // .zip file comment length fwrite($fh, $zipComments); return true; } - protected function _writeEntry($fh, &$cdrec, $cfilename, $data) { + protected function _writeEntry($fh, &$cdrec, $cfilename, $data) + { $zipSignature = "\x50\x4b\x03\x04"; // local file header signature $dirSignature = "\x50\x4b\x01\x02"; // central dir header signature @@ -406,29 +540,29 @@ class SimpleXLSXGen { $e['uncsize'] = mb_strlen($data, '8bit'); // if data to compress is too small, just store it - if($e['uncsize'] < 256){ + if ($e['uncsize'] < 256) { $e['comsize'] = $e['uncsize']; $e['vneeded'] = 10; $e['cmethod'] = 0; $zdata = $data; - } else{ // otherwise, compress it + } else { // otherwise, compress it $zdata = gzcompress($data); - $zdata = substr(substr($zdata, 0, - 4 ), 2); // fix crc bug (thanks to Eric Mueller) + $zdata = substr(substr($zdata, 0, -4), 2); // fix crc bug (thanks to Eric Mueller) $e['comsize'] = mb_strlen($zdata, '8bit'); $e['vneeded'] = 10; $e['cmethod'] = 8; } $e['bitflag'] = 0; - $e['crc_32'] = crc32($data); + $e['crc_32'] = crc32($data); // Convert date and time to DOS Format, and set then - $lastmod_timeS = str_pad(decbin(date('s')>=32?date('s')-32:date('s')), 5, '0', STR_PAD_LEFT); - $lastmod_timeM = str_pad(decbin(date('i')), 6, '0', STR_PAD_LEFT); - $lastmod_timeH = str_pad(decbin(date('H')), 5, '0', STR_PAD_LEFT); - $lastmod_dateD = str_pad(decbin(date('d')), 5, '0', STR_PAD_LEFT); - $lastmod_dateM = str_pad(decbin(date('m')), 4, '0', STR_PAD_LEFT); - $lastmod_dateY = str_pad(decbin(date('Y')-1980), 7, '0', STR_PAD_LEFT); + $lastmod_timeS = str_pad(decbin(date('s') >= 32 ? date('s') - 32 : date('s')), 5, '0', STR_PAD_LEFT); + $lastmod_timeM = str_pad(decbin(date('i')), 6, '0', STR_PAD_LEFT); + $lastmod_timeH = str_pad(decbin(date('H')), 5, '0', STR_PAD_LEFT); + $lastmod_dateD = str_pad(decbin(date('d')), 5, '0', STR_PAD_LEFT); + $lastmod_dateM = str_pad(decbin(date('m')), 4, '0', STR_PAD_LEFT); + $lastmod_dateY = str_pad(decbin(date('Y') - 1980), 7, '0', STR_PAD_LEFT); # echo "ModTime: $lastmod_timeS-$lastmod_timeM-$lastmod_timeH (".date("s H H").")\n"; # echo "ModDate: $lastmod_dateD-$lastmod_dateM-$lastmod_dateY (".date("d m Y").")\n"; @@ -453,8 +587,8 @@ class SimpleXLSXGen { fwrite($fh, $zdata); // Append it to central dir - $e['external_attributes'] = (substr($cfilename, -1) === '/'&&!$zdata)?16:32; // Directory or file name - $e['comments'] = ''; + $e['external_attributes'] = (substr($cfilename, -1) === '/' && !$zdata) ? 16 : 32; // Directory or file name + $e['comments'] = ''; $cdrec .= $dirSignature; $cdrec .= "\x0\x0"; // version made by @@ -466,9 +600,9 @@ class SimpleXLSXGen { $cdrec .= pack('V', $e['crc_32']); // crc32 $cdrec .= pack('V', $e['comsize']); // compressed filesize $cdrec .= pack('V', $e['uncsize']); // uncompressed filesize - $cdrec .= pack('v', mb_strlen($cfilename,'8bit')); // file name length + $cdrec .= pack('v', mb_strlen($cfilename, '8bit')); // file name length $cdrec .= pack('v', 0); // extra field length - $cdrec .= pack('v', mb_strlen($e['comments'],'8bit')); // file comment length + $cdrec .= pack('v', mb_strlen($e['comments'], '8bit')); // file comment length $cdrec .= pack('v', 0); // disk number start $cdrec .= pack('v', 0); // internal file attributes $cdrec .= pack('V', $e['external_attributes']); // internal file attributes @@ -477,177 +611,221 @@ class SimpleXLSXGen { $cdrec .= $e['comments']; } - protected function _sheetToXML($idx, $template) { + protected function _sheetToXML($idx, $template) + { // locale floats fr_FR 1.234,56 -> 1234.56 $_loc = setlocale(LC_NUMERIC, 0); - setlocale(LC_NUMERIC,'C'); + setlocale(LC_NUMERIC, 'C'); $COLS = []; $ROWS = []; - if ( count($this->sheets[$idx]['rows']) ) { + if (count($this->sheets[$idx]['rows'])) { $COLS[] = ''; $CUR_ROW = 0; $COL = []; - foreach( $this->sheets[$idx]['rows'] as $r ) { + foreach ($this->sheets[$idx]['rows'] as $r) { $CUR_ROW++; $row = ''; $CUR_COL = 0; $RH = 0; // row height - foreach( $r as $v ) { + foreach ($r as $v) { $CUR_COL++; - if ( !isset($COL[ $CUR_COL ])) { - $COL[ $CUR_COL ] = 0; + if (!isset($COL[$CUR_COL])) { + $COL[$CUR_COL] = 0; } $cname = $this->num2name($CUR_COL) . $CUR_ROW; - if ( $v === null || $v === '' ) { - $row .= ''; + if ($v === null || $v === '') { + $row .= ''; continue; } - $ct = $cv = null; - $N = $A = $F = $FL = $C = $B = 0; + $ct = $cv = $cf = null; + $N = $A = $F = $FL = $C = $BG = 0; + $BR = ''; - if ( is_string($v) ) { + if (is_string($v)) { - if ( $v[0] === "\0" ) { // RAW value as string - $v = substr($v,1); - $vl = mb_strlen( $v ); + if ($v{0} === "\0") { // RAW value as string + $v = substr($v, 1); + $vl = mb_strlen($v); } else { - if ( strpos( $v, '<' ) !== false ) { // tags? - if ( strpos( $v, '' ) !== false ) { + if (strpos($v, '<') !== false) { // tags? + if (strpos($v, '') !== false) { $F += self::F_BOLD; } - if ( strpos( $v, '' ) !== false ) { + if (strpos($v, '') !== false) { $F += self::F_ITALIC; } - if ( strpos( $v, '' ) !== false ) { + if (strpos($v, '') !== false) { $F += self::F_UNDERLINE; } - if ( strpos( $v, '' ) !== false ) { + if (strpos($v, '') !== false) { $F += self::F_STRIKE; } - if ( preg_match('/]+)>/', $v, $m ) ) { + if (preg_match('/]+)>/', $v, $m)) { - if ( preg_match('/ color="([^"]+)"/', $m[1], $m2) ) { + if (preg_match('/ color="([^"]+)"/', $m[1], $m2)) { $F += self::F_COLOR; - $C = strlen($m2[1]) === 8 ? $m2[1] : ('FF' . ltrim($m2[1],'#')); + $c = ltrim($m2[1], '#'); + $C = strlen($c) === 8 ? $c : ('FF' . $c); } - if ( preg_match('/ bgcolor="([^"]+)"/', $m[1], $m2) ) { + if (preg_match('/ bgcolor="([^"]+)"/', $m[1], $m2)) { $FL += self::FL_COLOR; - $B = strlen($m2[1]) === 8 ? $m2[1] : ('FF' . ltrim($m2[1],'#')); + $c = ltrim($m2[1], '#'); + $BG = strlen($c) === 8 ? $c : ('FF' . $c); } - if ( preg_match('/ height="([^"]+)"/', $m[1], $m2) ) { + if (preg_match('/ height="([^"]+)"/', $m[1], $m2)) { $RH = $m2[1]; } + if (preg_match('/ nf="([^"]+)"/', $m[1], $m2)) { + $c = htmlspecialchars_decode($m2[1], ENT_QUOTES); + $N = $this->getNumFmtId($c); + } + if (preg_match('/ border="([^"]+)"/', $m[1], $m2)) { + $b = htmlspecialchars_decode($m2[1], ENT_QUOTES); + if ($b && $b !== 'none') { + $BR = $b; + } + } } - if ( strpos( $v, '' ) !== false ) { + if (strpos($v, '') !== false) { $A += self::A_LEFT; } - if ( strpos( $v, '

' ) !== false ) { + if (strpos($v, '
') !== false) { $A += self::A_CENTER; } - if ( strpos( $v, '' ) !== false ) { + if (strpos($v, '') !== false) { $A += self::A_RIGHT; } - if ( strpos( $v, '' ) !== false ) { + if (strpos($v, '') !== false) { $A += self::A_TOP; } - if ( strpos( $v, '' ) !== false ) { + if (strpos($v, '') !== false) { $A += self::A_MIDDLE; } - if ( strpos( $v, '' ) !== false ) { + if (strpos($v, '') !== false) { $A += self::A_BOTTOM; } - if ( strpos( $v, '' ) !== false ) { + if (strpos($v, '') !== false) { $A += self::A_WRAPTEXT; } - if ( preg_match( '/(.*?)<\/a>/i', $v, $m ) ) { - $h = explode( '#', $m[1] ); - $this->sheets[ $idx ]['hyperlinks'][] = ['ID' => 'rId' . ( count( $this->sheets[ $idx ]['hyperlinks'] ) + 1 ), 'R' => $cname, 'H' => $h[0], 'L' => isset( $h[1] ) ? $h[1] : '']; + if (preg_match('/(.*?)<\/a>/i', $v, $m)) { + $h = explode('#', $m[1]); + $this->extLinkId++; + $this->sheets[$idx]['hyperlinks'][] = ['ID' => 'rId' . $this->extLinkId, 'R' => $cname, 'H' => $h[0], 'L' => isset($h[1]) ? $h[1] : '']; $F += self::F_HYPERLINK; // Hyperlink } - if ( preg_match( '/(.*?)<\/a>/i', $v, $m ) ) { - $this->sheets[ $idx ]['hyperlinks'][] = ['ID' => 'rId' . ( count( $this->sheets[ $idx ]['hyperlinks'] ) + 1 ), 'R' => $cname, 'H' => $m[1], 'L' => '']; + if (preg_match('/(.*?)<\/a>/i', $v, $m)) { + $this->extLinkId++; + $this->sheets[$idx]['hyperlinks'][] = ['ID' => 'rId' . $this->extLinkId, 'R' => $cname, 'H' => $m[1], 'L' => '']; $F += self::F_HYPERLINK; // mailto hyperlink } - $v = strip_tags( $v ); + if (preg_match('/(.*?)<\/a>/i', $v, $m)) { + $this->sheets[$idx]['hyperlinks'][] = ['ID' => null, 'R' => $cname, 'H' => null, 'L' => $m[1]]; + $F += self::F_HYPERLINK; // internal hyperlink + } + if (preg_match('/]*)>/', $v, $m)) { + $cf = strip_tags($v); + $v = 'formula'; + if (preg_match('/ v="([^"]+)"/', $m[1], $m2)) { + $v = $m2[1]; + } + } else { + $v = strip_tags($v); + } } // tags - $vl = mb_strlen( $v ); - if ( $v === '0' || preg_match( '/^[-+]?[1-9]\d{0,14}$/', $v ) ) { // Integer as General - $cv = ltrim( $v, '+' ); - if ( $vl > 10 ) { + $vl = mb_strlen($v); + if ($N) { + $cv = ltrim($v, '+'); + } elseif ($v === '0' || preg_match('/^[-+]?[1-9]\d{0,14}$/', $v)) { // Integer as General + $cv = ltrim($v, '+'); + if ($vl > 10) { $N = self::N_INT; // [1] 0 } - } elseif ( preg_match( '/^[-+]?(0|[1-9]\d*)\.(\d+)$/', $v, $m ) ) { - $cv = ltrim( $v, '+' ); - if ( strlen( $m[2] ) < 3 ) { + } elseif (preg_match('/^[-+]?(0|[1-9]\d*)\.(\d+)$/', $v, $m)) { + $cv = ltrim($v, '+'); + if (strlen($m[2]) < 3) { $N = self::N_DEC; } - } elseif ( preg_match( '/^([-+]?\d+)%$/', $v, $m ) ) { - $cv = round( $m[1] / 100, 2 ); + } elseif (preg_match('/^(\$)?[-+]?[0-9\.]+( ₽| €)?$/u', $v, $m)) { // currency? + if ($m[1] === '$') { + $N = self::N_DOLLAR; + } elseif ($m[2] === ' ₽') { + $N = self::N_RUB; + } elseif ($m[2] === ' €') { + $N = self::N_EURO; + } + $cv = trim($v, ' +$₽€'); + } elseif (preg_match('/^([-+]?\d+)%$/', $v, $m)) { + $cv = round($m[1] / 100, 2); $N = self::N_PERCENT_INT; // [9] 0% - } elseif ( preg_match( '/^([-+]?\d+\.\d+)%$/', $v, $m ) ) { - $cv = round( $m[1] / 100, 4 ); + } elseif (preg_match('/^([-+]?\d+\.\d+)%$/', $v, $m)) { + $cv = round($m[1] / 100, 4); $N = self::N_PRECENT_DEC; // [10] 0.00% - } elseif ( preg_match( '/^(\d\d\d\d)-(\d\d)-(\d\d)$/', $v, $m ) ) { - $cv = $this->date2excel( $m[1], $m[2], $m[3] ); + } elseif (preg_match('/^(\d\d\d\d)-(\d\d)-(\d\d)$/', $v, $m)) { + $cv = $this->date2excel($m[1], $m[2], $m[3]); $N = self::N_DATE; // [14] mm-dd-yy - } elseif ( preg_match( '/^(\d\d)\/(\d\d)\/(\d\d\d\d)$/', $v, $m ) ) { - $cv = $this->date2excel( $m[3], $m[2], $m[1] ); + } elseif (preg_match('/^(\d\d)\/(\d\d)\/(\d\d\d\d)$/', $v, $m)) { + $cv = $this->date2excel($m[3], $m[2], $m[1]); $N = self::N_DATE; // [14] mm-dd-yy - } elseif ( preg_match( '/^(\d\d):(\d\d):(\d\d)$/', $v, $m ) ) { - $cv = $this->date2excel( 0, 0, 0, $m[1], $m[2], $m[3] ); + } elseif (preg_match('/^(\d\d):(\d\d):(\d\d)$/', $v, $m)) { + $cv = $this->date2excel(0, 0, 0, $m[1], $m[2], $m[3]); $N = self::N_TIME; // time - } elseif ( preg_match( '/^(\d\d\d\d)-(\d\d)-(\d\d) (\d\d):(\d\d):(\d\d)$/', $v, $m ) ) { - $cv = $this->date2excel( $m[1], $m[2], $m[3], $m[4], $m[5], $m[6] ); - $N = ((int) $m[1] === 0) ? self::N_TIME : self::N_DATETIME; // [22] m/d/yy h:mm - } elseif ( preg_match( '/^(\d\d)\/(\d\d)\/(\d\d\d\d) (\d\d):(\d\d):(\d\d)$/', $v, $m ) ) { - $cv = $this->date2excel( $m[3], $m[2], $m[1], $m[4], $m[5], $m[6] ); + } elseif (preg_match('/^(\d\d\d\d)-(\d\d)-(\d\d) (\d\d):(\d\d):(\d\d)$/', $v, $m)) { + $cv = $this->date2excel($m[1], $m[2], $m[3], $m[4], $m[5], $m[6]); + $N = ((int)$m[1] === 0) ? self::N_TIME : self::N_DATETIME; // [22] m/d/yy h:mm + } elseif (preg_match('/^(\d\d)\/(\d\d)\/(\d\d\d\d) (\d\d):(\d\d):(\d\d)$/', $v, $m)) { + $cv = $this->date2excel($m[3], $m[2], $m[1], $m[4], $m[5], $m[6]); $N = self::N_DATETIME; // [22] m/d/yy h:mm - } elseif ( preg_match( '/^[0-9+-.]+$/', $v ) ) { // Long ? + } elseif (preg_match('/^[0-9+-.]+$/', $v)) { // Long ? $A += ($A & (self::A_LEFT | self::A_CENTER)) ? 0 : self::A_RIGHT; - } elseif ( preg_match( '/^https?:\/\/\S+$/i', $v ) ) { - $h = explode( '#', $v ); - $this->sheets[ $idx ]['hyperlinks'][] = ['ID' => 'rId' . ( count( $this->sheets[ $idx ]['hyperlinks'] ) + 1 ), 'R' => $cname, 'H' => $h[0], 'L' => isset( $h[1] ) ? $h[1] : '']; + } elseif (preg_match('/^https?:\/\/\S+$/i', $v)) { + $h = explode('#', $v); + $this->extLinkId++; + $this->sheets[$idx]['hyperlinks'][] = ['ID' => 'rId' . $this->extLinkId, 'R' => $cname, 'H' => $h[0], 'L' => isset($h[1]) ? $h[1] : '']; $F += self::F_HYPERLINK; // Hyperlink - } elseif ( preg_match( "/^[a-zA-Z0-9_\.\-]+@([a-zA-Z0-9][a-zA-Z0-9\-]*\.)+[a-zA-Z]{2,}$/", $v ) ) { - $this->sheets[ $idx ]['hyperlinks'][] = ['ID' => 'rId' . ( count( $this->sheets[ $idx ]['hyperlinks'] ) + 1 ), 'R' => $cname, 'H' => 'mailto:' . $v, 'L' => '']; + } elseif (preg_match("/^[a-zA-Z0-9_\.\-]+@([a-zA-Z0-9][a-zA-Z0-9\-]*\.)+[a-zA-Z]{2,}$/", $v)) { + $this->extLinkId++; + $this->sheets[$idx]['hyperlinks'][] = ['ID' => 'rId' . $this->extLinkId, 'R' => $cname, 'H' => 'mailto:' . $v, 'L' => '']; $F += self::F_HYPERLINK; // Hyperlink } - if ( ($N === self::N_DATE || $N === self::N_DATETIME) && $cv < 0 ) { + if (($N === self::N_DATE || $N === self::N_DATETIME) && $cv < 0) { $cv = null; $N = 0; } } - if ( $cv === null ) { + if ($cv === null) { - $v = $this->esc( $v ); + $v = $this->esc($v); - if ( mb_strlen( $v ) > 160 ) { + if ($cf) { + $ct = 'str'; + $cv = $v; + } elseif (mb_strlen($v) > 160) { $ct = 'inlineStr'; $cv = $v; } else { $ct = 's'; // shared string $cv = false; $skey = '~' . $v; - if ( isset( $this->SI_KEYS[ $skey ] ) ) { - $cv = $this->SI_KEYS[ $skey ]; + if (isset($this->SI_KEYS[$skey])) { + $cv = $this->SI_KEYS[$skey]; } - if ( $cv === false ) { + if ($cv === false) { $this->SI[] = $v; - $cv = count( $this->SI ) - 1; - $this->SI_KEYS[ $skey ] = $cv; + $cv = count($this->SI) - 1; + $this->SI_KEYS[$skey] = $cv; } } } - } elseif ( is_int( $v ) ) { - $vl = mb_strlen( (string) $v ); + } elseif (is_int($v)) { + $vl = mb_strlen((string)$v); $cv = $v; - } elseif ( is_float( $v ) ) { - $vl = mb_strlen( (string) $v ); + } elseif (is_float($v)) { + $vl = mb_strlen((string)$v); $cv = $v; - } elseif ( $v instanceof \DateTime ) { + } elseif ($v instanceof \DateTime) { $vl = 16; $cv = $this->date2excel($v->format('Y'), $v->format('m'), $v->format('d'), $v->format('H'), $v->format('i'), $v->format('s')); $N = self::N_DATETIME; // [22] m/d/yy h:mm @@ -655,43 +833,44 @@ class SimpleXLSXGen { continue; } - $COL[ $CUR_COL ] = max( $vl, $COL[ $CUR_COL ] ); + $COL[$CUR_COL] = max($vl, $COL[$CUR_COL]); $cs = 0; - if ( $N + $A + $F + $FL > 0 ) { + if (($N + $A + $F + $FL > 0) || $BR !== '') { - if ( $FL === self::FL_COLOR ) { + if ($FL === self::FL_COLOR) { $FL += self::FL_SOLID; } - if ( ($F & self::F_HYPERLINK) && !($F & self::F_COLOR)) { + if (($F & self::F_HYPERLINK) && !($F & self::F_COLOR)) { $F += self::F_COLOR; $C = 'FF0563C1'; } - $XF_KEY = $N . '-' . $A . '-' . $F. '-'. $FL . '-' . $C . '-' . $B; + $XF_KEY = $N . '-' . $A . '-' . $F . '-' . $FL . '-' . $C . '-' . $BG . '-' . $BR; // echo $cname .'='.$XF_KEY.PHP_EOL; - if ( isset( $this->XF_KEYS[ $XF_KEY ] ) ) { - $cs = $this->XF_KEYS[ $XF_KEY ]; + if (isset($this->XF_KEYS[$XF_KEY])) { + $cs = $this->XF_KEYS[$XF_KEY]; } - if ( $cs === 0 ) { - $cs = count( $this->XF ); - $this->XF_KEYS[ $XF_KEY ] = $cs; - $this->XF[] = [$N, $A, $F, $FL, $C, $B]; + if ($cs === 0) { + $cs = count($this->XF); + $this->XF_KEYS[$XF_KEY] = $cs; + $this->XF[] = [$N, $A, $F, $FL, $C, $BG, $BR]; } } $row .= '' - . ($ct === 'inlineStr' ? '' . $cv . '' : '' . $cv . '') . "\r\n"; + . ($cf ? '' . $cf . '' : '') + . ($ct === 'inlineStr' ? '' . $cv . '' : '' . $cv . '') . "\r\n"; } - $ROWS[] = ''.$row . ""; + $ROWS[] = '' . $row . ""; } - foreach ( $COL as $k => $max ) { - $w = isset($this->sheets[$idx]['colwidth'][$k]) ? $this->sheets[$idx]['colwidth'][$k] : min( $max+1, 60); - $COLS[] = ''; + foreach ($COL as $k => $max) { + $w = isset($this->sheets[$idx]['colwidth'][$k]) ? $this->sheets[$idx]['colwidth'][$k] : min($max + 1, 60); + $COLS[] = ''; } $COLS[] = ''; - $REF = 'A1:'.$this->num2name(count($COL)) . $CUR_ROW; + $REF = 'A1:' . $this->num2name(count($COL)) . $CUR_ROW; } else { $ROWS[] = '0'; $REF = 'A1:A1'; @@ -699,24 +878,24 @@ class SimpleXLSXGen { $AUTOFILTER = ''; if ($this->sheets[$idx]['autofilter']) { - $AUTOFILTER = ''; + $AUTOFILTER = ''; } $MERGECELLS = []; - if ( count($this->sheets[$idx]['mergecells']) ) { + if (count($this->sheets[$idx]['mergecells'])) { $MERGECELLS[] = ''; - $MERGECELLS[] = ''; - foreach( $this->sheets[$idx]['mergecells'] as $m ) { - $MERGECELLS[] = ''; + $MERGECELLS[] = ''; + foreach ($this->sheets[$idx]['mergecells'] as $m) { + $MERGECELLS[] = ''; } $MERGECELLS[] = ''; } $HYPERLINKS = []; - if ( count( $this->sheets[$idx]['hyperlinks']) ) { + if (count($this->sheets[$idx]['hyperlinks'])) { $HYPERLINKS[] = ''; - foreach ( $this->sheets[$idx]['hyperlinks'] as $h ) { - $HYPERLINKS[] = ''; + foreach ($this->sheets[$idx]['hyperlinks'] as $h) { + $HYPERLINKS[] = ''; } $HYPERLINKS[] = ''; } @@ -724,38 +903,42 @@ class SimpleXLSXGen { //restore locale setlocale(LC_NUMERIC, $_loc); - return str_replace(['{REF}','{COLS}','{ROWS}','{AUTOFILTER}','{MERGECELLS}','{HYPERLINKS}'], - [ $REF, + return str_replace(['{REF}', '{COLS}', '{ROWS}', '{AUTOFILTER}', '{MERGECELLS}', '{HYPERLINKS}'], + [$REF, implode("\r\n", $COLS), - implode("\r\n",$ROWS), + implode("\r\n", $ROWS), $AUTOFILTER, implode("\r\n", $MERGECELLS), implode("\r\n", $HYPERLINKS) ], - $template ); + $template); } - public function num2name($num) { + public function num2name($num) + { $numeric = ($num - 1) % 26; - $letter = chr( 65 + $numeric ); - $num2 = (int) ( ($num-1) / 26 ); - if ( $num2 > 0 ) { - return $this->num2name( $num2 ) . $letter; + $letter = chr(65 + $numeric); + $num2 = (int)(($num - 1) / 26); + if ($num2 > 0) { + return $this->num2name($num2) . $letter; } return $letter; } - public function date2excel($year, $month, $day, $hours=0, $minutes=0, $seconds=0) { + public function date2excel($year, $month, $day, $hours = 0, $minutes = 0, $seconds = 0) + { $excelTime = (($hours * 3600) + ($minutes * 60) + $seconds) / 86400; - if ( (int) $year === 0 ) { + if ((int)$year === 0) { return $excelTime; } // self::CALENDAR_WINDOWS_1900 $excel1900isLeapYear = True; - if (($year === 1900) && ($month <= 2)) { $excel1900isLeapYear = False; } + if (($year === 1900) && ($month <= 2)) { + $excel1900isLeapYear = False; + } $myExcelBaseDate = 2415020; // Julian base date Adjustment @@ -765,38 +948,68 @@ class SimpleXLSXGen { $month += 9; --$year; } - $century = substr($year,0,2); - $decade = substr($year,2,2); + $century = substr($year, 0, 2); + $decade = substr($year, 2, 2); // Calculate the Julian Date, then subtract the Excel base date (JD 2415020 = 31-Dec-1899 Giving Excel Date of 0) $excelDate = floor((146097 * $century) / 4) + floor((1461 * $decade) / 4) + floor((153 * $month + 2) / 5) + $day + 1721119 - $myExcelBaseDate + $excel1900isLeapYear; - return (float) $excelDate + $excelTime; + return (float)$excelDate + $excelTime; } - public function setDefaultFont( $name ) { + + public function setDefaultFont($name) + { $this->defaultFont = $name; return $this; } - public function setDefaultFontSize( $size ) { + + public function setDefaultFontSize($size) + { $this->defaultFontSize = $size; return $this; } - public function autoFilter( $range ) { + public function autoFilter($range) + { $this->sheets[$this->curSheet]['autofilter'] = $range; return $this; } - public function mergeCells( $range ) { + public function mergeCells($range) + { $this->sheets[$this->curSheet]['mergecells'][] = $range; return $this; } - public function setColWidth($col, $width) { + + public function setColWidth($col, $width) + { $this->sheets[$this->curSheet]['colwidth'][$col] = $width; return $this; } - public function esc( $str ) { + + public function esc($str) + { // XML UTF-8: #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF] // but we use fast version - return str_replace( ['&', '<', '>', "\x00","\x03","\x0B"], ['&', '<', '>', '', '', ''], $str ); + return str_replace(['&', '<', '>', "\x00", "\x03", "\x0B"], ['&', '<', '>', '', '', ''], $str); } + + public function getNumFmtId($code) + { + if (isset($this->NF[$code])) { // id? + return (int)$code; + } + if (isset($this->NF_KEYS[$code])) { + return $this->NF_KEYS[$code]; + } + $id = 197 + count($this->NF); // custom + $this->NF[$id] = $code; + $this->NF_KEYS[$code] = $id; + return $id; + } + + public static function raw($value) + { + return "\0" . (string)$value; + } + } diff --git a/styles.png b/styles.png index 26b8ff401a03e097dccc943be81374d34a86a721..0ad95daa346da39b22057eca00b531d50829afe4 100644 GIT binary patch literal 53137 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 Mp00i_>zopr07ynP@&Et; literal 40909 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYU=rbAW?*2rYP2Jifq{V~-O<;Pfnj4m_n$;o z1_lPk;vjb?hIQv;UNSH+GX(gAxW0Jt;{Sh!_wV1oef#$R|NqaQKmYsp-~a#rA3b{X z=g*&a@7`U$eEHkguOB{q`1tYTr%#{${`vFr<;$NxetiG_{ne{i*RNf>ef#$BU%#F_ zd2;XGy*F>(o<4o*=dWLXe*gaR<;(y7f1W*idhx==|Np}-UApx9|NsC0zi+tqY177y zQ>IM)`tSeUYd5xS+dgylOoq1jcmMuRoHViP;M(1H&nwL+Id=5u!-tRFe*e4s_NP@V zSN{L`>CKzhPyYNr`1r@a|Nmzmd-dq!pS5e(?c2NO|G(F-K72j({@>E2OaH&Q^5f#> zh4U9&fAT)mFZkd4hjXfmzP@|;>dwU#r(g9I=d&;}HIz3kzxw&aowqkn9ay_?dTwOc z|L@OZvg)tD{@&BsTAN<@=;eo_JJ!aQPwAhrtf#6rx3DQDHtp))|NnpAYsgG2s+zE) ztMuX3vvXS7!kz4knrHuia^l+O|DT@RT+^6$?$C}CGa9RVyVp&cu%feW*4E=U53GB7 z`B2l;nK>B+Q*vVGOm91W`GJkI_vOtC^SmAY-PzL?8|<-2j|b;wr-(YXzJ6` z+ji_fI;FSd(~YBz6IRUcnYQ!%>m%zI{r~i4@z$$bPF_E7>hAROpW55!ZlBgLcjdwL zkN@mHe(u|=`>qMqSMR*oyR_@Y{kxNPKYF-pZbf79ymcGa9=PAV{K&$J#5J1_{rvoX z=KPiO4qv^vcH*yN3!ZM8_@9G)$F)a2t2TDb+}5!3>F!T|Umsb1WpV45N9R{;-BG=8 zO=;JA)yf5z&tJKf z(7v{6)uE(auV!_v`u^yxef9+Aj%&>Sb9v08;`PMpPJfJ^b>mo1vfqk_ti>n)e?Gpl z(92^^vt!c=mMM1)r`_TStDCtb%Ip8M4DCT~9>UYvHY`~SpemyG@!hyM@PjQgJ#|Nr>O|LgwG-SMw2 z`u_i$@~%4>{!149pZQ{Mk*oHHMgME~dB6R-==G3+fq|~j>_Sm+|=f1rBGIQoRo6UCrpVyz;%jp@R zBeGiO`R7Y_-rkvg`fTO>_uubS?|c6H*#5naE-oe=|K9T2Dk&{;{K}@-((!_|Cc%Lx zu8qxR-@((DPuoffUJP(yJY+D>yeN{FqvPtH>1wvk(~IW0xEvP9TJ(BjkEF8r>56%Y z_BK3gdm?+LD_^roW=>`kytrDF?Z_#vxF$78euj>ZDHV~klFw{lQd$(g`oA-?QR)$< z+l-8cGA9=@=2Vxr&y<*;>Eg0JN9=&jW65TjLlJlQCs=;I zRq@N9ft9g8fb~jQM3Q)6*RAlB)j!&*KySCbJ{_N3Pn4X&%Y!mygcW6sM4T;wei-b>S<4>zdi6=tikTZ&P_AV z<`}T4z1j7YVfiHv1s8o;0grxD&Mhgk!q&^0DZKmmu6PUMOqIvCzHL`vaAT4@ux8)x z*&8pYCC@CZzt7jxoi=MW$C-ul3iCEj3>Pkv;p*zTbYtGf!s=ItnIE;dO5aHDQcl+8 zRB*9pS7^T+GfjuhVr%Y>hK8A+c`mRWNtpMMK`fj*$#oJ9Qx8;dB`er1YgoX0 zraOi0uWrZlpJyxz+v6Ycr6qa)%u_$H`|P?OTT41wpD(Ciu~(h3<;7CwM-2Ns%@)3A zsK}EplxC65Z&)62ImI}!%hTRHt83rRoLLnPb`BDpZmz$WcSOwd+@NQ7-(FzB$LmkS z8M@XVI%c(OeQhq6{yYY!FUAZ^%MZQvvE4g8^;cE?v;Gg7*Btc3Zg4GAGTxf7FxOsq zQ^G7B)BEg)^a2zfe_{##wL4<@A>CNHnnO4DFEqOM&x6O|?E1t^?(~x<-xLVHmvukH zsoa{sX9olEBh|CH;pU=*~GJo+a&i5j}Ug~}Ax2yiNXu^whhLj^xj^UFT zyAQ0HY4zGOTzJuSHjc-sUtZ0!Q&0$wk6OR+=90}y7hk_zbHZSo>`t}w#@pWVpV(75 zIXAvewIXA*fAHE^?D|oU=)?m?v z4@*yqeNQx0QL0*6)y#9t!R1SGvzdUPprAuX2Zw@-3yXl#qU-z}jEC=Zc(|*%ZCi4# z$2!umj!Qx3@X4@8tI{cAnTnkF!l7Ul<-s61zafHGTHsoW^UU29B@CM`bR<@kPqf^qu-=a+{Eol>saX;Y z5`6Lk*HWTqZvL#nctj)O$L;%hktSLJqW(M%%hEet7M(ENtj?j}7RGj%x#f{_1A}0H z-|cM=KIxx(sVl>~Tq({%kzwYnnNoV)es|1gGZ+adtoYmbL&CH{XHRL`QibO?76m3c zsR)4Y$`X)-S1SIDy4v6xMu`0#|s#j~G>&HEhf!B836U%Bv^g@e=0tDQ_8 z4+9u4-slfx?kEhqy1p!G=9NE>F4!=gSY34{`i1QI$Ex!t`0$9IPC3!=Wt;tu#q0vg z8y~#!OP;*B>8smf#tELni%zL@AB}nEx9#nbj3u)r_(cVr+s@2gJ&l(sMWkfG+_apl zdopGTe*L&>>xqYvl` zf9#cH{~p(06XEjMhv)IZ`jBJN`8@A#-v4`b{fP^ccg_04UBr8A{+D=*FE1YaJ;AB) zx8$SvvL{MC*1mIn85A1?dL<^bUY0o9E%wjFAx-)dr-IA+$V)%JY)RaA?$yq=wsm|~ z*?&}am_*siIQ013(VxHh5^GEFesP5xchw#p_d6RuWyeegr!P?(G<-PEA22>>xkz}$ zv)>_H%GL&q2UhOrweuJ4bh&*q%KAqO$8?$IJ$IERzAtQF$ZVwlYkThgSKJ<3J|%ms z+wtzp z?igR$te>h(92Z{;9v5d8s^MO+r=#pE|M3O=Ulx76Ex>RyySY4T`nlb!<|TLOv|aVs z&h?VrI&GdH zJ?$BTo+#I=o;Nnr4`in7u1T@(&J%LzaAQ`ubYy#`x|hrh{s39#m(MrOb+C`RXX%^x z{_g9^-Te=5{wg*|a$uTPdBioZ;qUB#%<~pz6+e>1F1}LEepsSooYH*u<|1wufklA~ z9?mavzs}-!p6+-wZ(Y7ub2mS?*E>&ktLh z!=C15^lo-J?##2}N7Cvk53)NMPM-7kaP?j|_ea3Z*>k>sRwOy}y+{ZPBlDDbCl# z?yzlaNtwA|r52YIi{t^$T6TN)UC-Q1?*>l3WiDSG(I|PC@kqqC+uP#*ecQ2-Phss! z={XM$9zUQX%Jua2&wz+IyMlJGuC)t!ms@XgZ{^EP0bydo2Um);9pmN~bm)j&#Al&z8{6*4B>L)P?Jlmmm;QLG-cIRYtAgl#4Rs%^ zo_tq$v^Sl#`ntqRhD$jqN{q`SwPtDFYql?!>O2~k@l`J3$&oo~jR_lNS*#74k8T(1 z3Ks@hrf@JxdGcJL56+>&SAA1lk0e!f&+inB`zCmQ(H)(qd{^aGEsy&3Cy{Z}g%er# zY}S^)T(a8J-ty11nC6YEpBgf+uQycCe|6S-Rr9)k_x0;5C&siEE`PZ>j-{hwLWaP` z9Y4eO|KL~3{rl}$@BbOLb2EBQoymFdRp<7>?;C3muke3X(#x7S_wP~t&MjY7-;dk< zO@4E_P_OaEWqkW`k4fj>xHRjIfAHFOLZ4SJwiM5w==Q6nXrs)(^V~%uQc}7q;_LgD zP4G7O_vMk>EE6Rv3ADQ&zq%l6qc^;Ok;>MFND z0lV8zbLuHE6Wg_Wt}Wejyp8|Em*hQ9wV(E;{@8qEw~9xw-J8Zs(z*2u-e|oH+{G&? zz`TFLRo)8{e7p3*46U3V=elHWnc!U+{*qBdVe6+Gt(71buD`WIP4%7r@2kHX9uzcR zir`_D)-Q>Tc3Xd4=<{mn6Zd8~KDDk8u6`lbqWJOg^{VaiR~TD@i~YhRdD5~k|FZKnM)wp?8lcq`JKDsug~Y^jmoYE%x-1jYP$8mt_|wAe(jenbOlD&7tzN2{MxcUV>iOyx72@Rj-g(ap|u|ql0GyRwR=Z;hV$o54p=);dT*=kl=%!_YMSQi zzA8S^;Im%OYS~=dd3ntV4nj_MqaIIKd+PAt=fcw#t>@t`aOqu?T?Ps@J^9(9r>frx zZixT+PwE}xHt)!u-p|ZWJ+~bFuf3GXW_Qxv?x`YNsq;6iTvqLFc(ucR(Hl87g>`oP zW!9g&&Yiu=xWvlTQ;+|~y8~;)Pu>0Q6>!@|zjUb$)47}}+`&QqH$ZuId!NQetA*_T zc{-14TGXz8dbvE})c2cmD>G(F9eL>dwDwfXl$Ezsa8eQ!|p5etvawDZ@u| z@zW_5L0o@QcdRa7ma})K&$E_4tJlnZpuA0`L11s**{p3z5s@DcGSo&HPFVgpDb+Rq zy5(bo_a55ZwW!|DSb|MKXWBl^N%Gw#riu+c{%dy`Ja{F~c;vtVfs@jC&+5FJ^e6``s<*sRmS^^qo2sr#=SmeI$;E&7P3^VPTcSIaHs-$;qg49cu zgf5dy>dV>$4O~I>s{0F9sQNQH&@MkroqH<@r6L}*Llf|(dl2;+}!-T zN7dl^6~?LaY^x(0&V1+ZMk;jO>kpSteUH}rsw$H>z2KXH1=7MP2*Gam^FLt%A-qU)>^hA-0 z^<&OUD;;<``tRKAj-QyXpBx|Wuwvf3nWrD88l{{##B#i+=6fbXroeiyL*7e0 zUmun4{e5pQ%Y?v{En8om*!yPdj`D~-ydT**s?qL&XSZtGXX4(SdM?Jsyb%PB2B;#FrcloO) z>((qPOE8OVyf*cRd$DWVQ(0c$m4%yhtgM~Bntdx^NIWysMBcA5{RSV0hxT1I%@|2- zeviv+EYA~}&s$t#Q>=>Bs+~UThsgWj^_Ef`dJ8jc-WOcewSKy)ZP|}h25;HI#Y=B6 zwJ~?dmvcKL@0k10Ay>d6s--XE*cylXQ+!o-eG1untH10)G56863r{F8aa>#-zEnBY zyv5Pt_^kbw=Pq{^`_43UweLNxH$}x)=m2&-M@9yyD1te>jyyf#ec>0pa z)r>IbvW-4}@7|4F+GE#W$!eX-^ha-krtpJhz55ePXRL9X{8g>#>$Hr|RT~qG&*iHM z^!!hJ!lAG@;3U(=ioL>bgt}Rq&T{aiOYR1+muGLaFU>B0(`EVM#2 z0-Mek)Lq{8km1oQ!CM=*@hfm@PGeZU-r)md+i%sLmFKN01Cp(+q!-q3N9jy)m*Ls@ zr0dzV_(clS)*m<2h-6>$WO{-Bsi=iDwu~(=(zhz)q{+Pt3*8{RU{44CjMl>zDu)-p z&|y>feK$@2?Wf-S@8|MDcn%*;I?y%4_+c%>M~)K??t7R{+I~;jY3UcRBTPa2-KK`7 zEpwkK9>4iu|Dx9|4t1-=C!|G2T0dhGzpv(a^!kkOd7D)l1pdzP;s{7z#kt_mjHX$4 zEn2dUTFZHIOgQZA6x5gfYJvBYS22orJw8NaoAWrtWIvw1R6SLKhl4|9+k*V~Gm(!v z_9>QXs~g@wv4X+eysu*QqMaEI7ets3@!aK_b42z`gYYr8gR$YDjt$F%28mT`AI3|T zb5!a-oY3byJx!WnvzvC3R>}5avAg@Xf4Ng2^)jF^c3OC;$MvRwpG%~Y52U{3dvN8A z2gh++C23jVJ^kFRvg`qupR5olVf=WsL1oQW_UYSX=Um_|TKFdi)PWIYI23u+`jB7M z3fYi1ZeJ_;_tuzrCOhuh#rR6oq>G=IeS+u3Lw$R+TJ;nXJEH}spI}*I+qv1-uvUM8 z{`*@8KOQyIs$224@JZ~|g_}ZkzdyYpo3gId*=DEV=M5h@X8SWJ{)&uNthBhE5b>_? z%S(o5D~>igFKU`QS9Hye7*czW#Eg$cRMWw-?#XDk+-AnRB4bRN89I+$R#>%Tzr^;t%{ynG4AxmRKlIF z{A4rUzENcH`Pw~WQIpfMPTw!-LYb$-`eT{{)h`QHu^N9}##i^@B*%n0$r~>UG=+<2 zR;YC@yEsvibB0tuWAL`-yjh*h%XmBwh!k#A+vIUTBy)-IUI&$gE(WJBLJWznGyP_n zl%8n#aaO%Sz*of~CY!lP={nn2-}(tB?`j&dW?Xo^`SriMKQ`MLG%+}RsoJXD!Z+hn zzsOT-h8-!bE^-SV+t(EGPp)GOo|7SCuvO1b#mmyVr$XRlVE${@XJNI$8=mekFTH!E zC-m-WHtkb=AzMJL@YOY4x4m98taSd@X_27yJgJ!BYW4Ol?OZduj177&an6X!oLVYa znMSq$7SpTW4{CnmDMPO0*`p9Lg8djRVu!}pwE|XjRL+-&E)9RNEn$dGzHb*fA?>x*oW6~V1Sjm}J zjvsxr#^aV}Z{%L3IE5QcFIM~XuI7(?d|=|*1;rx2(&l`+_xcFuO@(u(EI|zv*+)NC z9b3Ar`lVBDp3J-Dw<}C}jyG@7>pge&`i_V*Cl*xc%`MbwG@m1q!=^J?Bco@c#EWf? zTrSzx7arP}uR6E%5tHrXol}0D6J02+!{{fvcAk0u(b7qYT`#6~tBSd|KkJ_8vqtFt z{myhJq5J2}1=B0#vw6+MyHm}c9b6cGB+IpZnuxA$RDb&CM?Oc=4tvxac%MIM{AI~} zGlk6)_da^#|N5)}tDNSllKfRX!N055Eja&XmB7LawY;+#oW88u8la)$=X*F-*tu$5 z`H5C1>7Bb5Y|LJ|;dxZX^Oqjm`|GDe$vxvFScq-Usd_F#O%w= z7k07pSOPR|?9`LVH8}9S@J-cLu|PdPy{rT44{vOl(;E^ir=-BfeqFRwgi~7rG`_r= zoS1d)Ov<~+E^EH&)rDq1ic@3s*jltF6!PD2+|a|n_1ucD`?^o_N`1FyWlSkyYSMbj z$f>e;)yq9M8IS+4yxhDwl`CaOkXX^mh0FUi$ zgoc%dI%dTWzE(|UyL;3}J;BR7?$i+%wRx7E9?@+&MZCx6M{H}(S7r=8T)ffaz!eJ- z&KXL*C5yy6SbRWz94>{Pm&IqFNo|PZR5148RB%b=7GS%--@-`uP?+?Dl#M>rP$JIv?{q_9gkhzh@1*>g z*UN4;UzOVBV;UWuwm$azR_B7HUyrVo)>Cxo%e&5cT%x?@NLCrRIkPrEYo(*>=8GYf zj27_^Gr6NKt_rE+5xBPa&8y1z)m+oRYfLrwQ(NFvgKbdGqwb8K5vojY2EVl-BYd=iW@T>R+$&gW!|&(ZP>QFM^09$ z&IL(=(|5B!ICJmo#l|ZQw{MCl%)Dc?>iN@MxiOA6^O!g;c6@mt{AO+p%a0drth0VI zMDp1cRM}~U&U1OaVdaX;cXsaI613oXW>3qtSBcFBnrj~hxZB4Xt_QldbGS zmu<_jkvg@qqNJr{VGD!Pm&vMgzfJr!!ScRxXl1I~-?WUqdkSt@J+)o&G*>5hUq0h+ zb025c4M!h5xDw1Ur+;~<#>cy}vv%?@3$X33<19a^+Ig<~(4i|P>FM`{Yo_1Xd+yu{ z-lAhW4Zm8LGi`O8lUuX77dV zDtTuMzl{-lw?}fj;~eKMzYn09v&bvX+NsCfuRIaVYtWdwTUS%$!(p8)V^fX`?p}8s z9)>JX^W;t~4|%BQTpwt$J!(dN+G_5O12>PQsXtW>6t0&}U$?oKh0n_}JMy*74GrE) zRUtggOf${W^=C0{zVvL-d$I$=;J_5giQCj( zPs}z5TgpGjaoY=DshahYB?qoFd<;@aST&yqTq-4hXju8uBH@(7?VUlaKEA4q!OXiN zR1&gex>$TBx>;T1c41n^q2Qv--f}d-`1zSKixU!(3O==Fj7!!xm0h@Owbt)?!mmyD z`lIH{{Ilc!b#(RF_%&M%j!yAqc*)$cFy1#N<=iDx<5Gr?#^w*-8|{DkAvylh`R*m` zVP9Tc+IOLKV)QX-g}3D){oKB)yDlG8t#xBA`o6F1`}5iN1B5w4MPI+mD8J2k{hh3{ zo#y`EdmCIz_2oV+TWXhno%_|>+4H{XmVD-3+q(NZdz0V(&9{>lJiZ?LV#^$ch95eW zw~uIiv`bf7)t@uDx?QQ2RZ3g^Lb6LQBWv3~h24=W&sBbFJ^pIax7scVyQ_*O84INL zA6Q*pFT3+yWnIx9=0(fRYmfQNKe5Zsk}Lbd{J0v9Kdjpul&vS!gay6!Nwu^{e!Pd> zchcOqGrr2_hg8AV0fzb0x1IoY^N9+$455rqy&^ zbMfu@cMI=iah`d1w6yQUbEoJTrQJ6#{1cFM`@K5-swJD{LZ)?nTy`&_U9Q~p6rIw4 ztw8=eSL&j(f;lN2dp=n1)G|8Y-MIhX0;ade;tJU38h>NTD|HI#Hr2{)^iOR()Ty=3 zP$97In&1hAD$Nc05~+eq8P*>aSUO|V@rh=#t6$#R=-9{Q{ippM!{%>CMV?N1?=hcc zv){uOuLa%>e0Hn(WcTyUH{Rt`EYdeESyI5+)-!X`+&tyE!ISe-uU=zXzDM*xOyE?R z0HyM6H(#(^^-O0y`t!urTkmU6rYWl>?BtqYWV5cUAiSs8YmF-3VlMBqlHm;o^0r}H zO1upexL8?FB(tvak2^nqn?{t(%?-ac9{R<(Z=(7C*r&&Gs+NVae=o7t%CkGz5b%wK z@l!w}L!CVc%n`HWS`{`*D$7cTm|@!2xD*0S4QSk~qTYFL$f@||Q_w9ITslVK!U3dCs_Er7!J*|9vHveL|yZPZ;wmi_keaW*j=Wc1~ z-ER+m{n6Apbkwm*m^sO9KFj96C;2M=UE!4VU06|ff8NU*y?$J=3)THsa+^<^pH$d& zzOaNb@g2W-=N?(cYg?I(k4W{!xnI|;W@d?*YqD|y%iS=W;6T;HZ%j?gLQ)bl)C+_r zUN5jH{PVz(dD8>IUz_vv-aStWymz*B?S_{dU4&YEPabsV|1B+`d2ev@PWhfhJC*lC|AETzG`{DYDt!>Ny+11_x@aA{AP1aV#4fl6`|}? zOJZ&~))vf*zE|rr|9xwFmV-q99hFJG{y$%|SVgb6WTH?$|EBjBU7e4<3yuoTSF^hQ zJig&-vU%t0*5x^`tn>8bE;szxBAfLh+wlUc?mn&wawop~6gQ~Je0?IR!Ta{X$CizP z4DO+f0ec&MJaXu7*{XhUDev2=9nXbNe`M|WVz{d0Zglls-Y2|)!mA?pE|s?YGj}dm zZhhTl^C;a3yUzz4-E;eFSh!i}U8jUOOFleOXfRNj{lW2l*=qSd5BZDkOWr@|pQfmx z|7Jp&{_EUEk7%oj^V#2)7kpi^{O#RUr~1!J<{n;_bbj*kFB7ECiYRFHU14MS@2h*Q zhAX<}_U?jB3uoWG(|ewKxH*2@D?+R1^1UQ_U&11HN{G; z)^cBU(Y0NQ+b$fns$EdE{q7E?mP+=}jniaJctjXX6#6r`4;?AUsXX>>tHPz<)?1k7dmOJkgn!oPZiNKAA)40QRTL0d4e^FK}9x1?b z!ZUNbs?47E%j){hRPJNm>d5dVK=oeBve{M}6CGd68owxZ+y6xFxW=prY+dJUXDmM# z$EX?2T)Wc^x_NoUo1)|{r4`J)=6OKu_^#up z0}Q=it-3H}(WAN6FSyOi7!#jm&P)8t<}-J@&Evm@zj~!ky<7M?DC(1Z%K_-Z?8Ec2?K>F`J{~N#7N|d%0$csy|r#{rZRFf(q3WuD|{D zhueF{?-PL+JKwRbxVZ2|Ni(;5XbCv|JC;em-;WXDI7h! zyzA%*-<<{S4_}=4zUx2hnVNsCEjK^4CY_$#{>wa2nq|9Z!_V*gllglaZz1y$$@%T8cu%ydm+si{Z}D=;Grr&7e%v1MIPHMgpWJ@kkCyJX|C`qK zuemWzJ^JQn(b?~`#iI3gbpF}Q{o?=K-zKL1`xeYH__g9~f&0Y54?mq>ewICZe$K7; z)><;wy4B}*{{0x{dRlg$=%@Mb?0&ZOciHc5o|QOzUc`gRGpZkUO5btW-ulg&>*!>C zgXb@t?mnzu_*3$Q$}t0lI%`wU1y>s^tfS`@+I8pG?K^R?sr2``8!`vJ#-1uY{?+c* zF-dig=T~-H-`=6@p!M;KM2h8l$G2bS796|DZSy4kxUhn8^P9vxfwH|b#jagZe!H{u znov#toJeuUy<#6XEz4atUG-|!0^OD^(SI$pG#=^g%G@0lef#peed2W&7Wem^Skl*Z zOFu0yftUN$i|5|#q5U(P*4%xefB60E0MC`SE~y2(LiyIDsD;{SbnwSH`t6t@{Gf?@ z&Bv2F*med!KXb%C|8?1cm_JXi?bxBJb*`;!>SN`L{F~fFXL#m5GrkxXC;7slwEOGI z@Hu;*_k44|U${Y!c}BHP$Wh&`euo%iE}DIDw+ytCjGgmO`0lYytchp7B=cOl>SFc2 zKxUuXzVC|?9&s@~TC!nV*`2O`)>eAkw#B{i@W06W?d0Y5Yho3d8(B?DOSY_Yme;)- zy|Q&$Uh85n-Trw&){(*Pg-g2h-`TEe{TkM7<(|#Dw`F^P@Rkfm{ip!$ioLC_-sZI@ zj*9(YsMzaNyXR>1MVr0LzQ2gRs8;1wZy6i&@W$T>c0EUvxUc$oaK+p@bm-!)rzijV z{qhfNenI%`DbD39*?twzWah38cD_7;yHAYq z&yirc0{e3-eusWt#=nb`-Dl;&7vlP^Ov^kDTsguq!>FdPO>?eDaFpe;v_bD+3 zKMqt$c(v5-sFGB^5@Rrnz@q7l9H)C;7ECaWaY*z1Y3WyWZH*yghvv#SVRnIIO-%<5 z=x+Y)BBIuvKePMeZ1uY)Z!QT;%vy1=>$ZIz*O@eB{byTT*V%{l1#4P)m)l2)F8-Uk z^Y~5uTe`*1w=iD%SWt9+W4)Tgo;9is{k0Ff8@*Tq|4ym8ts5s;Q}DHDR%))ii~XZH z(dqpsx;_*&S;l=^@x&*)+Ub@A!;v)$GJH!eK5O39Foo;%q1HHtdD5lX_qRNCEz$Lm z+p%4*c+<7l#pnL5vikDhUB1z{chlpS;fMd-n%FUC@x9Z(LjIk+Rl46mrKG&xX~x>? z)Box;yx3l{&E`Mb`~&kC?^o^2t6Xx`@$#FK=FW4WCC)iAXq;=^) ztZ%b`*x9>}Z`uEC^jfOTn6?M+#mu;PXYQ3iGiOEd>mNTY-I3?H zGenJb{?|zfdhgD@-FQW>r`lolwWaJC?CYI&ZT=nF5WB;IwTu7z0lDxGCpjNoO4IA^ zKD@)|VtAVDgdP!rwC~Ql8I0U3^Zk0r&+Ldcw&Ho;vz}n$^)a;eozH7%Sua>T@+g-wCwv{jb+U3>m4IxK1 zEWGeLpu}^|1cgtI!n>9#0_qx(T=F4v zudXuV)U>+0`&y*RhZ`HX#p9)0DsH4bj@c%C=+vbgrR1Lvgp-nkEAI#yect2WvgD17 zp+f&Vi@^K)(uLpcmixNo^To^4j^|m(o!GcpI9_B`_T@EY?yXH-*LPp&-Tf*kHvQw1 zeYUx8*T|JVzV~dE+)M7L7mq$)Onl*?u_%zuV@iMito)d^`wa~lF>7WP&q^|BV33LJ zetTRfCC#Q~Z|IJIxH-EV*A-5V+UvULNdLvP`+MDN!IEd+u!Nl3RUt4mW;Z zZrJ>at2n_SYNZtS?v~pXotd{9<{T3{vf20hj(<(3E2ZR$=ws+kpDYKBHwxwQb6d3*zG*94;JayoX36>l|M#CX^X2pfMbGYS z=$hYr*i!5G>rX}xwnQ3)KfGO$*)wa`^p7I1^+Z)YLMxy6m(I`G!CbD%&vjg^(8~Xj zMZfi253wE1*0K_pHf`O0annn~Z&&1Ow=G_@^K0}jdG|X~2m_uDiU# znTGO!zg|h-vzr4r1^U^7`YvmQw4E}$njO^lNF`ftp#{@gBahXRYcG3gbhw7GG6%_N zyE&*%S#avn#v?C3h`v%3WpfX;vTdDrsW9Soz*_qnnd%TW(Y{;H=L#%%yX?7A_rW_E zoUaWOjvo|$zP4y(iPwpZ%xS&SZ;l5}sC=>5=BX-!)6svXHpiZOyZ(O@dFIWNXv;&3 zmQRsB8qTWhxjXb<+7)B-bH+J>w+jESz0$`m1u!x?azifB1U9Y$cs9;nl2_w+}9THpf9=CjZQ-E7e(6 zZ+sXzuS!gIYruy4(Hq*{3h%nz3F>pCRa;NFZ}EJo-^+O>9t4=tGQwJl^kj3-+zw1{XTzdMt#=KrzgW) zz02GFeO^AzqKxyKO;N~|()>`-?cG)XcwgB6YKxc<$ib2Ax6osY`~LIQ6PR}Hwx0Uv zj{m!Tmqit#_N5tRtqos%_0!(63_;(|7jun+-|efsu%2^u3IC%jyX6nR3$R#s|8~;_ zsaHQI{Rt9~{&TVXfta^q=@p(=-cN7elzV69r)T!gPe%GmUA+1o;}e@727PC);n-$5 zA*Z?f_5!tnO)~tZB5(Jxaozo_+Ze2Q-1l=rNx;tQ9kDvK*R5U^uHD+Ybt|jE>pKT# z>2GCsJyxTYkd-!($f)YZSO=bcaPR-n9A4N(N0eIRRCscE!S`S4|&w zhhZSE5CpH#e@DKcSK`r z47K)!{&ky}F@+&%fv|C^MZke8rv*31iR_rmKWCZ4#f=*)G@tvhs~>&TxTNCSmw$7Q z>U(oBozT9ba#@`5Q$Ekz4o%-PQ#MZAcq8T8=|10?j~LEa{wlt)sAN>&2~RkmAn3rMz%rqcA<-j?S$X@5 z&A%8985%xsX5QJuG9gg=+4cE>vZXP0zk8%S{^$Sy^Cr9Mbp2mR{km^A)9cf+-+!21 zzpq^A-zT}K|6dIl3T=h!^}H+A_#X&)SeW?cUxm;D2L{QlML!?ztxquc_w8PK{QmZi zAE&G1gM&@J_upR_{ri9WwEfqZT7Dj`j{pBT`^Urb`1-%h_w2sh+hh13VDGh)4$>38 zRB$&07fvf)Tz*K>k;O`y@ow)m_lDi3p4YwqunL0KUum4XZ(*O{@ULmXj}NwXGd3EE z%$W1N&Ykg7`rS|ezgnMtGrv92@kj4&M!)HEzFcNg`E3&$5EVHsM6&3lQE}#);*W)9 zB5Y+hMC6+`guZ`Y%D+arL13?+>YjGSgKrz;>yC%*4(RB)uX;i3$^7?!BQJXtRK9<5 z{r{HWx7%|h8YF({^lHZKsxE9cQ;^O-6tjB8&SebpcQ>=}S-;QyC-VP_U)q7In!&5Q zbryWJlJ;8;n&_}sxSr)t{0izUbTaR7+2g@2|DJE6$Bwgd*XA;4oCU2qW^<^k z@R$AaSKQ=#|M!2(nAr5QbxzpVEic<#_v7;h2EzxBAC}3KNWENJc*3l*W%2rxiy1g~ zcv;5Sb%vaI8KdFaAhHIuChS_+3I5X=za4e|_V(UZIxWC5e{cJVhdPU6^t*(#6hBmF zIfTUUicVO0@*PuRR7;+ZmGP4~K4L=Y+r6h%#kGBw-y%DmQ%}D6)#=-*cTPLntzI=} z#_!d0KxA(D_P^Ey*xr;9QedlXTE@ehyL{iDhLs!FS+YzpT(h5dQr=H@ z=4By*!GDvM`S_%rSG;sh#kq+0*t)c{QWbj-_BfVb{J%fsz?6+@30~RV zMSzKe(S?=c^wstIlurrx))pz3&)QVQcrr!DX#di!%*Ig_4qt!Fh`f2x+UvjG>a@8@ z5eJ>l{&u$i+|5(G`rrNYbDS6yr8ZhTE&q7r>2Cd%nKQDu&bzPt!Vzj#-^k-Qllfb5gUz1Uy^bOZuzNhAShb80l zceRT%wq&sUn!t4Av%R6pjm+_X44n^1hc`cuL{T{3I97VgM zMN1hH*WWl+wzl^&!=XF!dR!WX&4&wfrgko1;N%Wqka>G4#o`3-_M000P1h{cEg}k~ zi_S0J{ASmxuf9tyR%z9CvKnk&{U+hs?sGS9?CY^eW@l{SSh(=h0*fu0i9vdzQ9s`A zfAnk`QP3qd#W0^8>CGYR+eHG6|Y``Ro11{#txxSO2~2FBaAi z*igN+KSr;2_SC*-mie`v=`XiB7j5ME@scr5<_g=*-dhT;w{it!)I%SZRWZ+!@jHAm zSaaHo#T=6TMQfj&+1dAC(-FBBUs`4S7_ufg%q&~Hhk<>2@Xq-R%NWutpYGmqVxsDi zCV}1%?!G-==W`cKe%xPNc=uP|CaLn7ax-VvSFL8e^j|uy^`b@q|5l6qzY}LVFn&^e zn#j9$;ys=0H@DQgXT1+DR`vd^Ij#OxKb>|roDZC zGMt}%ieyzje@M7&@k&c|F>!hJ|67?h`ktS9&p|7#;6UjXahZL4++>Q5zC07Y``}`2 zHzqmnzV5r%1spouo+Mnf6ZspF#nnD5KRr&y67-_{CAc8{y4toLwPUEwd|Zat*SpxE9pQ}vBS z+bPpE!g8Odf8Uibr)uE_=KW$H#ksCqI3}jp-BwSTE$qjoW%JsVK~bvFX5XJr)_)c~ zw*Is4v2}`5U(HX|w^_B{Ww%N4-mm>BYijp(|Gim@ZauWlS~kZ>!MSAPjU7_2H%heS zfQvx8ugmq>V{EVNi(rd7G`CuPa>L4fvmSe`J1B9jo^Q_c17D9e7)V4Z2EUr2DWhz3 z{>YsYvx(Du)F-}s_c$Opo#)@=Y^G&BTbP#lcpSLWP;~dJ+C_^iPduCdKAL>bL2sI$ z!7jCoSI<2jSzdeUq;hN%m3jxbNHU8O`OuZ zH(UF>LNDoPFRr?^xOkg-Lr-<>yMKTGCn(tc|93fmzq{!_{``7x--~zt-*cY-df)$P zOiROkpYPZG_jmUDw))?1cV{}Y94WXsElS29b+$}NmS@|-Y2Bg8j1Rh*moYrIf6(#0 zp~TiqGtp?KOYt23caC1_BDt&@Qy%VEb*43Lf@Lnh%6hKpC%5dLBs1mhk!cUbL>?W` z3~5g-TYm5A0ig_D-{&8Ca%^kg+sk_ANBS{O>g>OlP3NPqLr?MFXJ^X|7231!)qIY>uN*MJ^5^yA6^FmyRx(tW|4PhWcCq8r+Y5I^ zwAHNIZJlkmJCt3(uQ%zGWBi@`yRA%13b)5b6iyZX!G7$NGXGb(Qe)YF+%{m)U&*0fPD>>#o(rFARv=e2Md1%eylDdkF`x8@?*$t9R!`>WkcZGxZIZ?fJG1NAB)z*u}DoH9s-7#V7Ga+1f`x=5(^o z6sQV+8nk!kJEK&~S!M~73x9lio;ii}r-|$BraAx5%3qPYzU@BGPfamd{zc2xFS5GG z8Z2dEx$at!Sv>idlKqOP<1f7q&I`<*!?I-cx&>i}*&OFFt+m*-x8Is&0}H$SJGLA9 z`LC%eR)2VqyY_ASdRE2Xf)6_Onr+|Lu;o}}P++ugw>{4j`D+hePTH~QwVCPk+9n30 ziHw=QX3Y9|cz6Br%kS$yzxNE8{N%I!oa;(Yes7ubC~4KjPwVHHyK`|Ye|F)DBx|Ez zmV?bCqXUa|4>zAO5Y4zRE})g5_0(dP^`bXRvU1j(`>x9E>SR;K+;>6Oj<2zA2IpI) zd5t+T8ISt<=3U{R@b|`ft$t_T*{`yzvGW%*o)Kk|LhxAI99IwbY)xM|v z!l}?(Vl7<1k4{ZhYtHUM8cvuI-XXzL@#acf#&B zf4z^HSe3E7G3>w<%Z(QLC)XWR;m+-E*l?oUXVyB|=BCrxK8uQ*s`#%Y2uW?8#h+;U z+{b4^W=3rRQ>AzK%>b!=!Ef$G>)0CJU$Wr2*?o1BHhtIs#@D%yq*uSoJa+!mdB3|a zxdOWS;${jT^breh=?-r;iHMn|cCYz>h4#5a@lj>`a(6E8$i1rieuhGfMaakQ6@UA> zs~h`Y&EZsd{7>`!|C(RbDTe=^f8YO8Ed1Z+{r|sJ-!fbC`}gzwx_@~e-_PE6T;tFA z|3M6YAO5~S->!f9|EXqAzAIQHXc-t?%dSdPnHAUdig%~3z{i$De0CKa6W^=2ynV(J z*j{)-s=;Sx!TM{DHRlTmzMrHj8vgZN8mCO$Zb`0SKZSD58R{|XD>oLpsqC4mx@EQK z(OW+|k^-w!=YE*5|HF)B8_x@KehfSxP#7|&O0j6`Cq*5W`k#t(dZJ$R+%M4i()6TT z%Hfr(&7Vij!JXYJyYr8+I|gSnov66J-PF`{e%-%k+vnH)%H(Bx96$fs1>ZjVD-UL# zpKZ5vmdyWu`}c>~ipR-$nupdIe-UqG%VC!>I6A|gHFU>K9dIS|Zp*uR_L~o+N_}B# z0SwmciJTkC#!sXqh2dC*^ck2i_nWbCJrZ7 zs67r)IV{51lCh*=!q(kCc5oj{YyLiai1RV)OYW0tKO>q8N$_kApYIEyv>t+ zS3SPL;v#GCG%BJ*Po?g(qi^`+6F*Gu@|Z8RR8xy%Xuqwlp>XNfHoZIkmO4+n6a)ne z)t;|WNU-+ve*XD^uyw=YdrSwb-Z~s>I-Tx(&Eaug;{wAu{vbnB>OT2tC7d$JXLcyt zvGmx{qMd7Aam>&;R_kDKaOL*rh8KcdCq>AZ3Nl6-oHgRVFXOkCRf9j4t?q@^l<#|dIHdP}!Jm#hDv2Kp%{-ig z4!2JK5fCq?C&K1?!K@>H_o`#_xwbEkSvRGIeU5Fan*y846}K(N95?r`Uliun|M9Hn zMun|~Ys@Z%epJx8{quxm$A{PKCmx!ZwX{CE_i|s~m3cR3tK})*4SyOJ79ME2Z^I8O zK6Z~guO_whwEBNJ`ozpP!d6{X&(-7kZ{PS#&#cE0>?&O|%Wa)bU0`jwne%G)5#f*1 z9$mN{D!#&Ydj9+m4Rclnt+;mmn7hNb((v;Ip*7ReCoVIc_lr~B>wKX3%;F_ReUakc z{d_Zw63pIhW6pK3uvBjpp0IHaS7z#?TaM3rqbAxHGDZfvo9k)FocZADwWY1pbI+bh z&IgY0Z|G}Nmd_67c-r)9k#=}3Yy6%)WkHh1wG=`QgzU4(`sRM!OrOW{-7W5p_^^|q zpVw@XmCHST)>nzY@rupYZI*mTPw<(W7xvBQX!tRE`dstr2Oh3lefHq-w+j>smY-bp z`9_jQ^u*PwXJa$vWcveuczL!i`oSW1B5Idp!I}-SD|?bf1;YP}XeGQ#xaSp^a@*4Q zY;s)Ol8)ouTbm7}y=PYPjDS1|Lk8W`(TVJv(qs4^N7JQ7ECl>8?3b`GiXn!U_I`qYP z$#gq8mCMJDMLrKTU~g~xd1JxV*FS}MCfsXS`D)wVshvN6NjaQb(vg&XZsYH_l@-Q} zDLvY|)^dNhdiF%EkXeth<*Ll{Uu6%X7jAh}Yu@l_)83dyGlkZ|YUgdvuS@mJRqT?R z7>(>JYaa?_+nbm=mhSfwHh4OD2LGJ?d+rS?vmg9e;VQI@bJtsg$=Z{Ad(eIRyL^k7tonhN|xZ7Oa?jwJ-^$XuO z7UmYy`D;%ZER~npTe5qZewf)giw8<+#YK-RCjR8R5VEOJe23(Wuc;qx;shKD1lLzA zwcRDHx=!@Nwn{;VV^dblXuTO+@bq}Xj}t{78J@^}TxYT6v~h{Pemr-}vDJ1)S9J}( zUpSJzWVP@MpYvQh^6p;X_Bdr-a`2Lg*^ZWd%z7*5PKcYbkZ;DP$gXuy9^NfuSibv} z!kMWIM&B3?9&7ZQQ{@)XwD@7zAE|;%$J<_9<<7o$QRLjwiSbu-4Sb%MB{CYOcs?ko zX;~{Z!6vk9c7w`7j~!numZ(2uvC4au{raV>l2Gdr#RMsJr#)XSSXK6#Z`|O%!gS8A zciXh{HfB|JF6*v4`rGe;=T`zTCyI^E{<&Zz`iIplfuA5Y} z^A5`dCp5WVGGg&)vr1UC=ajD%JA>rQ9HtWytSZJ+KFxUcpg&aif|RvM{}GlU3$%=iGw}pNmcWH(rZ1;<_iF_wwSj z{5df-9hIw2G0o)VuG!fmX60@$d)*qdzJF_l(=V>FSlnI1bV6d%VZFs&D$3z2-c{W` zkde|M)`H6R@(y81J zH_yy3XxP9rf!Q=XzCSU;>UPOG#*+r7hB0dtSH|ott@+<*ZwuNr!QkjSWv;ACJ zFHD>&diqYyDIKNUvvX`1|7Sc&>wj;5A*}vGu1W%E*<-`XgUrj+_=OByBSn}WB?*dW zD|H-c7I5eQb>SAx7Z#YddZpaglIe|axBN|Q zw(qazrbQMLGmQHdedM^prt&fQ>YZJnEqvOcrlIN|Z~tjo8g;izn(5uj*C}($K3*ya z44kB~vfjM^(phKrl)6v9vSbXF9&ZwLy)6>;(~(Kf;qWD2hBeVSRnuL!E4&dCnUfvS zaoA|`X+NDgYKjd4d!2OmcD_onYnZpoPwhU_bk_%+uT)lbopBYF-tzj%zv>N75}p2d zHk@g_@!^H!uBNqXwN1iRbeDwjXeW3*dReO-AU#3Eo#FmxhR8(~G6&vFntk~6S35@5 zd*}8nQJ7Pp)h90P$e>u&>XpeDF|X}6W00hVg<|Fkzr2L->f0YCg)yhcW?A$v@4Opb z&NMBrG;;Pqo`Z(<3~OVMK~hoUGsXllwsAK0oc1 zR}xO^^U4ZnC7jylcz%oFyzt;p-+Y*RStEJ2hCCDRTfg^J%B9st3%+nMsjx>*2rUI| zdRg7uSD@BcmD0laP$%%gf<$u-hf<@xXMHfPV>bp=FitBcF`-&@%E+-Qyj80xLoGlIVdo(U@vGD_^A-t8O1y^CU$M;U39=B zMt$=3&P})cc0FO0liuJr?;-269QSkQ^vVO@NU5Luv?DoS!xPztol}(*pJik)1{bzo4Gvi)@P#A!)KyY&m% ze7*`g=g;~%<)77#6DNe0`2@`Lo$F-stL4>_yBx2cJh5!fm##Z-MWy!dOqGPL43o^3 z(ogP2KD-&W8`!of2uB@h>T%zDqG^Jow1;%cp>9x(-QmW=ak|v(>jd%dO5c(NK+{PA z7x-pGP1s|1%HjM0vnajk>*uZF?YMa&p84D?Cgb#1HagF^uDE{{w-9vbaI;i+)u4I( z(4kbo6cRMp5PB08bY00Hnm%%+?w)q^|SLKa}*kSm{Q}lBd6U9 zzLe_7AjvS{=gB6fJF~BUy&~lOBq=h}$cOcfv2{eFvCmthW8Z7og;>tkritS@rT=U6u5@H%w;5 zu`>Mqk#|ExPjlZ{bkg9dyoS))lEaeAl2UJ(F~u-#nY>1(k5xl|6LY_p;Cr2|jqki> zZkd z(0L%>;5cci)PzeGoGIV-_%cZH{(2F0leg^r@fC-Bj9*pC_i3!JTM+a2!TWiq?rwS^ z_tcY#L$pZx=)AMn{T3`{Q*jW@y`+D5%I*$vp}ycvFSn?0wH{rW>Ex?)=aNP7=QSr3 z&O5w{=*x1L_Q+w{WoZtD#moYJ{-NiKEv~lu98>3*kSZV3%r0NQphsWxqux!!i;NQ$ z9Qa;slvq|b=~KY#IESdq1%|~Z|J|Wu-YvOl?!)~`F_Z3Rswdi}*aXylnrQT_ann+#%ExU%mIrk^tP--^iaq>%*Gvxc zu~Ltac-ePLVrEg`n^_!w!4K3lG7dXxuGm?7fOAHqQsD9b#S_|ectu{O%y_h6%O!!z zC0jaOCce$cZS2^7Qz*vCrLj?|WXhSCz`BwrhD;}3hi@(a^EFleSbh_~^X{UcJ&&Cq zCokH2-n7!%DLMS)RNXh6|3tj=H?3ZIKg8B;%F6k#nWBxpykIHWsJ6xB zI$c1=F(35_^#w9oca3ZAY|oB0 zIGfZ@G9P_hFS6ZKkSZ94l&j?>lJrc6`a3V+bF|ta@(eYbed0XE z=`K}E%=(q8{Z82hb;j@RPCekqzv0{E?oS+dxqcP%O77LW=H?!<`@FJu{K?|7rZZb_ zPmFz#`&w2>?}^vm6|&Y$J8cpLX0dUb@)n@Uph<(pfCErg{EqHbMP^HcKj}Md9 zx`vuRVA>{X)5wx_UG6}AZjQd-(c=t@CeHkz{fx7atwTpKw{dbfm$>QNhNjaO_q?r{ z(6;2*$0TJoc9n!)iTLw}rC%g|?2Ic{o-4N}>e4J_?lU_p0+>C#xLZ{7nEGd#K09dX zn7HtLLByPf8TVdYh)Bv4n!ukZ{h9Y~_jLw|8PgM&uQtf*J;{E``OT+wHJ|rPtx5Z| ziuc*Gb&r_@{2nBI@L1D)>%`Y*k(PqHon)8lWIoC*doQ|EM?hs?^E;(%p2^DF8BEfr zMl#D?uIoMNZrX&T%Jrw|X*JjPj9nM^Zu)Ap<=FcvYvb$Yp2}|E z;WA#p`gh&EyndupY8ErI*BkvA z_Em7)Qwout;k|aDRA@W@%7YJ%^DB5q&r-g)w{~h%Ub1M2+wqng8FLm$ZCU$CM(6%n z*Kn5Vsd^Fs-b^7t_sFZsCo@C2ucj#KUCYR5cK9_Z)yLL0^T6#D zi4`jxFSFh3deg|{^>{+5$4(Z#h4QcMJ1)v7utZOo8qgiww!`PJ`2o=#A7^$)>AJ7q z>G)PO$MM3t)dDFxCo33OwmZg5yWt!x)RrpzW68g$RdbnFd=w}RUG+F%t>2DTTmATw z+!>WCPOx8pv*3Y@Lls|C^hGDtEy0=V?5@eMe=Rb~x;bZ6SHrCzsTX!MhCI6dPvmrc zvO`wXn(1qg*e9f3RNZ{4ZWf@Q5YAw35gM}sF(c61}jh)NWcdS{()%0r4 zRHuuD`}{jL==klBjCpdq<@D-17TT-&4rabz{lcR0#Xku{IR?$IeIJ`%ty1u_-KF%C zqv41j$KIRKPkb^e+WcR<`YE!niy7pX6=w=f9K8RM~UXu2WXOHdHcl@w|ES=Kb@Dx4nFSUrN(V6?6Ze z9SI5j+TYb|FWoig{Oh{Tsj;Vf#j(fV`U}dZ2fur_;_2rUBg;Bpjor_*5BDA2A^!eO z=Be6xi8tSOwCy{7GV4CCxb~&P)*ZFof|}K*R`*Qot^H(CUVdfS)J=(scKI{gxAWYW z+H=U{d7t*(@5h^e*Tqa#KEHlqj^yo!>rQ(J*9ph0c{{)6)5$WmInUKM*B^>mQmdW(hrfJGXeQ|E$N+>>aCD&z^nTarVQnRoj(rH{~p!{#%}5iSNZf??Rs* zxBmCJ_AA#>hRmM)MYUUAS2p~)d;a{keb&1VS#LkGd;R*TZJ!tazw%+q;`4S@*Uy}N zZht@gpWn3;yA$l#=l{L!$itzQBCO0YsrGlx_LY0LzgKyd!yfA)yQliu=C3pD-`;49 z)p?U#=r`@~>02M&W7d>k{@2m%`sQuP#*Tznro5Lr_n!6N$N`;SWN_+X_|(PN8N#x< zso8(hDTM|Bhk0xsU!5KAK3y2N=#w&--|;m5LXl7Qq=rqtHp-2BA7@s5)U;eF&BS5I zHsOu&tQVJmCH|{&TE1q5%Dw|d?yBBq$0wgsY!FChe>p3|X7PQ!8B)Jk>nBORWD!W3 z&9ISs*{Qt6=Z|ItS+WQuZ9Be4HzLq-T03j-(+OWam_mMNg2j0h?wXcXp5^E>E6m8) zDG=q}>|8Bc1C?TZRlDYjW^`|<|JwMBD~3z5I24Y|`=z$`fQ46_l#oM*E%$^|0dA}O zdl;O0&K#|(XZ%<=wYj^WdpBS2rODum*n;tqu*gO8=}(?*TCDG=HPwvWl0owRbD^ER zXO<{5?782-;#wy8n$LYlmX7ADbFX|9*-u1Ruk~JOIC1G;4u$uo3VFY?XI{M<8&g)t zwe;y<8HKC+9liwizEpBpQpLRfDNEH?PbQ9y-_IT`5;n^I{HvzGV5Rl13yypf_7!#f zi~3xva8+Dp)r=|Y-M1cZYim2jsc_`pddFS4AG1;pU9(x(e_3H}*FUDebNwGPPg#55 zi1L%%)U^T*9ebBI{0N8*_L{EFkQiQWeo!J!StZbeLGfGM&WLq~{;W7G(X-@_OPbE3 ziZi#Hn)!@AI==e6phBcveP#{FHCYqv*2$fk8>GH-Cr5X%$~k>5<&<6QTNxL;-=z{f zy~VNiu6^psXWvWT2{JyZWmVDGq^78-X!>TsY4=TyzTM&LyE8xX%%8bO%OUymHPPlD zzp8i3*fT!)Te@+>WtWHLFRf=Xw4Se+yl?xPgTG^@vP}41KB4dI)th(h3hsY%`Stb1 zmJmzEmK(cMqUZ5zef&igxCx@_YcJJIYrM(?9- zwoQCjzPa|3;L7Im3rBB#UX(1bh+Q#Rz{o?rLBOE{)EqkkO87~jW||=r2V;u_sFl|P zN)c|L))^?Z-&1wy%F6vellQUld_m6_=XbD2Ug~7{^p7cMq5%H_&FF~?CO2BSSjEh4 z`7hllqp)-JE7xfyi*6m6zQ=stojeZZ27&5sM$VnzxevUW&TqC>aYI7)x6N&iCp)bE zT(RXn*KK{&_3Mcgdz%^~QDN5(2B$ZKLX^)6OBS8AUu;?oMB(_XEt{i+~pN%2RAsp~qHXcq+>dp2u{$*aXmMN7Ug zoLXx7Fsk*-+U^W5hRS-zlkY?QLsyC1Z@QE(WnQ#)=gs^d?IJJwzI_Y6|N9&t$ND|2uqYQpLR^e{a`0+t%FM@pQ`k`*Ih)&--t% zZrL1uJKxf|aal|pj8E1w9yxP**Y3?`>%=_)F;X}8#JW6Sazl9oN-Ow{=L=h&%V8T zv`_3&$G!zidcv7si3dk2Z#PCVdxZ zE7kV~3cHUd_r7gcj)_V4zPyX=u+p1`j8mU}?1;L^vBvQFza7du8+Yb^I977pQGeT# zeIAOtmTrj>`G4eDsp))%Ph7da*M&L09*h6+b&KlUd5@YGPTwapua2>+>gCfFTb!eI zd51g6Gp#!7b$P#K{QOhC{H4mGTPzjX7*t>X)m2-!;jazP%V`We&ogXxyq^}8nYlCI zezwnI|Bv@w9k!))C-=51#k4ptu954O`|Dl{`7izLuRk7c)!MmM{r>4cPlX-+g%sc2 z8_)4rFYiy`cNO{aH_l&o|8CZPrR8?#B7fuGchbAR?`CKG_wUZta~1Ed&p2OKzD56O zxdCU)oez0Z<=bxGeBbve?47?QV7n`c$Z+ zXP?~cf+qgES9bku(&irN;_J)a>YwgD+w(9+M?-Ao zv}0Fv+Y^6#2p5?w%s0q%ljr%umwV*c^_xP`d(D~t=z;2VgUuCP7oI(J4!D@Q#Vear;mAD`hnU)$+P^imf}*E#-Y?+LW4XP2 zeyteG{9Sc>=6?Eer}%>K_Md|O4b3MGesa{CnC;M#exdBV3Qt@A^Uqv@3sRgnEWSH2 z*!1^Jo%z4s81IR0QU6>qy>-Xe*4H5#QuIBxb64g>fN1B?{2r$fB)~w)w}oel~?cHU%z_y z|GC|~N!?tJ4$eID`|;Z&b8@?-S2mZQk14nLy}f=z@`SVLtkGhywE&C)IrpxG3H^Ie zsQi%so@=$=k7fp?8A{D1Mjq;2PD~uQ>N;4J2(A@D^&zMxY!CodgD@!;0dQ@((Ogns z{#`~Jd3ka1^9otV)7ROp=bO-P2deJ&9=omd=Ws*Kgt?O?>n|L2kE_&6Ok>~vhCk)> zl|_=z-zaapW!D_HsO4|g%oE$TS&MrM-Hw=-E4k+8T^50)Z{Knp)~4R5^giPEjeYxc z&bUwo=bHxFTQl=&A6^kF-uE~^?~wi$y|A*TrF{CfyYlwD5{%wAnR$t_x&DqVM>8iL zIr{od`p5S!O$(0A^>dT2Gq;!#+gYM=QZumpx9c~1?)$tjFd>+fgDKZV#eEk3C3N+XAO;xx`DQN?E*&mCRm zn0o3^`QJqk&M`1J2Uiso=zi#u@;P|0;^}X}KaQ&TD#rshp8Ke3wtkI75$j*?$qTN` z)!BCPVEUKbkFzEWxg=Oxa5-z*5?Kiikk!gjmm{DISJ z&uY)VAlvqHm-62-hZXBIzb{%fSs>g>Q()<_#miz;1?D*JO$eUl(7>>AfqrMw>6P;D zR~-86WjvQ*`JuVf7p`+}&{1+wV)3;o5)8eioUwPh(D`f+&vlxdEpJ|yG%lFN;M8Nd zHub<>U0u0r*?OF}rm5~(w9Kbbfpf~qV{!+3WGa%2nFRMP`G0>m*J-btzRMXM>iUY! zmU2vRVmYy60poYkU(-Syul+qOl>4qrK|S<@>BH$vM_eVdPra1gdw}uKY`?|3Z}D$v zY&c#eSH5w}j`EWqMBBwUPCgM|@9_1yl)FtsN@0jz z@8L5yswb2cJ}O=2eNyYV_2U7(R%Nxw|g)b{>-%_^0j;B2*td5Kc;&Nn^G0+ZMD^roFZGKuH7;zzIb z&Hvb>noATNp0RT(9C`EYvSs}h6{Cex)i2jp#=LOu%1t=>BX5KH1#~(^qlzUn%Z$;CNMRbWV1g`9txTyLUxDE$;gmV-p*oJs-(f!At)ClKC9}S*oGSgq z*!INQ{6;Ou^zi0Q5vNm%RT~5jCkvF^&-Y1he%-eCm~HRk32Y2kOB!A}t`e|cJ@b$0 zl}CL4Q_7^uT2u}tCr?Y+&{F)RFoHJ=??(CikkA7KBQsovz{>~$88 zM2=0h;=TF%@Ov}%fNAd+I9;8xF6&wFM%z`_qPH(x^v=5DOszuWyBDdVwUZc}dTP72 zt_f0^cG%dIAYoVn_TXZ;HC)wfV+^kh6R#_j>UKicex$8D#z(KQz;=M)EQabzOwk=gKD~XVJ$iW<| zDYPQwjBzIOZ$@RUtEPJ{g)Mm%B=oB%cqLP#mJsVJ*FUGuHKg0r33tw7Rw!a)R1#8j z2*_J>;L_+KzZ=f&qV#2QA_HTS)JLIPi^OVgm5Mx#>z2Cbz;L36%0rvKiq ze$;>R(&GG$UypYM&;O=XclzFQ#!uzP4_)16y83S9?Pq$Q@BO>E+NkEk`FmE@FFs3d z+X&n+2-R_i`-j5d6Kkp`va}`S0cH?DXdC{{H4?3usJX6Q_WG z<+htOvF~0f>uVUFKXKp1fy?Ye^d+Wv|NQ)|yFT;uEI9A??C8p%yOKM&dG5JpeciBm z+vx>-Ec@yt)cKq1wr=OyU!oQ8d)46?^OdirH&mNT?mT$BKKtgK!wU{XFMF3F&$r6@ z>Fx@)Es<~kM!d86$1&N4)9uPV*B@uERV=sto>MARaB{QxjQv|5Z+kLPqx{>}?3OBr zecf7zb{ea0h@KdAjyuBre6*SowG zGq%+He4jHVJEK%;zjM0NPWDA97T-ly?KmeTHS4tR*Ot;Lzc1WS6)6*H%-u>5>ekv6;mtAz%lz@**1T>BoWfUA{PECx>%2;vE(0`qE zmBEe;u}$29x2_zXB6&Dgq_kXbLS<|MZ|<(_`45l${^%Xznf*OqI$)herR}QDS>81P zZ2oOpMeAQ3e&5!1ZHe{0{iQC;{rvikS~+r~4yMjKoWEz1?%V5z3csYXGY-FqX7AWj z%GbiZ>+qkA(l!5Feid#v=NE`etmgT0b#6nSHiKkf`@+($i-(^qU+jJV#v^`R@r&Q( z^epGiUUqUXuc&s1w$0Pvs#$**wq!=yZ1oLZk zEi>)KC!J`&x1RCP@`OWA_yg`U&vH~WPZixPTPl72j2-XV^qZWQMWWL#+)K%nb9G-LPF-5cx}~D-rHQ)hg=oD6P7Cf<2Yxy#7BbWP z#<>*}&({7^JoR+le%s3A!>RlBeNgnOo8sH|+VUeu&(Z~9aaCNq0&Rl>W$JDnQJuo` zc3v~rMza%BC9U*~<(*%cZ7&P|v5oQ3=IVB7pXDAuQkw-tlB@(iK4YA8QF_-J!Sib! zYP*gn>{)(cUHeAkg`N8@R2|YiS-9|nudWh@>UlYyFD~N7jY}J6CiRQ!?wwpEdikZNRo9>#9dVZz{$8+V4x~CKl({2F%>Wta^P;a^{75 z39~j`+wn%V4S~6i=`DjI!Igd!DfJvFDkVy~|LxVwzGLzES8QlL%AGra4btZ+>|1_xXkG zgOj3ZOy}pcH5Z+jnKa4SE;{YSj)Oi+Uwh=2ovSr0d-o_S=T)G={dM!5PMTh9cTBc% zQmxC&{*f7{+b**+S*_u@){~j}-{*EYOjmB%o9bZ8eafXu{nX#JuN`AzCN0SRQqi)Z zV1oRWx!>HFlD_5i+C>(MhTRr^_u$(lE3LkHlbzphU-0E_!QY-u5yka|D(C$-?o<$d z8@p!xW=Vk;@{_ljSWlWA>%DmW*IM?ki(`8}8?_X<=XsqoH|Q>!uHAbr`hVFIxk*X8 zk9^j!%wyaXz}90b?}Tfs6+Ztz za;% zhei25n}5DodjC^f>--J29P2fD7?;Gq?JtfuFR}|>ELkVhI_LI^>x6~-_dM`=#>y{O|2almAOwcq~8F_qpYQIjiiAihE1$R; zFrDGKY4!zu`Zd^}il1;>(ImL$_ra8ylvPT z1CGsKt~39zi*O@2P|_TcpR4WaR}t%kP^x{J30xiq+Ko5x-V;-j=0v=hQMYzC01j z*^=|vdHu`XOpOYE4|Ei65&KjsuJCh{gTU;U@qynR6khClS#j%zw!o7RUD1eJtW2T5 z8|xb1Epxa~P`705yG;vx%X1$7%Wt~inCJG<<=qq+9=AUt-U=Dn_FM8yVw>N6V~mqN zwb#6Vm3uX(j*S0>|9d%}%Vo;Ao^bS7W zqdS-T!e0fkG%XbId?KJ%{L9eUV$}^NVITWhA{VZ|O%`~1epljxU$64gA3sUe{L{5d zyYa-{-u}hvf$xHUIXx?~h}m)Kz3ZwKdmNngyzWh9@|n5$(qG;{jk_gkCbqj&Cd{jP zeM}*GQnPbrmE}p(jBQib{k`$ox8{s?0ISo|Rh9Ld92N$gacJ~vz4JloirFzyt|#xp zADmrfd@f&0MCnPu>JQ)2E@-o8wLTKs?{Khg{#VT)i?to;2X;yaykq+I+(UHQE0x7H zn?<`+7tCm0b!g805Dlx1Puz~G$Omp{?Mks@PiRk{xag+l+5|Ty*Hw)pwJFbZ2U<&pW?v^FW_>Q@1^txXmcsXuf)4clxG7h6fx|XA6Fs#JcT{|Dxi+7RL3w zvX09fj=xOz^L#L;dQ*}_cmItiH@6u{7x*sR{O`bd%ktDs3naxqEMdGpf05W+?ywV@ z7uLG2-66tXrS@HNdFGSClNzGCWHcO#n%Oa|z<3%3j&;PaK#|{p~ zL+yJ!)xZ6_@t*O~s|h}q*~|FyKHhNC>c6o&UteiPl4x+h=dzT0^K;a{0&zSQDigzb^Nz z$@*l+cZm}+?e`>?G3ENahUfqOy=;H)Q~K`KXSX?zG659;mymWM>e!{qmOPu9QscGG{} zM(6e^d1Y@l$?C6Rp2+DQ_n{#2?d)5Z)3?nrD%xMS^R&>+f=}z2T#^k`VGf#e{T0Z%)H*Ty)V7a8~E?YB%Cuoz0}?1@295r%lTcK*;31{PW|q^PIJYYbH7i=thpw9q4cA=;f?Fh z-iGTsvdy%eXtT+&?yDPNGVZoK_T}cb_g#{kA7y6#KKGU_cQRqyL%E1l|9wpb04U>+4zBOl( zblQ!dI(t$Mx=p(LH)eg-zP49892)vphF7coe$BdIzsQPEQ)A&YsgGLELpFKvJwEsG zuT_Zm>b(IMPd;C$z4@M{Uei0j6*A}EwRBC^*jW|)Y2v~=o}ubiD}oNh1dn9|g|-=Scc-|ZFeHyf1&DLR-R`gh~bnQNCMSG);jaeryCFg46-SB2;<oUmhY$TYdYji>bD3{&OI%3XH`{Fb^Ah%&yyUg8h?HC`;feG zo5@3V0foSF=RjW;r|p$R%U)h@5IoJ?vE@#SlUik`^Tw=>s}F0pK1;p$McMBfyYO>0 z>->e*#f^&=$}nCkF*nOneZI+VkKdYrFOQ`2IG8=QdNQ%@THW_fJ7nXW+s*6FJl|t? zxACjIT$ix=;#1anwkuX}Ji^txGg+lTNT()S3c=|PjXo{>@dH#B*$i)}iX3Wvd(th|X_UP1Wp6a1{4J{@~ z$H%gU*;C^O*rKlnB!^F zV{%vY$hIR3+B*FUpXxI&c|5;O7jFTKbIbN657aD@#{@; z!vU6Sp`zapWK~@{cVZ^P3WvCZS)4jca{11-79}lOW3ue{n=4&1ahE4(W-M=%^btw6 zU-pB`q;{dFh+ab5HMXB-4i59R8vlg2d!KU&U!=+UA*SMm71QPT0N&$HMhkyE^0$gO z<2>D$>F!GZ9TCozj@HKuEgm&pnRPGOe@BF3#G0EEJ8yl8I=}2yVyupY@xse{8GnX) zTbGMiZ`ploS9iqjrmmYU9LwJ9mDAb6U09?p-p$FuIxW93{pXzYeY_ifoVYpn&d*4t ztY&Baz(c2fYUZ9@I5}Ql;dSwr@}p?Zp!kXIGAepu%DpHok_e+iPJYY(l8@Y-==(HbpGWC=>+SEe@MfL8 zveP-B?b}2BB~CN{J8`dxJ$^E^x#s!4#AGCQ~~W;}3f z>RJD#5#frG`VW&@-DEhpym!9Y{V-L{Nl0~@@ev!N)O8LsOClP3rB6INd?k+Cs_42R z*YS?16~${56J2`s{^&^CXRVQGD-fKu?qBJ9$A8}yb?Pc5?p{!HWy-d3>3gcTc%wzg zmX45z-%stlefW^<|JL6x&S_)pTLB^jJG(-{uV(zrO|-3+;_ z9<#5?Z@PFQtmX0Fdk4;K{NHbJZQ6!kU3+f^y5{b*&3F?T|J{G0mZID&xsxuBSS(BK z?@%$m=lg3S@7dC;_m1~<+$stWC~GaZay`fyb2M;!ovx7Tl221z7qLy&aLeRgw?!oA z`+0AsVjijY=}+T?9zI!JKBtN$HFHD8r}l5Eac_JBKdrs3yz_pViA>~$&Z7R7C&$(= zUHnD(+)2m$eL7sZZ9CSTR&wN&^1u6=sqNjJV}kQsnk?U43_7qULS@nP3oA|Uik4dO z8fahA>wK21^`%G&#A0_o|co-R&FZ{gy4+?!&ceuFTdIrxz`X*8ErX*m>tM3$6F>Ll*?g z^!_}}U>L)^S4w=nhJ^k76MSJ0EMBfy&~@^F7b|h8LPgRPOw- zQ{7Q)UcAx&=wiixDLhuTZ{ABZsjs)3I6<~YUSVPJR@o`lih?$g+U~gua=?g}{g;{2?_y>XZ374L|cb>Ttw z#1+>>Ryp)C*`HsN%LG%jC`ht?;b%J$)!TKBj zd#n9-c00R$_uu8qE$9E#iue5A+E6lkaqv?XfoR`9Kj%IB^?2ts@5RA?<7@ugWq$ee zdKT|O{qAZ1-1`C;bz>`+_I8{(TEz^Sjg-P%-_jxIa4+70XYTpGk=hk+b_$(;%v&2` zx9@lVpFcZ#ci6n1?jczJneElmtS5*4f3i%t&e;)mtbS(gwbVE1OV{T*KYUSq*muFWv3RD_9Vm^IfqJ<3bhg;+Je z+jeoQ!1T%CQ!d=pn)~_i=XpzlY|MRcs_%_6YIt`qO>=LH6`!~4&*g>Tg}UhLoS3h{`|4)r;WrJafV;Fmvl{1 z-6pV{X~F(uR`+HV$aO6~oN#2$_ajT>PKo`_wt9_Dx-W1Dc_cPDwPTzKAQLxsm$;*<~ zXbHc#cREJWMEB{&OQI!wk2!sO9hOFFxvAfpu0F{sjF&w%d!473a!+>N7PSYFUfa4J zukp2N-xjpjR_R%*;;Q?n*IG_G^kM>1aKLfu(U1WHU6{>pWW7oK)ebKaAwQ&|?x z`CxKW{zFS-^-)2GI7@}ipF8X3d2&qAdXmr*-??Jn<(HWqT?>=)Kd;;;$0=ebqE%eq zSemK(V)v}VB7grYRZ5$pX86xL9VNQ&UgUTGsf&i(fsghVymuTHm&B?hhnKP(pDSxPF3L8Ts!t3*yk2^qsaof>e_W5U zPA#ndz@t1Ne*gCao9%kNj}@=Ad-`%G``oDA=}VT*S#5ESZ`~u#J$pKTZ?|nBh~4 z-shc9JeV9eomU`D?pKzYyoqlGTkV{}NQ;ap+Gb4~EVyJhusB5}ysg%FvPH4*#?e<=$F-7NXLj=cieR05=bXP)T->5x zC$v^^ib_?arY@4o^lIcONxwM9ddtr1hxD#Rx-lFGl}Z2E<19L(D zu~+uF>>}G1G$rp)SJ8Qa(xk2bn|K9wpITvkOK-{}dp?fPsyUr@w>sXfl#Gz)uZrCn zbwyH4;1E;Mt3n4ggRMV1k24)mcx5BXA<8kqjio~}I4B%fBQAuxRP4IV^nrCu&|%;QX`jW5#OuA z-ajI5`7L!62mFcf06jV@%F5PrXTiT47A(l2e^-5|@UpbuWcsKi~+KXexTdrIG+%W50d*PHC-n)$7lNrA=8P8g?|IinO zyPfR|9?UDg-d}hi(N@x7N<_i0$FiJ!PhBGO7A^a0npM1_w`D=Kh8~M(YW1WmV!21} z?SIz(`}o}B3eO83tiG(+`EkLK?^R~Sa*I2Hj+?tBmL@!0dHk4yK+$ui4_x61IU?*_ zc1*HrC9~9IqD2DjYLhN2?0wAx|Qx`_jvPjp03=rG;xsR_O{qzol!McByCoyu#P@4>%o^mhQ5NifV1! zkYpvo+n_C6q8j1lz4hTHwskMFoG-vNyTy>Vce?c@wY4TvyU%auelbb1ge%uv zJ^6O_^%6twm;a7xehaMH`%bGwI{44-^A{&C-Bo0^Gx@`X>Hng6ZBJZt(TY8HJSp;) z)dA_tzK*TuUQP@xW76F#7cq0*qxp%R{SURyrA;lFe$Gq&TFdr&R_B-A0S#G8uJ1Ub zKjG3`vET(^n~iZzL0r&T2)ug^Bao_cRZ>(#G$aBQJ`e;rv$mH8BT?# zv;H!DW4~o~x-h=a?&cM_ZRZR5zm@Hfub2PGar@On#gJWYCo1#g6a15`r-j|ly>>WR z``qzjZy}jGn?&D>vP}^`bwHVey=~jmrZo)WN=(bsu8CeeXZv*L`!&a>74kn@J8RO< z?n%`fPrBO#%;eAGZEAKZcq(VpTg_6rsJT5R^_LAtLmmIOD*=kXn(dM%@4mrbQqaxs z@}^9X>1ku#v0nf855F8sv*DETmM~ z@V%<_Xv?jrC52!5b^oLawDA2)T;GvM6VMb``QOBLTHF$`Jzr0Agm9Uie9Eb?elNS?w{=)n z2ZLHqsSZ;T{cG2W8f^OMsq^&vb$cJvJuNXRk1V+~)YL>$t6wrz{oXyxc>ny@Yi`dk zQu2BpA;>bpoNYcFjN0e!;JKbs*u&`;*XB5(R|u!kR(;L z^yAAe-qeYfvitWfUuK*s<$q`WnUy>HQq4BXtG2G75s)ABATb8~PA%c{7lo%-&V68~{&onbdgUAgrC)Lgqc`SVWi z47(`Azm_xIVg7{l`c{eXS+muSc5C!)c%)o&`|Y}4ZId|*cOLUvYAp1^BHebKrtNhe z)|{dcj`P1*mb*^U77nUD{d2+lRJEz1DrdHMo@ZxxZ7yHKsf?936f+-vHC^KU zaaG4g^IuEUKd?-nb9R#214BVMqgAI}D`LNG3@Ph;V05L{XUT>r)z^*3UvDz1Vw2y= z{wrYJQ;qA9Q?#{wQ@xAVe9?aXFVoLTlW|qK>)Sntl%fm0H7b`|sJHD6J+pkOb9Vo% zz*&ylBW}IquZ_5v+F@ru$v{|JR-s`Jn}f-*{O>0Beo85ATC{i1q=E&uJB`x0Ry_L6 z9QROLV7l>R(?5qbc4-+_TV3j7&foKJozCvypo^Ox8kY6HW}A|Feea&xw|)wWt@*vv z=WosR?JpgRZoT<$_a*N~nr`dfC;d+qInnl7ytaQ_hy zcK_yyzFiC<=epX%FUPKsvDvJ?sU_I*Q_ZUCJ$nLf%dGl*L*BHNtFW$r-?BTN8xOWQ zEIbwDe3oPP!q*Y!i+Wz_Z>&lFbx`i_1bO?{ zg{oQo=$_2_PI4F1o}<6F?>$wuW8TcQJ7x=9{GjdCcWRf!8uNKxhrEo}Z}j0j6TQAt zHClD`%SP5j$(Qlkv*mJA)cFJ);%pT{a#kd8YL|%RZeIDDwMj#Um)&&hRp}l9E-~MV zo8^w1I9JQ9Dio2HS;$=ZXO2|=#lI~}yx;7a|0vj?)=&&I*L^eSrLSjMziwC>a zdAp4X4>Y5e-eBhLZ&}(dA)ftJX3e4)ecroM9W10?mRPP`>8r}UE9gy=rhD%VExrv3 zLg%0GpZqIYUGd|9mQC9DYgd$-yr2fA%=29AY$1tecRXGd=Mm+h^(fpBMxmtclbrVKB;XHC-p*&%|^! z{=g025TVKTCAG(QM94RVDF|ILN`Khn>AL2H*UCfl8CgQ_B<-r6(3c64_{vqYLmbisoVJVi1UI!_X8u07lvKxV}F?Q_~4`iSM@DhnXdi)u;Cqh ztn<=BF6N-Wm2M(`D&mAodj!9JQ;nFbW*D^M^Fo`J*AWa$WyKE7`g!;lyU!KP7>;wY z2Nx;J&D(Zk?&Jn3K4rU0e4pjnm+(CNIr*Kyb>^vcr%lY(3ieKXb@`8afz16=QOg~z ztYY~snLYN3Ufal|l^pTHhV9@F>2;qI7ugEzy3FtVkSpt}8mG(DX1l*zd{=+@T>JcK zT0UiJlCaNIi@D6vg%gsQQyx~&W1Z^X zeP{Ljb3cPqS1{bo{1{OAzvS_B_Z-37r#KbX%S|}8D>bT1)GC58b?wv8Ig9mOd*wR1 zv-%q|*L;7uRR8&s>Djxzf})G7e?-liYLXdM{qm%myT$DjakpkQm)fgFe19CCDBO0?J9~DE0YLTiBevEs);XT|HJb0!L1PnON&LiM14H1 zN;LnJK0eE^SC!xC-JLr@Ym%p?71jnxwaZ)zi#;OvUaMEF-u9O}LnW`?w4&K>|6bpg zTd`o(eQ}P*jZ^0PD^%=aS*ZAaUqy$5<{k5fTk;q7>z_=PpKMnoeW0$r-|;PX^S^9H zjh!+!<-4jrY1+@YJM9VQ=DGrbubh$#XQv-L{+7E~=8EXj?t-s}bFb9iUgmyk;_n+X zUsd1ucKUW(bKl~c+|~qL2Dce0kAI*0@n$#M-+A+jPF)u6?*Ep%;qj{4+3_C(HAK%; z^({`ZYxGf^!*}ZRy=R-|e>|a-tDBZGd#!=R_E-)Bwd+Uq{q2|f&5ZdQQ=mU%FTZHw zk>maM&x;&;dBputg+*t7_vO`LF@=v035whQThpE1@To_jOt$2I#T`@5n3%gW?#wx5 z(Nq*-_1uf0^67iWxRtJ}be1hBU-NB-Xv{qa<%T^|8&QJweLmU`|L;jS zwSUN6hnRBSFP2tLs~ebb-my6PFeb9C1HIw73?@n>+~2FVFq#ktSA zvIOU|DOA1WY&O{{wqSo+l{w(OkJ0GMD%Q;7@0Sh1Elo_b_O;nvJ6yc>ODVgu zsIQe2_sWD=pYo#P%e;b8d zm0JIVKp zeTmPW(ZkjM#yPHR1^v@U*w;>+%_SXf_IO@z`mw(7R(0xHEcyTHc2-C7XHB_&w_WJ=XD*f(cSoP)Se=E`}ekBTiGUhe3RyXQT zJ{YpU@Mizo&Pf%^86TZH@!~wE!us<^vyONvzR3tE`zbsvf5W3oSEVDQ55{~po$Pbv zB#YOrHKCh2`=wU*J$xXyTzrF@rt(LFC+2tVKB*5lxk#@)+N5!E>*Mz~l}dkIJkA&x zHSMZW>AT1aTV$HLMDw;+t`R@u@4P)*Eueq$@uR;gXHBbE5znagH~Y<7nJ6FU)OB?) zOzJ$u9?tx@T20M_UHQ|Yi-B)kd*%x3s-BGOjo2?Qeuwk;D$hM#&e;zeLefp&F26WY zhdrm^!=kEyNa=l76Iy-RE>`|aGQ9lt>1^}!mr|UIk46@pGRnKz;VSjJGvaWLfa+|% z{?Q zO<^pr|v1Z?=nzVP7 zKc4$DT*~-X&!rHR*4Q1iE;!XWxwSq{VQ%o&ho9EJ@=@QQP{n$k<$J-J{ma}-SH99= zd}8`dpT0q4skv@A%g_E8OL>%UKl{B2p&XKD<~q&pK6U+z?mNeT?)i3H+yB*HTrfuwJ;l<@%I|FZS8h|GzQ0L89OAui$pk(q=nHn>7tu9estb9Jx*_zLF4IW+=6- z^}Xif+z>vW)%xO^>MrVz9(BH;QlcdMZ<^?0$F$U5J$`;U>lYfbb6?F*JlLce%Twf? zcfsO7aqHBytzNv_Bm%yvuerFz!c=a{#;~e)3~@EhV*YY%I|_v3t6#H~CrV0Qi#=Yz zz?;+DYrEk6Det$Zw|W^JvAC@&Gr=qU=;2(Md#}vjRGM2I4?Q$-X_9(>^QNr}=gymK zAI4F$q1AeYY4#cO>=$t+Q;w#ValH#Um@$=YMZxSaP3i1|CBfhBe}1j^{oA78#zl@+ z58ZSn3JR7--MCubEM_`$o#^XBVweAJHgdjQKlxH~;)1uSr+IS2c75N@yg=V|`8|V- z_j)VLZq4v}JYhlZ3Z}VPYZMM@ZM)_aBkkK>BAfz>ewVsCL2E+S z(VfLIn(cWPPV#DgWSMaNdUH%`&Yy^sBe&0s-`~u=$NbNpT2(Lp^$s6C9nycywP$9T zU*%)hyGnch-q~xuxAa2AX8+JVdvAKb?VbNw+x)_e$|Ki5>gBVf8oiS-I>Y{IWAXFX zyi?W(ynOq1JMYqt58qsua+JuF6vwDe(VuKRwf5NQ+t+`-)J)ZO;qde0{gu5}HRqEr z_r;epodV?QJRh|FTR1;CVaYYV6LDYWo>gtKJj@htpP&C`fos+8!~fRmt?2$Fr1ky% zWM{K;Tjy&Q+Z5;Jv`Uy=*m;9pW>3!hY`J^aXEbj8zAW6+CO;+y%dKgS)6_>Q zj4ceGp6`f2*_{U8r`@qP$)V=X4};gucCoG1wHylTnJ0)}OgZze@>f}$z)p$vq5|_5 zObmL-aR2z{%^mw@-esBaoN>|pJyRam=jaRFS-JStiQw(WXMX+1 zmtyC7KW<&{dg)ey>$ihl@~>RJKJobB?4>Um)nm78>JK|Bdw#;a_X~nQY8N#7o)8xF z*48`PJWuR;(%thZZyL0({q0e?u<#?pN$q=I7F>4ezIXfNm(oA4)(b6tZv0Ejjj>gO z*V5dxYT|X)j@9?`!Zpl(?yfs9U!lQ9d_u<~t^9bCnh0NemOZaT%XTD-+TCcVe*D=34xwACCf{HUAw=V*X#aEpDXw3_bAWy z^IW%U#dI_IGkz;tPgL{Q{$3>8B4YRIORuSH`^J#``!`ZAO!58oD~a`rlm7aXp7E}4 zLi-)>+)4QNt}#+v+>-Ih_ZXe%J7=y5FYvWsOWnWVzxetilC!VA+PAA)Mq%U1SE}a~ zI1X~{nc%YG-NcotJMTMMT=O;*w4HH5CgNIw?4gZep1P~+I6|%lK5(^k5xQ#e{g7tv zRQtZ5(!$122if*x$G?Ogi8EC2oWXx;GQ+3e4LUP!N^duldbT`AY5P&fy?#pq&Ri)n zW@TOw-FVeSxPoh)*~I)kYl2p^J+lq4?ZF1^N4`axwgAG~dGwnNAsRSh!-hOt@#+O+|FIB&$C;|VIHqXOn&DK!7l+jElRRiYlhuf{ir!COZ4*o!r;uU zrRK>;uNen)ehq!(upnveqkEH>Ula$#Oq$N}HOYI|jydU<|JpR9tp4$PQqhd-v8{Zv z;{AIrWe9agr!nkG&NRFhUfOYV;pv`zT%YovE`0dweEh%enCapCC%#=0Ds1|h_Tb#9 zmX;SSuRYhXOh{*9N|<1{IK!()eZlrR$CF7pv*$iL_?~qs&-xt_o0!0 zADXdW`d!B1x^l~>=dS0oIPB*+E_CKwK|2#af3+T~w85cgrzUTFZJw3Vv+tC(Kv{3~ z<9}J&J9X9{J}PwRUTn?0{^#%ZGVI#8+5OOD) z|HR{GU2hirHVdje&z53q5z@M=DX;a>m12$y+9C&4g09TYjh@Hf(ci!P?w>hlPM>ys}J-4*`#LmQXK3xjUB}^QWORO1{X8POnM5@)-U0cDj>T?UI z!^L=nbHduT-nmXTv%|~On6CKn*Yt6{rgTe~DWM4fJcL)s