From f002ed1edd3cc154b9366af698229d4e72d89267 Mon Sep 17 00:00:00 2001 From: Sylvain Date: Wed, 21 Jan 2026 19:18:51 +0100 Subject: [PATCH] feat: Use cryptography package and verify certificate signatures --- readme.rst | 5 +- ...mple-attestation-vaccination-certifiee.txt | 2 +- .../vaccine-invalid-cycle.txt | 2 +- .../vaccine-invalid-test.txt | 2 +- .../vaccine-valid.txt | 2 +- setup.py | 6 +- tdd/chains/{FR00.der => FR000001.der} | Bin tdd/chains/FR01.der | Bin 9736 -> 0 bytes tdd/chains/FR02.der | 0 tdd/chains/FR03.der | Bin 183439 -> 0 bytes tdd/chains/FR04.der | Bin 71941 -> 0 bytes tdd/chains/FR05.der | Bin 2438 -> 0 bytes tdd/chains/Makefile | 18 -- tdd/chains/tsl_signed.xml | 126 +++++++- tdd/doc.py | 12 +- tdd/keychain.py | 295 ++++++++---------- tests/conftest.py | 12 +- 17 files changed, 280 insertions(+), 202 deletions(-) rename tdd/chains/{FR00.der => FR000001.der} (100%) delete mode 100644 tdd/chains/FR01.der delete mode 100644 tdd/chains/FR02.der delete mode 100644 tdd/chains/FR03.der delete mode 100644 tdd/chains/FR04.der delete mode 100644 tdd/chains/FR05.der delete mode 100644 tdd/chains/Makefile diff --git a/readme.rst b/readme.rst index bfd76c5..e917846 100644 --- a/readme.rst +++ b/readme.rst @@ -76,8 +76,9 @@ TODO * Full certificate chain verification - * Automatic chain lookup and updates (for now, this is lazy and - there is a copy of public keychains in package). + * Verify revocation lists + + * Verify certificate validity time License ======= diff --git a/samples/exemple-attestation-vaccination-certifiee.txt b/samples/exemple-attestation-vaccination-certifiee.txt index 8cce265..e578ef1 100644 --- a/samples/exemple-attestation-vaccination-certifiee.txt +++ b/samples/exemple-attestation-vaccination-certifiee.txt @@ -1 +1 @@ -DC04FR0000011E6D1E6DL101FRL0DUPONTL1PAULL201011951L3COVID-19L4J07BX03L5PFIZER/BIONTECH - COMIRNATYL6PFIZER/BIONTECH - COMIRNATYL72L82L930042021LATECQW65D5MKNORNP2ZZJQECTCZAMG7H2ZTV35Z3PWPKJBM3DTA3YMBOD53OIEIXDD4WRSS46M7TG5EUWDVBEDLHAF7WTGU3GCTMHWRANQ +DC04FR0000011E6D1E6DL101FRL0DUPONTL1PAULL201011951L3COVID-19L4J07BX03L5PFIZER/BIONTECH - COMIRNATYL6PFIZER/BIONTECH - COMIRNATYL72L82L930042021LATECQW65D5MKNORNP2ZZJQECTCZAMG7H2ZTV35Z3PWPKJBM3DTA3YMBOD53OIEIXDD4WRSS46M7TG5EUWDVBEDLHAF7WTGU3GCTMHWRANQ \ No newline at end of file diff --git a/samples/kit-deploiement_dispositif_de_controle_sanitaire_evenementiel/vaccine-invalid-cycle.txt b/samples/kit-deploiement_dispositif_de_controle_sanitaire_evenementiel/vaccine-invalid-cycle.txt index 9cee48b..cf238bd 100644 --- a/samples/kit-deploiement_dispositif_de_controle_sanitaire_evenementiel/vaccine-invalid-cycle.txt +++ b/samples/kit-deploiement_dispositif_de_controle_sanitaire_evenementiel/vaccine-invalid-cycle.txt @@ -1 +1 @@ -DC04FR03AV011E6A1E6AL101FRL0THEOULE SUR MERL1JEAN PIERREL231051962L3COVID-19L4J07BX03L5COMIRNATY PFIZER/BIONTECHL6COMIRNATY PFIZER/BIONTECHL71L82L901032021LACOJQQOXUNIHI3JIQJIWNZ6LIZUB5PDMI46BBNQVDYJU3QLXI647IH3DML3UC5GJNIOPDLPDWNALTKUKMA5O7FZW5GLJCB2T7IDVRDPQSY +DC04FR03AV011E6A1E6AL101FRL0THEOULE SUR MERL1JEAN PIERREL231051962L3COVID-19L4J07BX03L5COMIRNATY PFIZER/BIONTECHL6COMIRNATY PFIZER/BIONTECHL71L82L901032021LACOJQQOXUNIHI3JIQJIWNZ6LIZUB5PDMI46BBNQVDYJU3QLXI647IH3DML3UC5GJNIOPDLPDWNALTKUKMA5O7FZW5GLJCB2T7IDVRDPQSY \ No newline at end of file diff --git a/samples/kit-deploiement_dispositif_de_controle_sanitaire_evenementiel/vaccine-invalid-test.txt b/samples/kit-deploiement_dispositif_de_controle_sanitaire_evenementiel/vaccine-invalid-test.txt index 742973c..e137110 100644 --- a/samples/kit-deploiement_dispositif_de_controle_sanitaire_evenementiel/vaccine-invalid-test.txt +++ b/samples/kit-deploiement_dispositif_de_controle_sanitaire_evenementiel/vaccine-invalid-test.txt @@ -1 +1 @@ -DC04FR03AHP11E5C1E5CB201FRF0F1SPECIMEN NOMF201012000F3MF43333F5XF6120420210800QEGUIDRKTYXUX7BVG5HQ6U3SOCLJSMRWXFVMLSQHPHT3XJCRKIFALVLWWHUIBHRBERKKY3MAOGM6CPMOQXPY2WIKWVJEHSAUUOKIGJY +DC04FR03AHP11E5C1E5CB201FRF0F1SPECIMEN NOMF201012000F3MF43333F5XF6120420210800QEGUIDRKTYXUX7BVG5HQ6U3SOCLJSMRWXFVMLSQHPHT3XJCRKIFALVLWWHUIBHRBERKKY3MAOGM6CPMOQXPY2WIKWVJEHSAUUOKIGJY \ No newline at end of file diff --git a/samples/kit-deploiement_dispositif_de_controle_sanitaire_evenementiel/vaccine-valid.txt b/samples/kit-deploiement_dispositif_de_controle_sanitaire_evenementiel/vaccine-valid.txt index 20ab6f3..c1ebedc 100644 --- a/samples/kit-deploiement_dispositif_de_controle_sanitaire_evenementiel/vaccine-valid.txt +++ b/samples/kit-deploiement_dispositif_de_controle_sanitaire_evenementiel/vaccine-valid.txt @@ -1 +1 @@ -DC04FR03AV011E6A1E6AL101FRL0AZAY LE RIDEAUL1JEAN-PIERREL204081952L3COVID-19L4J07BX03L5COMIRNATY PFIZER/BIONTECHL6COMIRNATY PFIZER/BIONTECHL72L82L931032021LATE53QFM66P34HCD24I46HH2XGIV5OXWQ2UR5DW5ZCQBLE4ME5WOPTR4S6MDYGYMRGFCRNFZHN26NA2KAJDNERKKGV4FSPCO6OLPTFELJQ +DC04FR03AV011E6A1E6AL101FRL0AZAY LE RIDEAUL1JEAN-PIERREL204081952L3COVID-19L4J07BX03L5COMIRNATY PFIZER/BIONTECHL6COMIRNATY PFIZER/BIONTECHL72L82L931032021LATE53QFM66P34HCD24I46HH2XGIV5OXWQ2UR5DW5ZCQBLE4ME5WOPTR4S6MDYGYMRGFCRNFZHN26NA2KAJDNERKKGV4FSPCO6OLPTFELJQ \ No newline at end of file diff --git a/setup.py b/setup.py index f7a9cdd..6317858 100644 --- a/setup.py +++ b/setup.py @@ -12,13 +12,15 @@ "Programming Language :: Python", ], package_data = { - 'tdd': ['chains/*.der'], + 'tdd': ['chains/*.der', 'chains/tsl_signed.xml'], }, include_package_data = True, use_2to3 = False, packages = find_packages(), install_requires = [ - "pycryptodome", + "cryptography", + "lxml", + "requests" ], dependency_links=[ ], diff --git a/tdd/chains/FR00.der b/tdd/chains/FR000001.der similarity index 100% rename from tdd/chains/FR00.der rename to tdd/chains/FR000001.der diff --git a/tdd/chains/FR01.der b/tdd/chains/FR01.der deleted file mode 100644 index 8f82edaa7c545bfc057b3d5dfdeba9910c968866..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9736 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 J;7MKA{{WL=t(O1* diff --git a/tdd/chains/FR02.der b/tdd/chains/FR02.der deleted file mode 100644 index e69de29..0000000 diff --git a/tdd/chains/FR03.der b/tdd/chains/FR03.der deleted file mode 100644 index cf2276da97ba0fdca927d3029853b89d823a0b26..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 183439 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%0Akto^6b@Q=0Q|JnK0 zF*MR~(6iJtvo`|ZfB6iMATS}&4PW=1m0B1cY~mDMnmp^vy(+ns{Na#+`+{9>nuG#gC%%+GK)i` zh5^WJ?;gHE2||Ug#V%N^mFj1pZLo5)TidtPCy6_DpVA z*zRj*nwFYTkC<+^U({R2#4DGx*fanDZil^`yri3=)6o4+~1joaGlH1`Q zl3P)>YQG7=Rfn@N;*-FB{SVLBe=mXm_d9q+PGD$6!6?Gns~uxC2jM{l7b%Tu35>qNlIzG88FpD=#SB>c_6J9y{83uhT7s84eNqI zoz8*y1k2|azQ2WLe&PFjd|wVFC>%r$ALUP|Ta`#_GC$5fp#0%zeZ@Ca#MnHTtZR=H z9-dsat({ok2S!`H=-PG6+UhbgA2o0g4^Sw0iHmunwikkHnl|VZrrwH^nR`TOX1M18 z>RInY>_pWu8(vhdBuo0wEpE28yn5vvCUH^^Udt#27XFY;bP{N>5mf-a%8RvX6k+w+ zErj?UK58@9LjJnmYoiC&eo&ZoV&e0yYlQzJ*vEieI5$6%UMVz09tp~N!dap`u@1)D zA&5}7L@!z<9(|M(A_bq}S1x&Mqn62g5ya@nBdK*L)$|9B$PD?}%;T0DMCc6Beo3+# zWG2`mX8N8m{D(*EUq3*!H*!LJGvKOm@XD9v35f=C;;tJ+N+jQ()KzC!%jXE<)7ux_c z<*Q9nB=!>*{3m$aQG4JmNvs4f6s5alrSm#dY6D;RI29UE8^S==xCDYBM6M#Y@eCJ8 z=N$1q5Gi?66H+ZHJA*E#)tPeYI)W)bH|NTaM`BPATvJ6ul+SI-g6lZjg9AAlptkTJ z%{>x&Q}H9*cA2LD@1KdimIgzVd@n zi4E);?tHzx7o$AA8>sY!S zqVDd;+kF8YY}PqXzv&thB(Bh)7fod1V%?nN_EymjM*h75sZXV=G9-*Is|FAo&m<)o z{Cukfim61=6KdcxTqIHZXHNtYbf+a~HC}*RpKHR`RV_*vbgPFhM)6D#AxU7~^e8njGk{%a9n(?UWs_N7b^zn;@^8I((OYY#BNj1>H3o-(`JPu zet5+GRS;*O|C0m5D6Z0zm_y&U^|5 z^IQB|G7}#GSMVR{?=LQjt-X=c3!^Vzy)gS;j6Wd1V%m&#gAU?ESuL240|R4L`f;r0 zSB{epZ0-53=b{v@NJ5|Ul2(Km1a_ZK$84@rG{56FsjbLf8}`NG zy=;#PT9bfJ?O}u+_FcG7)E0XBKKCrCfiRG*NBWrCGr}^KHXTWng#4%;-AcE|+GDqb z@gfcsr?mBW7}wp&7`_B+J;mRPqgW$ZtEx-PNa$9egjHsnc`k%JFEHzow|W+_-6*&0 zmF!+}b;8(0(4!z;m1o;8fe0(o@ULDzS8F)Uc-NuB%0 z$f4fuI$`C@VEA>8Y`peDN&$KJl2y4E8JYH^^gM7~aRU=~&mM%Io63-~vsn3R=c0|AxyoOb5tLHV=!iI7 z=suFUJW*oa?8X}S78!E75H_^=GUa zXX4lIEBngnuNLOWM!4xY2F|&>RD9HxlFx&24{O*eV8;%^N=0z$0y$1otH-wY*M5TI z@jx-|^}CnSP;H-pZ%H-yE)3MFR!X_*?*KW_5eKmTVTylQ6bYO*@=cBF{u$(C0FrMY z#}(sO2C8upacO?(uV(l^Tybf^ABheuX95?SF@FgQe%VC%NA^TanXDn)?fEP8i!0|;( z_JJq=FGc=Kk^i$I4-#(kVhx!;gnw--y~t-dYD6f#@WUzlN^b7%{Y@j4gmD z6L<=uD1hz=vae&hv)BNf>b)7)I!|E!vTQz?EPEa7p6n1R-}0>&UKS(SR2h5htF~dU zw?j0jS;e^RR8$|c=298C%1FzM7J1}+&&I@VP1yEdGETNjaM%`HJ{s_>F16!;Mk@d* zUR&1_IZC<&y(Zx=F3??a^QnB{$>ZU@g^=sTk3W* zJ$Z{en!r`Y)0m=lRCvgd9`F0I@S5BrtV?jSIJUior4|bKSG0Tz?O0jDcG}Y- zO&jz+)-=*Rn`-J4GYLLh(GNTvs>V^^f$nFsU-@uAf|B4ois;KtE=k)5;2GNkG3l*U zT|x4arQ&;w^UU4unX`s|61YSR0YoFQ8Iy}J1(6!(p(-pOVp_MAv4e>SrW zUeSoR)KF?BvX<`QWMWm!Z8yPS#C0V$mbqLQQ|}TX0|53c*uIUOqw@O7pRfkHH-|U* z7H&idDB3SVUIwFw1W%hS3MrbYFnjk$xEBlxRy-d9>#cWQY~@ z;E^xO+Cv;32?P2JDw?Nby6iayhMv2{F7(>WulH;FMT}3~^+Esw{8jQ?5<&h7-#=BM z{E12^P%C~brvgBO@PDg>G8lf@XJBLCVEaey(AfTe*Uk8USy7WRlRT3wh~&37Xkc$i z`(IUgf!_xJUzbS|MD*P&|G9+x<#qqEqGq)Xtq|t(Ey(t|{YP-`)oX%c@pT3_*v zM-rZ)p1;j6tIN#uW+%h%_y`P45no6S{!Nw_V(APd9WFt*>g}heHm6C2aOOpT12<<##|sPmB5gU zr|)Nlade|isOtv2u$oTs3l%-k6SF5D4i)S_6WDv95x@X{&4|s?u}b}j-usFAP4$%t z1hSx|u$RS~?pik9nBI8Eu3c>&JdzK|eT6F1ltNhOIMh^(N z=ty!$;?>Nl+^w0X6A&e`wg$AamgnksRA!(zNz4bCUH}XN>6o1ir(8 zLfr8;SDbU4sKRQ62qS8~?@~J6^4SlM*uRM0jPz{Z)0>h0A3FTMHB=O2WaWXq@ruA{ zRQ&&So{*7&h3!jcJTUtG=THjp*1rm+IOCUju<6sfywZ7JAFGvI<@P#N3Cqn@Txb(1 z7;KNr*an(1{1CkYE0Ovcp4PAiNQF++{(%+fP%k=@IGkJZ_Ah?_ZSwoyh~Mux4q?tg zaSI4X3OY~KFI{JSTylRnTwnQJk%o4v4qZNq?v{>tZjkPBDporHs~*)W1*!r1K*y%$ zN@j%p#+tZ{M;aUe#yt-m8%_)z6i*^pVFy*6?KgR*kyI`}be5lNC!D#8ojh~|5ON@0 zQk}vNGLm0c@O;yEY~sKhesadjb^W#BW9luG%EW7{ED35e1~clEsD zORC^^5?p2;Z}o`Dxz&cb1*RV-%QXia+W!e24VPaE(-qD5=2;fg2|ybqLuMW z$L*5(V$G9>kV-{Vg(xg2)$oJ)*W)2)E2{XJtuxXQFnrwxMXxm>USb2*hGqAy^|YG> zu9AHom0m}+vE(N-qP75@ zODCi&p4#A9;k_u{52=(5ZSpsu$tC2X&f;!KY=aP(MMIga-5)?-40`ZAF_}hxDDQ-} zb&oDCyN%%F8;4w4##y^S9Op`b7&f1I1s7`7d~&c_h3q4Os$k={)i)OdV??ZT2nk-< zQ#`Y{3;t}9OG{(f_tfFu_{nqn5gbG|sX`22hQ2d`Kw|L`nd%;1!5HtpPQVEy5vHZu zQk}-J9nY5LO{K)00w&6vR~wu76mC?9fMeA5bYqy$A0E{%Wj}}T$dy%BYcMw=4N^0& zx-G+sc`-Zp=0ngeQu?a-lhUdZRT&XbnAm+@0H_NUZ?0bb39BpXF39BEXQ<73tvT5x zHU36e?1s>`>a3T88fF-SK?&F&J)>8)K-t{!B8@sBQ7^5w##%edK!!lN^Ce z-pJa)2pIS`vNE!E)KS#4H#7bc8rKoDv39iA`_c(u?f6}SoFFvq&Tf_a z0Aw07CjH`$SlF0Wb+No8TR4C?`%u^zxJ ze)$^mV2d4&gJ-YRlq1CmP86EnvBR?o-fleXpWf37!?hGoGVe(IhKhYW_j}XkjT+|W?l)8awNNr9s4ru?Pr0d zrj3VS5UJoz+9lCOzO7d!rLG8VPi&^>hWy`^d&NCsb=rQp9Hz~s5FXtw!CWaw9S{@J z%X3|hwoIR70Wo;{QTvIkAuMU61AH@7D{(LxB^rA0+uM}T`d5X8+@DYm%$DMPXoxb6 z94a4owyq0c2~>oz?PlunC%GcdHQVD~Up&Op95t*+^Rw#JF1Vo#FA_~)LEhnc;8*34 zHlS%WYv1U8n38IF8PN-=O-!0FD{W%_DUhkeVdv<6UrI5%J7>3K#In97rBR624Hq8F zX|hSrj>J9A^!WlfuPp6AKv1|Uc`7G_$GnpP5^Nd<6dl)l>nC{3^=t*B2*;9L7N^~U znqn!Y6zk5uGG;wWkQEL2M$fVH%v3}bUiedbG1A!{_Z}eT-yaEhl9x*D2MN|%Zvt1( z6Y=?$^iKZ-=4*kNPx}q?EJ98%e0MCwsmhq~B0BY!et5+GqcP9$7jvyRLy>!5$BDku z_QnRyUT>HkT-w2SN<3$KX)KnQLtmo9ScfhQdZox|2WR2jpI}1TjqF0$d|r{&GrD%I zDPYqB#5@NO^DMtG|DT9?zHgXk2e4)`|ABdiOiBcDeggv=dqW*r`>sM@SCGCXFxO(^ zWUm86ytRWdFz=$HXK!WX@Ez#uX~|0F>?K>Z?rQOkcwI9XQwGa^IE7z9AM4h3L}x{P zLLa2CO^4<*f;xu}Ks5jO=+ba?N?f54z>NqNMweu10WyA2U^(n!4#>orij&G`zEWYs z59=qfun`8&W`t+QP3g-PJe1pDftU1wdh_Cz0=mIDgR@77+5BXH+%Oxnf9I@&fy1Ze z*hfW-xA;VE@zT4q7q<7|&)&o)96RzSa+zjG%% z_wMAGbAI)GVMj`KXgJ~#NTjG>;)fR&uW6z&@^cAV*9@uC5I*j+MTuEa?>zy*K_P0Y z=a`?r&&hF^K&D(+m( zWzpO!x{HE{;$NNYrGl`@T7j!_AIbX3H11q|g%-<}Yf!otB|H}{uYJo=?~NY5_hB<` zY!qpcR-PB=BvKsT`)6JaOzbte7!924BtCOaT`G|8l1=m8VFZYw1m@{KjHM>RfMJU8W^hVW*Ru$xod|NT4`BZbK9fXL6)i!U6pTC_p9-C41IZyyr9s^ zT=t~q9cP5K-15Th6_=WH$$%9&bmBa55=xoxB*V>w8@gkKS7f8zPk_D!2>RULU77o5 z&VtuW3$)uQ*Vosljc7kSWB<{lXZ#D&vnC?96PIT6w_vtw&$&B2g=$aSOLN-nehn`* zJx-6@E%q5}i*QqHT=AqA(6q+T&SZBg*!fB0=4@i1`AnCb(k^VoC^rGKL z&j;Yi%T$$-CZ{jmZ2EAXWlDAzrel3Cdo8agavzy#mL!&w#caZL} zkZzlOIOS#vKGv%4jF^2g#s;L7d!VX=E8Pjp&ziFeM!Eo-v@{%QSfFb(cF# z8fV~FT(!dyl_UV$kC4@u0n%LI#on+28Otvsq&+YZ31e{-13t~zi{Yns2I`U=FC9Y$ zNo6BU!!#M-?<8&}qAaw!CT<>SxkEZYYim&^bB0DxvRyzp=uw#Z%wj6u`G|C0>Q5i! za0%@7B7fFxP(U9@(05&m%sOR}iXPBSg0%*DI~_+&S_a*9i4h{HS%vUow1*CI zsE~W~E-8wwHC%0~cOP@+nkcseDNb`}c0k!Y1Wj394u!~sD!hKCN`-hrJ0Kbk>8(r- zVuhD7d>d!}irogD#XudjXvJQcD)G!aj2T={8XLB>+~Y3kad74r)ZgSz-T|{QUS@)TCUzD82t(`V2ok)?PpZ1y&EM68& zk4AVo(@nLoijjtb{RHsafxs{L9r*jV0j4R``-gs$Wggn#^3DG*0iWqFfS-e|Y;TE* z5Av8|qoix`oL1~kfwu(j4Ql}ajn1aO`>D)GOS11>a;- z{RQ-Tj$MWJW=56{U$AfDWMu!Rc>pWy8StBN5q-E1XvC$l(&a1WxFtWF$FIyM8yG%H zf)mD_ZClp+a2LYQ#gzVB9;7~VIRI2`>jTVZ`4T3^cd!ZAP;)s)n#kiz792Phf}Hs= zj4Lx*d~9cGAlr}7EMsgU8Zm_{o+BAqEo+5&HcMUP$`R#UJmrVZtj$4qJ`1wA#dXGm z@nSO58`N;>?LA8dX>FipbbP)Wo_yi7@9Ru2oH>a=?jT+YuHjJXpl+>HZvVvPs!L*lq698eFVF5^irNn=Z_im&S- zbA6(;TLp^UHzEPx#Hv zp;)23)k>k74(sZFOFH-o_zNQN5e^ayxZ$JJb45sxpHQy;3QCXJ#vee`f-#fH&EJX?!$wRg&))c1Z% z)MD4yUsFiK6KaG`6@6?{=eIf$lyVALnK?-k3Hzy!<#}=~+zY@q-{VR=`?Qy5 zOMJRdyp^SaGH=;u3uVUFg2RHB$4yJ;UfPl-HQQCvxWfqH9S^3jN4WN>^|cQ2>Wcpto)b(^?PU#OfO6WZdS$dhoR?_J1DL;p9V3@+5PDTr#Z`*{E0E0A=YRUG78c zxT)E=vBDvuvG9-$e53Lvr{*noFbhV(fVlJu+?^|zv{9mJ=;Hp zY>f?H@SSdJ3}NPWdp^TD@>EX^X{=a#pj@9zw0~E?0g8aS!XmB#3f8AHk#(%#cr`*2 zGBXKKwRtw_=nnZxaVd#tev3&kLsv}oGFLy14NeIJ$Gw&4Zj05M%51G!m^5e zngN!PpIKW<4(Qk#)qIMYHh%)~oj}AF{f2m~u}qEkIjj*HTGnr##=R2#e+lt_H7(b3 zt@w89YLy^2Z4UNk!N@;0PtmGv+oG5~n3h~xsZ~Zv@E7$&A3rZvwRHzt&`d!ujp~sh{rc1Yd4n9xpgoRm!r7N-RbzF-Og& zCEgd2GN@xhvD?`#*Xv`!(Upmt(m2nTxEf%}uF@aKR(I4!_*nXE_~tJDbO$Q^`EY%~ z^PuzCw|stVQr@@5R+R`Sw|?16jZq=24_mTn9e~hoZ5xVpF_1zd6)~ZA)w#y*2%!s` zUC`5ZITAs^(~3c$5nNO%4I*IrV)*4#geAGJH3;Mn*e)6fJry`hA;mNe9+8AtO6P```XlVY*sqmTOIhLs#c9Jt6JraN+ z1kCTQ#KPEe8A4tjG&dG0U$OzKB00cunf2NDu$A(wu(aa%CXUs2*lJn4S>g!TjS7$= z>$7TUPvctsXPEVJ3Lj1;RPFkxLraqByyj^|vbdTWrO*c-o?*j7m#>(hUXf)OyU1lUwWZO6B@^Aprh1XADUcQdDGFZlLz4H`qx!{+K+owfcS zp0U4O*_;14jzbIhGAR$Zw&DrDf`Yh$;+M`;B3UH?DRDU^VInaZS>WIpB~@TXhv@5= z^dG}G3@og`91aunm!V?x--mJd#r`rU&*LGUzJ%Cm($e6VT%{NI7+PRVDFQVm)t}9v z{Gi<=msZ+poz9I2g%9xbIgJDgMpBH#$1ADHM6dCbJ!?OyTOjlafY8VJub}^{&*}fy z;f?8#ppOs0&BXo#`be1w2ylu<4vsp4GRopY-zoU`2gRu;>UKVEY%Z+8)}mR{ z{v+!j&e>O%inH&%9JPa3u}}Z3T`~2L$qrdZ4`n#A&I+ho9W1Z!In33_gqJ_PBkk>JmV!7$+gJ=>YfzL7K=v{uw)6Gp41k0u%f?T0dNFEs3Wt;&| z?@|kj%zIL;2D}Kho=n3Mv#c4j^#~*ADzvL$X!7*x^ir#k%m&udvX@dziEDOE#28aq zn%7Fo<)GWoY)I|MO_=X}NS&9bs39g9h%JDl^RfXSui?DoB_YP`lbdbQuizat~A5UPs|My&Ka>v_{j`IVBJKly6t)B4AL zIuxarhMa}#AoK~%ft2qg z_O>DY1j`eEEcgCR!DFn(_b?vIWeZc^#W^w+fd24^{RgA`uL3vhfkY{UPpS6MZK$H| zC0#DhCUPY#qV^J>xmJ((yKT92Y4A}AiP&EPCD`$w-ZyHeSOrMif>ZZvVS;dUs3*)MAFgUWTJlC-_^`LGsADC z+aDsA)rymnySmcO!lg0g5-yJJMz|!M?TNw&R2fuH+rnO|=-ch-^gEVMF{c#rAWZ|n zP=IB9FdsOPx>E;sl5j3*RdCm?qtfjMa6qsb~?je9hd4_TSvplQ4KBu>FukUkV zOv+^zYud)s9rQmBu}8`;U@j-5WPkKSe`vG!EE1QS=8}i!3~pGGt~)(N%s0<_-0{57 zaORpfjkzKslO?UzID~=^AYuB%;ll?b7E!#z>#!cksBuT{w4=p4Ej zCoHGyqi8)$Z(yBJ>Km?h^EqEU?p5N7%U_l;p$t|N=bB|#d>z3~%1_Xr@H|@sQKJ!O z^-8g?{T2;`{yzIzl^0{*X+KWf#0F#{f?tYV2nvJA9h@`b0G?8E(jhwnr;4&By1Z}u z1&zdzb6#iK+879((3KY3ctKF!)s6ay*##438Y=ta(8lVIw5w8$_*a<1rBQ@bI21NW zVD6#Dx|F?0#dSdVBinS2wNxGdc{(tP9 zb#N6}w)Nv7?(XjH?ykf=#0BE6#FZ#`G@Gcz_iO-bI8kXD9|ohegfr% z0F+04L%Cs1VHEmq^5>9K!e_LQI6oS6e;1UqG6Krv@3X(YeEpXFW%KK*9H40aQk7Hx zVuJsY{RObfizxv@)xY}XzvO_)ONc1}9P{#o;(*U0f1e2kh%{j0VB`9dY{2q;f{dty z*l#_4T9@#q{P^;8?1EYXMY%d_EE5Ily_RsW0)#$wdDUW!9$FG&O%c>5+l}{yCLC5HS2wnp1uWHTY{L zm|PYnEV_`Gvc6SUv7?2Fy}pUHz9Yaj|0M?gZ_(;&2|~HLp$axUvqw7bO9j?6-lRwW zBeZ9LSX2~}REEB7sdm_un`>j|_t0ysWI7SnRSrPQ#K9ydb3;;>wJ(2;L3l{A-!U;XNVhN+hFPqB3T`ryAI(7E!XfIiMba(T;dHp$96|sP>*Q)m*||4vgW*;SXoCqY*w!7-%)zk6 z`)0`Qt0lPTPg_Y+%Bpjr?-q2X-|&R3Esf0S*N09my?KMSh~%vMVOcv$ zph7JxJSt)}awDnRzKjH{W;8sMzY@r^ZiFl^{mFQVES@MrfL^kdtoQ8`h?j)^C5*s| zVQDU_$2$EZp`;xITIX<&~5rLG&r=LP*7>c)OgR5=zf z>pKs_uDJ*^b?TOhTF!1i`RNKK|2#8;JMS^&<+S%|68o1#jnv0NYncT z?W7_?Qp(C=gz`dPB6+`podTf2sD6bxp`4Jckf_w(LmiOt$ifCl1Oq&QV*h^Hvyd8K z{Iez_3IrseZTx``1Q@V6zkC1%h6EJ`0-F-B#xd;{Xii||k5Rams(I0T`o)aenL2y+#S+BpOy-o_%Zk6YrQUt z{V;RS?6trs<2Orw2#M>uvaD;D~Z4E^~0yq?~km(DS4sPaay9 zRw2C~;DX883fzhbI_?(tBrtTN1bBrR8>XBXJ`CX| zmKqaSQ&bo0j5Re{o#zB2Q{vjp-S;uB^J%ApGd1GtX)g#?L{JC%o{;t}#ETiwer3r> zKhIm0N&V_Rb2X1Xu3{7Py9p-g)cIuV`f2Lml71YVi za~`26;U2vQ>HC-<-~XS1`fn*Oi_AB}aM;2EdZbQ_D~f%P3$Qs?;VPkm@b19v^c+k} zRG08gTYRbT=wL`iqjSa4AC@wdt3GKp?;2Tk<$jX<@F&#&gu4Def_jB!t#@R8geTs> z;pHA{)cF;zJ@^kh?km*EngsM7A|T(q8oWNri$8eo`qnFZ%gfw-UuxChK)sX;T4SBc z8*Vy5i=g9Eft=}7M~hx{#V}#_0RGH#3bjn=t_ooRN?t*iCSc*yYI7s${0;#Knv{tI z&1!H#PC3=#*@L^bj)_Z5BuCa8VxLWxgBs)xL8wCFz4JR+lSDGLhZQV6am*X%h@Rc(^d-x7oJ_?S-c0=k{02~bI<_+g3tE|oefBReC@-zs&EuV253 zFn?rH0mp9?>;2YH{PUk4kNViopK5Q1DrfkrZK;oc&d~c9W5A>c@@Uj6%;m823i~A6 zWc!sl5nZeQ5l^Z@}AJPgr4Mll0?Zlk%}6*K7lDL{mh#hQ|A1s_Y)ZGppI%dIVKRHNLSJAowdtQ z5iNQ2y`#LRkQQWmN}y*?G-a#S-W48#v5VF>P@~xnEVb~zOJGx93u4E^3HHn$6xJFD zg^~}aV5mCuCOw|!D|m$n{D~Q@uz1DrQSIRl#Q&8FuJp#kd=F2z4J1OQdD5-;GzMu> zOfg-B7Up)G8GDgN{w`!vAbVy#kt5Pz9y|>-`zUxl49)o~?Bhx#jaUrtwbqjcz0_xU zoHY2&$aG18J2%=M=r{)f&9fgO#*6rD)N2n9D6VK>eX1+VSxJ;Tg+l{tW?p_U;?AQX z=K453tvHRc&f^D;LxjUEu{tKX)^89M4gxEwvq*g0oHzkG6I&x0NE&5@t zfzO8t8Hc2bRF(sSN|td{GER0h6S4yB`p_p29L&M{*yi-|9cd~yRfb!M4QPbRT{{{I(oVG5`pDQsN; zY1RZ$3)XsP5oIU8LIwa{03fmR{3D6|Cjxta$}sb1%I|lxT>qmfzhb{g?EH+pS=@hh zzxX+2(ZSMuKX+r*C)vc+0N{VrH*nIo{pCq3zzAt%V{Pp8>zSqz!!@H%y*{2alB(cX z2ne;Rjn_y1unE7G^GJCgH``1-rAr`8&Gx3QW`u<|7#j_Yx_dH~`S?8F;F6~wq?Fy9 z(p06l_SM>`j2f@rZYqB`H0xe|*vZ5FEQtYy^D#1-c8`zl;Z7yH6!Qwt;NiwPr5#@5 zt&I%r*o46RaXDy;Y0M$Z>!JM^8}I>mwn;eiQ!Gagh@2sG5;cf0iwbsrVr`h})cGWF zmZ6<+uh}(v{Q_{3&|}4Il-s>PZ`W|mmgSr4)RN!|okA&H@8#nRdWmFK ze_N2WEcs-*1uaTU0t2uA#@WF}A@;~)Lq(8cqYF743N4reUWq!KQ#+K-qlfSe4#n5P z5DiJcc0LW9=v|(17(wRo)5t|&qN(}pm7}^_uILR?xu-5p({DdMuhMEC=nl=ChPWd2 z$hhJbt{WIs6mr~7WsDouQoephS}S%ie>yEp{@$$3E&L*#m}Ox6071-;J)r%i?kT_A zB{`o~UT{yP(b;k=d*H{e3P0;o=bkc_Yd2^(t9Dbf<@%7z+mPGFrujKb@toh{Blt?SsRtEm>#V8WnHzstW4}v1&jbMQclA7=ya!=)3ZO35iINy!1yf4@`Te{?pourYISu&{r*Dll<=?`)Kkm-sEE-MlM4sRA5C z4PW`a3U(Y}eQLNrSmAxi%wwn(_0s2O)MOrSJC+4w=qH0$=E?CC=BD~5lhsc!y(8@2 zqF2)JeHp3rPur(|vi*O$v+=*7w6i1>XRtV*>T1z7yzOn!xsQR1;QC>QeWiF*U+D=e zhTsPgr8O%~p>@h`YMUfRTK$zdrxus|9Qj^mo=$A|iE1A-RrV|{ZjA?W?jSUt30J-1 zDi8ac2?Etz8{3__GXD%w=1)QA^qsz+92vx}N=irDxUP$}>}@=>A~w6LKvdal&EUYp z(w!fd0|_*$oIDtmc-;69bab94WS}8xzm35zD-o4-%A$Bq)3=DRcXsCMO} zHt#9QDEcmr@5I-ETrwZHs(Ux#V;LIuJ^h;<3sNnXmn{5G6d<)&9)^1 z$*(3_we)Q&kdDyp`SIwXn^xi&DWXv9dsxd*KlrC7WxtNwHlCVVTL_0`y2@fW(wk`% zV-n5gk8eVjT1h-q#5_Bijny@u)k~-`M2ZMn3>>RmeL{N;>sc(J;9pYjt;6b+Oi>+( ztlhsR z=@s#Q0=_qFklA`#N9-r2Dky5wW3xTLmjM*e|3*!=@J0$6F_isKy^<1XLbI+(E#)1xddP+9vLG^ z7SUe~Fc4X2uqeV#FJ729T3CO{5%~M`U)#GLPo!u5`0!kH;=0%#Y$HaId_QchulV-z z^l#m$2C55uvuS}7KsDJ7ItvG`-syE9I#fa5Mt(OCAQQ||fQ7%BAAnQg(nFmo9_v|X zK~-fhxi88yD$ViK4zG;Ny7F@bvp%-;fL1l5EZ=1;t zn3v5JeaL&zZ}hmumv2J~E6nt*;@o@N(we=el+w%{UEL{6b61k2Q@0lUSy3xA;#lSn zHkiZ?iJF6Nb(}AbwEL!2czbs&ZV7=?=w&1FD3uzo$et);jMwjLvr@_T#Lv@YJz*=l zo)>$+aCKu1V!cs;Y?7|OEoG@c)O41&q0471k=|9qRriIuOC|4L<(4cf^&hbU~A zPoHj4^U|UXe#mR{wV*mGvgZ2%1SUV=8wZEPcExw}VFelok>sCzB5i?f=HHyg(fL8q z32w^!>-*=J*v%7mw@wzN;u|JHTa@Z0KgL(YHz`t`a1`9eEQA`F$&WC);>fyESPperm)@HXmijiKgp6nPZ;q0tOc!aw=dZUKc?hK{0kSSMEc& zvpb;9A5JEFaK9H~?t)le;XahQL5)$T*$@m3WA0YwkodZIr$65f!{hk+^m6eP-nCsj&*^20ftZR?&_>S&n==>QzXuAXkc zh3}tIN`9hh|34zG{D1H-{w%&@I`@owk$y6 z5LdMW{$X*b7@Fdt`Py7V^JkBCYLAalUZ|CoqNa@E0-))<6lKB_bURGCcp=0lH##p{ zaj+mVr5iMTc8|ti+2t@AFLnktmGA-WKECU|e3#~|vDlv^DjuXx;Wl?;Ed7kSDP4P> z<`yXdJB&{K7G^T^5Zw>Y!TNY=#pwmnW~7Wxf~e?+E>)UmYKqx(&W_Ao7V!D-dQLL? zTzd;w5$-M6V0KV+RLW1I^h8|9s-)+3#Wn0LPc$YE-(W_KoO(@;!M#=vYh^t8@>hG^f(9zs9VC2pYo#&I zbTT46YeTd-ImWm`fE*->Ui0QG$Wr!^@UO;*F^mtsc-Pe1DJD~QlS=;}?CuFVsL%hD zmi$de75Cd1bD^oz=_mv0vP#TcF&ZwpW1yPwF1jhMoz_kEI7if%gZ1ULm0X?Gjdux^ z&XRgl=o+Ip`v$0UyE#hLB;8?MOeqMT_>%R48iAO71)rFV3j74VlL1<}?=M<863}8E z+$%9CcrvB{kaP2=#`J##z5%s1peOp*33vc|A;6~o4c|t;)=(%I$$rsL@P(8W0oHSQ z1r;Sg2`(h}wGJ0nkQWtGlaiJFJEfe13ow?Nlk@9<>R*jB1^k-dGNYekuo@lHhq(y8 z2&IKQL>!#7t=rFtMh5b0uV9R3ITd%T5|e;7Z|1#$`2+Jvd@FJ>6dx_o z9kt0#hG6z6l(Q+`$j-r31Nyk>!GGvDw?cGF()A3Q$CV~bmdFx!a{GS7iD|>y`9fSE zr9?-`vX>=91q4E{J^y3h#T{FC0x9cHlL7e#f;+TStlGn2%bOYKxA{@= zlUyQ2a&u~xH@#5sAMy{vQF~O?%!kVc!{yhc(f0VfR%~+z*V+>(R85N*+9{z^{L*Q! zoewvHN?Ylz7(eM2)Sh;SRFy&Ly(Fmu5tyuJ1%bAuD#ymC%dCjCTt1`;Q1eQ%0y~4r zjZ~E{VsHz`3U)Q!;meMyvN!px!T&Kr8APBTrd7F^wgB<20*M7ln__y*#)DocBQ#1l zb)*xWgvHTO&m`1@#ll19z)P>{{5>>?A22Y` ztf1#=KlOdLiRI_iaWGHcvIBeRHjQw;`=-VOsCL#SXh#H~RS>5@b4bTCKar@lytAF$QRAs)b4zq;xcStT@nB?Vr)#L&V)bX2fvhmCCYNg4A+!tRTf>d*XfLf1;P zlWw#V9T-|Nir*fA>Q2FP};A{h|`FGXnA_|JK8`%_4&(`M!q>XxExJ ze0e6N-&Op=#K_U!#@fQp>3e_ur{T=Xqk&B-p0%>oriuQ~An30izu#PdaKNuemDp7V zB*VbOi) zqGdv@9-N?gpb=ljZ#S&JX=y*;gSLW9E}U0~AF6q0Ma8;nzK|Ubl!kQ}HH+y&eUiu` zNWC4jAXg6tBD6YoCLwE{avo81Fx`=0l;G^f#fiRQ)&Vp=Co+mw$wk9M3OOUSI#^~v z<0Jy!^u90bR71^U>M?22^DUOqT?j37id1||$W9Vm0wS?=z~ zMfz9`6fW?^iWvN>X#n>dA(lLx5c>Kku}PJVCfm(q=Gd~L zS7xD0HVM{zj23e4uU}^^>w~^yv(nMM>ftcXZw7h_jRvU@5K(gjN-(9;72h&LPeFX6 zas&2M3Z`o^SzMx@U)w=oX*1OC7ArH{Raly|AEqPt(mO%Ooey?q(}iE>zkct4&;cA( zqJOz}9A*}Nv_%PFB3gzHusRe#{9%p#UT4)e^9yAR>tpDhvJHkSJEb11T<6wqKJt!Wd{OebPcf3Uk<2$+Q#@( z2m7Dii2m8D6R(ty|A;rvtK3~iElJO_W+8Zklpk2}^*k~jxC?KIC+4t;S4!4ysKJRT zZa`MtH%+L32a{?J)W|vT0w+K9TQLEzYaXVSINQ%ydGAoj7MxT5EO+_5^p0K<#<|&l z+^#6!$NU|b?x67SVMTP;bOhkeF+y0Muda=$jy2^Ti1x5c?;(Vu&XgyA37ZvWu!zCZ zeM+iX^C0Hp_-T_TEIM7EiO>vVbCul3x4CxcR#taM6ZlmgQ54C&ocrPq_X z_dpK;B`kH~TAHhJ!6kMi&%Gh0ydcGGYpQB5y!*>h+zZd8+G}q^2cHQrA!f6-+;XTL zvp1pX1tn%ikthj+ErTPp=k@X9xy()yJMU*c2ROoAO+_a%-C6Wn=!7fa1l1}%dujuB zGi95cA0>l4%5eKUjs9AO6aJznQsz;&Bu#*GFAV0q1R6 zs33Ii6+@e=Bd|}21IRsa$_uwyW`tC4O|zlIm7h3|ya4Bs$zRT+5O%j#$FVZaX3kRG zP^*?dBsL9jclxL2(I0bnV*Zy$(|p$?+qr4nlx3A36^-SKiy=gXf;oAD5Zwn)q=g*# z4aY3EHV7#j;;rN1HIcjotVEuChWA!R;VI^HNhsJQaK|w!R94Q~JuRZvx?>74;L4rc z5m!}rkFm3nfxR>82H;b&$2N6*u)Tbx`r|Q-nQ2-SAGJ4Ng%W%6&~ePK-_wRi)$XyY zA7~zFV+L{}Hzq?mhBp;~kj`ot?h{y<(2&4bNv54w9Z`I)ybT@@Pe+WMu=r3~AiP5p z4gX=A_DFD-F*SwP2r^d$EUoENaYqWPe%0wVX`Jn`Wl^pZw$7981Uz9^p8WJk{?$AM zxjtyxMTBl5Bi4Iv_PlaezJe92c(8b503$ zo9+4&Cqx`Xv6tCoTPD^)Z8Y%^G|H^Wga;G3xas850>fdoGF6c_uv_z)iwI)5N9Xg$ z>+CI^t5^jin>1?(Z0v9d-imtuQg;uqc}@;u*{aK0gDm5K3>CflZOXmUV`Lk`$%e(#%SxT`Aid z?hC@WiRmF^aT8vhH}J%xg!San>yX{g4%@s_-FyFPJj(*8D7`Z-mXD*M@2qZAd(Z|t z8-z*Tr!0=`p4h0&%2=zRo-$43{Tdm%r6l#b8hOBL?!L5WteY-z^#*wGK#|Df#j_$s zPhUY4*u57>zeDHJwt{dbYL>(*-|hO>6{utL=;b`hf*r z4rtuO|K-5S^LRK&&%RU^berxAcd60-p(y&@E>Pc%-345rnEpC;_m4TSerrA#)^TL} zh&VP5e_N=fxN~9t%4i!XQ=HFpsdtAU?d2;Ot!4$rL&&_hF5VD$WpQ|XW?ZiZpb14> z6V980#zCW>|CU1bC*}XAQ~p1ukc|lk%N4XcVDW&v!|g@--90C%p8R3+eZ7$+HK_KB zq@18}WFBCQHbABViNR=Jd5VqR(JJv&92y6IcJ^P~W<~@@*IbK#M>dA zmn=6+LBfEASZ~Fi1Ljwf;{^^cNrW=lH}iwrV=NzfGxB-YMG&*LKO@6Msx3WD)hv~; zI`(ec1iD?4jrysFKm^PRceEi?hNiG#Jmu3K)+79PK04D|&>zk%=?ZrngT{j&XpTlo zawzK{m7#O8aX-iyCAfv4=V#i{k}wl?T0oTLtz)BU(;svxUry`a!;Fb?q+~(MQ*ot= zxr-k`zG5_?7Jrjts{pfbfYd>)OSo2?GZ0sMuQ3hK$sndu27yImG#V(o+6USjt52q` zw1TrUL{v@+pcjt=(n3l^5IS}%CF=)Fr=MkDCK;B>57wTwB6T)xc^vvn>eR+T*3&vz z@e1xJB(evPj3198kn5zpMR^)T5r{~BWK5bL`!0M*P2r{;Q&5GhfI(mZl>XVL0=*9> zSX9>wFSw(ORYvnyh{v*5(~R?;N_Hbbi;r1~u^S;&_(s|h1u3>Yj+LjEUKqZW6s<#9 z^wgR^8NhSbV9GlZtTP<%QOV+#TnZ3KJH!Y3h%aIawH_ATKRENw>#k{_^4;bEKhK3R zo`5dYn>tIsP-QJRbzi!msKr6?7*@>ud(9@W*t-mU>APr9N~AP&!k?*CDg0*lEeTJj9D5w-*$+$X59hnie^DU&_WA(^78PKJWhNy2Ersm2+_BGXWow`n zMUT8o2U;5mpi#jx!jYBVx<(VlLqHjsH@&yTDhfa605}=D zc_YK^y8{4J|EIFjPdKH1>LB<(Vz2uD(D(RRS;^bUG)xUNxN(&)y#weO$>)V)a;hJ8 z*jI>C$I;X>zH^GBT}u}z5BA*Vy;e0- zZkFlr*In-+he#R_*$w(GHj13Eu;La>MLgpP58D=6meGzvD`9ybpYI(U)GSCbjP>G8 zMySQAsZkZ>(zL;vuTh4)@rZBc$`*Y6G;%u%acZpvx6Bixg~P$Iy7*YG6UaZT;}hd) z*WEs|s#VaoCfZ2?Pk&?riTBJsvEX7WA!QOQmE2VZ~f_3nzP@7WZx%?z65{ z)qJj}RIldCh0`aVWozG_%(!}jQE;4omwCEKZoR8Ku9f}8XIE%IEOHEgi;t=NelBbVn1_Zf159vZrpv;)MYs^EE zn;0vv(3AGUAXzaXhOpQTKOlx7has-rx}WZKWrE+aDV$^-3&8~~P1mhTA62S8RwlRT zv}vGCo$~RYw+o0FT6P1;t6{d=vdG`I)-**;T4AOZFM_q>l#(uVG9HJ-2BPcPzC`?q zD!mE-@#Jq1w-t1xP(3ScD8C_&AAvvQ{b7my;Sm30iuB)_sTkWnWH5`@`FSODohTsB zfC&=b;90%slUIgUE57wC{c2nvAedG_&e?GT(){-vX}rzP4lhOXfW0!9B`&Q8jBNop z|EE&SpE&=YUZnqLr5H4dH=j^qMU6dal=gA*dU;L<%IbdDfnOmXl{4GqZ$hHFUEF`i z4nF2#YDkiDk;my)*nHM~kDX3DuC5$Fq*%YR#|kGi`k9&ydp_Ctxkl=tI4($m;|9^- z+GcsR(KW<}o(P?88Zwo=aj{Slit4rs+a6YFS~O4IRL0$KJwkjLlo5&XiIP_=YAYvH zdvS09Nfa-sy1|dovcFV^`BHmPofy_n$;Yr z+&PjR*9B~{JcQv7o4dHXeYQ!Zh^+Di#<33|`_uq#8%DSmqm#7a1Ay`b8x3+fO%}6} zTuTuZWB5M!De_p?=Z3q&JuG;#7thjE!Z@N#N75+Kq@Sbhl^wA>$Y<=sDs>(?cX;7) zW`?Teo`y6i#J}{{-Ke^?!s)vuXq>^aEYx_{jhbg^gKy8$(d!50faFhs3UCAy1 zGDl!ynXArYG!T%kZvu9)vy_>P<2r!(W>wRylQqK*-}omWpAUe1#5c&pxf`bFn6=U4 zO;WcGeEU`+?nhiDZs7gAiCD@sF8h;ZE@F zH=xi`r$^lsTOV<&!k`Frva}dh^q0(OIEEGjEm1#(<-Iw2F$7I#E-!>v$3`pdC5JBi zu&R|jS+dVpT?TT&NO(rq$Au21P?iD3JX)gjLRK}ekDgGW`H8+cZZd;f&nM98hTPdg zyencbjPX_t;YFgyVRnfcy#7^4EW%303_WFzxw|r~NU#VL%xqFnPGP5<4OSk(@cs=u zTRO>NTMvQ4h(e+UUwEJz4fkoZ{64twOmR)P3Xb(ZG5dCFnNGIT-&{qQ<j{PMZ6cE_UKpWncoHyn|8qhOs8K-P?6Oy9jx>u}BbV z0ebLiAzGa8IL>rE$u5$7siV5sG~>=%>~zh)qLZNt`-Z72H-f5L+8_e_Wj2nzi2kDZ2dm4C3#fB=bckOn^GtuG`LXEF2=+R&s;GzWQNHeXYlXGx3g0 z2>9#=i80&yVj}@4#9QqUaLeU*-1g_l7Sdf2<VQ zkQ1|Q*nLY73ph{8;v=cg49_;sYrK~(mFuSVwn0`BE|$&1ei&soDeCmxAA!1{#nKNO z$tg^6#Uz9$>+Q_zKSRqD&M<9(Aie_EQE~%5@K}Hp%-?iqMu2=ET2=l`tL5Hh1}1mx zMYyX~bSZ^lMJs{0<-s4WH}a-3CZkwwQg9lX{y`!6iTKb<3<7W)e`8$~0n^RnL+s1Z zZF%~){OL}5i~c-9m_Q3Pa`4gveqsY!3!^<5opn=W5Mdrr6fq}|&f}WE_S86Y2E};L znvujpvuE}3s#KaeayaWJ+J{1e^2|gDu0uMoh(3?Q6I_-#4h-!or&9j75>!=aL>2c{ zG|x?EF+}!OFIBw4VPePyXjDz(*_6h`Mv;L?kk@S2YPltrX?$K8yJPqcKue5 zqne@|c3?zUYOn<|EvOkj{IJA+r+WNL2LG3-gx{>CtbiA8-(rFOxwTY5L`n=0_x86$ zer0(P@gEt^1{mAI%Eijc!NJbV@qGk8;D>*U;kHrAj@Z}+-F(h$UDvP~VW*teck-sS z<4`r!pL7VO6nVR`?Sehsf;`B<8?^>T!f&i9#~koteME`N&K)Di8~$YYpA7$dhGWv@ z2Ou#W6ExGhHB{k8?k-(soBgoCzB0Tj2Pb^=Zk^CaI?q*lZOX_+U+qjgr(zhJS_+Ko z1ucffkzTf<+Nq0v(JLvoT1PKOe7&R~^>UD#+`W$!?Y863^Bz8%ik4DIivi`j>jINZ zc2?TQ5Pz~&eCdjdG%zO_<#yXHjTuXgU$D_VD}t9TiP89CmDbuJc&~hZGWRV~Mw1nON+~vk*vRSW?f~8c3h#%Q0V@ zDo_b{tC?koYbwHmB(*br9PS`i2gW~;$y{tJQq2LGdm~*8e@t4g{2H1f<*b=x-osFV zp=<(m08h@XNoEN3o@Rt4)FQ?28n1!k<*ei&coVF8!6|8QT_RrAjRrU=`qg{`4#Jy+ zw8SctCu9fcYwsbF>10;Nm^Yr&aG$2JBrh#kfv(4C!+!b{DLUdf+v?R-VWo0G%L8@f z+6T+8Uqzo7(46g`Mt;9-&Rpb6T9hNxt3wLjmd_YLBSVXcl$Wg;I~GLz)`55NWCxk% zY1&gfNh+M+%23ma2JbEq(h+nRw!BeEwZKYaCskq({V-(bwhtC8k-gZxzy}>l@w>9{ zsc5Ds-svmEqq_VJ;*N^G{wzhsr0Kw&Kt@SihofD_EM~6z)e6ECPgHxFb+vZD?4Uzv zB~+5>UeWgh`eYzh!CBE>qyu z3o7v%*f8PCju!+n?ol?BdQQwxK&kghw16O0yUb4lw99%o&NoIv^$>Y2f{QcU7>O?r zJ+W*=LjqLrPlo@=@V{qxJ~SwfU@%JzP{`%DJ%8wk;~fy`4;$<&!;5xSE$ZkmkW{0_ zEL<0yu5-t46Tv1wN<-*QG<9K{lzM`NHMTJ< zed_L;$5~khlcnb;F8o2{+G<3{#{|BML2f4l(sMM65oBDeqw?G57|!NX0;hbUII4WQlNGX*D?wCI?t1f;gwIUw)lBA zo~`}|1wUX`U17b9v3s}{ELykXGVM|kecmJ;Qh7ADTcuQH(-Sq3$r z1lX9BfJ&3cvkA80KeY77H-1Ri^NR$kbjc^Cn}Z^6%{c=-euYoL|3wi z{3&C~PjpQGk9b-B-IuxlzUSp%zTy4PHb3Qz?X4!;STuQUWQuh;A*^q(Z^wSvfnOmn za{A6u-)E5?b#+)WcRfjG@HLN(yoA{byR-eCd24leFuqP`MNf};gaH+eQ1t$6a#H4w zNDoQ8iYv@>o0v>F$?Sz_X3tbF7#Q}jpsaxeI&ZbTT(Q@le za4?p@r>@c?O1;a64#*GE*4+^j2&@HSR-=ULie70vJ2I`>C6z|97+KpNN;2>YoYY!! z*~$D3cvtKnK*6>4h^g%FE#j+)6)1Dq$~m9ml!b-`HL@1fh#6@w!qc)<_x1~1jK?uJ zCN)<{9)F6U5q_h#RR=$_GP!~**#yfqRHmYYI@T7U-V)s_kGgJ4MN5cQ?;yCcHUTGV z*xr>-(0bv>#*W+Df*aaq76Qy z^e{c6fLLDU=UMN_intw5zUO#K&-lSwaCG2fVAo3Qj)(`R~OR zt~Nn{|4FPxSp>zs)dQr6eq;k z=2sumSsDd|ju%-$_(P|st4l2hGl_wjT z<8C3y#joE#B?6g&G7@&-(O}vmnP=mR^TsC2*bE_~2!NR#EQ_=et=G;S)Y}N~1=2ov zY9nH3c#(^8?u@^bcTN;Vk@|>9=?fx`L7G#NMiA3e6FraJId3k22%A+oWL(ijTGbk6 zSmphi_7Nm4FbcJ@4wIm=m?#kiR#YZ*Jy-F0x`1kkWcP>UKEoI-Es}0fEm5R^R>by8 zbIthXbt7)KomR-sHYlKY5g{9-UP|iTJp0C@Y`J@uj(PF6JGFLE#VR{a`ySUCsMyqiiZjzEm0b3M$yKblEtT{Oqgu--iqf6X^dqqNU zjf&^4UE!tPbC0uj2+sX9M~?kVZ_gH4r#~W}5P%ZuU|%iF@pT=eao`m#Iaq-8=X8+b_IzwDlD?GW$eK@nG+eG;wqW z@*P`c@6vL$yLvj)letC7vpCZmMQ8tbCPjWydHRNzj!>UkVULv|j`S*uKJXhPWr#W2 zy*6ztk?iuZQN?AA=nTHNX|b|GV;aOdh*^p=M5WF+AtGr|{0WACZ(vb!A?(Lhm)Ml4 zcJxf*c~AYr68pm${>K#RT)%;H3rR?8iiJf`q6&B@zWN%rt)Wrn)E%rX+prsrw`Z%M{={MA7m8kuEqPqoDh>vxoR z4s)EQN{w&KguBKz2~v)U6P{Ko5YAnq#Km zqujFdX!x#^B_x8NkEM8oEfkzRMCTg9`>ObJ)aNS`m2OVQ8(~uY@V922A~!ov1Ct>z z%4a_UY018zZlJz~U$J~IOt*fY%SGL_sf2;K)!pkbE2QSL7_`!h-*9sfwktjjg7eZ- zs)1;)Bb$4C7(96(VRUzJddVQ8Ny)9N!a|J{UYqQWCS>)Dd#-}|^J@=y@G^WE)#@kc~l84P0E39i# zc-zfxfsLQ_nv$5)Eu;-=cbjZW#g=%(Fc3UMJoM#zMo{AiNGULhQ{uWGECkGag67PG z;w~0(K#%aY(Y|>hIZT`#O_#XB9u>-Wj(#2)--Z9=)nmVyRD)0;9z}Lzt(KhLabbF% ziu8N*H>T#+GlMFi(4_kD62^xoyZd#(Ecv`8y}`mi0rqY{C$#KaClviPYo_Bg>C+KX z7USB|EB_ys*zW@NFL7{yRGq(dLfM%)|I!Kd4fwTzMUqkc7Xyoch?xABV9&pFLIENB z%7hAHs%lDrKUL+W)WnpOrBsBZzI+u^AygJokp1NgrHH(OsxsA&JyRyY*mA&wqc49j zGP8d-C=2l8zooY$zvQ>Fvj!23BmFF?o<24ZVd2foMd-oct4uTYc}R+pPoQNJEkEJp zUE+(^w8{{TB!H*a$JmynZP&vxXt_5ce{%nSv)=v>x$h76)wuZG*m6KFfU}9cg9%_% zmZQFin%LJUDLi;EbTHH=WN$2RSc7R@Y{wYq34O6|YL&?$ArblPZ(T6K#Oz2;1}0GC>^qszL^AzL%{>Jk}r@A1K;aMoNB40`bL zz`f+&QGdsLvj+_iH8K(BfjV9-XwdUzJ>xvgjOliJGTrRwg1cd(rOio2;7eU$xTfAJ zY!03-$vH>noVfZ%5cuL@`7o-cLZFxq21QBpEi$%VH+)M*eS;0DVx8#hD+i4u(fwm_ zwykURC&Sy}#=OtO3%Y_5y<;8u3U}%xZdTqXfQqS$_bzKhvWlR#6RiSvA#@UKZH(;- zGQo#ub)*m5I+)8@Mk8B-GwdxYh}-Hhv|aUjRRi-dMRVYl)mr7Ggvz=jy*2LBfMK`& zs&^_E@|S(-TXi4{PIU`bXw2sy`v%rHW4>= zp04RwiSWaeZ`-qbDJ^!s>~&x5Li05>m<>Ry$%X2@RKeBNZXeyzucW8={23$VVW##~ z|3bmk#>BL!@2BQ)A@w+DP{}8heRj49V9To?)8a~rI1VDW(cUhiu)kmKSS1c0-1Zae z@v!31+({BYi^;{EgPDE749dG7!vZuoala)m5MJtYXKNwT$AMDP6B|s+@GKY{5xgHN zIkg&C2s7+_xOt5xg>9OPnmE#!A#7ykuym5K_{8l3txxqQxSs;xzTY?Q+vC2Lt91kM z*eqy49t_x(`eBLvF5G8hWcfbKhLiD&jq#iEZv1QPQ!XE$j^pf5^&|-Z_R6S!1!_BDHmFY0IoL zcpUoh!&duBb4}PdhxK72w($yC_&m5xD$8qSr(N#=#kB_Q15 zY#*c;jmSs&Z`tBz0{XfK9FzRz!KZ17b%qL~GH$)lu}9AouX<219xzi;_|4u7sotT* z?GrV4AMFI@NOcdiEN=x{vQSaJ#TMQ&C121V-bRq+-=}<#UH!1INmtl1JYJ2Bn}`8< zNh+JP^Bnbf{p9l1*!75x`U}Ntib@N7c17ETNqu+P^rNNjHv=ORcI>fLn1Gndc@pqh zw@Gr+8XS8WqXBfx0^K>f9SAwcG~S2===KPyp=IRs&#&4Fo~>jdy?dO|OGB2Ms2^mq5G%aMNn8n4tAZ*|H!p!gK_LSub;F3+uL*v_Y6 z7agNr_9oi`Vcz_*7_;FX>^0E3rtfo>Xd_EMIR7dk(*2-}S#|9fA(UGxb-_R z0oW*5m#M6L+loTwDh6roME=%Es0dp2fp!wy4dZxgZ;Bc{qaI8d7no$8@H(@>=c}s1 zAqo47Z9E(%)rhQoJlE$lb~<{083qBSpRHqEzSIe=$W0jjq&<{(UWY5rmBpPGXQBG- z3G)z)K9NwKYLK>Y@xsZF7V^hoy53i5{F4miS_7gjZ{x^q5=+ZN9koP0kxPpo6|ir~ z=irte{RGWz05n(sMsqjoz#vuliEBLDtWj-Z&l zwgj-m78xzEhvN<+IY@~uZXmiq7=9-f!vc05R>#tkBIM(Y+wAo3 zc^hBJn0T)4RpFVr?6NT{;?VLBxQLc&S!DguYQe(4-jDViy|k#JIsV3`7vf5jtV^~% z7fybxAyMYn_Ecc4XiCa4~s{ikt!p3vPHr>)Uo2CBp zvEH8Z;gbg21dVBn)n>JSWc(!hDS1Np%fHul9q-=YzoUPl*4p=%>iyI9=xV=Rx;*D7 zlS0czc2CVvu|sF8d0uf%Ww*(jTYUBr)8d4KoG&wZw(HhE+f|js=(ll^is1hh&0CbN z*NXQ=E_Qjyw*9A*o#O$UpUrlqesVG&?x&@_N?I-VXVM~5IsI&}zz0{hu6=Ojdh2h# zhTtU(qPw}R*cr>0^%b+eN_o_ozudmWNBP2O=c*ltmus(kA##81my2W+(FMRFIs#He z3o@)!5BoQ5o8nGueV3-6XZmx{(%6tKqwx)r-!D}YJh>(&4 zxxbvLS7uUEL+_TYaTD+JEV!-pOs*@a%8u z-|PNU<~?GPo%N7X9R zgzf*C^Tb|1vNH||4XE6GmuG)VcFNN)GXIsHIdIBuNPGTq(fSi5{Q3oU>wZPwY6!Y+ zoIUT~gwnZAJ-&j!zorB~X!xehZRVZzOeaX$SwuVR=g!|(ta?hdc1!weP~tQS)0XYo2B%hKltKF zEw*(@vX^E^i(P+wSTIa|vHa$($3AZG4A|8%*XvGCkIWBG*`|LryPR2-9Of)HFfUc| zD^+!Hcyx@j*0(n1xzaV&Ro7BYoiZoQ6f-u+DC)gez42$7$FkK@v%bD&?Km*=`x+zH z%-@D<7H8&OK3jD2YtB*4bE4fL{rfI(s1{m$S>gLYRWh4TOXD?{(uqH5UfbPynu@2? z=x|Tm-th6sJPVc>Q{YPe&`*vtJ0dhcvb!NvaNmg> zVRa*Z;Xkeimxx?q^!c+Z9D``q*UL!D=waAfBF`aGZS=XnMRo{>?^&IAcw#NN)u)Xs&`#nZu*ht$x)!N$_q z(8bc;j@iN5(u2|1)X4=29tj@c4 z901n$=R^LF&-Z_RDop?e3@qri3_XDWhk5kv0wg#rq%as%c0znVQ5l*8g*Y`!5&_k; zDgtp?4`Co%_bL45VC!kQ;2UaP^Aoch_`ERe92m=ZN00tm=xFrP?E&$sX z^Og$t2*>OVSon4__EsO58>1VL$-%@7 z!29sPBv5Ps762fVDU%_H?tgQ4V<(%x-Jc0`8G!t7XB2SodnhPK2$ z>BW>12<(dknZjFK6(?;bla=U__qfQ1Sg663H6oz6HF zS=3m6<%6IMSa57QgK5_ChIt&HcO1-(`pgC^-?C=yf)(4Nsk^Cln(cyzY9q+C+GjFV zS>tk=>|kwg@Y1<%k~-{|PD!oIfLx`yj`gaefMRDA9Ye!u=Tg8mu4#nuGq0@7PCW z$;a=nKjTGwiz$Q|SQov%yoPk?3@?(*`A{E_oA@uPj?*OZ`S4>5pSa z6NDY1AK3B8b#Bt9T#)?DTkF3DJ3t_i6UfdA`Ye3I&QB#k|0nFI$|wPUi#Z@SkP`r4 zWdZ#L0I~xq0A!$#1_*Qbs&fnO zp4HG8}eV?e}?f84Ey**(oO!)3%D>G5aV*W3Q`_ zjgiKzN9Gt8{SHQ=``!-6{vR++KUEpKGxX)DDfZc>#SrigqGYRb!umDMMc$S8osYsl7UEHnDkT2wg*WH# zVsz(W1OBqUCn=);xY6LgRQa*6@+Cn0CN4U{olSN?V#V3gI3q{(|TiaczZ@(|uMxGY2&> z6v@V=^*KY+f}+Flu}%g?`FJd@Cr7<$FM<|Kc!IppG*op9wbaNZWT&rQ)rU{4uNHAl z172F_r_~^v-f5`pb%z+MO>W}=p9lfO6yt+UvhZo9QedZ!km zJnFYi>X#6^C0lz(jV7wDXV#LHk@dwUnu$;Dp- zBNmVbVg)gU{X2~QQ36zcf{~Qm?==uBI}0}_D+db;kO)BVokN&XvIqoG-1ZQ*<`AFZ$jfJnfRc>{#y{a>ccpTn` zGi|ed*i}22Q6!UB=CsT8nT5sFDSA-l@;1R0Obdo{s<@P-i!^J0rYs`Y<%%evvY=q zRl|LUSIg3epY7rqst;~ZmDjL}{N6=GURkMxVYqv=45aZ1Cq6mQS$I}?AP~JV2Cm7O zcXS?4zuWOv2LCpR1RF!lEd^dOO;IX==XllIYx!B1dS8-{f1l|_XX zP5a}DWpwAb=1KXA5pq^4*X&2P6_F*}#w(Zan);XN%z&J_0dB&U1-!25#1Ztbk|(U6 zIU4JGI_FRJhhfT4@;{DoQ_8&{$s(|}+(W_6HHE)`?}fLoMv=Birx+jqcuL`dQwcRx zyj=Re9ZsCRt`e#wj#@fm689FO0#a-|JfZVSIW^3xV2D{-!*-V4>Q?ho=}!lhfrXYH0Z@2*d$k12taUKp;E!1A(|fCD)Ghyg#IGJ~EHS8d) z&a%{FCl3@%QB=O9Ubg@#uG8hkxX-AS9;On^4lc+de0{%6p~B%L?4!6HO&JQ81}N#8MP#GwL)0+`_&;>aLpS~>+$&hr?C*t&dz zqQf}IxB4jl{r2vJE}Tlj*@ZgIJE?_*@=A%wcUw7Y7i6D|X1&@k8fv(mnazN-2}dp# z4GlKL393)c)R6Ws4$TbqokF33{h_p6i~S*Ti^S-2E1NKiR+GodZZ2g+&na9)Eclu`yZ%Y1ZW{a>w)f?AMYZYI ztT?=^9M5=6lyxkf-(4m{?|2n?!lzsB&&1}rKHfryX@8bOrBcu`2@Hh(^6ok+iVjJB z^(h!?tJvGGfLzmv^!zhOV_uF(qAz{Vx(cRduaRU?^N}K#J^7ySmaDy2;-XLOwL-D6 zOx#D)U*A!V*YV@CmH31u^!h8;0KQsFs0Hm3S{Lg=573MpyBSL~JaLW``UpvJGnJ30 z&avS=W7nOsD@``cWBT;L#zOA{i$SYcxy;2IE1#nbMPV(UzBBD{+YGWuuFgXoMF{H0 zHvC*P5?=-X1btFL^m+M%KKSpJ!Jwt49sUyf06~rfkOkCBebYbOpc43_1lavVA6Y4o z{`rmP1O#~*9H2XZ)DwV}>!JFNAX-rnc_hB6A5vv85mhBA6){o~DJ2nAneSIB$*ZbJ zi7AOG|04uCO_OR-K<(6Dx7G2^o4_=8ge{J|-HvWmDGjt@~*eE?)>tnLbZQi$U3yL$g0 zq|?KXga{3a7C@c*7(f9e`(}ZGOhjB6Qx_K}Q)f~IQzu(XXVQ*LQU!ZUI~V8Qyy?D~ zOYR%psj7CBg>GBQvnicB#$reD*P3qcJM-0q;zefY(>e$~Gs1~vJ zze5$U6hRqbVRdGjY@^rfKV%b*)W|SBZ%-|_^KMZpq?*yoSGQw&rxO5gNj{enNxSvJ zh;ILCEzqybs5=Im#@K%yO*syNk`Fo9w2nkyhDp}F+Sfl|!JW~s$?IAQ3`klxkuhj%X;skUGv<;C zh-Z91cm@!S=)LoTa{tX+>%YWY;sCix9H4%Vi{%H;9=xXSB|z&Zo`K9Imfw2Xe>a!@ zrM}X3OQw4aURprG`t8!M0IN z|DwP6eYk&aoS@3$TZhw>-|4FISFf5)Jl{GqmKPUH_n=>il?^4i@tcSnf~f1bcv*>|rY}^{NYA=!s9z<^mCe1C ziG4fob@0W_9z<8k)VDA@7)mLBpQp}5_1`Du!0 z>DnA9X#yDGCtVX8BYi@p4SGie zbf-`uY6*}K(CviuA>xfNkJ8b$;+hK}K3f!XS*>YJ=I=?*CjgEdnc`=muO0x`e4_4n zwT6H+Zd(%=)k*%@ZEjLo>E3~|GMz$T>gR71*b+K2AVuNi-jhN%dRkJyQ_4{2uCW0; z+oub|8^ACTLrZ>r;>xY_j)f;;m&?fW=#hEJiVQmAI7bJac|elH;(G2(2j?1{4aCmI z676$g3Vj*8_cUvrDs#hcMXxB{%~vHJ4Rxl9&x)oYLF)EG!34a}Ph&?U+;;F?58)rZ zp7$7Fv6Wpn=ocBZGW&?vj`@|D;hrwIa&KOV;hjihkkBw9`6K;P4W7irizp=fh%7A# zqcNFPeof+pLM4^yO)cGN%gZE!^q;O*>TU8dq6Q=9dKT)O~Eu=e=O5PI8V`s&tD#;b4zE+nQ_c zHNF?dfvmCCXsfv!_b{u`k>$$mF-z{ljiBkZqQ-&Es~Ff0Q;(bvD=>MnF}3N1?1fq} z@^o7FfNZU0?TNc*V7KZeq!V>C2QA68?bDIRh>l?DGwIkB%`B|ZIcEWB10lwW;ct`K z8!Bz%7-U`dikkCh;@SDGlvlJ_=dLDPr+Ac~kdwGC7vy#}(Q5Nl8#1Km9EO>~9`KyT z+-CU3w%^TfBQn3FH$~Wx6kM0lO$XdhgFJcc4L*k%J|(J{xf^iz?7}?x9f7LcaF0q}1DrExauT!w?;VeE zToV6h5GWGv&C55Pw=uA9Z?=iT^VInpT{N^J^Hp>iKc<*@>5{5_+9c8y$ut1$s_{Nb zJMoc_BICf#IJ~DynDd&?Zn_OzP%Iy=&o@ER;E$$!c7M?*gzcN<6*^9(7S)`mg0mj8 zT=$Wn>vm!25uvcDq5crusIFDU@$m)gVxeYxT|n*xOLSoX%x0my*TR~k<{N$%HCtc0 zP4DYiC#Y9x?n>=CDDexmHVvvAfrM;4_X2r)sL;At?LL!J)*sJ>Gt% zEZ4)?i+_G0h-4KFJUAEFZG(jmC3-loKg?jh zU~jGQVX9?mTYxZ)pS?jnikAi#k)GmRj3v=beL2&=OI>*q=iNj(Or|U3Hq^g+QY_SS zFug4-urIk_!|! zPpsHkt+bF1DRiR|cjSP;vOE5-R2P+Ld+fFhAK2%7c#m*`+Nt6!0N|Et%O_^NkVa_c zS$~2+k)U48{YNhb*;p&I&WgkN*ANIKWI*0FJAn1O2Kq+{F#M?(19?loKj{CD-V(^W z`0gzc{xfgsZ+_CR+DUwy^Oa`t>&|}j=%yFaE9IJJ!mAX>Gsi^we6+6g+2@s{a?8 zvVV!4^!PZftPMFS#~$Z)RL!JhhT@av_R}Za?p)#}8qms}0k7g_5jTN^j-R<%j8<7b zBgmMDV5B~sM2bPxft6PY*5_-spW(Ege~I~FJx{4?PC~YCnY@p*qOq#9`b6Xv9B!QX zFq{MggX%7hyq=PMe2^vuomaXLFx=ZjDG?%R2KG9#Pr8*v7NM z439Ev+Jij;&sBcJ%2Pl00_`i9r>=K>lvRQ7NqFS6ETxi1{&TaOu_G%XreLvY9=`Wv zAGcoe)=et2B=31#%sI&Tig9Wje!()ywD+YNypd4VY7gx`V;~LwqQ~@DkjXf{MqxCx>)sFnh`|DF+WK@361tkiCu$>u~T({`DK|Q z>kkAi9~jv;?b7JWB@So{QbawpsIdvHTv~PpuM-Eb#+?$uqEgD7XVBzDY}dz{spWj6 zv03hH+eD!hnUR?{6${Ct8wTo1htWAs_c_;@mgYapBDPpqN8(`X2HVPckl4;LM;e9PvL~w*ECd-9;7rgcp1Z`Cz3AmMmlH?rJ42|l2ZB38SDKKQs zAp^y=ndD5+2v%7?wUjMg2HwF8qASd69?UD?42fo8KL!iufDkDvTD~>&peKRa9UqUj z>pT%O)fXv+V|bf%X^GfT3v-8*9jBD9!v?o4 zp8lLv+G7|pyP6R~_PCzLvovI%KZ+<}{che|mDRFrvc4k*Pp55Jp?<16!b!W;?(xAc zkDXWI(%m7J>r`n*o;#koXCYl4A>!AU*4ij0(l8i25tR_$UwSN>*yxNmXtQ~(RD>U2 zZ4c}W-V5*%Icw@|C=GEta5V%%{0Weif~Cy=i>sM?}1_ppg$f$m%;$S?^=u-bYm4M6;+kLN1aGT#Ykm@NR@@; zKqr1;DnCjkF%d~ICD1QYSus&5kw1`#GK8CzW~4MDTp#i5v0C*kE9iB*H`#?iMJ2pjNiFI0eV5%Xiwyt|h0pAClp& z3YK_3P50fZ%f`WOsx%qvkM+yyML;EWMTi(mgFPmo=~ttRq+s<{8f@Z0;P04;i52J@ zb@$F4K$}<*-+Jy~{B9Rjx;C)Seg4-5b@^l zR^=7SRi3|ycZs&wZY`GJC4g{kx1^^2p!NJIJ~f}VtV)D9AEL_59zaoYi5tqIByuE| z*etuBgzjbG3Z=jmX-*G2UW_H4zKs9Zt=hE@Zwhqhb(F}Y>uWVFi0}f#Qh2@AFWyioeoO^3^3V?7(B}8S9lczK3#}CYpfm@IAdg2 zPn!QH2p0n)oc9mHQTyaDa9CNn{Y8Xh;R40VK~aPsg!_B>+Z@&JrP{wRN42u?$ik(A z;gLddI>{WWb1S^EPq8YBZEhqo>=s@ik@w4^B4_g6*62h|^185EjGiXU8N}AjI69~j z3|g`QN@EbS_(06!`a{eT`_3$W0ADU>N(D62!}fq^NJK^e5X3BLSLYwhvNZcfEqhx_ zV@n$lzD!9U#*;|R42@k}olO7jF-B{u?W&hd;`SU%Ff#HJ9}+OX@t1^JvgxN33RPDt z2?fHc{c`M4XlD+8oHCCmg{!&*grj;9V7-k4nmbelR!0QSu$09gS&((3sZ(jD5?>B$X?7`1F;J{v`huD*HJ675+N z)WxP_&&-&<_vq^$nTc0T5{mX(v*2htE=35#6hfW8@rN(E zZMxm(!MyGYRYm-{lfLz(ubK&s$t&GzHk-cmXt|(;LZkVrvF;vsYx!@i9(HQrMEzT)jqI>gWp*pi_SO_H{5~*60~Hj5|`8W3mDJJqTr7Ae6EF zA(RPyM;QoXxgd=FEma1INGrtoJNc#PYH0JfksljsAxkGx8Z{Q$e|wC1ZohKxGNwGO z4fO1c=^*^K>*zqG}Wi_JmjdhdAO*Vi>QSk~MYG@;P0Q2+C6c|C_ zFxt&@>jzSp1p@xwh&mpjEB%W%u!g*S^KkYOw}g>|-Yy9{(s% zYAs(}O+G8ZLhE>fs}C$)@j0Bb{X8xXX1}crc}6ZcFZrx&?xmeI7P|Z)dY$c4?wpPs z8y2>yjt{w?u4#s>(RqewuoT?V2NElhAvZOVKBP+Tr)QmzOGX`Qy{h-~zduF`y2I0F+OC-m_Qm`I8aEnqw`*8(Au z-hHlU-`|T7Bk5g8(qI||PWkeQd}!-8GIpvZ~?WI zHOqNgsxKaix4we*L(C21W^wV}8xM;h*(pWS;@b}%7`ktj6?9IZfD;^jcWHAd+NbRS z5ZDgYN!HlcB;xR;ym@*BO~{#Hd@#~JQ#mI?iC+(CU?EXl!eLj7F=(1r59erCX8nY0 zG5010_8xjcG9QcTb%tAnYtX{NN3%Ja0OsNuOAi zC$VNc#SX_PdqvC%IQs+}%O_hFUI^~3nt zF6I@|lL^&#dUr4$8C`TWL0WL=bvURKhyxp0$@=>>LJpWWCkf|Bk1_cCY7_>vcg;Zj zA_MV@=nwIW?mNFgqlvj7V+;r~#=c82bRY|(kTJ*+GoiL{wRCp2G2s2%4;!9O;xOnyb$=~4WewzwlT1Tq2J z8AbfG$2(ATnF(YNEJ?Egc(&+w_*cOecY|#!(w$?)L#hnRdB{GSTz%|h(qDF@7%>r|`gPk=A56zk z@1f{WX2taZR2xy9dORG7?ua+h`d{{}8H49gD0iTOj+XxX&FF7X&M&S!^bL4P$U%$)3QP6{e(-`Do-$=wpL!2!EPc7&qLk#bHbur0I z+?m?G`&78e&b+;R>!qEmjq#)N0AchSeFlb4a0&EMHSMbbq#QbIs4*|wtk*&>z4*}w z5e42TpTpq!B{bOl2~d@QKo$1`R2sC;nehn+9{n|-0v%6+9DX+7H-{hia9a7J1laxr zD$pS%%RdXigSIHJJuF?|df*lFcTmxYN`XADhv`332{Ab_C6MFwH)rf0adOD`dL>`2rjyh1Q$8 zs~r+8mhHB5d8wQ>5XiVeAY=bSAQS!$GF||8F6ayw6ru%w2N|6Z2cz*fZ{NYm-pmw4 zGJ89_he_*)cGB6(ZSx<;lBgmj9z@=vM!wv2?_f6x>m2&wSXTH?pFX8sKL1V z#7hn$Z)mjBHi2e;u z7M1%RE8f(U9D7k-Gh1oH+jJ9-_N`Mg(!@MxjB(d*=jfBAl{qr=1?jf6l^)P70&>>O7Bo-*jg zv|_O8Kr>(3RwW|Uh_EClzZG+lZ$HEh8D7bmQ&TJ;XFW@*2GUzLB;%=4RpLEr1qqm)Sr+L5h5wzpcg?#y-J~hxwv>aDBLO(#B-jzYub&E-=j&+ zHJXg~g=L6d>nDA&E`@C<#XFdbjESF_-X_zCs=g4#hcV8DT9gY%MH%}OfO7!>PUi>U zusuU=_X4r7{tCcx16V*t7%M9~@L}Bo3(HUCZ+)@fCF1{;^MwhWutL1hiR>kHHW zW^K!V-1_n_*!%L26UxPtL4=crsW6zD9tFYr{%NJtg0^4b)Ehd@z5B~zSX{Q*VqIT; z7$5^|E|fZbzhfpry;eXNgXjIe=y;>ShYhxhYR!x7ysx2~*&I~19K;SMrkrbz8+&&S zc4J)?G{}nCPT0*-pwQC5tyl3JV;ds2JT7d#M^KxzBn<$f;B1&F*Av z!S+jaAwHX5P?bv&3Jl}qE6L!mt_-0e-eRHV1S!kCS)>z_B!ZhP>Uh=WlaEg0&0bW< zu0Lm-8|}322{!G8^A%C+Np!XQ5aAS~(E?0?%4@S7e+ccnf_}9Cu_M|TcgQTg3u1qJ zkLAWr<4-B9uG5>FM+D}HGZW?;YN##RhK}JJFY#8?s87{_D?4?->n*Nbi47dRTk$A+ zYkuAus>kKl~SzWT-?E7r!l2UAaAd#yJsR=gHhz*YqpH~-;yT9hpleL>|`0KiPUa?q-BZdou0$==>tyE0kDF!-?%muZTKu}xxonqJk z4n|>Dkn(b|w0jU=%7!+EmLMDd-=AlDfu1yW=w6#_cC|Q$Pze!m}JDv?(2A zyQc9=^#RxoeC5k_rG00?tvQv}>a831)#P_6^NskMp{R^ft}}JwK-I|`W4PeY;Xvz- zWd~rdv2@>ba`+Jby|Xeo#v}{s7wj?o4$>w7Fn5iEqX$v=P7= zjb3!dm{w#H2ZeCJk2058SM_ZzdNu-D6qFhz)%pD8I|9eqoM9^H!qbl$i{kfaub$2T-u z3{NHxjL(m&zc9gR_Xd+$dvWi0AoZ%b!1?gp^{#9F)`A7V1nIV5)f8JkOHNr}gskAp zj;Jk#SV|bN(F_F@A(fZy(vN9uporb2C@`RVGdh;E)Dc})N?og{L9XlF8PsceLc<0Q z=V^n#)Hb#3Uo}XkY%G|ZO)V0eJLhLTLd8_tjfZ0!trKqyf?;NlPg8ejEO$VTP_`t&>lKqr^ z75bL6_**~uM9kSBh5HG-G($w; zn!drSmHLw`x%ek<=?lar6b#_Tjz_IakOFpEvs{Bk}Iy{zQw)9(BR)F)znrhTh zt~18A$^QU$^~6@i=4M!8kiWrlOk`gpOpdz4B_s2rHdUZt`LxG5z_sa6#=H>o$m5eb zR3f0U(Dl(V-h6Pl2_FxCchAt7$|23HOe|GIsTvm&RLz-@;NkHcY?=eh*2F$lx_SyE%+5Ds!|G`*APBcU_0y_)Fm0F?8_sdVw}Js z8rxDBj~hv5yah7|wMQkFNU){Lpjf=WZS4t6RggpzfZ8{_wKNgy3+>vhXrNO3yh8!h zq&up5J(`dCwCc!h)N>3XkdfLz4gdDgn>Bc_Js$jM0@rG_ufY9jER4P7!REaiWfPZi zY!<9s@tpmcZxo9OS+zsS&W!UDr&+ak^%sv4o)TR1Tu4X zr;)pTaDd#10We<#BV>HoXm&g4bsW98o0FJWBd_qqr4rD$=Dt^0wF>Lg(y!ALN<+|y z3HC9^5umvfbFoJeESjuoF<8E$EO~J^m3wbvkIH>uWUzDWN&Y8j_H%xW>U~>}if-ur zUqdqx%z*6dT;KC!EWm%1zs-;RKFk0AS$@noOK4LunqcxZ6!yz=pholIxNkbfSgei4 zDqq&kByPxibgn!>4I3l}3RJc@b;*)@7v&9PC5nRVvX_glx;m+`fyD0J{XOs=hxa7sU1+ZZ`Oy zz*Uak>Edn$zC-z|13pQ-f>REwW?3|`8i_m4NjA|TY;<1Et8CZjTe(50fIj-7Oq#~$ z#7TvI$^6gGc|VSM-2zxfw5ndhN}a5#QlkqTclyF9b*x7dH}^tEPego$JM`Anp%b}@ zn^aJ~yOis``dFW6tpat;ImGqUmi$$>h1Z=`fJlqd6hL!xbqZ5j)n^T{aa$JNnjbZo ztejIdG?a?HH%~_UO69pFPC^M;Hn+rjeONy}l^CQ(Xz5MgGq=W-Pd1A#2dS+I5O0&c zrnRB@coC0^N!41fU)tbVF!g~wBfin^N%0VIikJ%FLAj6UfMoR~XZxyJ5juM^k=Wj^BApb_8IFzM z$t;->s{*guR2<2H0TgKtQ4uBjUWJIq&(EDLjM0h*Cxiu`dmx&8WhSx%oe3kJQkT^% zdYk#CQ*G0ETj0~ZDNFqmgo^;_HMbvnjm304d`48`uh44`1CjtvAR7z!_xu>h?*4oE zo8X1We|hktGzrFOy$JITIX30#%i!`%9!LoGqK;ff(2?@BZ1!cZjBgAW{4q1ableOf z34w^3xN+gwboDHH9deM$1h704#4T2kI%EDr>WuHZIs=`5K?y2Cxl?{Rj`QM)DcG3b+n@7I^?k{TrS&vFT%M1<$Fr#|X!%`$}5ux~Ax+ zIp=l`Qyt;nEdkSYj0FNvwo6tbrkS?bXm%~OtnKtKGG2utXh056-{*Qn&#vMpBG)6^ zU|^EIDr_^%GVETg5hLglf7XG5)WkzgRw2oQZAv9t&Bb`A7e6xeLB<=*(I8SPM3$HVHX;J{UdeogQFIQi|&^ zRa-+WZgx{y)c0vP#4`b=mC6isflu1iQ623PCGQ&__k>jq%PU607`9a#;_^P8VD6~G zS$OuT4ND$;E;ARSA^AB%UvRB!*%H|?I2QOPMpY^iCD@_K%T<^!WW_Oo*=4dAYZ|_= zCr$RDC1`9r!*O(Yzn}D4z;ssptIK>tui4yK6p%K+> zrgXI;clsrc)r^f2$s(H`E<1{jlHQLD!d?WsJBPq8#=tG_Ie#UQ=edbVBs6&}5hk*s z)&C@6KGU9T!~3i?-HGA_YvA)wi}I0Rk_7J`iB9ZPSiD*+pSo-w2|v4Puv^NJXt&GY z94p>E>fn2;zwS*mM>Z9%>A1dwCy@Se=-E;HEf?wAOrM~!U|Do5ghsq>?U#RoU|t}C z8T}xbI*}fLC-)=GU!c+cMle=Z)`xxWptW4z2==Y~4Z+lY@AUtRcTOzOP?8S?PWI+3 zK!olQ#M5F+GSGi1lwd^9=l(Ll5lp6AVHhhX-9A%S?F2(-&~CkI^H`Z;*+VT3kX33? zZORKG7zv1A1b>KN4_z{7*%fHXRW8W!|JzPPNJLa2RuI8t4MC@tAYT1 ze;RRGLbiwB27OI2mFDs*v?5v}mRmyV^-W1uZZCzc2EL}63A9BIFZF<_3Fjx>XGcwo z7`Dy2p(!C@=tO-6Nt`#3m6I4NTdpW>EypF+5kgH$6r42V$V2ngFbvj2^d0drC9u2k zW3mJMW%k6EXDP)ctlLdJ;n=&kF5tFJOm(9p^3RrzpFg7tQis5H8-Nk-VJ!gzFp~`5WwfuWLYFq0t+{;V<3}>;*wm$*&8G}DTSUl1(&p_sC|bE{j??>$ zZ4<7Sheid~l9m_G^v$_3smff$`;aj$;^C{z&ga*wECx&4-9ktY|u9*VChdnRm6vVbqse zWYfifeMI!|X_4toN*SkUQM3So*vMMqQ4;kK?W0};B@g=01D+9PU{a(IwsZP9ad}&o z!!-F5xkJ+^)OB#Qvp+$rpZzf^u@AhE}W~La_n3SswPDf@lT8){pYHe*f<~ z%D>F-H;hUV##8k@Hk955pwu>2yxWJmC%|tAuq-fyp~nc}+WUBN!z~2PAK~%|s)ZNh zgVIJ(i!~E&#YnB>!709`GKgc3K^!CdLmc~6zu)mD1lu9MXgan2tQl@$PHD!~Cnhgky{Tb&FAOW{V0~T6b}~#&(qNYftQ|2& zP9h7$Slm>lWtW*mFl#o+skCa}9pkw>;3}_W-W&ER9zJGIpI?pyRy<}zSkuvot-yHf zvoLuYIu6gf!UWcu`Lg~{D)$@@^4z3w<|K?1Nk9Nw-HR~>t)!4fO4$|8`x259p{h`C zw30+sHgXF9=RMa%yujz6Hx$HX-1&kVE$d(2>ZQ|NcuKlPD`6v77>yH&OiCNS_2JhPfiEs z)=Sg&J~-`nrou0+3HM^o`N2JFu-WvUSRm)fpmEpzqT8mUm?ZaDw)zelLHcz5dA-=Rc*r{*ys* z`1#y_kp!;IT**Yw|-zZ(`)qu91Eb_>r5(KnA9>e&R zL2(sUg@5}zYzyR;QbQz_049DXz zqjZK7poOATy|}1Rq}bapbhe>>c}lvr-6Mf@u6tt0nCPp_n*L}iSN_7Dku=F{0rV}M zYR#HAbo%I;JW%9)0wRy#tK>`*WTCJ0lfoz7>59XK@&(VgLvg^i+j~mf_4Lf}rdeP| zD)J(D5Ds)poN(TwKVc3i_4@FxR@06*ckja5t*M5xyT`QZ6mUA0advcpK_k3!(zbXhoW zWO^Prsx;l{)79?VzE+x0ipryVCiOKzvbnEqdVos-;o|eYxXD%qPPWr5g$oyN8~*iY z6Ap$x=uWgE+Qz$bw;Z>o{^1g64DdJ{FUPe+NXUcKl`X=V4g_xeWF(?RDC*`NDH=O+ zyO<;b?YP2A{mg|gSyzJ3#kOlorqbpXpAT9ZG-LR4lF-<5Xi%jBJk&Z4r|F2yU{iR> zq`wyGh8CZNfj2%Q&~8%bRl`C(i51-LuVEpNe zlGm_-zA(Y<(9hqYoAqs_V)9woz4WY5H{G+uMg4`;A|bO+V`KH^YNwP$iy_2qp?A{r zsMXvkFrwk)f_5Ywb{beofH)VX1&g_>DE78L0kRHI6It}5i8Rk9%&*-<@ce5)#>E0! zpbGk$ogX0M0)3s>_Y&Y2@YA^^C=ko~e+a}%0K^_FBzQ#rUk$`Q42?^Ofu_nq(OFSY zK0`!FO8M8r8Dd#7Pb-X2xXcjx5pUJR8jCtt?|8$R)h~je=9_&v97|M9G|34OT6cY3 z*i5@e9=0UlNKw2Ng^b``Y1hVZj{~voUpcSD@ps!y;Wt590Fg4f9Wx<@w<)1w38lPtjZO|lZA;o&G$7zCQ1jL3% zO5HX_dtW7VqlXP}g~~d{m=C()&?rbP?Z;h#Lz$wpK_?r$2yAAp)ss`OEM1=se3B&3 zF44!&nB&nb6Ty$uVCWwGxE>|^m8=ZR!JG4XJbkfM=NTeL=0)dM^2c%p;A*d&3I&gQ z6p}^m?(G?1#ZZmg3=E%TxY>GVoA3)GBtS=fN|jT#aZ-p3@JA#Sx~DI?B_ewP)+tGs z{*-vkRPk^Vg_k(ZjwAcJzb%77VYLk9! zMr@!ZGOA5>&`U`b(|vVcyu)J|s}L8A7hAf$*@rgAUWGwskxv|c$PjB-b+&i;knm#% z<>ALD&&+^k^H`?agr`{&rHaTEoMy#0D=?&?Q%g)N`bD?tm%KJ`zxv#NUFY|N_yagHsx$Flx-3h!U zdyg?5pLQxhQoU0lZS)%8I-~{Z7P>?47a}> zro$;bJhbo@#cj%;z+M6fdoO-q4>ux-CP6R4_^-kqC?yLD$$s0{`miyY`$q||`iXj? z5}@?iZ^kYk(q}+Uc5YVCg>M;octpB?3Or>H-jsyoB*c_Jm*hyrL6=2-`P+fWDI)>6 z2Pc_av6>@|3mnQg#sdtep!EVwpQRbc42uQLC}T2Zhmd{FWuadW0GG%8RQvwM9mA`^wF|Rl^H?1%)C|< z>s;4le~o68Xti!dPyheL-djdxp?B-vbT`u7A#u~)EuGTc-QC?tBOypPC?%nEcXxNE z0wQ>BV?EE>YwfdNmwRpBwZ}Na4?6YcgTukk>p$l;uL-X*=%ul89nDo4ubh}QoMt~A zuyduTOuswp%IjwmrX{khz>{^paS0!4$kc>7j8J{1!;Rb@op`Bzevi-i z@@%8McReWbg>3-;L<1_HgeS5M8t-&Gg+u#nM8t%3uRaVRri2rPb%4zr4S80;wF+Yb z;Wb9Y2mfH6c*?LWLa<}HAleVdG7F#mk1hR>OGaH(%x2j1&uN8P45xd1$R|-0A(}-r zz@7^GZjD5mC+F zLh{ZE_rQ+I`F2ukv!hW_C!Bg6`elf?OXjzT1kmOVf!jM-^LeBZqGoC9 zb3x49Dm)XqXt17d5(QYmHpea*N}{?G7d{61zaC>D6TCmAzKIITKF$Ia=RLL`7J}}7 zbY_FE9=o6#UFGVZV@MYXS?>bHgIIV36Z{m~&nlQh)puN8I0-LqLl;FA4ff-UpFmk4 z5M`F%QAWxLNqgtNlK5*-1`J&U4l+3a-%$p9lYTG%xO(}g#@gSudWnKoMNK5wP;kdt zc_&AlYFb6&PK%<3o5hd|vsSyu-$6#Y+y-*MSH1d5#$Q969ZaV+8!e(P{UZ~h<9e6j z;T(`w3_x1Z{v}#*e4`Zrz>rS|pk)G5>l>|zn7&Lf|FC@d#V~96B^bl#pPzfN9FhP7 zCZ4nx7Ea*aCs)rqwBd95Bh<3=FLD>Y1Wt+*S#;P0Ex|%ZM@!v83rvcj>{_98md42f z?{Jp-@o#mW!@0%2nmw1=4q}if--dNY(VSu;tI=Jm5#M=5q^>pKeDhIeOaN?a^LT;? zI{GLF-dsn+9Ne40t+K>UCf!wN(Om%3XT$0|^1YPtCX-{$`I(bQUyW0xGTQVK=f%lZ z)zK>?#9YTQWK-rf%|!%?r%8~Xc0PtlzjAWgE{<~05z0?z4=)>ph9j1)m!LDOs}>I2 z&5*zm81f{4O`#oSLm+8FXB%et1z`g$4|H?scJer3UnM6x1NOL~`BnsvA(R-3JP! zKv7JI`A(zuatp<5%68jp#+W=ZY}JmMC!eM5N8KN_7+6ZkRaU)^ig+8}InyLZSxy6;~>I76r6MJX-OAT%=fckEWEM%s|s)vd?wo zPbMsmg%=cwG%pY{WLg1I%ScbcIiL*AgWwY9#C)l+0=5mg0>d)Wj&sRYTi=cLx^|4! zVjcO#ZYf_~IiYpf${<-$07NrD>+O|$2rIH={odAbQ%8Z?#;3B39jn(RiN_a;N%9=H zU$bxo4z@W39?On{{{*#uAK$~vYg!e5uuAw#s0G~i2HItT6M!#=JD6F3C9sM1wFLa( z3>wQH1=!!YrX&yBPuG`0G2D>8pfu1Db?Z%3YkSJB59y(85_%6v9zf`~Wqe!(>Kt|z zR=bb`29?-|{1LA)Jg$49WxDpRcn=7!{}??w^3RH{?dPM@&)n{+LSc{xt3qrRB&S?=vEOqg;-k$wZzZ?V57RltJpENH6o+ttX0-5_;$wHA{>1~zKkIHGlsHl#Ir3Oq`7 z#L}vX`&1T)h85%)I-cnPE)6{cyRx1p!w6O~2aV^ve&czLSGVrB0N_KdA8Gm5Xle~aJL+!@C<2Na1~iUYN~u2 zu>sT&cJBcB{h}O*(5q2=CW8xXs@1jYPq=uy`XO?Oac=>T*#yGaZ7ZPUe((#~nVA%i zlb%fDna8v*HAB5Qm6`qUdI+pJ#$t89+mZBuN(CACm-UUc;g*9*=odtVBy8h*#{vp+ zcVgX1gECAY;sXQRVAAJ3lBRTHB)vB^5@4z^pk@kca9GU=N;bOctfykcsj=|v7MTDb z{{+V3f#S>KyZFNJ=0jM-11tSS82d5@VB%!`=D`5E{(*CVujL=+0Kh-^!#nanjqmwy z+>^z@RZVkBequH%cU>%xwiwG%;AC?KNwr!ON)3j$fb}r10!Sp8GP6P zmuDYVFo>Ea{{G5NrhW6BzxvpyFhMAH71Rt%p~@~~L__6*CO3g~7AD%|WhYiKld3LW z!-CdptcrHHextc5^noV>eG2im%-S`^mWTx~#kvj^$t9i_o@lylDrr7XZ`T0(>!VE6 zX+|Dztc#$hc4${9J5*O|gw4R``NiF`W3yW z8WI`{V{b?dE5x1$zz$xnRXr236H$>(pBNvnH6>i+R!`%3!*g1qnpb!?8yZ{S>RWJSW>|Zs8CNhItlGV7zXo zlvzk8gibevb$4>AN_ndHQB)+QMGLj5p@sW8!!vYG|$RKTKUHD5^nr8PKf8yl&T6#HD$v=7T8E_&3DpD z^6SGH#K@CTIqUIBcqwLJ{)4jcjdtFQ9-)=)?)9{yuDt3)_KNXQw0ob1q;(>vAQwD) z-wuV4k*Va}Z1z^;^G|p*UE@(F|IF!--&~bA%o`oSSB`+$a z2JD3a&qMy``X%Hs3%xNq=&FO|gUKQ(GvRL(-$T%Mo(`|^zpUwl3_BYxwgt&mu%I^mhfv-s;a|0)*{{=lTBBU(d zNFGD#E%f>i?MNe-vUScMe}rJ(Q{hNn~q3m;_aUqHWDSCT8j7PUYqKHPv-K?<_5!??Z~ukYuF-GF4g)o1nY3WH$M!OOwAHkhgWUUIpp_M=ZCik80BoX zU_Ocw5EKE_(UsZd`-3OrI5gWd&_}Vd({J$AR-GPJiLaBW;GuK3(P;GZj0ByZDh$K< z#Jbhx667}BjXuZC>7*qMd)qml0$5J zRFqHMAnz>UwOySqXP>(g1TTj9ABq)O%{jc(ucg?>dn;1U#+f+UFbFp$A+FKxZc*a* zX{j?tVH#19yp6G}>eS(S%pi>B{jTegFaG5Lh6!=8ZYa1v6!iVA1Z6>@>iZ@odfNI5 zmr2duwF4pHCuS-FpAi^>3R?&}ZT$I8Ai3ijio0qy)NSHWuHL-gG7YMQ?lle9=(oxB z8EmCKnvp&nkJs`UH6i;68TJe)!`#2iFz2G+TRWzKm0v?JV1yV@dvOB3$}m>Izso-^ zU;e2F_CLRT8B6mb-XV$ONT~L9FgY^g8PuZ;#bN6rcK2K2VQ+=ws})EpP7u1?q%}sh zj1S8*?gZlK=&0J`iO$s#Z3VI~!+{hd0}3;uza-4)z6mqnC6#=jL6!+MURuOk%<#qAmb`+28gO8u3uT5;-- zgUs7mp#-}l7hg*<_G|JBm1hjEmw5KqwZW!(=FYfpSsj{!IEW`(6QOK%Y^Xh&gZ6JF zOM6bZ7vj>`jsb3D&%BOF2>M1@(_Km#2Z#s8u}W6bcD1A4Kz4`pJPWTXNt&sKbzgZt z%qCcKwDqwiYff!quL@Q?DN?S~U_9$GByb?SoFG0ZqW&r@y_$V|@nF|jW3$eNZibX^ zt&(j}7aw6ujgtv@bCDNwCm9Uy?A9g3Y2eBzn-8DmvaTf)?xw)gDMy&r zBB}2cwMM+*aDyY77OxRFrzV_$hKH}IW%~!G297||8KJ|v}Ei$c8#y1oKHR5M;RPJ`utTQ5#BwjUyJ%)9X z4Q+`pG>#rf&Lym!VU=K;1<$ksh)zvTovJO)jDi2ylvHMI#L;r(W< zXpK9(%9`9*YE-wmFLE9n->1h(+Fs3+RG3>FC)y;4u*`5(`~<^>fefqr&M+f5+@So! z*`Z&^Fkpt_*Cg2Q4EtLCaU}Vtg`{6Il2o&J&5(#C*iaZIWu9n)^Mc<=;SyUsw2{}M z_85k5li;THb$@A6E!rbz*Oq|B5-O?yYe)pX95Cu4sYx9qDl#C)w1FH`|4SS*`NlC_ zfOftnK%Geqpz@7lvP^9Mfnz{H_9dO);_Hr*se!AVqk-XCFHU_p|K0#&R z;%w(=;q;Atz~2E5GF=TUtpD)i#gIhl^kUc-&z@8%r8|-w@lsfhy}X{k*hoa@ol5qx1M;DRh4l3Sj9h>|@o%iBeXYz_}^&u*{rkcXPf2z%qT3rUi6(<)1*(0&Lr9>`X z9?$0m6?*J0IK4f;JOjexe#TTaL_}?Y;>_F^?$o^F`%B&{s9|k1;(R`@5_s*)y_3Y( z-pb$0qJzsl`Q*nKxb}3ALSLkH;WA1**qR~)BO>61{Ef<};#r?;Q^X{bUw$-zXl^S` zmid)1#2itzdycUw*}VJRmSJm{o+7f)efks zo(8c`8X`gc&oZW*0gE-gCa;kPDdLX67CS}Z9yN8wy>*?dbN~1g0JH=GQ0Y4WvFT~6 z^{hVD{TcwWeu?l0?wWrG;J-_NEDO_f#!TsN+u5@%aK}K8_BRdxka--tAJY4A~KkEBqnZkaF+w{{FhX zv60Y-q;T_8ia!uocM7h9d=tHgBR{t6ER*Du z)+Rwda+B2E&{Jn@qLkt?7{0yG#+h6ykW4{m9|yXe{``*vpImYLwuc#1~#goxRH!mB{^tTG5IpETn0Ix7K2=KY2Ysn1;_F*ACf z1+$?1)9MH9?5(LmuWGH40bHLJ_-hoHH4FA!R#lh8up=gZs$zprii6bA9NV~n3X=9%h=hHDL*i$sP73PNxeXOh3 z$fcyL)O3{)HLaQPuEBJ+3CleK+l-l$Q;~7s1S9svAN^*iM;>^%7VH2UX8!obd zwOKe`wj;|l5Z{2MPa3Vd6I46GtR+WLJ`V(|20@5k& zJDphetExuAN8o=Aoq(H501j5xZ>QnDE;4;D|0vJ?)am~<^6VK{yN#)LE>g`oktljQ zW&G6+f{fx8MD&EOm20=yW~xn=k0=q@8KhNZy!bLpKH^km@u732cWhH)-f05J)*_H! ze`EijiJf@EKau$NPfeiQ68$d3L^u4O3poLAlKkU^*Btz-oHduWR(^+_byt6&Ze`TWqCy;`2k231{ui+Wq5+b%qu}{f+#< zP7f_l7$sEhQK~E7^xaP9rAFjp6~dZjYh<7l6e0Y!@MI z797ff+_B8Jq@gb%sdk6OD9b}v4>b@DiwKHgqND4^HbK%&UWk1d?{$p>jhDLt85Pku zO@mfSYn9@s-jIN0<&e@IPP6v6;6TRW33bTE)*Vf}B_n!axnB{8MGoPD$D8L&T`Sps zh0<3#s7latTM-bWHpa*}+$O;0M=U8?hQJNBgGcs9ID zpW<1m1mo;3GnTT@_ZBEHpS)xMg!X5boa)m;LP|81EGSOTPeC%nWIl>Z!E_GL8_IPqi$ z{=~xh+lS#0Ab=kh|Is#oEUStJYgEj9h_xQ$DcxysbO)9MZMa??#%eV7XXUh46$rQX zaiv*e?W($q3-mYJnz^JchDXVG$OAtUBgQXN!$_m z`(j$2<6BWjFn_j=-Z@r_TOxCWxS+M1XsaaK-QnV`aVo9Rg9DFxSL5Z;$q;eyf`YzI70r^IQ({D54cu_)3Erib{o}sl+SwJT@ zU70sEOm?#uOyY#QM)YHqdL4j~TEkI=c;hlI6u0 zGjMQzGIy}=sMCqV+QpN{;#*asEl6iH_k^F zgO?`v2=4e&>-MKZ&jOx@6NvI0(cFu+nkh$!6YCThD2oL~Zcp7&!{sKI1+72FW+AI&6QgHWU}MQUO+8A^bFn9^=ZqI~p)$u#2$8GD2= z@!eGp)85Csw>r0^Z5cN*LQ>cBlo}>4TJexXJW0e}Rj@Wdx)zab(8+zAMDUnEdkBGkE1B5wG^3L{ol*X0$y?^HdH) zm_BoT3nNM+-09T@r;~52DAC-vEfGtW(U;1)Q|O+vGxFcjB*id9H;2I@p5b!Y@^7lW z_uzZ^KGTY7ojA9;tSQX7@uje5zl<|Rqe^4aKD=o0+^`A;Cbn7b>XsjmDIHY3^@sR; zdM@e2u}}VpGMLc}HJ-?b>**s=8!sJ#oiKb_`lWl3s6=dA5>Pic-aB4W#0K%%r4rUi zVi1D9YtCo%!>K_OAC)MqFR8paaXMKkQr$XHJ8)H>?*%0}vu1FAi$@g9)HF@OX=ny* zK2N?vuL}S*(u|Fk?RdJDQB$rE9m}%tk$_H4L!yXi;#45yaQxaMFKe-Y!B;*@JmP#_ z^X-&9*zob`e5>21`bj@pNmgXQKIq%TLF}Fqxtm~R&6Q(ABoK1X+f%*il9}@Epk2sv zT)O=(z7%i|A;zO=+#T{KasrX9h&iQOn+jMqfEMU@f~d#UCI`8v@8N{YnywI^vFsNF z7jiixettllp3POO*jE_YfzID%S_1jB!-=H zy`!jYhaWBx5qbUH7CZK7HY`py{dB=#4j9|5X+=3U(i&++1UbK+thDbt6S=oV<`Cjq zHuN1Z=P#5NK1ntAyn|$6LX%gA%x+YFW&$@J?kwWVfDfwk$VxRp?k8yW`{$)PPwI{K zftbs$q1hKVEDIa^w}qrHq1L~Zf27%ex`z2bOEcTNzIZwOOS^%U_2qX#tB}aCSBoK} zFH3TeZeKLB`}ceNi{t4JUER4J+=bUj2kG>*#DA1 z6Zt04fPwt^KzkX`8vNx_FVI@{SV)*&$;8^kwX+1+(3i3`wR5!j*3bX9H$&u$X8V$j z{ZH?lRg_O0)pcRM#YqmS%`KAHRjVtW=OQqeskX4`}W22@sx; z2@L~nZLWC-4}!lrb`mQiEtZqnGyIxvCe)hyNUSNGvO?PK)mpz}Mb```m%0v$9Y6a>~V0|6L(7M#3P|(qqgDO@Gi@SdGWh5P$+Py*>v|E538h8pOaCkc)I`tqU-_ z&e_iM5)F}vsBNb2#h=)Wh-XONW_6OMq=uVS4xsLMw7fp+T@IFddljq6bnQUw$gGUc z988;-mw!LgclQ3K+d}C@fkt)Ji8bF&@{Z7qqhJMOqws+h4cY-68{&#W)5W}Aa-I9K z(vwhJ_)Vy;YKnB8SoZ~LOWX2U-$!om*CyKtU|H9~1$ive-#FZ}-F$#k(=r}1NPFL@ zMNHm?Qsbg4f5}R!S%M1Qcxm&Yu^Y#M7Egx#1J_Pt{R6lqbm{Eh%Pa zDy`jN@1%2Yrl3g?mY6tc+{K`Iu7^JS1lqiToipR_oimt}hF9hHl0ClyZC?$tz?~#^ zwy)+4wlB}c?gLUf$~CY8obQw248oJsopN@t)|jk;r( zTOixf&3WdwB@d+_EgLT3wRb6yW28Wi5&k8PeaTe>E>!{-D)WI0mA~!KgCn4eaL@|_ z1ImDpN^1*O;Iq=n?w|j#M2GBC0FNop7tgHp-zf7>ho*f?`XjtDevKGOEf3Cos{gt- zfe!EnFJT0l7_Eu*zLA)qXW|heBMj3m-Wvx4Bm&g64L7Wlfv2ld97~1;sboAz4zje{ zgSx403AD3yD<2WS=5pMiU1|N+lRNwgrcll-}tu=*R?sRYAEJPS?VeQmv zZ{zkUF1_r;pNtKh!|Vs_BSJS>xNcaL#T8XgHn3p=I>wnxuS39LM5<$}x9II{wM6;q z=Xi6d&73y9)pS~#Lf%!2PmQdT*;Q?tx1c-|oSZ;eR3G{iHSD3YN=&2?{44aKN_}ja zL~TVtQRe25E0&3~ydFwt58uLC7Fg=6&Z${?Of#oMVFad+2%n6k$LG*0@h8iYHCK|( zFCw_LoqD4lmp0A3Rv>m+2YDL7)H7lv0^-|tutx*y3`_JAyebFsD(O3~tP`~`*RgB& zehsgH;bg#u*7t|ymjiLXm4D2>{`14~|F`UGpLAHMO#X`IYS>`l9c%pPti=vLtl&ZI zJx}Cj9=`f%ZcJ_~d-st?atV!wNt!RhI0cj*`zK(tW-(MI-{&<6O1 zHW~m`KG0~!1T>m`lW5pNtbcI-fAMB?7CZgp^;lcRtTx8xUAi>CG|XiO*2c)Ecg#P+ zw-*Eapxull^(04SviR#grAV$Jp|ru(lB17p-c_g2mG)E%=93faCViZ2MRD5|%6e9z zJy^A`@>!h@*`&E{Rfs`qz%E#X4Pzzm3GOhi71+bgl)dZHG9pd<1x>o}dRM`;kIBRbseGsE20u&RN0MHjoq9Nw=<59@^{su%`#^yI@z+nl=|-#eC3MGH8h(=Y?ws zZ;_&Fl}yc$H1c}rf7h*8oy7Bj7_osPvyU)>fxp>7QqLzPz%0|frRoxuAd%RsP~Vls z5a%on3vCDUI&B;x6x_=PA{1dqL&b5AbfBlEHd;|GCw2P5`l?Vlb$k{#Sbi02uH`_~ z3Ly!v1GXZlDTDC_p$605F~Z!>3&f$>=mB@@jvK0cZXI40gCnyh;Dv?cj`=>UE+@2e zn%}}|Rz2;*OUrEiyB!E4VIE)F}1qIn0^s8)X3HgJYI4e`X9QwTY%8CJq`y@wT%nJd11HhQLc+mR4<55`JXz5n{Y7 z(s7Loh$sH_)mgqP77M4(h&l8yjNbIVZjjE7Q&3jRMfU9DxuSXJJ3C@MiE{+a&Mrl= zIg@n2ex&AWXVbo%-j8>%9zC1M(b&Az>iU#N=ZMsA>#?|wifn5d`jv8hNB4HfWhrzL z)2bf?LrG_V6O1puY1&k{k=s3^ep)^QXgx-(XWn7eHrWt2yp#{x%;(x`Xk*?lfOr*=?8tvDYDfQ_(IR~T_yypmy zY&0vOot*C{CPpMm;CqL|xk~2qd_DTp(62nSaWIKL2qrh?VMbp;4kZqWQDUc^NgT zsq|tHCU^BQ*bBA*7~|N?g>>)5q$AS_15x?=CLRe`<<_=*#*?JBxmG+|L4Au7Ps!^$ zS@v#FIsJ05wjh>ZA{#nKi;s%lHWi1lgFGLyTztKiIZFkPe}ZLEK$bcE#xlwv6?+KQ zq+i1_;H6sN4_4N%sj_Te4%dD!|FC~4@+Viu-@SjCbTxwE;#RdjVx7_2iMjKF%hm*{ z^zpXtvc|Q;apQqjPoC9t@JDU5xo>O8oY$(93wKLdvT2hkvUYA)z&M*yfW!g-6&T%L zQea%)6d3S*oX-HDWBPtN3LJq%h?)NP8UDat+5ff(f6PMR3$=XO{%tb~fg*~&R;)R@ z$RCknw&j`wFVMzZaXOc4MWNEUxh_t}n<`UshEXZQ(slr!I=UmY?;Ny*4}E95ZkGEY zvn{xgaIUQzY89W-tXa}Mvth|=BT=C}7hr7{hT%QwH!|eg)kY+LNuI*63fN~US@5Gz z!uu3Qu7uIhvG*Z~fJSQ*c$kRROV6sb-KHSAXmYLZSQV4B+v#O3oj6WO*K+mSrBI_J z1cw)6VztM+xYZPobD--Fbt?AuLf|R#U>88W5Pd$#yOet4T4WR}nwm^9er9G`mw@XZ zLwsBLK!v<@w?)va^qB}reIr za3Gk2oG5)3>8wSx>N>q^QgQO@_Oz6)gEd}0bL$2w?~-d2(&n2(XoNUV@7PbXL@)$# zCoX{NrMEla1DrC$T|?B|9kkvc&>fG;t2NIk6~+xaS2If11&h*wNUwA);exnBp$X*A=`t z%1r43ue5w681>--9k^OJ1k57kMKVzej z|0K8`Ai~~HiBC+`CB{}gx2~OgkoK_+UC~I{Vt&gV?DiFDer&BSKc;QR2m`eDUAcqH z`($#IRwE$3{?4RW7W)590sb~yqn0cuRi_^1*v7(7_++uo9QJ;MRWD2vpJ>UaNQX65 z&WF1YiQJilGjU>1HTyjZq*c8nv{^-3Nkg&rvwFO!sRGlX!W4Ff@3OZzr2fD<5IvSF zMqeM}&3 zcT84}X$GOgYFbH;bCX5w$3FY#T^iS|XqhLNG>JqP0dH#szj!$rNwsSX9`VW(MvjMN z?+gZ!#%GHS$F#^6Z?a~%NRfm6#(hT$_nIYamn<)W{k<#0NG08ZH;IA@Y)Deq%avT% z-X^cBPL})H!$`0V*mD$3CuPf_y`k+5ca7B14`@@O5OT~Rc)WCOTE0tGT$KR<#-S?YcjnoiRwxSR}>GYwXb($pEcw-cfVY} zN5CB=%S*HwikPf|WT{$L^GcB=bI8b6|Y-Qn~FC%BB=duca97b4%c(vZ8A z=mgVQy-1In+6}-)WAm)xU91gQ)50=l;{(+MRM!l2u(B!@e}Yx{KvqS6XBCmNQwvOM zq3N$-6+6%t#>T|?eL@NNclpO>~0m+Ta3*(+6tGQ_2SuNHIpB2z&gOL>T8c z5e7V?ln*?k!~|@IeQSde1Ax1ht`<(fF{Oo#eP^vRu@lflW^Lj`>}cX@V(ao>w!^>x z+yKtsog%0E!BgbS4EDyRfUoX0A_(Bn6adI!$e|0R{V%@U$kF=$65*4MHdr733LMPm zU|@Kk)J&Y3!8YzkxTb0)cbGWfdawRbDV#s96 z<2SVqFHv-xP z+=}fP#h%DUps9rx)}(z(fi{H;S9EU4(c9EAw@X_9d*JsA#I1s!F$TDHNQ%WQ^A0-^PWcWn8O^T_+) z?;S+8`0sbu?<_TP@Wi0dlMz}KD9^{UW-#?24*J38>M&*EJF#tuhFq{s;;|mNsRi#_&p}0*^)4HC(v6){+N4{_aaXS)y1kJb-qz6r)R;8a{Waa z%AT0e`KQi{I(cc3$h3ls5JgxPuc9ktnslu?ewW#Ez=u7xM|8voyqL!_NEl3h&HP@I zydB-quECi_^p7(wx+=Vi{P4!MKRtn38%im&HnVcpNqO6nm2MT32f^;e<1f2fs}=0a zGF=E>j&BxN`Q|6M<^bfH#&@nEmGr0gbsHM|8m@5yb6h!C*;u}6FyI;Tf0h5i{VF6X z_NR8(AMz6s0q|eG@qzAF;D<$i)cxx0f=--?*^3?0d{h#N*+j(^4X05Jel`Ohp-ffI zxgXH}K~5;GR5PI^j{tkOV^L3#4nd~nGgIIoF&13WyP!HCvPgi)BKS+l`eJqk4kdy2 z#q)vp#hLH`INy+k#>7njhvdZns%QU?fYd8La=Xh3ACyS~uQ*Olx&l;7wQ zDGQ3;_CN&xO*}46Np17sWO0rSB-e9A#}6Q;~A^SL4=k%DV$oi3YojI&x`n` z{*k!iPcxSTqN9}}lyU4y5Q07yKz|%)h4&~&GrTd{+P!UiZ=Vp!!-wUw?x@!^UU1;a zlimf-L(JsibnS!1nzbcuvu|VNOwum+&x8_Qjc#?<#soCQ6z- ze3b=+6B8byr+SWS9Um>t3rve+vt4F59Nr#DayJs-FZ%J}3PHl#?C{K{K~Fy|td3IC zh~Q%3aZJ3^$2F9|uMHl|+{?3g+7@CuQa>Nz_Ra#SVVtSOwzAq|fvLj0hqr4as;6xO zQhKiA%t(-%cyJ}@Sb;B;&gZ@?JX}6Ya-?dy9Z*xIrzpi&*x&HBZIo{8=^Qrm6Fbk% zM^o(kMb{m}mpo?h_OTi{m@+h*f>TRZocgGi$mNBH*!g=;_8}oCDP+NSf^4}|?hBa|zN=m5H2`o?!GlLaB{T$-i++FRP}^jfc1FA%mSa@GuxaZ#6* zynWRHQ}WX`QT~E?Ch6BowH@PataSEbeEs56=AtN6kXjn^MSOGOwX5gg}Heg6K8|&BW;=t{rf0ciV>1X}TVgQeT4zx`$6Msp#0Jiv9*}mMo zWMTT%G5sVNf*yp_&P&Uo^iw1#;86TSVnl>UFdHj7Q!p!|@< zUzKoEhX`9Edq27{Nbw`s11MCFP-$hn559s*4k5E)FHx~QkoH!1bEuneVB-%rYU%Ba zvrgHVwA{?V;>j3Ws?wOsFPgRT(oVZMfn9&AU!T*o}Q zAy7&99wod&kL~XQZFNkE4JW$(Xl?T#$lXOv~O@p8U3TR8?gNgdz2&}j?=+TKG75CWR8^6<&9D2-cNpR z?6EPlr9Wx!_u~G@vJZqCIZ(V2|0VH8|4qD60?6}80mMv%0Q_&_4TFh={;!4f|0DF9 zLD~>MD0giM)1hMGQ1)|}XdCN_9|4(gYVC7fUdNa6(+zWvrK=x5`G9!?PmMk+w6Qmx zI=8N>p@0d2lsdv1#x`kF#-*aBmH450q|dme?NEtHC9sxpeb8nWL2^k8Zpe*gHfD@vzyNO|>nHyRsb%fp7(WNg=)n79mz)AjcuGWh%_?+H&( zRK<#!NMll_yoRcCWG^5OtZ5m7VGmSon^bik1)Kg zWc5*ZJ`F*_G2`b@aB7ScD#jK}Bkj z=&vc4Ji!S*@hP8VNJ3)M>W-st)}dYVjYQ7JBgCoJPQ7wj!c>9x6AsP8+u%WULEVp% zQM$JWR11C}IBOHjK zim_7_6gfvWS^Jz>ufp+-hsA)hK#D@ZrFZBHAg=yKBR_zN{>hg}ep3r0pn>1?ixbw^ z&c?zBxEKC))zZV>gjn3b$l2w;HuC=?AeQcB8#GpzAgJY>(!rThB)i@jzVIUu6KG>f z^2l^PVDpplW~{;kSyu4ZeRGp3--NT$xJlmne6=D)*%{qRi;t@~4FwTyj>Y0mrE7rW zKyD=OKzcFxB+?9ZLyB$+S?uzL5+DKEg@HU(HlDrDvck(QSf*i=$E9 zA!w-a`iV#cQQ@naF#; zOq$S7H3y&JRSOqcVZ_Wc=oYG$8wPqpCXv0A?@=>vVarnFeC(f5dSI_GLbKhpu-kes zz+VFVKS@<0X+E6YV&U0ywBU~rQX7`I7)EY#nVjVl_^wZh6STt@;uGuhDOCc%79{Ey zlG54HstAWj(DJ;?DEm(AdEvzuKjUI0$4zvb_h?LtU}e8V+N2@(XsWA&u3e8N0`gN)?^D=}S zFT}~v^-KlzQq@MR9rzCXO76k+r|aLy-{|(!9{#Fv`b$?9G)TnR z;wtSt6E8G27$=ZAWk^G1GqawJEQ0BBA(Lknce4w7Lugw3jOd42p$@N1$d=?$*TB-A zo*@Gf_BUq2ig5nP!%wWn{Eu&$Jz{45fcUi3bukd{_*!$SmhRf;hrAV{#pp%xTE$bj zj#{ZH-p}%sQ*eeXNxCejZWXGv-$uTA?=5Sj9h2JG5~pN1to@XU%@p-=muRFGrRMZd zN1TypGnszsaTyx+USU)3pjQWdlPR%Dyq$L#C*8?#MpoBY2%}jG@Em4s1eQYU6VzSH zS#^YEiO2_y!`x}?3ZbY5vH-I7$ft?MtsJ>D@$)PVGX}xFSnoMH3D^RXbsXinADiAX z%kg8q2^J){-lKTo5ZTEqL(DtpYbV#yVatbXDvxSFrahw3y=NR@%R^AEW9n11qF_P3 zto^K42eRw}=L1()wCF30?vuokT3uwRX@>h^iIhkD)e&!*LpGjvq~}RnPVji=YQfHb z=;dC=F& z+0dBv`g8*@o{BjmfjBqVUXWev_W(OldX(l9d(Iz_V z>!<}pe}@ClnDz(;zVOeP9bOI<7P5tbiOqgN{PtLOYRqf?3}2Y_H%9aP4blAn2+8&0 zB-Lc=6k=X`r%SI|+8iHrG*-G>2mDOv(P~8L4GVT`cji~zLyF*n2$(&X@%~I|C(o+_)Fh| zq9+_Or@U^={8yfh{*FK){@0b&3D%sAkDWtoic?63TQ3v-5Y_e^NAo5k# zAW|pqAJf^|1dH3ra!|Sr^E3!?mT=H!wGD`CN2PUgC#>L@lH(NZQlN38sR?rGFN5k0 zM9;Wx+o0YHJfyEHUkP%(!U_{v2=vw#aCQ}maz2K8#E|cT?9C}n-G>D_MEUgXupw=fd47CN)i-Tb`J?gyXI zz`2fNZ|6_)L^`H$G%?P?enN8n{!9`!D85;@PpRIol3ZK>E+$UEx4!>Zh8?>o4u7|fNpV&vMsi{iSQ&|a|W`zicQg;dFlC>3~QlEItU!CDj%!FlZ zj145*-x!`K#P+?(|Nn7i{2zg_RVn|87|`|TxU-}f?$okDC>}t!2gt@_16z(@O|q=CkGq z2C-DyQJ!+Y=aP|#@1h7!Sdh z2_S*;x33v_q4AlXDr-87W1bIh)8J(oQR|h$GX=k)9W4hh*fvLLI?B(F-ooGO0o=W3 z&~Jtk$>6m%iK5hfF~=8Dy%3=fwhjm%65tyRr4x%6-Dh?i1YwC)`UN{%*RWR*m{B}V z7L$X$lbiR~XMD4^pWVc$JTQ^XG%$+eZxsT_>kD3fCdYkk+y37jUvg;Ai!n}=_WcTs zu>e?sTi{G=T&!Oc#(=ZPf0cjqj{SLh`OCaxi(>Q)vT{TTn###neLKPl3_u#Oyu@hsaUEFb2 z4ZPycuSh*p2R7arf@4`*GnB-GJ8&+WgdUsop7))FmFY52t?3+C4L;4a4g2`=k+qno zGukIl3XT_qhIf?)bfB&vPX$7g^k2m)=)fNsjpM_Z0v-Ica+s>!gws(t%L0ry=o~V7 z2dRq-n`!jquc#+6G2*3~6GdV5OV#fm`3dJ4c^B$1P%tr^Z&usz57*O1gIEs~`_v+- zY~8OTbsyg>?f;+l&N3>>MPK8@5JQL3-3TZ{cMm;uNQ=_l-7Vc9Ln@(2cMC`;rF3_< zfFjKu_x9ei&)N5`>)H1l&pvD2_tUKRUGw#~{`EXhp2wQ@O2fFLq-vgwqEi7uZ3FwK zV39eLzO{5FsAZ6lo*l@P^*{6QS18FeNYSUAjRq_kPxJ^pd2(@Q&}}&?UIbMG-yNv*?i!~{n1tCbs;rr4)~y{2{~2vK`Jg`-d zBTmMBQSjTFj#n8Xicl9*V3ZMU%1RC5)oDNpTi2g`A^W5vC19~tEuD9Gzyq@~?Vihw-NSC25sH~G3v?WFI za(qfFdL~lXW)Q^Nu)krI6(;oLX0dEy!)`K?O0u-(7QF(MZ7Lt0v?Yg<0mv>440_O3 zX(mv$-co#@yy!Gs3+{~a=y7F&_NI$vq>zwdX28Yu4!UvfRC20}NZ&+svsp@|LBq?g zX{@_lr8q>&=a!l#VmRuT=w9;~XHzB492EV!jtwVA7y1Xvg+ezu!meKARszvsl1{e~J#iFZ^@!{DRb8c7ry3tCKNkSYMHsXIMm&rELs zgqb*EFCw3<)>R8u#8@+Bo-2=e?fj^Df-o9Ap#Mb#OJ>uTBznEBrqR6~B*!v1&wIO? zn(MMh-r3~4Bes&3wdXrw>~ncvnGI{E%X@tgKGXAyd=lzl=DI{6J1oV>fAshdP%H~Z zvC!`nlb|$;^1o{f`Y9BHEi1V}T%53}=68|OUnpkxo3X#N3YhzMr)NK{c%$MlxE>W! zBj|YMdSg(T(nMHo%}aaVc=*+CJI466cq8Tj{SD1H*ttM#;_3>2`prQ5 z6tu;>7egk@oqb<{C3S%LbA;=U0FBB@@ZM4xfyf<|>f0>&ZC{T_dMkj^KuM)^FZ!sRzMt9K; z*M4AfbT~(7f*ejDP>9ah^)fq*FLf$KD&#;Ax3~K8pp2PSz)N;E6Df|atIyiN(B_fC z14g8|hccd*nhzeaHl+9UDT(x*;iP%z&r(jx9iw^iirj8^n0CHhF_NtB=opNNHY}2HO^$M5U`u4aY(&HNj0AX9cVd#_`dbqfd5onM>t)BFa=IF$vl~-~wQ7PE7VG^wv%C&%dJ&DGv?@7!)KzO?0AL zciN20T1YbSgPl%iHjiOI`)4Vc>|LDy?UYRS$*^9FsDw@M#J8e119bIAS+^>Gglk}( zv$P@HhqFE5#|nPkv79RSoCcBUqBYb#;2rno67v#)oRvFYqDI%Y&ys{YXKUNV2$zxR zK62iTo-iPNmk@v^7KRez9a{E)%JP+xy$p_6lI_l#5TK62Kvnn^tFo$Q(||-?MjlApm85m2otss(HVkE);PH!{9S- zCAu;Tx{M^`%&pMpGeTyE#Tu=(T-`(7wYA`UNv74;I8XT@$IV4JO|)y+j)5IW;zsa+ z-YmxItJh-*yi}c3_HYE6=A?O8Qh+t5kLfhC=E!N))(c#C?*?dGs2TX|n!`6U&U5XaR>v&dkCjNt~pITL_`!_qKVBx5yUJ*3~@t znH5f6?e2WBdQB#X;P1p_w6xyHX{J?oBO#7cMX*2b6L4oJeSTDQ9faWa; zB&mRkqp8zOZZJvs4b~2AVY36VM`*gCAV6bTVS4X0V(ZqvH%5b~Mo=g2|Hw6$I4sLk z8zP6F#5I^vA|D6r`QHjP-hUm}TBT3iZf>?^p3)bXa@VU3yjZzV+Sn$#QlqB1t4pW= zKL+LvOFQdP8;~Bv-uci=H$fy?eM>3GA& zWiU_`lFM4J7nDeWSp6ehBd97ldxAzzF!{`8DtRhUw2e8x=!}F!jbL7RfJZAP{JxJ% z$!H7q>T_1iI4ZGC2p04P^|`-rytyjN`vIGAf6$9rL&xx??kG`GUVfycmXcj$eM%lF5JXX{D{qf z^4@zC+?iznM2A$Mt{xzJ86ewB?anWArm#~_f6PF4(2|4;#qKk2$Ug@dt!|~hl8DZ* zZU@W46=CCbbU6w)v)$QMGU3%X zW@pQ?c~`N^=5e4JkZlq=A=KEDzs4;UMMj~ZS$E9QQumo}hQS-NqOTR9*C(upfsy_N zeDw;_NDTjADfNmr-$4N@kc55lY^uV4HVX5-8vb~jYwYKAi%k?Ww^=5AMLf)tJ++%Y zr`uZhk9pyaCHf?azEZs?^-sc9G&$cjUWU!lALU-8ya}oB#7QrjW_!CWQy7K+6zRR{ z2XR!o1l%pvJ_0}ufO;FBGOVKe+Vh3Z^w2U@<~;%mPg*-JF-pw!i3!nnt*c_PtNGv; zO2Lz^Vg$FUG?1(n#)b(JL|bNM0)azHvZ1zHw@}met}! z5*58nV=DoahJIsq)mz`N)nJuCd%3Sm{#)PbwSS<@iQ_-*f55Iz_6~1fnc97e!DJM7 zvi)UmAZ_YO#Uu$9muCLcH>8JPX)uFL@Z)0YD6%fQ#Tf;JhqONeINqVG-2mx!>?5!T zd*O0+?T0pX6;ZGTOKcJ@0cL**su=sz@rEDaQt z7a_;NC5EgAme5%ceZg$zGkGX4*3L|7oEbMLUkKDT^R=Kdup+cn$U8H$w7}gpSx;kh zp*Lu$-uJGsyzx9sV@XS#kFMh*>X#UZNBHwzqb76GBj=z4yox5)cw#x)YcLSVbFWe7 z{gL-wC3V0C4D2%T) z#Bv+cJatZAz3E^hyWBKWp63uKR8>8}Yb1Do zn>^BDfC7Wg5L32JpSOKii^;9dZJyRS&RbqG@!hNv=(9=>)g1qs#+2KGpu-nU+eHh3 z$-P+uL<WgCsMv@|T$n@U0ciBn0)DND&|fz{OIG{8R!H4^xfOb$i98AcE&)IP%Af;;uA+b~O3*(k-63r)ji z#n)pvAs58^BLZ*wSH3PxWme6i9%WF@lqX+knJ?p%8N#6U4|HJ^=V$wi#s3ovV`pbm zr$0Tvx&%%r(KT{dwq22BWPRfO-4{nTeuQ5M?G+#y(k4kv2fSlEi-m@hf(zOAYXkSj z)!o!eUJUG~igFm8U>^0pup&Z@3u!y5=QRbl9wj6~fF^~3TD_t;eCc_2d95_0Hp+sY zYXmt8yEc6Fh`mm|OYs!PQVe(kt6XH4a2HDtw487};bX>?zHIwwV=juu#6FPTT>DVS$cyYUMiY)* z1zG-(Sye+!8;5M`or}`1>fYJQs?Lo+2zX*K9IIl%z(N06zH5NC%oIfl$R85a-Rh+! z(FuhR`o`IlrE81U>$$4Q>bvgAFkx>nTXHJU@I1qt-4;tyj2u8Zsm8- zZdbm)%)N4Cqo5>(i3A3PlF$Ra)Z&*#7~3Wx)6q^qpUhDYeMNRtTd%gI}=v3U;H$&h-NW zHU8ffXg_U30FGEb!PSE(fc0~BMk{(_A)w2I;#bAHr^+4#Iu@9vieqMwn+QS1RZS2o z2LYRs-9ZadP_sDD^O=^oB1ObHjAj2o;Q-80_P-2eVY;Uu@Ra>i>^ti}ea=h5|GajM z^dUpX?%~MZ#}c?7p_x%&UgSW=m8iE zoA(bDKEKlC;a3PZ5wKqGJxqC7MdsZ`8DTD)g^w34O*&SCf%*l-S-oW|8&PTZy#$@x zm&p6mg3UuCY*}$_jNv2IXI1QYB2zB%K7wO(Rb1U4-Le1-niVxcF*%3ZDZ&J;9({&9 z8lFl*9noax+st03E6#hVeHG;c&0DNJYLP3uCWM%iN4*@c6a;woPrVab!-9?T5qbs> zl?OxuN{4)xtDAL45xfUAY_RU7A+0WhMBL5#1KT(v3s}^?D6kqvR@zKIgn#X*RDLN> zKyGk6{5E#b-f7^;XMB2Q0d7IpX&w%(af)~h2kik9KgGI~+}vIbOYq#{9IK$e>&jBI zZ72n2A-V3G5J4kl3Io2@4dlIwiD<8vJgx%zDlAu4V)>ggeFpxgudZOR*N@Je>+jKXfCv@$0Q&HBc=q^U}jl8 zwwrX&vt{I>j(27%6B!{L10AD2^R9YD$Nqp+bfBw*FIdr- z7yaJ${D+!-Po2p(kVZ`s_{R#!Pq)rIE^52Cy{a^g+*E=aC#Fs6mtwHl6E>zE&?qs6 zrD#1Ob{wBRUxQ-wjXhHLcTwrj^~7_^_CSS)N6fi7m;(xeoG1Mw^kuDFk2)z z+>%ZxRoc{LT)u+J-BYO;n_~r;GXYpHl1-H!($E^@%`7Zdm1ZqChiIQGl*@+rP9~%E zYQ6ecrLs*`IuO~zVR6oofzr&?o^&tHe)&b1dmtV#E1zFB+x<>Etxa$%&7;9Olx?(Te|veb$F z8u5ylw<^f#-gUZc^Md+NAH_75Rh@tyXe48xzi>w-4V$b+kqZ zr$uBM<29OuzR8@P6;WRhL_weEjt1N-rFWwxxMbN|$*o;qZ4AL>%JVMnhYFC>D6 z&&gZFrbccCTTO@C-1`H?*&qyOwcl}u=@UhFT!3x;b8yB9GnVCth4cP?D`54T=2A)q z{5$FS&+*V$m|>F>LM0)`RI`#s&M{u`qzrrsssrRE5T8%gIeYYP8b)5dhk-ON77KCun5UEj~G#H-JC9s8`S=ej$n* zZ0l*Z^^%HQ$^ZIVmK3B@tGn5895_A;mfo;)(N$V{mo8xA(AnL@1#t+ba1lnxiw>RX zNF-EeKdUjg?}Vf&NcD)YlwnU^m-*x9Cn`93yr{HV{Xz?U8t-0nUEbI6QD)Hk3>?Z@ zKKbY) -jJS1T$>7TIuo$x@QaxHUD zmF=B~VJ81LDE}s#YjdtNE&>`t7Wz}g?nJKb=Quq+4rRso0esSP>I<7_-3B&qZ z;ZlfGKo_;9T*BM7nne~vGb1dbgnffyoKXZ!X$VYnKvp#R-lBC&%0>VK>SMS5#U7)L zrs43EJLDl91s!=pqWsmFLxgubgv1EFaC6)Iv&HpHx0*0OsTHBb}&;v~X{;l>=}L)nxH zuy}a;QNzYs5Vnj>fQduO7m*2pcboZ&>atPP1ULS*(F6;I+L5Z&K-Yt*+oB`Eh(xv< zciJ*dO9YH)9rsy;uKB~H!eCJxlU5<$?Rz=y6cx~uHbJh0+XGL&YsQdQw_9%E%~2w1 heiu8{6nc-GDdGGirFwy{SY4361CWgk6AcsXKL8&8>4X3P diff --git a/tdd/chains/FR05.der b/tdd/chains/FR05.der deleted file mode 100644 index 0043594a8c9302737de59f28db8fde6e42d97c81..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2438 zcmdPZbvfCiQ;IMNn33^63zGqZ0UwCR58|;fGqD{o&<61ZSX2y@ z8u*P2Py)3PB47p#Wead98(4xA%d;2(y{@-FXMt9mMn*|Vft9{~a#4<6VqQtHUV46M znO<6vesXG=J}9Q*6M-^7Sp#Q~Rs|Lt11kdyHg2uPD#k_+HU>^cMgvU)bv6!dHbz!f zb|ywKX{d?C1(*h+B{$|KCPs$E-mt=$5Pi#F2BDKxro)l?D~`S z2WABRU7We}lie;)~4Q zD{r~D63!)m-5;^`@>Bssr_N_gwMI{!RGlCbq6dQb> z`05K@d|p{+!5RLlZFY!rbKks0jayDU_OUXtK4&Qt6Q}H@%Gb4vpY!G7I`6!~{x41s z|68tjI>Efw>gC0k3I%gc%+`*Zu={lU^S1`K_fG$kes$@JWgAxKe?HvAeR958-WTVT zx!ET|UQQ77G zRk(Ei;?Bv*Gq+E=_i>t|1e@1>de!dN4av=ku4>&c7?<RQQldFT+5qTjq zHVBKU>Nd_~W~;r z-OZU)W%bMS@u_2*j@$J9v50W6Q#Q%`qj#%1^^dNT=tg}rr|FU}^t^-Pj_zIBTPuE+ zdupxb#6Uy2I}5EY&tR~7yO1^cAkXyFj7j@v9kx?=-JjpZT zwy|y03a?6QpVuzW6zLdqU3k|zo0W{K%gUzN{54bG@pZaive^Iqha>L)wB0hrM(1Sv z-DlsEo3-OB?)lc3&-6YuO-AeEnrzK5uicw@cf0R@l>EiS`u;oK_Sl;b*P6!*wrUv% ze+;>xGCz2>wogg+mbtNU&5RbMm9q6b=dN8040`T&GQ~YlKg2rooq}-E&-kTRPyS#( z`73wBpSr|2ugZzRQO6?q=TsiJB(1)5*KDrp$I{E<7jOJ{%ld_zXy2kA)3f%jQR=i$ z(uq4Ui93=? diff --git a/tdd/chains/Makefile b/tdd/chains/Makefile deleted file mode 100644 index 19d12bf..0000000 --- a/tdd/chains/Makefile +++ /dev/null @@ -1,18 +0,0 @@ -all: FR01.der FR03.der FR04.der FR05.der - -tsl_signed.xml: - @echo "Fetching TSL" - @curl -s -o $@ https://ants.gouv.fr/files/25362bbf-a54e-4ed9-b98a-71e2382b54e0/tsl_signed.xml - -FR01.der FR03.der FR04.der FR05.der: tsl_signed.xml - @url=$$(xpath -q -e '//tsl:TSPTradeName[tsl:Name="$(subst .der,,$@)"]/../tsl:TSPInformationURI/tsl:URI[@xml:lang="fr"]/text()' $<) ; \ - echo "Fetching $@ from $${url}" ; \ - curl -s -o "$@" "$${url}" - -clean: - rm -f FR01.der FR03.der FR04.der FR05.der tsl_signed.xml - -# Unbundle DER from "multipart/mixed + chunked" response -# $ csplit --suppress-matched -f '/tmp/' -b foo-%02d-file.der -z FR03.der $'/^--End\r/+1' '{*} && sed -ri '/^\r*$|--End/d' /tmp/foo* -# Get individual CN -# $ for i in /tmp/foo-*; do openssl x509 -in $i -inform DER -subject -nameopt multiline -nocert; done|grep commonName|sort |uniq -dc diff --git a/tdd/chains/tsl_signed.xml b/tdd/chains/tsl_signed.xml index 0b9951d..ffe4c48 100644 --- a/tdd/chains/tsl_signed.xml +++ b/tdd/chains/tsl_signed.xml @@ -1,7 +1,7 @@ 5 - 18 + 22 http://uri.etsi.org/TrstSvc/eSigDir-1999-93-EC-TrustedList/TSLType/generic Agence Nationale des Titres Sécurisés @@ -24,7 +24,7 @@ - mailto:ants-cev-ac@interieur.gouv.fr + mailto:2ddoc-ants@interieur.gouv.fr @@ -46,12 +46,12 @@ https://ants.gouv.fr/nos-missions/les-solutions-numeriques/2d-doc 3653 - 2023-11-27T15:30:00Z + 2025-08-25T11:00:00Z - 2024-05-27T15:30:00Z + 2026-02-25T11:00:00Z - https://ants.gouv.fr/nos-missions/les-solutions-numeriques/2d-doc + https://pub.ants.gouv.fr/2D-DOC/V1/PRD/01_TSL/tsl_signed.xml @@ -281,5 +281,119 @@ + + + + IDnow SAS + IDnow SAS + + + FR06 + FR06 + + + + + 122, rue Robert Keller + Cesson Sevigne + France + 35510 + FR + + + 122, rue Robert Keller + Cesson Sevigne + France + 35510 + FR + + + + mailto:contact@idnow.io + + + + http://pki-g3.ariadnext.fr/pki-2ddoc.der + http://pki-g3.ariadnext.fr/pki-2ddoc.der + + + + + + http://uri.etsi.org/TrstSvc/Svctype/CA/PKC + + IDnow SAS FR06 2D-Doc Barcode signature + IDnow SAS FR06 2D-Doc Barcode signature + + + + + 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 + + + + http://uri.etsi.org/TrstSvc/Svcstatus/inaccord + 2024-03-20T23:00:00Z + + + + + + + + Goodflag + Goodflag + + + FR07 + FR07 + + + + + 9, Av Maréchal Leclerc + ST ANDRE LES VERGERS + France + 10120 + FR + + + 9, Av Maréchal Leclerc + ST ANDRE LES VERGERS + France + 10120 + FR + + + + mailto:pki@sunnystamp.com + + + + https://pki2.sunnystamp.com/certs/fr07.der + https://pki2.sunnystamp.com/certs/fr07.der + + + + + + http://uri.etsi.org/TrstSvc/Svctype/CA/PKC + + Goodflag FR07 2D-Doc Barcode signature + Goodflag FR07 2D-Doc Barcode signature + + + + + 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 + + + + http://uri.etsi.org/TrstSvc/Svcstatus/inaccord + 2024-10-09T11:39:40Z + + + + -/descendant::ds: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2023-11-27T14:25:22ZFfGoEUzk9kHYntyK4aWBpZ2apRk2LKDIbr+k2y6Pqx3kZejxrHTr0M/KhyBBio7zjgDxmZy2PsaTeo3iz5L1Ng==MIG7MIGkpIGhMIGeMQswCQYDVQQGEwJGUjEwMC4GA1UECgwnQWdlbmNlIE5hdGlvbmFsZSBkZXMgVGl0cmVzIFPDqWN1cmlzw6lzMRcwFQYDVQQLDA4wMDAyIDEzMDAwMzI2MjE4MDYGA1UEAwwvQXV0b3JpdMOpIGRlIENlcnRpZmljYXRpb24gU2VydmljZXMgQXBwbGljYXRpZnMxCjAIBgNVBAUTATMCEhEhkVnpA83YUNnHBzEhsVEEuQ==text/xml \ No newline at end of file +/descendant::ds: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2025-08-25T08:19:41Z0K5zi/6+OVrhIzEh65VuMDOC95mu2FZ2nddE2eEonG/BN5oO73rwq/JpJ2XEQf5yImOPCQvOL5qZRmXKFndsCw==MIG9MIGkpIGhMIGeMQswCQYDVQQGEwJGUjEwMC4GA1UECgwnQWdlbmNlIE5hdGlvbmFsZSBkZXMgVGl0cmVzIFPDqWN1cmlzw6lzMRcwFQYDVQQLDA4wMDAyIDEzMDAwMzI2MjE4MDYGA1UEAwwvQXV0b3JpdMOpIGRlIENlcnRpZmljYXRpb24gU2VydmljZXMgQXBwbGljYXRpZnMxCjAIBgNVBAUTATQCFGiMW7hkBhXrS/+ceMwN3QAgjO/Ztext/xml \ No newline at end of file diff --git a/tdd/doc.py b/tdd/doc.py index 0c48c27..fe1157e 100644 --- a/tdd/doc.py +++ b/tdd/doc.py @@ -1,6 +1,9 @@ from .header import Header from .message import C40Message from base64 import b32decode +from cryptography.hazmat.primitives import hashes +from cryptography.hazmat.primitives.asymmetric import ec +from cryptography.hazmat.primitives.asymmetric.utils import encode_dss_signature __doc__ = """ Documentation representation. @@ -41,7 +44,12 @@ def from_code(cls, doc): def signature_is_valid(self, keychain): """ Check signature against given keychain. If key is not - available, KeyError is raised. + available, InvalidSignature is raised. """ cert = keychain.lookup(self.header.ca_id, self.header.cert_id) - return cert.pubkey.signature_is_valid(self.signed_data, self.signature) + r = int.from_bytes(self.signature[:32], "big") + s = int.from_bytes(self.signature[32:], "big") + signature = encode_dss_signature(r, s) + cert.public_key().verify(signature, self.signed_data, ec.ECDSA(hashes.SHA256())) + return True + diff --git a/tdd/keychain.py b/tdd/keychain.py index 7ddbb47..51459bd 100644 --- a/tdd/keychain.py +++ b/tdd/keychain.py @@ -1,157 +1,60 @@ -from Crypto.Util import asn1 +from base64 import b64decode +from cryptography import x509 +from cryptography.hazmat.primitives import serialization +from cryptography.x509.oid import NameOID +from importlib.resources import files +from lxml import etree +import requests __doc__ = "Keychain management" -der_obj = lambda x: asn1.DerObject().decode(x).payload -der_seq = lambda x: asn1.DerSequence().decode(x) -der_set = lambda x: asn1.DerSetOf().decode(x) -der_oid = lambda x: asn1.DerObjectId().decode(x).value -der_int = lambda x: asn1.DerInteger().decode(x) -#der_str = lambda x: asn1.DerOctetString().decode(x) -der_str = lambda x: str(asn1.DerObject().decode(x).payload, "utf-8") -der_bits = lambda x: asn1.DerBitString().decode(x).value - -class PublicKey: - """ - A public key store. Only NIST P-256 is supported for now. - """ - id_prime256v1 = "1.2.840.10045.3.1.7" - id_ecPublicKey = "1.2.840.10045.2.1" - - def __init__(self, type, value): - self.type = type - self.key = value - - @classmethod - def from_der(cls, data): - from Crypto.PublicKey import ECC - - type, key = der_seq(data) - pub_priv, algo = der_seq(type) - pub_priv = der_oid(pub_priv) - try: - algo = der_oid(algo) - except ValueError: - algo = der_seq(algo) - - if pub_priv != cls.id_ecPublicKey: - raise ValueError("Not a public key") - if algo == cls.id_prime256v1: - type = 'p256v1' - - return cls(type, ECC.import_key(data)) - - def signature_is_valid(self, data, signature): - from Crypto.Signature import DSS - from Crypto.Hash import SHA256 - - verifier = DSS.new(self.key, 'deterministic-rfc6979') - try: - verifier.verify(SHA256.new(data), signature) - return True - except: - return False - -class Dn: - """ - X-509 Certificate DN low-tech parser/container - """ - def __init__(self, **kw): - self.__values = kw - - def __getitem__(self, name): - return self.__values[name] - - def __setitem__(self, name, value): - self.__values[name] = value - - - oids = { - "2.5.4.3": "commonName", - "2.5.4.4": "surname", - "2.5.4.5": "serialNumber", - "2.5.4.6": "countryName", - "2.5.4.7": "localityName", - "2.5.4.8": "stateOrProvinceName", - "2.5.4.9": "streetAddress", - "2.5.4.10": "organizationName", - "2.5.4.11": "organizationalUnitName", - "2.5.4.12": "title", - "2.5.4.13": "description", - "2.5.4.14": "searchGuide", - } - - @classmethod - def from_der(cls, data): - kv = {} - for item in der_seq(data): - s = der_seq(der_set(item)[0]) - oid = der_oid(s[0]) - try: - k = cls.oids[oid] - except KeyError: - continue - kv[k] = der_str(s[1]) - - return cls(**kv) - -class Certificate: - """ - X-509 Certificate DN low-tech parser. Does not verify cert signature. - """ - def __init__(self, issuer, subject, pubkey): - self.issuer = issuer - self.subject = subject - self.pubkey = pubkey - - @classmethod - def from_der(cls, data): - from Crypto.PublicKey import ECC - - der = der_seq(data) - - payload = der_seq(der[0]) - info = der[1] - sign = der[2] - - fields = list(payload) - while not isinstance(fields[0], int): - if fields[0][0] & 0xc0 == 0: - break - fields.pop(0) - - serial = fields[0] - signature = der_seq(fields[1]) - issuer = Dn.from_der(fields[2]) - subject = Dn.from_der(fields[4]) - pubkey = PublicKey.from_der(fields[5]) - - return cls(issuer, subject, pubkey) - class KeyChain: """ Certificate store, indexes certificates through common name of issuer and subject. This is somehow 2D-Doc specific. """ - def __init__(self, certs = []): - self.certs = list(certs) + def __init__(self, certs = {}, cas = {}): + self.certs = dict(certs) + self.cas = dict(cas) def lookup(self, ca_cn, cert_cn): - for c in self.certs: - if c.issuer["commonName"] == ca_cn and \ - c.subject["commonName"] == cert_cn: - return c - - raise KeyError((ca_cn, cert_cn)) + name = ca_cn + cert_cn + if name in self.certs: + return self.certs[name] + + if ca_cn in self.cas: + ca = self.cas[ca_cn] + else: + # Search for CA + chains = files('tdd.chains') + ca_file = chains.joinpath(ca_cn + ".der") + if not ca_file.is_file(): + self.download_ca(ca_cn) + + with ca_file.open("rb") as fd: + ca = x509.load_der_x509_certificate(fd.read()) + self.cas[ca_cn] = ca + + chains = files('tdd.chains') + chain_file = chains.joinpath(name + ".der") + if not chain_file.is_file(): + # Download certificates + self.download_certs(ca_cn) + with chain_file.open("rb") as fd: + cert = x509.load_der_x509_certificate(fd.read()) + + # Verify the certificate is signed by the CA + cert.verify_directly_issued_by(ca) + self.certs[name] = cert + return cert - def der_multipart_load(self, fd): + def der_multipart_load(self, blob): boundary = b"--End\r\n" end = b"--End--" - blob = fd.read() blob = blob.split(end)[0] certs = blob.split(boundary) - for i, c in enumerate(certs): + for _, c in enumerate(certs): if c.endswith(b'\r\n'): c = c[:-2] if not c: @@ -164,40 +67,104 @@ def der_multipart_load(self, fd): if k.lower() == "content-type": ct = v if ct == "application/pkix-cert": - self.der_add(data) + self.save_der(data) - def der_add(self, der): + def save_der(self, der, ca=False): try: - cert = Certificate.from_der(der) + cert = x509.load_der_x509_certificate(der) except ValueError: return - self.certs.append(cert) - -def internal(): - """ - Spawn a keychain with all built-in certificated loaded. - """ - from importlib.resources import files - - k = KeyChain() - chains = files('tdd.chains') - for chain in ["FR01", "FR02", "FR03", "FR04", "FR05"]: - chain_file = chains.joinpath(chain + ".der") - with chain_file.open('rb') as fd: - k.der_multipart_load(fd) - with chains.joinpath("FR00.der").open('rb') as fd: - k.der_add(fd.read()) - return k + + cn_attributes = cert.issuer.get_attributes_for_oid(NameOID.COMMON_NAME) + issuer_cn = cn_attributes[0].value if cn_attributes else None + cn_attributes = cert.subject.get_attributes_for_oid(NameOID.COMMON_NAME) + subject_cn = cn_attributes[0].value if cn_attributes else None + + if ca: + issuer_cn = "" + + chains = files('tdd.chains') + name = issuer_cn + subject_cn + chain_file = chains.joinpath(name + ".der") + with chain_file.open("wb") as f: + f.write( + cert.public_bytes( + encoding=serialization.Encoding.DER + ) + ) + + def download_ca(self, ca_cn): + ns = {"tsl": "http://uri.etsi.org/02231/v2#"} + + tsl = files('tdd.chains').joinpath("tsl_signed.xml") + with tsl.open("rb") as f: + tree = etree.parse(f) + + cert_b64_list = tree.xpath( + """ + //tsl:TSPTradeName[tsl:Name[@xml:lang='en']=$ac_name] + /ancestor::tsl:TrustServiceProvider + /tsl:TSPServices + /tsl:TSPService + /tsl:ServiceInformation + /tsl:ServiceDigitalIdentity + /tsl:DigitalId + /tsl:X509Certificate/text() + """, + ac_name=ca_cn, + namespaces=ns + ) + + if len(cert_b64_list) == 0: + print("CA not found") + return False + else: + self.save_der(b64decode(cert_b64_list[0]), ca=True) + + return True + + def download_certs(self, ca_cn): + tsl = files('tdd.chains').joinpath("tsl_signed.xml") + with tsl.open("rb") as f: + tree = etree.parse(f) + + ns = {"tsl": "http://uri.etsi.org/02231/v2#"} + uri_list = tree.xpath( + """ + //tsl:TSPTradeName[tsl:Name[@xml:lang='fr']=$ac_name] + /ancestor::tsl:TSPInformation + /tsl:TSPInformationURI + /tsl:URI[@xml:lang='fr']/text() + """, + ac_name=ca_cn, + namespaces=ns + ) + if len(uri_list) == 0: + print("URL not found") + else: + print(f"Loading: {uri_list[0]}") + headers = { + "User-Agent": "Mozilla/5.0 (X11; Linux x86_64)" + } + with requests.get(uri_list[0], headers=headers) as response: + data = response.content + self.der_multipart_load(data) if __name__ == "__main__": import sys + k = KeyChain() if len(sys.argv) < 2: - k = internal() + # Test certificate + ca_cn = "FR00" + cert_cn = "001" + test_chains = files('tdd.chains').joinpath('FR000001.der') + with test_chains.open("rb") as fd: + test_cert = x509.load_der_x509_certificate(fd.read()) + k.certs["FR000001"] = test_cert else: - k = KeyChain() - for fn in sys.argv[1:]: - k.der_multipart_load(open(fn, 'rb')) + for name in sys.argv[1:]: + k.lookup(name[0:4], name[4:]) - for c in k.certs: - print(c.issuer["commonName"], c.subject["commonName"]) + for (name, c) in k.certs.items(): + print(f"name: {name} serial number: {c.serial_number}") diff --git a/tests/conftest.py b/tests/conftest.py index 75ab4d2..f5269f2 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -2,9 +2,10 @@ Pytest fixtures for 2D-Doc specification tests. """ import pytest -from pathlib import Path -import yaml +from cryptography import x509 +from importlib.resources import files +from pathlib import Path def discover_test_cases(samples_dir: Path): """ @@ -36,5 +37,8 @@ def keychain(): """ Load the internal keychain with bundled certificates. """ - from tdd.keychain import internal - return internal() + from tdd.keychain import KeyChain + test_chains = files('tdd.chains').joinpath('FR000001.der') + with test_chains.open("rb") as fd: + test_cert = x509.load_der_x509_certificate(fd.read()) + return KeyChain(certs = {"FR000001": test_cert})