From 3b27b0157caaf42dd0ef124a63fa76ad65d2db32 Mon Sep 17 00:00:00 2001 From: Johan LEROY Date: Mon, 30 Mar 2026 13:14:41 +0200 Subject: [PATCH] first commit --- .gitignore | 8 ++++ .terraform.lock.hcl | 25 +++++++++++ atelier01.pdf | Bin 0 -> 55892 bytes main.tf | 77 ++++++++++++++++++++++++++++++++++ outputs.tf | 19 +++++++++ variables.tf | 98 ++++++++++++++++++++++++++++++++++++++++++++ 6 files changed, 227 insertions(+) create mode 100644 .gitignore create mode 100644 .terraform.lock.hcl create mode 100644 atelier01.pdf create mode 100644 main.tf create mode 100644 outputs.tf create mode 100644 variables.tf diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..0411e86 --- /dev/null +++ b/.gitignore @@ -0,0 +1,8 @@ +# Terraform +.terraform/ +*.tfstate +*.tfstate.backup +*.tfvars + +# IDE +.idea/ diff --git a/.terraform.lock.hcl b/.terraform.lock.hcl new file mode 100644 index 0000000..39a6fbd --- /dev/null +++ b/.terraform.lock.hcl @@ -0,0 +1,25 @@ +# This file is maintained automatically by "terraform init". +# Manual edits may be lost in future updates. + +provider "registry.terraform.io/hashicorp/aws" { + version = "5.100.0" + constraints = "~> 5.0" + hashes = [ + "h1:edXOJWE4ORX8Fm+dpVpICzMZJat4AX0VRCAy/xkcOc0=", + "zh:054b8dd49f0549c9a7cc27d159e45327b7b65cf404da5e5a20da154b90b8a644", + "zh:0b97bf8d5e03d15d83cc40b0530a1f84b459354939ba6f135a0086c20ebbe6b2", + "zh:1589a2266af699cbd5d80737a0fe02e54ec9cf2ca54e7e00ac51c7359056f274", + "zh:6330766f1d85f01ae6ea90d1b214b8b74cc8c1badc4696b165b36ddd4cc15f7b", + "zh:7c8c2e30d8e55291b86fcb64bdf6c25489d538688545eb48fd74ad622e5d3862", + "zh:99b1003bd9bd32ee323544da897148f46a527f622dc3971af63ea3e251596342", + "zh:9b12af85486a96aedd8d7984b0ff811a4b42e3d88dad1a3fb4c0b580d04fa425", + "zh:9f8b909d3ec50ade83c8062290378b1ec553edef6a447c56dadc01a99f4eaa93", + "zh:aaef921ff9aabaf8b1869a86d692ebd24fbd4e12c21205034bb679b9caf883a2", + "zh:ac882313207aba00dd5a76dbd572a0ddc818bb9cbf5c9d61b28fe30efaec951e", + "zh:bb64e8aff37becab373a1a0cc1080990785304141af42ed6aa3dd4913b000421", + "zh:dfe495f6621df5540d9c92ad40b8067376350b005c637ea6efac5dc15028add4", + "zh:f0ddf0eaf052766cfe09dea8200a946519f653c384ab4336e2a4a64fdd6310e9", + "zh:f1b7e684f4c7ae1eed272b6de7d2049bb87a0275cb04dbb7cda6636f600699c9", + "zh:ff461571e3f233699bf690db319dfe46aec75e58726636a0d97dd9ac6e32fb70", + ] +} diff --git a/atelier01.pdf b/atelier01.pdf new file mode 100644 index 0000000000000000000000000000000000000000..77f215bcf6dadd277faa2aed1173e46deaecd566 GIT binary patch literal 55892 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

qVs%&y#z)j8ZqECx*EVmvAGB z`~COzz$4s39f=FA=TqcQG$$;Sw0-Ac=P3Ve$oy`6?QTRjn=*HWe7>5$5O*nzgFbpW5wyU`~ufEl$b0uvoS~6Ba!;CT z30EYYiI)2fH(Z}2pEC4B5MntoIr}6G@v8a4N(B~j7jpa~w?6h_i%q?yO82F_ zavj)G#zo?DcYrql7y!JbzlG~~b2jz1^mYOGc=JIY#w5W!#yG|_hi$=d#?Yo;=Htu> z7V;tZoTA~(*DOe+E-ijQdx4%kAzmz!o$hi|6w^Z&!ofqdJA&|)r1`%HVUL(#C5&<<(|>fD=ji?|$I zlPA?~4j^vML{=7JFK0Wck%d~M8oXuIwYsODFsn8EP%NGlmj2Cj0(3e=pc?wub_bX< zk3S&2ZiF@v#l!FIF{v{r`N9%LIYjhhpcm*xnRlqH3oCo->Q++6@5>gHh{ylon8iKN z3a1szTYc9Nw~on^ zae5Q^WkO)Cq3D)5Mn4g^ASi9zn*u9!pkrVmi6!!x?tLI9sB01?rV>>9B;m1^PXrMB zW0`GGyWf?zgrpm)o*v_Laqk`bwp>T2sB-(7lnAghd5yrMe=!i?mv;Be7THVRhcR9ib zpfF2e5Vl+48JV`sIb>y^nM4P&OW7m7iQhX8GXw#3h~G^h`G1POnTZ z%F0utoxd{HcQt+!>?F$S|EZr#Wj2hRGM&! z5D@o@G95tp)3Lx`JrP};CC%UJU=B!rk#Ct-%3iJvGgMhYrEc`{cJee!?oIza`bR69 zv8&pGBfT3VLA6d+z{1l($|=-JI3XQ93|-04Q>xoOPN78}I?YqTld@fTSGn>^$>cgU$abp?Y~KUVO3xSs$>b33)v0R)mMyi z$nJ$cVrfRM7ur9?W`FG5#Y|6@#T=hHTz(PpL2+X!GAE9l%HsVRpF*L~PYq`l!X=$} zY>jind~2IoF<$wl_hyQ7+}v%f&r{4xDM58B^}(keE?DZ|?L<^HC+`9e`T)#~uT3ic zG$JmK8WumTI;IQYz-4Na;YcILFYvjgoy$&F?AF&0E&4 zt19IpL?O?iQ$;P}7gMM}VU3aBtQwUkJKE9oJbw#&Yxi*aO!85OuQv#i>`-r)LPY54q(k0=PY34 z1aIPLzLl7MZJDTavuvw4s!3xnR4i&rz=r~(urLr6zthDjx=1del!m_m`w?lFO`kkc znwKMTe;F72UZ01DH4*I1ERPszS24;ce9u9+IZ&`EoVY49hSMJ=P)}#?L@1|*&4dO@ z3PuV_`XC>TfuP1cx(2*07U@pfAb)%vJPFFsk>lhn1J&*#AqJhFnYD}TmKET3+NK+U z6!=5{tmEho5cE134TXE0gGjn2#f!bxsK!3yZS>%?!bY z__m0-N`l=Lks7e9$Qwy)gGEq-s^x5*J-PEIO19iWV?5$BFMQbSx9{q7Sx`Z&hw%1XHRdtQdl#s+?S(pC_tJQB)Sp}_2 zf~7T0Q`HKM*}Y8D{WdSF1m01+)^wJxdG5|CpBkt}pajf^AgmCrE9mul0$&B^xboXx z`ed|c`A^^)S&=v?0Tb=8eyk7PG8q3R^UomtTgyJ7d(B?{u(5@s$^J*MJSA&6%#Kn9 zcT2(Z8APS6I?xD30cokrAHLl#C$*TzLmK@<_$EXC5nHLNakUvxmf2}oh0r17a-Jn; zKDH|dZkNxO65cKM!8B5vZ*E_t)(5I~8Oj+x7;Q+|C@n|e%@qbN`l#1G@7Mx$@y@Tf z>#W7}$9SWx3p~Z$Z@2W?2)qI91-M>q2aEQc7)L4PL_Mv6ex%selYV~1k9N+AHm4`g zUI{DsA(Q-@ePGcUIVR$c zMt{;_(dk%>f7S$WyoED4^_&`DT%1t8nm0OWn>yrjq;3yyAoFBQ9cR9Vnw+lpCRR6Z z#iOPg@Tyz*k6bIC7qF2 zlhWkKhfSeyBj|YKjMmScRH>4^Q7DJI{H#lC7V6-GT*DZY{W4iwM{d z5D`d1Bk+59+B&MnKE%CsB9_XHeNWBgoMt2cnEfej+hXso#baJd(?4|S9-qssjztYJQt{F-kpB0Gue4l`=pg!cIr@_VMFxr(9zvK z9z1jPd2`u5hb35oYP{M#0A}w7R$p}ZMkXgom?~Ge*zVEwqNh-YARG*7z(|Qxm5M;B zqU$OaD_*VMwF};$lhQH5k0%^-(TPl97M zvSn$qpfeG3xK?Hn_JNon>LjL7-3MOcgrb5G;``A8-O0&LKeaTGI5(NfG?HLKPp1}U z6z)`Pldf+ERxy=01Ply ztM`_)J;6-%4Ul{h1}5Y>{Ti=Ju2ky-4Pz757s(losKL(-zO_B}F8i7k+}`C+r32)T zKWm3rD0BnZg@M))w(9v3Hm>X7>rB=GJ#aZhz%1nmb&&YYI;4xT)D>1E)hH4cPM9#t z*=se(PffNG^-9;2j_ zEq30vn?b^7?awaUx-GGsue+le?UAGyIzWxLVm1r#jPXqH@e5x5sjOf^7X&NC{ zJA!h~Qhf6CXxZ8j$s&w*9x*}(0yS?-Dlm@eDlvmnN6bX#YtId$ghqA;&Qr{B}1hM^Vz zwA0&(hJl$;n`ei}w*^u`udn4evkyytnYRf`_>3Q{x;}Jzw}z|fD>K$H6e_!|iZ!Ko zUre%`u3(uQ6wPyX9g9t&<*?-{G13aPoO!~`{aAHP{9&Q=OD1(B>3N)-8i+{Tgo?5< zjghs*B}H!Xg~D!y!YGGmP(|bL$f(GK6v!n4a^-BWg~}M=U}LHNkg$vpL_4xRN;%Kd zN-8(5x8wcL@mY}AA1gJM-Ry0&7dAbcuDVP0!#7sgY)|Jl{g>;F9xZ|0E5 zES@**7mZmx8ruu4hav?GK28^(em>o_JX%?>Uqqnptbz7xA$I8}Qij^if#j3iT#Tkh z%9N9F8mvr=Yv$92i3VuF;%^jBk||o~J}HZwDUV8;awGe@l;BrANe*FQmE6`o#mc2? zqe^F%>G-J()L!Y%aSiesMNGecM^R=)t#cf>&ln#7vQ?sL3OQiXRY&ypQxO7X&;?p@ z>ka)*m$@iKMm8^v^d|lW4G(dQ4X!UtXEHjHkxGZy?>mx}4A3}@PLD<-!5VPB2C_9= zYCKHFE@WVE3Nsp%n2^9tb;(PUP{OH8Xh~>RRaa=0Pv98!T8=6#DIbZWsz$|`ktPEY|y9xY}=fQlP6?rzfyeEHAsqAtu zd*)B1vBgnlf6Ygjj7t`(N^g7%pP(JGjn_CqKAB=e#(pWpzoL3?rnE?@11LV4Qdd%H zHYKO^uy@-jlYrNHe(IgW-EqCVW0gUf>T;6)D*&(Uy=HLEzcD`7AR_bm5*6I;=hL<5 z^iHANSFIcKc^p^L?cMNHm;U+pW~~nR&Dr}U^<0j0!InZkSp17;#*q1_ScB1CMAg9| zqUt~)d=tsR%MIaN%BtJgIHEl{;FGYR3w=v_jt*Jk+*t7fa_TB(+)<^kva;?<|% zp2*WhBqf%!hK*e~v7S*9jyNh$u#86-OZPq4wRgFmiDZ%_bCaa0W4T=P7`^nO`#&c0 z_mjuu5%brBV-~r6b+WH?4t^qH=yEnSq-0Mf0ppUg$EooOFBhfyq>6Fc?fUF$Yq!XT zCExYQueP=F)f!RUq;A1xTc<%!e^ zopbN2$`dh`%$L*emtJpZfXxcpB?m8iN1wBV0+dHN_JZ<97Wxl&Gv7xueOvbk^t3-8 z1YJ^bBo@zR(9=-fNk6UjlTOkvm9(8z=)R z9xaTOi->?VG+%*ABTc>7rh#BBISX@T#DbZIw0U1CMn@Fy`UI8OFO>}6p>`0s&+l-= zSOfhw8Gitm1SvJ6`B4I()M;zJu72NESf^dKaeaxKVCAv>_+a$`Bv?tFrRxk^=}4bU zpTNH#udU?x2%BnxN=Hj(Vv*0bDwf&N(7MUL5ELn^Sg0q?7FNzTrKclClJ^&nm4P8> z;+5j#oJp|hEO@28s|9lmv(tM;mQ1p97EChkw6S^lm29_h6l^!h_0S(NeyXKs$*bir z9i^wJr>rNJ7rG<1thWr%*H&1^to`wLF&NZ+4g4+IqDj+~Mel49FCz7emRtIBg_hgB zLX(f{qHB&+S&~b0{8N2s4qthaA}~GpC>pl!Vf>b0DdPZ_a-TGi9>8F8zMY!3qm-m> z$|{U9gySH4Ial&lNa4|ppPI$VQcO$Fj08o14x|J|Egi%qA7m;2eRV55AW$qNlMWiR zNLb_diY9_{y&BL#7j<>L`zzmVQ8=qH$+4hd z(3?ZhohxobAt+i+O?GjtCB>FSpjL%+KhH8I8@?*O50w{%DY!CRi{I_mASeU zQy>WRP?W_`j5pXw%tWL{v!3+kU<(&6Q+LefJ#1}tWn_{&1JjxZz>#BrpH zBJ;NUL^0VP4ByFo8>F>SX9C*s@K#3YO~G^v#?_SEdrWS)Yy4Uqlu__dH3;DqN#{!@ zkuot|t6UOuzR*Y$t!&_^gCY}J9fwHxNZ_VV87GIv^MeyKH0e%3O4-21gF?cPW8_R7n9Izo@+5I~*2# zeF5O%13DiJq} z<~+sPR5bav)ozyz2UG7o5uVdjZztbV7cHZBc4!}#V$&srbSTlfU3WlmcS;}UYAStr zq$wS4VVOT&u~E!fsc-@$eU4mHEwxexeW4h+J(+}c2PZ2YUjwE9H4?QYY{{F2th2Tx z>Pe|qv|1mh+KjKiCQ5@jW<=O#X^3ngT*nNIkZc?ah8A;NYC@B(%DtBv21vLu-{>)_ zav!5w5u=jFM?GEV*~+FZiI4$p{&n`jCgCYwp_*2|K~6p`xiRC)XP53gI47`gyow~! zac~;RrhYquI`bcS9T5k;u*$BHI$AoiK|vqtCoov0aMXL)!dix|p128je>uxP+yyyN+=C zmM2+=)zn({fP-c=jK;JwxI^iDigIU32=$72`{wpEjpjof%Q0#V`-qhexVd-@6zaCAeBwj6P!nQV z)VX5LC!#}Pg^p0PH~pv=eeFzI`%bWg3QzXSUv*WDS*GfYs1@Abtpg%JW)H)#BmF&I4KxzSxy{Y=F)Bp zjn6C13T9$rkd@n(cQ~{7J9*;^Zs*0hQ}LOHGR zmaPnSZ$}!usa;xtGm667eXk)mR7{pcE0vT(f6u~jDB0MfO9>}1kLlIN>l;GiC&b9YN*PHJ9020qm`! z?5$4NOt>75&yd|7xy)-m8b8P?HP7t8rO93s)ifoaPMTM%J%wM6t}0RC(^5Sr-S~SL zc&w)nPBx5UXQEQKrr@QmX}VtG#}tYs+lkl}0KB!%$AdYr8FK0?-sdRvA!~awuGQDt z_I1qjEaoPw`GIWf=pvZ=re0W9!;pIqG0b7)6JT>`aJ;?x%#1f z{vNL^$qCkfxM31uS)8RXi4F>a9ky3+%gURYHCr{89m~aN#^ewF2o?bA;&YwT|AdW` z;Um5a^CZ^`T@59}|IpOq88k;998rYSXNIw7hS>*AcyxWfO-dXdcA@3GSbcpg{bO*rMXKSeANO@}j{We&D=m(Lmp1Nl4v^q(`^)(Q(6k$X` zMK&7a&69c%&c(p)c>skiq{^Bj&>ed46bUV!+;|M`k?kdR-6NLQk<2&hOardsM8W=d2>DFl7rcn*7Lr!ZGI8e|(Rs zMz=|;9@eod;cAQEHm%jXi+ZU)0-M4gIC)1Xl36r1Jvb<-DVTObqhSl}Tz4QWj?aHQ zNbhE1W*@&*y@!Z1&#vRI5iy?pRh>j+C{0cCOK~$PJuxu=n!@oPz;)67HmE`&Fi?t< zW)@kUk(0Nz=JNk%un_U@gdO%G$G$-wIr<&+|GRKn2O|?0(qwCSCpWt>GC0kN zV8T)62wzu#ZQ7}LB(Yj`HjCv3JRE-D8w)Nco~;%jFm`)%!E0NJQI%% zW$z0b`33gigiM*EMMO}8gv_`xT3>c7iYfM?gWe6qA~5P7T8OGrUTMYDr-^*T=Y_?d zMSqiG&lGazI~qnJa4-x*U}G2rDj&EK7(~v-(L=3ct>l2T`LBqrBc|9OF>Hf!7{dn6gjtO@jpr7pljZgPxeXXQ;tJWT2SkMis}u=U(m zmGr`gjlv@3W6H|~jeOB6g~@zRMfL!}Y4^5tDfy@NKIXI_p0G8uWWe(1YZlQ3t5`J2 zT?DOtGbXY59L|s{bJ~s{7QK&EK!vM2R=(z`JfpeuEZGrHk;ZFMJ-l8^y~yhjM*1?& z(o$-6Q~s6IBoriN+?QS_TyhiZO3P$*rMdZyskK%CO4M&|cjt@rWv7hwbdqrfE53z$ z05#xh{dR2%_NofIYGOGm)OhS(q{)BIAiQxLMM}LgpQWj(tE#EX8=EM4eq0@|!0k2M z3H#U5++ufLnO&lB6O_W1V;M_Jm6=pgsRQ3f@iO3|F?soD3RYdfVx!nuP6TOR1kKzV z0p-XH`dnjO*_82Og{hIHlK=X(igMYMafQ`6G?_w$$;FiV&OW)R*+L;brJ0FU7jF)= zZy{W`DS8=j1uK<~K3fF1l3IUbj*_}s=b(>POIin=f|dH-Q9xpbEhVMCa9$)86(tp= zE$9YGaKAoM^?wQdMDNeTGhaCEAerur?b?QAUa#V4((bh4SX}gp-Y~LR-(9 zA~2(VC~nS%WFnzuCK8p(6U`QJ;rQ{@p*--08*z7|Pj7nLrS6*gVs&Vvy_J+Pftbi; z_mIaF*eU*JEC~2S$=>5ppz~w=R@*22c{X7jg2TTz34z-We|u}3&Pa5I$fj234#1%R zg*YMn{Vn*$)@!1wlbA#}H=&t{pWSRtv0$+m8>z?Vd(1!5pX@Xayl67{(xY z_h_o^u|`LX?G!W-TiSXG!jI0!$E#(!B;v|=`#vsH-YF*r=oC3jJZKvqvB>5?F z-I{uB50#SG5MB`NJec7-hPWZjjKD?`G8De85bhKt#q_qNPhYcFxVYrrEh^?1=5|dj zPDMfPNm8Gl&;mT^fqoy2hzk@vQ3%{2%a+1i zjbQ)-BreF!o}M0DJequ6Jl0G0qyGV-X5KUqub&Hqkasb_`0X`<`;&aTUhxy?3p+ck>mBc_D>CO~X8Z;I zy@kOW&W>as_bdNrC2_lV;&W81QXRr7fFFP)3FE)PF>zh)pYL<|1u zD-Ta&$=pR?Y?otisEBdvEAIG9$zyJuKV=u+mm*m%NiXjmm#nYVItwrS+f6%~*w0T5 z8*t)YpRK7}kQdqxu*4re6JWAH?@^R|kheOGAc;S|HpOLqy}iGX)&@F-98~D5sN!_O zzc+d`IFcKm$;-bM?HAK3&b8n^9UkisUqgclAG&is*G`kFod7Mr;$2wkXQ|XpTd0~q zUUUXJfvJ{+I2qSZ<6Ue{kmyoysMX#?8rsoCIpOGL#WYOAEuWcWu~#x?IGI5VuY6^E5=`Y~(*f3Pe5X|&P8uOhr=psG+)DeW3Q2ZsiJ`3UCUK|?obet?aUqFJ| zsQ;HMDqO|@BfEG2f&%r_taNVS*F6&m5s<|9&-zk?&F`1+Y=8$Dhj+%H;J?@*238M>*StT&A8ndN&?8ASiw^S>IJit8r1X4PMuQUos|ba8c1GOijU<+!KhS z(0XUV6%>5WsC`Vlz4lZZQZU|Wyjt};K2*)UG-uQ5wy$w>e|BxxBRjJimCtf1OL`{< zxB@wiK7KC+3UMWKy`O|ayK^a(Ca)gMJY4Is$XTR3L(jk%_4)Fi$-l-C1n({0@19L+WLuDF{ ztU2$eNH^Ef>l5cfawzpc1pwp3b4Y1fbO>u9>SvZ-Tsy*!q5=7?dpJ1z2{8di1SK<^ z)^qv!-pvH5Can{)R;d=~He_^%81*pP1HS?`Vl5qiUkPW-=`&$Q33tgc+Y@3W47IcX z@7wXH(e7ZJDSiK2UTNw+c7d7*!`Tof7AoF`2Pvounfd@LQ7!T3P(K0~AKoMQId+gy z?UiMPjuK}B{|NQqcj74`mqK71YiVvxtyVFQ!ro!NVJIm-H`I=6-|#t@1HGngP!N3KfAfDV?4%^=Y4O4QGSl}xU9ohFy{x2hYR6T z3G~ME);DJT8<<6v)12`kAjrJbku-Lha1TnLlg3q5T%4byB*rtp%G(RR^cr%=xSxpX zS%|?%==m)4VlRv9xkdn#GbYF$Pdj25?@58=xrM!Uw9wwrKpX>I9dmeQYj(#4Zr_`b zKxcF5Pe_qGpX{*e2IpSi8WL4G{wn zjT~_Y;o1QV1=?szDFFRk<}54Lt9x1Swo=94 ze=C-asxeb9?PHa?$ZmYm2uF+97wb0LYHaPSZ}+gPHB+A{+%2@%`Djev#&{S;&6-<| z3b2aGdZz9_hSW0<(qIhlE@~A;p7~{k64o3psKMyZXsAJ? z;11vL?z{JX_c`A^>-@WmX04`r%Bz}T=%?x%ldFgFrv&z<7N1yU~b^(nkG+JxwRQT zS{5b2hkYj110RNx^q4()s^$?tYr=F+n_A?Fc5k_oI+YIfj#`Q|bOl?1r136hhJRl$d1R-ID4pOF;<`ypG-0WN|05%XO4>GGX zM15Hr3)`97n7*!J@mdOzzpxrJ7Z;F)laq}bM9vK00J3niakBx)IoQ} z?KK8OfSGcTv;Rfn{$|Ynw!Fr_>-dit|E?+dUrhlaZz6`yrhoame^*$=)yU;9@h2)R z_Il|x6$m(k{G@6xDJ>>%=m0@|CXjktx_JH-tm5emskOA7nf&eOiZ0D?aayP{}~MusN(A2U}I|g+I(z~(zB|+NIT2@T`uk!p;`n@v4{{!&;CvnFC0{z|F>BcWx1+ifU zpI+cPH??X!YP$X+7je`C=L$|;LjwsL{NITV>D^vO1Kd#12yVagm?tC_+l@qzljd@B z58&~mF3^WwxHx0y^p|l_N()==bLZ;DWV}_vY#2Opv>9RxuYn6&5p}(`^IuL(_wvRZ zFH_m8Yw9|wwS#Towr+P6+oZr#gGUZsyIh)2u@eiE`f0CPY~6koxKp`lT>XZ@v8yOP zv1{H9Ti3jT{tu`e`H!r|SE0P;X_QY_fsY5ou4E$a#6^zv%1)HLxMG?Ts?>6vli~EE z;V}%8@eFxs-yYW8XPzvizOjDzF{`!NZcb}I65O~K zO<%-GVGDkaa;qt`dh&&O2}*GK?-TQH%<=DI_Fp6MH4rjS{(lCmxE*Bqme;ZMuOZ1S z_0NfEVhEWekO2&ln2|EcHM z0X#h1fA9O_7Ec45{DdgKk{d`FLDT-k3T^6^ ze7vx6>efeypKldjw`aXKtjL*kHlee?8u z_LN6;YHn_BX1?=n1Q{#voZ5HInQZNb4E3|C5C!>02FbCw5Qp7 zKp#pPK0E`eJM3oApo>Wq`oHnGpPk2&Igm5g&t)=x1Nd2O$_$4f%?VB@@;MWwu#V|4 z8%-j8#^iG@VzwjZ-x{DhyL%&0nK27;U+}5DHTuF>CAi)Te}T^&6CG#@g+sI8+u3D_ zV)w#(0VQDU$NP5h4MDL9cq4dlz?M8fVTl2ux{IX!!Y^e1yBeL7L_7|-`^-V<9skNE zG-rskH$QJostbnGcSNbE86@(Pe5ybk$u10e(1NBes!MjPxG)BS7_2B20TxZ1(Xjyx zAeV4!4n9s;ShXX-0^0hBPop!&!q@_lE*Dm(+8H#9n-LeW7Xa*0m5O~rnIMN9M@tLa zj|)zP&YaWy4aaJPXF}zbEqRo+W}1q|6DIIm{0N#K%Q;*92yrTEC5%4@!-y5!{|wzq zfl-aIMRiYs`9OM}4OPvGOSvP8W%R`m`ZCf7G5BMY2HX=?ARAOQSyE41uo1oZ5e6(4 zq7b1GQnxYz?gIjX2+xM;M}G~3Kx15n}W_<03;iofr^yALUF3s7EQR$N)G+8RL%>meTz;%y?a<$I(IU zh_N`Bx91E~$ zdiUkr?idsRlPHI!8k3u=uN0D;hAAOXwh2W2I2}qB5@G zhs|>6ARS^=1`=VacZSS4YM>Ee&2~hGSsSVxQ8kikVfsOT!Xg#o+GF2y5s-@6k4-+prBg?Zj&&a%5Zz z^!Tt8*@$)$*^08b?%VTW4Z7#Ux^U00HT7zD1H>bdC8TzV79uyQ71;LhR!xuUC$AOhEv=IZHLIAow_6gn>ag^#L6dyAyCC(s24{5;C_jkwC4|X@M>|*yIJBvkqfg>YtLm=zZ^B3%P z>}l`l53B5^3$yPis!my#2l?OPJ))gef(bVk!JbF-EwK9JZ76hDtAUl6tCD;$WF3}0 z80*$Ou>_={fNH^xelXew9a#5>&HE1+&O7#&`xbG-91Od$>wtHL(vz|#3kvnX9-;E> z1>@HB>jh1swucaGtRe~X1>VAVi+c3f6Z%TR^_+$id?tMst_u^yB-s!QCp}|g@A1WW zp_J%x78Bu9lncWTBmMw)EG8Vq5ru_9sVnQzJd=xvKlZQz6GA3eP4KHqf-jgfz2Z#; zwVOOlkF1e?4;SR^j$9r0{imNXViXt6%Mp$%m`-0Z0`DkgfnTDXk3ZFuom#F*?bbYf~0h9bZw!gu6ybS4pH^G z3(w&c+fF?9UDo4t`jPg%lUH&Q9S1u#51*J8Bb?gEPN*w452^|HuQNwRfC6>ZnsaWr zSH~8v7#kX8hFl{>!H3Xzqz=)|q(1kYFBB=u1=@~38e!4JvtoQB^FqgC_4}W`+(R2+ zpLB4#!BlwH#+@rI>{w7}O-*K0BKLRXHf0^i;f}=~_g@9BEP|h>{1l~7b5$01f3ikD zQT|kTRDM+T_yp<=4OZ0&pIIAPiEc~W`I%jJ{pfA~BKx;5j6&DO7`yI_LA2_A2gx~Y z<9-i6derEdaI{9s)h}5CHrr2VC*lWeHLdvWsl#BnliTLP&kn861XKy{qR#rDiq)4e zGlA^Doa=M;Jjv-OVs`JjvC==CR^oTrHG>Gr$*6n!ORO5I8koONzwMq*{!$-Z`cB$r zQ%T1NpjysIK5!}o9dVV3#}CuKTCBQvN^3kYo;`0J)uz=(Bl16Siczm(W^IH^8IMGv zi*+1a-!o+zkWX=szo)#XGAIk5>z}C)(87+ec*N%>#94PvvTwaTw`eHhrQBMJwKp*a zO_co{IaFD3a-RwXXGm$OWy~JNIPly8V9LPeCV6zkN_|F6vm~s9SpLtVW#85EHlqG3#Qo~$-iW3O`63F#IB_PK_Ge3n4Nr|oB zD^MtCu00x4I|w8}H6TbD(B{^XPeiC1YJOMRJxo9DAX+3h+Cy`2Rp+5)b;u+<#F1-F zDcLt&{|-&9t<(~M3F;Hn4+N@Y0!wJO>g=yl+d-zF5-$TrL|&YTQJH}sg|p>hUMjF= z-l8AvG>i|+Eh9-5mg33{UkWv!f4CQFt%^RSA`OaCbpC1jVGLT3J2{C;^9()9*%AfzF_%l zBax)_5Y415&FG}z1I^6jZ-wlixB)XC_4%i3L&hT8!WJ;p*A{UOOU>^~KOlKPWkL#T;-v^U7;zTOi~vr!5DKnOW2)GlvWznSSu+|*kXH8H<;7AvfA#wUBW5|N@q}Z5+_;c zR4uGU9TVs?-nFx0@TMtQx+-sIeVZL zf9ea_ZiW90vCIspBAe4Xk&~p7`_`dChjY_UqUhIwb7ZgiRT4t#W7;n?NpyK3($Qow z7n<<>pK8-*b}aFmOMJtGk9%!@C=~=h$NzzAHHqA~XxWLRe-6`7bN{W2cTSJzVh^{7 zdZSV%%zB@GN}tn)b0ia#Brb)_jCffvRB$nZU4HbDRMAydRODB4%~uVmF2Ju{v_*OW zlTi|T`|5l8&`OS!WbhP^XbE#u>lq%EC>G$VAM1hvL8|gs=}6!T;tyBiL61^?z`ltj zADU4V|9c zgC27aum-Gzq&=9Zia$C&F*v>yqwcCl@ezX87_@@_)R9^A z6U)G~*@V!)#8#(8E*v9i5JB0$`yGW|9<4TtMqy;i4^va7dYEl}&ahI2=`w8djinz! zc*ng7fp9{K23cZqJU$fj8Hfg)}z&3(0zJ)ntia>tWh1aWzs(` zSu3p>k0(1sNn-^oP==^uDK03vM~W=FQg0Qp9NSM}aOI`f?ZgrFyKP%K_2{X57$Bj@ zX*&v1MntIc=fZ;}%u}>)$daxK^wA3$4fEehNHam<8J6EB-MD(>@U3LinPdHac#k!^ z33=L3qTih6;j#K6FC#~GdU&R_xRNWscC@d8EN_0!=usk_DuZ3u@P34E-n*U0D&`OW zc1n`>c1p79;HSZdnWh=Rg+Dg#bAi{!F{LkHz}d@MZCJ)m#0R&Pmx28!^+D4YsD_x} zqu7_cBS$a4!$8);%q$I<2F+RD&kk&g; zNJE5iFuZW&Y{F)}hx-MY-rVT1JsATF|7?vsK_I_v4Cz({uDelXpjvw|!GMKGP7u{Q zQoapoG#(^_seS5Uiwq+%(7+@S8QAaWW)qXF{fb>x6&Ekgt3B(sBR7s5hTG8k(saU4 z`_kc(+;XGtd*)DNMXXhxgqLqdKyX$SyCf-;{LzpAF{T5<$LLhTY;&rM+s6;QW6~rn z?@Pnce*mzDrLh#Sc}w9DCExKPG`ONZgFh)_^S7X_lWWR63qOljMB3TDm_M}d&GF}% zOA~$<3Rf#5EZ}2+?8Da`uH4uk@3lA?b#wU+A6#n-@{BQ?P zw-pU@gU7Znaf7tG6-B4aVHwoM>u=dMKI4sv(fZ53c;Jz(@dy}nfBrY`q z_e)t1IV<3dS%Nf@gC~^a!fa*T)g$uZt268$PrW_<@|=8wbG1$H>Dcn}U&eak zqk}22-+tP;;N6@DfAf-G5ipmlJ;1AB{D$y(;(R(YzSOX@aPgqhqRFkZV|`LI$G-vN zTZ`w_!JurRqP;}3`i2d$Q1j<*5m$#lg+Of#y_Ad}f%2tH53VJaVhU6e0?fl-*B1y6 z4D091KZtUDqYz!xmlP`6COxh=fm<{~G4d?TS%wc^PsO=A9I=xyVtGs)0Z@MSJlw6=ScrW(G7mwreox(xHyiOq|7h`Gmo z7u_c`+J|psZ9i*{su}L;Bg?o~`_EuTpDeXqu=`Vn{l5Hh5||(pZ#@$dBq+VEdS{S0 zySSPa5%N9r7a%D)Q;%Hxhui!}RC9Ku65yajojH2Z9gEXJ)-vJXF~}dEha}2QGA_Pc zo*<+$Qz*XI`G zE^fD9&5V8rn5JS^&*<c<$n}s zaa)Z1WUO4^DzaJ0KQAmL75yZ@VSL{`t9E*<3;68NTR#50l4qut%pE&|vV+=IQw4s{ z$t~GhT6|j?VdJE|pX>0WY_+mbuPw(?NP04aUBz#DRE>Wef_A^egF3vUH#s}o z5vpjD^(k}m$|42NEScPM)g9E)eMRAAMml0C7ON%f?k&qsgWpYwh}?(XW6@@%wm1uW zUi}H}a`vsQDxVfCZF;QP=cEss50ovMzV%#{9XGZgVZAq~K-8uJ%PjxWN z5;K)0o{a(rK(R_Gw)Dw;GzlYMnyFr#hrd)1JzoxIz@PVkn!f*h+$%o zbT#I$9B#I@#KPHn+bL#A3`Wiby4SDz9jfS@7~lBV0Fe1 zj<7aKr9(<-^TNOdd8HAtVBTOH%J9OcD9g`y-) zGVeU!#+dhzSCqS(D@jyLDiD34pPBmdVOnR6{U=q#n|o%8D(vNCOgor8Cgdb#;m{=H zGCAAo(-OUnry&8HUoUYU0wv8=;R7b)Dxa>B)LIc_FU$P7x;R=SEsfoZpq&C7|1=54 zAAhv_!#uSa(k-gF%`E(<_QtX%?SX=q!E2SsJ|4(X<1_h}WiYj`@kZ3UD=yBqtQ6=mRP3?0i&ANo38uul~#nT}a zt%%SK|8@N6e?N#Eqa*t!rB2JL&5C8Pz!}dFS|*?krWL@N#tSvmB43a!51#=! zTK||)dDbz-CU1||w5WMClYM1B9LH((g&ObO%_97)V}R5IpL)Q^%F!JPOmRYWrYDl^ zn!PKDVn?GN*$NbY+ILz8WW}-?417dZXEooIX{UTR*wOSkUBUX^=%g{s`VK*-$y5J{ zDBAj&&0yv0)8|-SRY0@pPWBmhgZwD^XgQe&sJ6pe7ihlrwHx8)HwnOWey)&NINLbt zxP&q{|g%G0t1 z`6~X_B^}XPF}ple8SqD2Fr1cN>dbW&_^xo+ZBl+1kqY5UojF3Sgc*f&mOhG^V3!{v z3j6PM^~E&N*W5~zEEztGg6TMuNwMIhBLH)LP*?)if_ zuJRgqXx6i3RdiTFEg&R)`G)$5pK;kl{GFy1ovge`yjb$yfJ{sye=)fw?$MOZRWU7B zGxfJ(mnzlV33h|N?7Yq(0a6_(ez&f%5E7%0oqN^rW2t=^aTOmZbh&*xLpG9%U1;9x z4g|**FGzko_}yL`lshz5G9hddVq@q|JA;;no*-Nw8CEk~!cO2BxLio_UBx~wgOpmd z5O!l(8tEq$4TmY@a}!T0p%C^se+sfc_{XcG)Fe?aAEo;vEpq$WQu6OTa&yhs6;l|b zR_f8l=UK&9tC0fwNS_W-#s?6ka^!J)fgF3#%GrBxozhNwmv1Uc2PM(@W3@b=!w=Fo zq`QhQVv}P|+zZ(7%m*Xy-t{&5?UMp~J2U%hJKMbPI;O5XPZZB{bM8v_c#!g*qDJMq~jrQQ}G3Suj|sA z5q8+m+X?UXJ0NsgD_TTI5m&f7KqYT8CQiwalyX^y*t`=RE!)^a)>zIO&nxGU|SGLon^zN*ab)2HxSSwWMG=lI{XqxMn39jF9!3i)t= zF6mnImw0mX43(;8``tL3dSw)1HjG1=NFzU$jf0LDTzc1LkFm|#e{MG9C&TFrRy~cR zNL^I;vFPx9a5?t5Y2a`4H-Uc?(`hZDxR11*|I~(V;r-vn!+ai;s9)AA*hcit889o{%wcCrTeE0hlM%ivnOJ_z~ zyMo~#hx6|Zat5J8gZT`Lx;4*gmEV8K%~de0TITsG)c^hq%!mZ=#5>=RkiJ6kIFGxrG%m%X|%Zhy2Mg*;Z+Y~ zEZ+;_)G@+T0PPeE;!?Ik>1Mc|!dD*D2X<-$te0!dl&*lMV~PwI(#yBSkuJ#5#0hOs zvshYYN7#2N0$*KoGbFy&u1>SqKx@no9&79zw1K!4t=6` z*5A3PH^K!gtH5irW}_GVW+)#2^G-)lWiLRwNU``z?rELlqlt>X71-`$mAe6EW~?o;122F8qWi^A-+sAh6Ry-#lgg*@h? zCKm$tYtYq6xYTUaxyI-xbqR~aRphyEHcZC;cManK5VzD0#}qf$=;y8Jr2S$Q7w z<4OGqAN_h|rrU3guIvTRj+on@XqrB0oKHLJXZqbJ8Uh3KD_ai7^;hT47ZG;UgzzPTT++FTXJGS@=BQ+)gl!|*d^$^8;8_i-u_~EGp#n^; z%>?%uZMc2JTb&l#AKWw+0LYQXB%@=v&w|>3PX_ybcRf;J)<$Zyspb5X-b*Fz zU{h4GV~Pf_L5@HQW=;hS{sPDZsN0%w06B^z7%Tc>eEA$%VgAKri*Xe72eGE7_v{?p z@-xbK`)9XHn#nsre&BP^r?~jyw|uCoj#z8W)BYAlCxo^^VIoCibKFHoI;PYSJE|>` z!*F%uOt%IvZ^EN6rD%C0=`4RA(s=WFDRIV<0tzvuF-aKgI=8ySf!zgjCa~4dQ{bX0 z7v46)8>g>sD7F@me}2^En6`ekn@6@3Gc3dke%RQIx@H^SqJ1>)jLu;eYazD4>=phQ1PEBt(NOyRa zbG7Yokms9H;O=wNU1n5pR-BgIRJS|H!q`e5XWZket))HAT4$hag)i(|Udue2-drxL z{W_(6eJM(spSK{Sj8`6%K=O37B$#^&{`GP{^xXbMx?@B6vfK4Nm7 z(K&-jw9@r5N?SgsI!1%sDOUr^g^Qfu(Zk*_H1!g$cJub!;qew5aJiHq4zhXh;pA@= zYkE1V-X223Xvt7<6km@coNoK$$vwL?<~@9TM->U+km*AR9U`3mWz{)TeX}E0xH9t# zIBM>UQC#uM=Jqjt>2aBgq^UPk@9Dv0aS}mQk%_F{zy#wxh2Igidn-Z5?;GALj!esv zWxMTimm4!Si{W=vCvgp-b)azCubGtVmxQhy8Dg4~>jpC@;eiemXSPr)?S;GFMN&RC z&|`w>MET#fyV$IMM81?ILWy)j)M!Dk3_f0NJVewZd1Aqy7jLw1*=sy+L%qbQxaeTpg7a-UYE?+)`BP~kYLM=13gR4oGC~J(8_WSZ9 zmoK#|#o3Pycr%9@8^G8#!orHsBGHUB8cApdv5MMaFG7C|DDWsMabBxG;Z69m_G3%p zJszrzz&wqdA7k^Cx_QcK>tSc$781)+o8Z06;Sb`cAMC0|&u_g#U>VgWk*PF0<4uE@ z-oE*;0i4*R@+YBlyoCIP;CWk%+hB1t$eEYCOWa~3M~X%$9Pa0Dft}wIPxE1I*U@ZF z(=*CoIB{#5(aF-(ObFrODCg3_Qg0N-4FA3kJ&I%z-AKzjLwZUcQlMe1e!_jryU4aN zvyI7*R#&UW>RHTC4a+{Xx8GUtOZ2_+dE7DQbbky*8ptH%yM)`qQZ^@nspxEAPfTEU z3_uj@PE6`XN=VzrUZ9`J5kHsU&W_E04L(dD2hX%0N3=ce5g`co4;Gzxbdw)|?l|Am zp9Bi@^2;o?rpDgOTts*@I#8GkjT-4meLp_eW;YMqEVV6&X5vVEi>+xx&gfYKcZ1`o z$C)>*N~(N5Ae42xg_HP|!7v!|AxAz(?Ram3T>}#QM{GuvuMEpoWq8+Dbt2;(aqkgN zblA;vc7MHV{^o8FGOJ+|FiuV648ma;}7OOKC#h@d8{`Yg_uGhMG|h4L1ra;WGwWEvEB?Z&=@N+3WoA zxkQOXquj5w42D4EqH#96#9wnzA>Gdr`SWz>cZm;i&>50Lj}U=brda&E(Q^35IuGR< zC$!i?EbSH!B*=5$vhQ~IbN6m9Sj8#0j4TT~vRBa>h`@p$LUpLs7(BLmS8v!cH<>}9 z>D=fd%W@kT-kvIBmIvkw5kXjLn9J0OiNr^=ZW4O;q^5Qc5BI(%Ix%;5#yg)~Z1Fev z*1lN_ykG{j+CSaw!5N)=DdjRteCeA}Ht~l1{%&P=dbJFJ#+CqvyhMAC^kA=?FS79g}W8>6?9FlIJR$lE%sK z6Q;93BViCugiByJlW38Jpz4J3q&ZNyL@So)TPhBk_Y!i&1`_--<=>Rh1Z8m$GBOH< zEU{g4N9N+Or_wvAYY_%m#a#yC}v4I2R+Sv9zzkuK5BEE}+n@V#~h4a=DrcHo`Qe6<1Bs8Oxx%1L} z6KG{3K1@%%7Bfma%1Kg2Y77QXdn4K-C1T#DHXr6;5ltqSlEEy4l1fFZsGL4xr8q_2 zt>o9)u%I-~bO&m~k4fCUN8>Ro)z?-h(l`$1-q6)DnYVN8pM{aD={1SJ!V8{AD%D`Z z3pDvSgs$SgIVdQbNH;ldiR|)RPy54UUkV9{w{(_T!8rF-dXRL=zkY<3QRx22L6psvmUJ zFMXaPN6S&^=dT@d{*;!nV=0jV)Igh=f}~(ToB#Q> zOXS>}_y~Q!)OoZ{9y|ORIsxL=Rja2j9)CKL(TbQIU%sud`@;(<0sY!OP_Z;o;@9}j zi4+pzu0NChYsaLW)E$*WrQ5a$aCWD~7ntNfk7>7)Db(&2xJ0GPZ0yQ9!fw>8BCJG*jxWlgBMVvtw|yCn%E0V{ zc|v>Rl@&QF(=z07++{7GC+{KOV~uS4a@vRax&HybEtFw{U-xBDDFDIVobY9%;Ob~O z4_uesg`9)w6=}U@xXz?e&&Uf;yCmT!nfE}g5#L8=z}=4jF6hYvKHL8nX@sUP)e)_E z+$x~jKk5ZgrR@ykHt9qWaCJ*++fUMYQ`9MECwNX+UqGxxi0|I-On=~bnJ=jNCs!rsds_OJ;>h)W$;iGAxH<2uiU8TGkmerD%AhOsm>KVP!4Y`OIa7bfW2 z+;}DG!P=#VoCD{aSAA15XC)8=AS2C_uK_?yHr(HyI|LqC!~C&?&I@}EZGJoVg3WbKJTz>8>j_R* zeDR}i`$jxCDf}54jy+}Z3w;7hA&iVcd;cVAv#qIA$}Lu-~zb z*1!|6X*$wgV9uKuiunGlDSUWFl`C_Xl63QFNYUZIFpsHop(JWGKPjcUDThWjwL;F= zhgE{Nuv(MQAE>ksti9P`ztihm$?DUR6a8UnG=UDdq^6hoc~x~TZe#Z?KDn1fD`_im zhSlta%mMx9;I8}mk4M0xvj@oYI5atz(6R61M#YdxnG(2z0Y4Xfk&96WW=1 z;B@1Kd?QF^BkpkE?{-C*&6{G3!gE5)jZOa#P8EBU5wB797#~^ zs0oAGVo>7e=<5mCYSFIMo2FV>Mucx{8k7!YU=kx?n3oZYXQM1724;^C9e+h@h6JRC zpEtitJz`Xi!sQUUpFA9^Hx<1n7h`pCTvxM8Z(Ai8-TO? zbT0iOIaynJ?xx){N(xTbVfnXT^0VVyjqa$aYE^v(_nDp!G)G>J6v}B1Z%)|Oj_+@6 zZ6AM1d_D8!*85O3K5|Uy=KMHNdCX9t-2etw%B(Ib%P897KWfLBUo&^As$1<}mTbiw z>$G%Uf7dIZf$b19@L@u!_j!3g;H@MM@mqCr4CeZ4DOvw>#Io7=XlHs0+nkf6t%!ythQLXA5j9r5IOi{VIrk!SN z%@K#9rdisrA+;U)+T;P#dk%R*eFRhEKpd$aEm%&R_f%ZCmczGyq{j3o`#xJyi9e@@ z`5xsre-g1nGPDf(RUO?C6y{(|6v}Nq-6QR4Oa1lJ>YBipgdi#TZZz)D$LA=i)aUMu zdcqtjtl_0(tblZ>@y4)4bpCs>9xh2j^i9)LW^xBH4EH6o* zP7gzVM&Pm^aX@|G znOTleQdsmwWiY?F6I~hIP&q_huq6VFy!JI#om3B74@QqqPpp-X7)7!hziTzP9VrXx zh2NXko8!^PKHK?M26l@;49!w|0s7G?qGd;2HpY7uP1{G!S~>1 za60$^TpfxfI!^WeA!-m2$CxoJEWH(=ovuH4att3n;itn9|(lR z;etTi*KYZ%a6oQ02xA7YLntpKnl>k-ci4eI$SI_oSs=MU#O^-|PtFD6h9u4op}deS zE?L-k0NkA9JOCgI8wdh{|4NG!k`{oSgHspsT1ZlCAQo;A4;vRbCnVK-z^Jas~puR`TChxi}$s8^VNj|LKN-5H}2hLhNSm8 zz#zr_=j$MGAu(PH_wQ`~og4tj%>o(Kkct5zejC8f1!N}&0RB~!e#S>1Kz} zWsZNw-~>U62VvvnKoEch1SvhoYmah3s`}3==>9jN%<(z~{ue|U!1f4Tj)4IGd2 zb;)Uwwbtr|ZlGQ(jBiL}HPcreqPL&A8s72tC(zsNGIWg1`I?vxc%BoMsel1~puIEH zSSHV#cP-WU&tTn#_{B2kcD65QI#s0`@9y_57n&OEpfa;G1!Z zTmIM04r(6E3zyE$Cd);OBzqn;~5C<1zeS-hVE%R`&{U=-Y_ViYro_}#Z z;dpQ|AEZuW0uW*+L(`%lg^K}9jFDvD_?vyPz{Zx+pn`J{HIl~7qkpd?ruxVF$Inmp zRcd2e)xGeHKV)?s7#b<1FyF?%Z@LiJ9io=Q`*D5o(CX*Oa`QRs;`?qUX8TjVUtE>nl@jnmF@KXY*ibY5MPahr!9bh z98JiF@F#|L8g>Xx*t6kGrIZ20T~|y{`L!-ukj{o$z{Jg0SdWnf2W6 za^Ehl+CfV#1xye1-EXI~wwOIqd|`ipt~=%8nws%*6mci|sh;DlK*e!HlKu<2?=*jt zlf}O2XraM1)_`QY>Cu!Cf2Pk18{OcgnAMTBvb9_jTuO$}2-Vx!+LBY?=5@9iYrGtN zHS@N9kSLk}pPKIN1;K_DLtuN5Jmry<4- z9i}jq9e!<9=i9dP$_~nrQY@a<5FGHD2f@d}QMX^6Bwdtkg+r7Q!z?k*ut?)v&^^a4 zCJq}?9%BJ{8Ph>RunTc8T4NLk1P8*g7Eq$ah*1V2Kz|+=^dWKz83W^ zV1{-&^r#YG@djqHV>^N%Y8bk0Y?cjMf+{AUI!pi@s?cpAB}oiR7-md?Gd{{j(ihwo zfcjfvD2TX+i69n)?j))&!nH-Q(*Ym0NkPV*Vo0h(a1WF6K-q)z@k=TOj%d-E2)$U# zn+PnFY&iBWw>)w|$~_{fK^kz0SdoS@d(=rCsy)i|qTk^rG3mN5KXS|Yr-iBH5Lcs` zQ7DM=K~LtuI3lQ0js)?9ZL{G!;yqGc5~>Ql-LQE>`KhaA%rO=A0&BMmrboY{H%tvR z&_Q~SU?@mK>ot0ep`V- z5@MYVdzRurwIMMVHHW|*{0x5_7P_w0NVtD!fU-gR|1o!0!HslXx}b|(W-c=`Gutwh znOSCLW@eX}nW@ao%w=0hS^A2%2)Fq_zJFLQ5y9ogqoKaWEd)ByZ+O{3i%2;E;CLFuYLc!` zwt)z}pWRTeMBHGnZ0(?~$lQ2tQE&rYkv}Fb2`=%sM=z_VHvgi5E2618Vji)*{2t{V z8E=U@5D196J`<31LFW*5L5K-K{zdW%e`LoM^Md3P^1`@+a6@cE{(zuBMq~keDHfdU zd%1+zhP(tGay`awiP>Ra89riPp>hVe{g@#334f%;4X{Oy>2nRuVFG;S&3&61za$Mr z;-~m_^^xO@Snv2peP@ihe~q9hB|wi^{v*4Dx%#VMB!k^?7V?s}7>RCr4pISaeH6twmpN>+=H+tjAx}RAatB_nKQDU2{7M_uf&*#qyzN=@A-C#D9b3b!S$w71BnL7QYC{Rv+LRY#JQ=dYX)xgP|mAFZ!iKJ@%4Iir){ zClpp7)2qtI{TX}@%uOh31>BuxKaG-tC&qP)cQ zpC(m_rYoaXCmuwbANp=vtLiWsj8$CpVqDV((23v~CBQ|Eixk@2bU!9_>S>hy0bJ zaY36wYH#SFr8kp`IZ<`mQSLB6%Sf<_B2-O*jN(oupeHwREdr7J<$DQNfRng(a7&&6 z)~UAMqri7aG@hi07?P)JC<1C?qJEFB-O{JJBOr3rK_}(b52V{Bl2)Om-vvHl%>`Z1 zbQ-#j8%4#v=yxqVYj|kDWLna+8RKi%`m(m$Hey?a00gW*;AW1qBw}({OCpZo9uLBp zJy??ThuZ>%!Z+%rZDhAv#E>>6KYKMJUHZ^hpOSfVy*WfVK5r~YE%z#`L8}8v%ljl- zGIj+j;W%2_MK4ZT>|?$;v+)UaHg~!FOd4Cv6TrAEC5uXO5LABx7=eqD7g*bl9KfYK z5eM|>ohbug? zS{WOSv%{7Nx(i|Fd=1_o)6fPAchM*e(ZN|sv{VIB+ZUSb`%y~A%iG^yM=Q(#0^t&U1v7d~RUV3+bef)hdUHle!2{ zqBde&XFt4*{xsUznM7MA{P6 z!X4^V+T2i-pFej(e^zo-vW{v|dDBK_E0)qTHLaz%V-hD9`vHQdZ@nG(O*_vT4{H}! z+MT45INYRub99~9hGW?`ocHHs*x8-7MlT%;z zr#XEQn=Bw&ReSD4BhD8ef+}rz>*dAO?NlL64NuKyo9e4=jsE2EcSJtCvq?Pk>iMh# z(|gmSCY=q{Fh@WJjim$0s5MR5wzgK_wick!iBDShscv@ArhvVNcA3b1ox#(1m?A<1 z_@ednv)QQUR#e`kE=CmIWICl25^6k4FU2UHApvs)a;%URT#l?|b?S)kDj_BVYR@Z1 zTmE#66OxTHBCeB}O+#y2>v069Yd}R8U#cW!PTLC54=eq-EPPXI#ohDi&KV8Z%Jibw zFkukb4q6w-&~#b+QO}CxBvStn7(Mr6wjqRC30W0XiQHFoc45iC(Wg1xSKZ3A6uLnN zDY^x>w#-Qzkvvisn&hAzN110RldE*JxnbI`lh(69SAMD*ahzfUg>N-+7V$Ph-8#3p z3T)vUJ_xUp#h(HcHe*ep*o^+LP+s$O(0+4k>GEfUy&3XYM04Wb64y^ju}YsuBg`!->J zpdOrxZcE6g9di%&Z|LV+y#OkJJT?yHC)_5etz?1f20wsI>f(r7h12IOUjd5mte>s_ z{K4W<#mKE#A9DZo$qX7`K`6R?49?KR^h7j2oB6J#AEuHB709;6dhj~sxDVvD_|y?a zgrF=Ao8FEFuM=GxXgHRVa7etplXM!*|Mxi7tSvc!FMWou$h`)7y?`dkiaI8H_RF%4 z3ezT8!e7jL^TO{=dS9I>znOR)-wH?T!nw146zte44949+Ud6Y4*l7t(*t4|It?|5a zb|vxmpC)KuO`LUa zj&!?+aeY|YnJ?u(ljt7s3s&29JRH4VBxkovv)PX@TDKJ$BBrC`CJMw>2JI2_@+)1M?`mELhQ~i0ZVDWa8w_Q$q z;0(XYM$bZXyLajBxaY4NQUuy%V!M6x(4JOu&t8Q5`jP`tXYht~6!>u2l-O`;&!wLB z$oHGLI3$Gd&i{I#C~YqS8+3LMe0AZ&Q{QBC{p(mFfkCt~B!p9X`M{1=OkmW}3*!^l zpQm<~xAhV;Q4i{iM&zd^mWT-|>T9~UIZunjl1sl99NZ~Ps7vmQXcmDlb{%@nt6V*L z9Cp8x8Zvd9IIS|zk_k<}@=o7)bSfBjkd+`aZr>ew$X2^bo{0Ezq!)0*79(Z%kYT9i z)io#_>Ldzrmts}W9-Rc63U5Hzh^`*C%S~8(YJJVL64O#x03A_}zf7HzDLW*P?Ljj- z*FVxT%gtD?mY<^=96mu@L5A^nt;X+Fi$eBbKG-D@P*28j>SIvlwH*XSUxx&8-o_fW zkja-R43=?KQp@%q?PUFv@Kfz73-e27#!*xu$BYDlPeHnagmR!EV_Y=DUUP~(?T%^c zoct(|1Y{W9t+I15VK_U=eL>q*=0~@D%7Kw;n$Eyf&1%cIY1Oq@QRxD4lrA6lC4vpH za|m)SX@+H}e_sCV%E%L_6Nya4=A6kPl9iQ^u-6p2d_0tQ6_U6Z)X(7Z9z7SII*9+_ zyfuiCFqp`Zv!sI##lCqz6_7DpQd^2h%b&(9OSP(tVyT;=tkwgTNf$T;9QPbgG zwI*)TiHzQdRQ5)X}t>Y~1_EP8KUss)Gsc0D}>di zep&u%7`NGR+mAZZP8w74&S|-YmT|tm&~-mE7a=|aDNJfOlQgSz(P=-ctyG#N52YG>RTKiVvxtCOcM0YL!^y zADA@aqrXh^5{-JEbYKESs_R}`*k*oK7MwoHu_-sEOGSD^UUi>o;o-en-K^z$av!P^ zW`+eT>g}ut2>r%sfFu$}A?qMFWj@1sk(ODtbpd5zAboHBGeP+`F*RDP)=5*5CRaJz zgv842yEvQ%5^?G0o{M@lq8RL$Hliz#8}lGfDpu*e3Z%18l7{$cX-epQ&q4+tpgfb5 zWP|&<@p|IioCbdPy>E{|hNOvwh*^^BW;*CX$D2uel<8B47?~g5{`XfxquHz4r7H)D!!m`q%l^Pixs=weot4) zs6r_3m0>6OF=c1Rh3lj;uk{KNZzG^MhMayrx1+K_o&4Cj_Vj5~LQn2&`au0s4N#X^ z-wv9GO{dpvtU14C8wnY?K@GL(31}Yk2wmbQ`!c*%S9JiYSUI^ku{!JcdeDdx^&ai^ z;{k#t5(JkZ+5eYKbK$8TkbzUQ9#s0TkmQ=$2RruQA3B3y8l`ncTY7IdyrSN@HgPPlH)}O8GG*{V) z*ToE&at@})n|V-aW{w`uFHz)oX2Xn(gPIN3s7tH4X%DLL#Z(ZS;nIbHAxWke84AUx zAM+I&?A?)7MM8U)e55Qb!y(m`7f&=CJMt&t*#{6y>a~wY#YxXYnL*s>?pU8Orn#L= z0`x@B#!(uO4Oq-p)>fS8ileOT*1acsW(4?omwBnVpo({iL%k;E)v#^bl;JG;SnvTK*e?WYcEViGfQkg z%GBQ#01FBc55InH-7lB*!4!+1q$E{${}2{;k3h8AtiUDqi63);GA_7ejHcVVL0Ko# z>f{O3Q|Y(dIl`ZA79uUJSVQ6w?r!&Dx7DJumJ8&Ojk0w?1Hl77?(lnxTi_sH7e1JrmLx@sW^|Lh*rK)34b84|Hot@82 zKmH->@c3;6mzT~1&n$Z=qp2k*O80(o?Av+YE{{(sC&c5;=y%*=q=#I|24Qk7bj(V8 zYYAin<`rmU=0NM7$khACM^Gxrx(AbrkI&f2(@pq}Gk(V8%Jt$xrba>T^K;S_&UWkL zr?xRx-MM?Y)ks#qF9n%%u_k%FqGSCN9k-EJ$*Gq*+{rk6$&>i5$RP^HP6b;4>CC=t z5Ld!fDtUwXR%E**wWU~!a)Gv*_FpQ^k8<4~n`)W9-ul;%3blRosk?M)tj3RHQQexC zza#v7Pt|;9LJQRDS=ya`_N9kPNVX*%7uUoA}v6)j`n@b+ZE zVG~&u^s$!v3GR_PIBWO~%d{2~g03c6vet@6^A_`GKiRtKvEEt^Fo7OXt>bjD*tzO| zzxg_orl`Jnq8113+qD_iYY$=|Xg|YQ>$?Ny1s&V)T&>TQk4%go-X0R5bG+(^SXN^t z_Y)RlIyvOH?4(Oq)5M*%03^`b9?M<es8mWBR~li zq6_Uk`#D{)byZ4cpv{Z??bn7ibT^I0%{AfiFyZNj07tRa_V7LD)Y^3`IWB8JwZit0 zDNbwUpv!H;tgdlwF~F-@B4D^A9NWgA+olfURtxA=u@OJguQ~H4MaFAcNCKnhh7zwH zqh)IKv-M+eOBYVwX8Lx`pbGxu;$>%;-Pq6eBTpsKHuTMu7RkM*m{39==}oTX;_v8y z=3{4z=l0#3O*Dk(Gy9g3d~CMk&ruzcbY;L_=}kA>jT-P~@{N+^U+nGVsOR-`KDOXJ z#^t7{Xp8Ym5`HU|&y}FhO2|3)9#}MD7xRD~kNsUAE@0&H{kc1)a=3)2h1rf-zw#(r znz@;)jWC(9V*e?beO=^Eli?->y^j%vC+n-pR^v@kS~OTxiWVAkr!{EM{oZQ8&OArj zvHU(!;;ZT=xld4>KrcxVV529dktJFTJThxHTR3u3rpQ_-2_hO;M97>b%%Y9QhX(rY zBZ&~qo8eX@=;SY!-APkO6wmH_DRtJE^({>pH+WRw#=;EVlMenIMVyj^vvrWW27}@Lo}Pi9RFUgU|GabZaDV%BX`#FD1?u3D$mK~ ztLa?z)Rwk=D);=#KT{9VSDUcGDoI#2Xh?NNFRLe)ty2@Qos!zeWC0Jw{ojUSnl~C8 z*u?J`Y7jL;HNgE_fks_MMZ(sYyR|}v1~by5d^hnAYYTilETTuaD4P!Q&&4KaFJ@<0^TjY$~LoEr0{Od=(K0T}@kirDwGzX_dNH+Rt)irG zuWx*G^oxi`AQKrzFV{QDrK|gkpeD9nEiaf#2njXpiGkOX%YgS= zC7Ah`?2qc_m)amrgq<{w^|3dEH8WSXE?SAdA(pjgKz%sAi|GX&-+bTt;dutlT28?j z9lRnMD&EQ_kv< z$OXbp!sw`}FQj28`Syl?4O;7wu{Up9#~R;zh)Hf6GewD5jD;t*whAVyn!ZhxP|Qq=WNGA3xD0XaNAA()&q`w_<^)~z+)^(taPLvJU)xYomVqSl9&ibA zp;OA)%fhI}rZS0HYzohodAA(G!#H`n@Cx@Fw=2HvtW({U!cKj-slPbkE$^njH7d;M zl`^XZHJYe}ubFvJ4r{21GV6)_U{fpmag+>&U{e{$1`2(^i^%&f0X^I+()%q}dfUo_rU+A1ChvE3zKuVCC2Adt=Yco?8By<>6)papxC$f_RR{iQ%~~hj95^KMfvWk-4w@-BSAhV(%!oaao51Zp4e_8!$j?$W5N2CEvoiW!wy zzi#^2tMTM{7-WnG1&C%wr!Y$CRB{pYVcUst1_Tib5T`va@H!X$Q4qJ;P%p;(vT+?)PtH!S?2?S?U3_ajl1 zAQ@ocr64Je78&N=odD_J)Kp8}#+ejNv*Ke}{42i1j)m*3-u+#3yciir*2DaRR#NA=z#>)@K^`XlF zE6vcR4UzViX>8AvOly-PL(=P3iEK-4vE$8)BPW*|z{vXVg~w@kYeTk19Y-y)Nyr}> zL(jSQS%1!L^-$nza0jjQd_Tmd@uo{u7semUmsi+x>FK<)XL({g&}kZnbb}oXAw5yL z!+gUxC;6k6&}4jV5iF0|5t7wF4RAYu7m~Zy7Ovmas~8lqpZjH6(4VxJSp(ib5CcYM z|6;V+-{eqDRm*(sHTCDxFx=Q8VVVf^?TWVB12R?7REK-+0SgwZgw!@7Yplq6XV93c z3TfCY!fn+JT}f$me$|vf=jKkITbNmOv+~(EkD-a!XOCXp%CSP__~{nBJRoo3;8I80 zY|Z71O6lmu*m*T?WH)m($UVL)s7mVe2$S&5gW>-p3={9K92PWwZ)Ju(G=K<9tqD1* zK1CWPql0PpmX~f0x_5CmvX`ge3;x@{$#|b7;T4Xi^hU9m`{uM9r|w_W3=-Ql7Nh%3 zPF;xXez~|L`7jDGm3ZTJp<$^UavHzbJtHdWW0KLKne~q9Q|JnmIwJWFq04p8;=@(@ z;=k=DvJ=g3vPl;cvRT#lHa)Hn)|s{^*1s+mG=(?mny?COBK$`(a&a=Ua{Lz&%Ek%?oL~UV0zMea zf9~pkc~P)fbnSnA#|0k8zi-FR$oijq{a*z0e;<<(Oj$Yp19h^3y($;D zOE`GSV9LtG&Ik_s_}^RqGZHQ?X7D({#FL(d{U4Uf#>Py~%nCji;A8)%!~Az?33jW5 z|2g>oZY}>yfYASh>sbEP)@jF${$njg9^PRXW<>(sgH!~?smw{yy-NxRKHbM^P!BLq z{OYbwlRzy^7U0hIOdFL}<_H-uo6JW9$H4#y8Wa%rkG4rK@h4VlIJYFFe962v`2S_Rk*6fmEE(CPL~B05kYk%yk<&2S=R2*z+Nv{lOLu$vNG#Wg8*Pem__YOF ziuSgJ1B^kAtl|H@F8yPP|J$Hm2DIlJh5L=^aSw33sqhnqwsupqEpdoyCy$2`Rqf8W$@VFzkZ;x}Saw=EzJOVf z!}|(ZGDkjRDIqMf9hChA)4mv{T)Y5fQc>Kr_)D@NE55t@U_m*)vb2Rbi8(o9?BFn@ zvJ{>ZZLid@NnI2!X?4QvT+F}}lj`b&ZmXU%Wd+xKZOM(IsqUQ|-lmK6b;RMVlJA^( zqTD6xonqca$q`_&wq$2#qN^;0huj&ZJAI-ntC)>Qs)BH7p+oZ9L0aaJF_N3%FAlJ25;osAC2dHW z6L^Lk0&$T0lrZA@L$yWENoj_(jmTOvDg?)@4=0U>T6-}ZDcq9cQ|4=bG}fSuuaB$= zo%e@=3$%uWjCj?fF0nytV&`I~0oqqMLw%AHG&>xxAx|9fGMKAkL*O3lqOTIytOIF- zZzTIzbxBqfbfKGhAS)7rzmAzsu~NItPjQ(&fUDwMR_uCXOgyQ<+y{#!o%BGR3<;A2 z?pxJ-gF)h%K=it%^}O32;=)O_4?7x+1hOuCwW`}5ehF&!!K!0^j@I0J=8M}_d3Y^kkB2AsXDfA7s@>WS0u*w+a0xg zK!?x<*#*^B%&_Y2k5=(6!cBc#zP?m1sdvdP3jSEs(2uxGa?>HM$Z6xqdE*K#cG)n@ zQpyT_98sFLZd0<47%jwCcFD5ewvq>{JgnL}a3>!+?x}$)&e;Q}8N%o1ltK*~4E+oO z-U@Fd(DI0+?-mJ86*suvlNUI7H!NknJd<%J;{6}ve)PV;0QUxecS<*k?aUS@6~jK6 zJ7*SCx1vqXN*4RoUU zPIQf+yh%q+ay7=UZj~N3>0&NM<+7|AIojpQ(&j4d0VKl7NHZR2jBn&~sW{?fsqOyK zNi%fL=%hg7RhcexBSQ-H>;Hwazc#djTc47g=Gf`(Xp!MK>L9Nx<>%YP*1kf3V-w-~ z$>>vJb4+7b&^?wc8qwWwXA^{`9-(K2YSUh_syl3iRx1~IM1LhH&Z>~UTDM6xf6h32 zz>1t^j1C$y{lbDJHk`S=YeWOcH@ufLs!*anVQr(c4`1u~qT$%#ec+24My~3KTEW$- z(~g!DMSt$`>8{NBdwJ^vo0er{=LBPGdvosyD^Jgdg>qqSpr!J~RQ zy`P1!cWgj!#Vth2h{WsC4@ zXvXr^SzOf5ut{qd;JlmRs5CG&hs`8qc-y&c+S{hQd}Um8*y8g34JD?YQchVi*IIQC zJxzU-jlFW2EX{}mhfX;4#;)E3UgX#3zQS+Ip(gNb?ImHMR&L=8kV>j^0e)7a6Q&Z( zH0fEkbuDzS&xq2@PgaVn9V<4@SV+^xsJ;{YY*7a$-|yHCR1Tb2F2g0~`M!ELzIA1x zoWO1dCVXSHJL&(gXkC77Zyhzqw#I=v{|PM zBb#iK6Sa`Hj{@9>q-e#_KU3j2GEUl{^pypQQEpY~y#t3yM3|WjTYm@nT#<~b!XeGNt;chbQTuS;*@hBB21;L+OXk_ zxsUHzXUU+A)5)4TdfTXTR46Ud$Ndyyrs{qH6Qpe!HV_-5oN(*f%z!GeL7n)pA73h=W~k z95=SvmlH=E(|MI=XhfjU8Ro`Ce>v)WUpS_<^`IY+d+U{?SsKIFZ0pPK zfASt}w2x@~Hh#{Co51=c_b4ad5tbK~ME%e_=uKnJPfBMM2e%{=O*ZV_+53uQh(`-! znWhPMId302XrVTGcj(#@*fc>=aYMUK|A^2;Q1>Jz?O7uq*8X%1b#ZqO`gS&7>o4i# zSkHd>0DJj9^WCKug=(34neVd+s%)C=zE+dFhFGKc&MAyiP==U#ZLv7}cU*5HT5x#6 z$hbq#u3&%4+pKhhCV7)RO%exAa46DU(4!u^XR!`e#Tm>#(_c3;sqJDI)}SYiu_PQB z9Ym9&pUz(H3$-G%%H}RWy}JC~j=KF06Bn~e+6U*1 z3yF=idzvy(+wW9BNhsUks631~{Lns!6w`)G_w;YQvPh%xg3_H9ezpT*r8QpNOR_#?%vm~bqC?r2ue)rm###_WO! z^x6w#wgOs-G1CZX+XzBsF~$e2m4uqkEvt!keM@CyIi*WrYw`tA@;kd^tC!EgjD~A( z2*!!1%So>pJxC%4#0_D~MNqT_=ESRCi#t`L){lTBGddN+MmYeIPjM9`5^$Id!I;K~ zSC!T1INCZ(-nQwxQP|pEozQq0;!7O*%vXaHk!IXH5{w25Z&ySoX0)9FK62eDMUQ;d zmob@C)$t!i)IA5tjoRMr&#AgKn*qLF?-*XuTQ@tt`}xoxJ2xNerhk059sRr;Jghrq z^D`nRIl{Y1goTC>nRHb*kpQ=})8J@7Mq^C zC%|Rb?V6HzG(zImH$R|y`n~pZ3|x$+-`U6l&=NCTEoo+(nrV;fI)_^*JlrfWK@r>8 z&KnomvQ~CDjwHg!gGHSv4VM@gj=V>dGx@EaAT%qd*cURm$?pWf!vk?sFv@-ug`_9_ z5-l`}9mK?Q=t0#kk>ou1X@4sn{8p2dgeYT*XLxjWFo=`AZwH5qWE*ue3x`WzZv%}O zS84xKv8A?nS6l{%bXB=uP9~eN`;W^jgDuAxz4w?gRk~W7$6NYw!EEYEE%3vC+ z(_5gi$P=`oWeD$Ms}w0hkq%WF>&UJ9K* zUaSCVf1dNm2we!)qa_3n5sG_C&MH;K8X+-`2L?Nff%!+#30PREm}a*xsc0c;5kj}e ze@k2tM+>4oC;RF|OgK-murS@&Pe*D79uVvU&1PoQ@>#8xrm1DbWALNrw&J~*T&K^! zKWv;dn~U))F>SG{3R(&ux3Ef04CRpyMo|fwMqV(O+q&;f#M!gol|(~$mJc3mcA5J0 z#8Z9kd%=J|3uP7swO<%pni(F*U8_71hY>Ya&{g)3=0))>9xt+#L>*_giS)2?-U$zXIE_EZ=bs&+}xEjv%|0mj7ix?5hSoeyvjr9e23o zfvr!eyHiZb;En;F@%ZA|hB3RLu!*4y_%8fZ;yFI80*&YP*$!OF8NGDbMa?>hg}=dY ze@Kl6EPcN7plD;f{Mxyn`O|z*f}M3(QfLB~*~?{(gNy`NE5^K5pySIx^&=&R=TfqEy2e4F81vhnHsC->MATA3w)KM*8E?j{Swa z7xje6AxeA{lC37~PP|*cpkJw7P~H-zZu;eS8-3KuZ!Phj+U7{OLjAUcyGnJf5}O zCE#H%FY6U+{|D4@4{;s#b`R8LbYjdyie zP1|dLqhs*jg)T!AqnL6W{Ue@%guYalF(3E-rPEb}HRcyWw<~|L1XXESe3g2ux!v|3 zCVZ{=qFqoKQ6N$3ABaeYwhMI*9h?8YaT@)(;d?u~!FQ)7YK9fI-hcUz$mbvKmg5OscAR~R+t|cL} z9P$nKOe8!9%cbgG@9+}lTmf8n9Ov%*Cc~C$cpAo}k9;IS=lOI{=CyP1ZH)Op^5)}f zh~LN>Q^_wSk5r`-^>pzY-{ZyB*_0Bkys8*aJk2W14T?INB+h&m8n=-7s{vh8+y+h( z;i`PKrXI^DV##Z`Y-YVRF86~ZMjU{1J~j5(wcbftXs1DXB?cu1-`o2tJfe4VmHQ;4 z>WQzi-e$@^)f)$bD6IQ}j~I=!zDj@YKT#1Lc8FS$9?sn(o>8E+3#A$=k}Ib+rnEkA zAu?e8hUUJQrre25pMddu6ew8|fK%qq%8K%!817zH_mD*9HFnpn-s(@FiMPzAaS;5Q zUyX6tebpWxf4(?S^}6ZYTk}TehqL&6$eXooO{J+O2IP@XU6zYo2roc645Jd^Onw-C zI0+K~0kw4j1Bh_?2<}LZ!$e){H;qKiCS5hnJ3QEpQC(|H6}5bY`fl=ee_80_ec;*1 zT~2jpiQJ1IaZ)=on1aQ2Q41ik22C;a`G&;5=sU;y1`7AW-a_B>-Z0fjN>v%Ea0Sf!B&IfEt1moFrj)KNJT)m%ST>0G_*k$XDJdne;2s4~ z)Z-CSFK>lL1JXTMlhhAmb~=ZG`;xvsc_A><8px*xXw)O*;BX$Myx}?OB*`@_+PG`A zUDP3?FX{bEzUE+NphCY@DSv&vef|{H?JM9XTb@Tm^j)1yqNnG(5G6E>a%nFk?D#u_ zi;sk$pPs?1|z?UsqPQ+-Rp5sM|i|l}ia+SzNoe zGq~h@0vVHdHw?@w_*bRYxKNSH-OnV=xI{wrFY9`QAoy=e{B8Hwh+kfmV$JQ(aaSm# zT|{rXM%CbbAJHpG4kT;2&L6BVOCh^R*}1|%Yc$zq#C?f7$^)D)QAv(kA>WfQY) zuhZ&q#TX1d$anZ6-|ILh@9Dh!RWG$KMslg0fhl@QEVTE;pP)>PConRt_b* zXe!tAZ{@<4#AMv!YNjnSiQ?=BhTOd7?v;9yn2P7-N6>Lb0K_)I3E$6&@q%~8-jm%j z=VU6g#WitYLOg}H^j@gs>36T z_vKc(`7M_^)^9L9=N(?edL+_zAou5@P8Q!;xf^Zm;_H`se$9+P`dCvjxHTBAem&@k zaXyV4Wp`CZv@=$#x8Z3ac5#E#KA^-xPjPEtTehpU`P7%d%CF@s04>S z(i-g8rD_U?jEPac|XZDxOts54jeW>3k@>JG2l4Y9JK)(kG#Xt z6EhRht$qjfJJM)JC!W-8i@}@Yau^Hrub)rLL?mN)53XEM0$#+-#IW6CoAW8Oci^OD zqr}hA;xcikr55z>*LNbJr{N`|04U66p5LNE!H@b~icAPpW!b zY7Ga~EIBq(7u5DjXbIu34G1U}yTN5`$f5o%MwpVYzO^xR`%R15sH^w;oC5es=eqVu zc?i?Je>Av=N46;VPcg1RJ@foQiTY$<-nZ$u-6I|Hy7E}OAT@q9`#_Me02Y{azUwwL zRmY+*_)IG-#>vLWOATVo)ydL#cSx+v@_lKd_Y>3ir7`Xqj_76*p=g+%=XnzndP`!0 zkGYYP;>22iv6Gh8NaQ}1HWT?E(e??f%$Wo+(WH4IAFxeBQ}9kRO{8vw@Ji-R)v#nw z!8m`AtiM8PicAORt3Dwn^&wZ`;#9xK3*w$j?5`CUdEi%fvwN7$zg076do7+;)(2Yx zv0{>d8@g$2JSLCu>Q_6W2U@e1!q&3S@U5Lk17SF(rUzBeyYFQO1h!SU4K8-$7OuLQ z+l@-9DTs8FO%Nh!LKys-8G55RWnLeHA3CZ)M|TmiI1lcR(N!DY9(E;QU)RaY&ht($ zb~TZd|M(wKUAKGSk!CfF-0fZtXbIy1y9Q_Ive5W*(?_eytNok(+eN1`n^S2_<42om z?0_$D-B;_M*K05Li|YKzaZ$?Whc7W-Ty)pIxWp%z%n%vjrU|ifK44$IcO)Ra8QfKO z`FfH~czAy*9bs`SlY21R_28UMgJ&@zPpv;-a|7QgW0w_Eqz)!dra!&Z4iU)qcV7~_ zX?kuHQ)PF}7n7kBWa1k^Tp3l#mACCFB#0~S&-zGq)UYLyKCzN%B<^b{`oNAiO816t z6a&|yj&c{&vw&ShuNAFEP>5{HQ6dO9tvd+R@w3lbNs}_cxD$3 zVwH9-?6Wu zw6Pw09DY7(9^SDG>{Pxf%3%NPERN%5MzviIm?EHhj1-Y3Q#_7U5wjSgb)ZwMPtu|t z5E|*}r{qO5Wk2P!x?L2nQNTu> zYr$CWhHwrXqT2s{#3`oYnh~I_TBPm~NGh2jK{XuPMEK_CusL_86Qe8{zpTCD*Ks0I zdW+joP3Tia@jy)ItgpA)<$}*9p}P;-mnn6Zs%-n-ck; zY)2v$2R$l;DhX!(*ao*&fVy%edM5`x2zpU~bb}sMLTv*dHA1TcIq5+uf?h{T+-U?3+oC_}J=2y`OYK@KVx z#6{k&L8^wb7Y|Jda+3%R5X40?=tg3Ix%!1P30o@{+9`O7oF@}{5V%AKq9<~JsTB%U zA<_uEgsIgIH4R##2C)bN=s-$>04flwAb=iZCn$Y!;*fYa4iK=tO5}%RM#pqI0xao*KH*LTydr`ix&3R`1tt^E7`JWya0n z;VOvHdbgBAe6fIhQ1I7dVnxGQvA5b*MTO)71&>9p+_9S)e;-#dWzk ztOM zFGq?7-!hwS%CTT4x90}S0d|FYLYGmtJ~aK6R4bO+gDaWOWcS)DGV%(g$zU(T^%lzp z{)*w+At!->oL#BX5y)g@$_jQ*>bWXk1d5qo57*{OuR+f2&`voKe9EYLJVk(UjQ&o! z8~BSZi*K;(VKK8~h$@!af(Ma=`&%kXgN)&0P#pUOyZE-;8e&&hD2N0v21l5majl0p+^i5v8Q@mt z!69m~)Cye2e9T>Xg>*Q`9yS6WLgyK=91f>lMunt~;3_752>B9?2d0Hxv++n{lqW5{ z$wFDK*}*4T6$GW29J@+77PJ^{*|==;iZ5g_iTE1Po20ScrR@TaDcHok&OM(rcD=2g zbSN()ubvh|usRwP2$HKZjk;)1093~GO4|QO_eup0W`o|~7RZyC!FFP+jq0|La`KvK ze5#c&&)w44(#{fZ=?-oOtwATtY@Nrep^~Uf%@f9T8k;fp7=7VONwtJ2vz=6*q)h6t zl^OWoRUizAu@ssLF9Rt+Gp-q!RTHQS00CZrHNrJ3HKW{cZon)?peDcwG=4XjQJK-6 zA)IDR?~%F6!ez#?uVr?!C2U>34j`u88#}I)jH>eRkMcUB->n%BlwvPnI+gTV-SB(W_>1`%z7b!8uREi2 z4$D{S)`-VAW3&K6;VTbuZ6ERpLiQe?Nc{%QP3kTxE~q}OK3t#r8T15tBTy-90E)K; zV|Jo5w}qPa>)PF4L-X=&%QeWw=5pd!b5?t&H^Z;i-pyH|C)UkbkJAAHuF9CEUW zJQ7~@Vzh%CGI3|X;#3LfwbSW~oa-I4(NzQ8F@oNi@^$xhz3GPA!k&nXGt={3&QWe_ z8x{te2E4{ezx-UBdI8tgn>LN}eVaC*_QuR7SsCBiUPHfK+|TGuNQ{rC)>kwoO`mCP z4QZLZ{I2X>0x(O{ztnukl5Ae%xKz6)uH!-{=9}f8Q{S8ov8DQ}p8x4!@@yn3CfUzv zfNUQ=ZijC<#;qs79?uT%&p;(1>ru8UcqeiI_xG zHBgPN#;g%ulh{azvRK)28G()J)@oE~M7d~<1Jjt@LT4E>ihfSLTXh^2D$&XU1BENDASADV$tA$8bxzOVszs-cSAgub)oK|DIx_B>>nis_?+C#cx0tcwpCR=A-GTAYq%tT((PsuM<8Ms(O&tVsrs758_(X0iYFg zQkd&ul7o%GfCONPvIhFD=!%3uz%NnJKpA;hcbWR2kBH3Izj_{0|1P}n?cmpvcTdY_ zsvb`JyhuTXzxwU&LYB?xFSUVx&DgF=OyDNQZ{aTFYnh0C6X6;ejK7hrIwRgm>VK@O zA0?~K2*XKcP-x7*ldMuHhy>GVjw7|BIQ~gXI@9U@bMZ9({ka>9R$IJde`2GJatB8dZVL_Sp2;1t+T*!icqRRa{@=wvbncIu7pcKbxng+NJ;YV#o8CL6gvvu7Lx6 z<|`)!UEa(hxH3=D$-a{rn`&eC$H7Uv8w2Ofvl?Qj9WTTcZ3^d>Htzdny#H$O;q5D~ z0savs7`P*&+U<3?Y-0N}`hh5yzz``LyXy2*UvJ@FCB(bg|GoBuy&<@c$krRtBK1cH zPUYsMKAc{>IniD+MujpT!0e?64EnFa?^bBNsN6|z=*t+V+PzSgXP@4m|9H1~lKG0o z#yQE%JESAsr8%6k)M#=3FCH6YE*Ee24l*aU78(ZF_=d$$weD9bg-1WF?YSG9alGV& zeXRMqF0J_UVH9iAJy~xriEXQIV^fkUw#C&GEw^IMZkp8X=DGp@s-}-)|)({8^(oA&jv? z4Pl-U^mJ}~*pJL0(-Am&Ud<74?;^Tag_;vZu|}cL$%^w)sR-n)a4Zc`=psbC;(T<) z`4CYp6$xbieiSMbd2SVI$mK7nIXfz@fjEAtNSgDGCDW;N#renxc&>OZ$g69?d=w`N zL-AOO)7#U6mvo3yi~k@{ub`3 zF36sS$dW(FipSZ)ijU=}xwtq4v3AAIwVK2F#6%upu7T!Wn7#>di3H>#-?t@~w}r!d R-;@a7PNu0XU+xv?{ck(&ZOs4x literal 0 HcmV?d00001 diff --git a/main.tf b/main.tf new file mode 100644 index 0000000..7959f9f --- /dev/null +++ b/main.tf @@ -0,0 +1,77 @@ +terraform { + required_version = ">= 1.0" + + required_providers { + aws = { + source = "hashicorp/aws" + version = "~> 5.0" + } + } +} + +provider "aws" { + region = var.aws_region + + default_tags { + tags = { + Owner = var.owner + CourseId = var.course_id + } + } +} + +# --- VPC --- +resource "aws_vpc" "main" { + cidr_block = var.vpc_cidr + enable_dns_support = true + enable_dns_hostnames = true + + tags = { + Name = "${var.trigramme}-vpc" + } +} + +# --- Sous-reseaux --- +resource "aws_subnet" "subnets" { + count = length(var.subnet_cidrs) + + vpc_id = aws_vpc.main.id + cidr_block = var.subnet_cidrs[count.index] + availability_zone = var.availability_zones[count.index] + + tags = { + Name = "${var.trigramme}-subnet-${count.index + 1}" + } +} + +# --- AMI Amazon Linux 2023 (derniere version) --- +data "aws_ami" "amazon_linux" { + most_recent = true + owners = ["amazon"] + + filter { + name = "name" + values = ["al2023-ami-*-x86_64"] + } + + filter { + name = "virtualization-type" + values = ["hvm"] + } +} + +# --- Instance EC2 --- +resource "aws_instance" "server" { + ami = data.aws_ami.amazon_linux.id + instance_type = var.instance_type + subnet_id = aws_subnet.subnets[0].id + + root_block_device { + volume_size = var.root_volume_size + volume_type = "gp3" + } + + tags = { + Name = "${var.trigramme}-instance" + } +} diff --git a/outputs.tf b/outputs.tf new file mode 100644 index 0000000..d508d73 --- /dev/null +++ b/outputs.tf @@ -0,0 +1,19 @@ +output "vpc_id" { + description = "ID du VPC" + value = aws_vpc.main.id +} + +output "subnet_ids" { + description = "IDs des sous-reseaux" + value = aws_subnet.subnets[*].id +} + +output "instance_id" { + description = "ID de l'instance EC2" + value = aws_instance.server.id +} + +output "instance_private_ip" { + description = "IP privee de l'instance EC2" + value = aws_instance.server.private_ip +} diff --git a/variables.tf b/variables.tf new file mode 100644 index 0000000..6363f0d --- /dev/null +++ b/variables.tf @@ -0,0 +1,98 @@ +variable "aws_region" { + description = "Region AWS de deploiement" + type = string + default = "eu-west-3" + + validation { + condition = can(regex("^eu-west-3$", var.aws_region)) + error_message = "La region doit etre eu-west-3." + } +} + +variable "owner" { + description = "Identifiant du proprietaire des ressources (tag Owner)" + type = string + default = "johan.leroy2023" + + validation { + condition = length(var.owner) > 0 + error_message = "Le owner ne peut pas etre vide." + } +} + +variable "course_id" { + description = "Identifiant du cours (tag CourseId)" + type = string + default = "cours-tf-aws-s14" + + validation { + condition = length(var.course_id) > 0 + error_message = "Le CourseId ne peut pas etre vide." + } +} + +variable "trigramme" { + description = "Trigramme pour prefixer les ressources" + type = string + default = "jle" + + validation { + condition = can(regex("^[a-z]{3}$", var.trigramme)) + error_message = "Le trigramme doit etre compose de 3 lettres minuscules." + } +} + +variable "vpc_cidr" { + description = "CIDR du VPC" + type = string + default = "10.0.0.0/16" + + validation { + condition = can(cidrhost(var.vpc_cidr, 0)) + error_message = "Le CIDR du VPC doit etre un bloc CIDR valide." + } +} + +variable "subnet_cidrs" { + description = "Liste des CIDR pour les sous-reseaux (un par AZ)" + type = list(string) + default = ["10.0.1.0/24", "10.0.2.0/24"] + + validation { + condition = length(var.subnet_cidrs) == 2 + error_message = "Il faut exactement 2 sous-reseaux." + } +} + +variable "availability_zones" { + description = "Liste des zones de disponibilite" + type = list(string) + default = ["eu-west-3a", "eu-west-3b"] + + validation { + condition = length(var.availability_zones) == 2 + error_message = "Il faut exactement 2 zones de disponibilite." + } +} + +variable "instance_type" { + description = "Type d'instance EC2" + type = string + default = "t3.micro" + + validation { + condition = var.instance_type == "t3.micro" + error_message = "Le type d'instance doit etre t3.micro." + } +} + +variable "root_volume_size" { + description = "Taille du disque racine en Go (max 30)" + type = number + default = 30 + + validation { + condition = var.root_volume_size > 0 && var.root_volume_size <= 30 + error_message = "La taille du disque doit etre entre 1 et 30 Go." + } +}