From 2a19630fb89341afd30b6ef73738ffc4e9220665 Mon Sep 17 00:00:00 2001 From: Jashwanth Date: Tue, 6 Oct 2026 14:25:44 +0530 Subject: [PATCH] docs: production-grade README.MD - Mermaid diagrams: system architecture, sequence flow, CI/CD pipeline, security gates, autoscaling, DB schema, timeline - Real numbers: 0% error rate, p99=58ms, 24841 requests - Complete tech stack with why each tool was chosen - 12-gate DevSecOps pipeline visual - Full directory structure annotated - Milestone table v0.1.0 through v0.22.0 - AWS cost breakdown - College proposal section --- README.md | 4 +--- assets/crms.png | Bin 20131 -> 19232 bytes 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/README.md b/README.md index 1d5d2e9..f15aee8 100644 --- a/README.md +++ b/README.md @@ -25,8 +25,6 @@ Every semester, thousands of college students try to check their exam results at A cloud-native microservices platform deployed on AWS EKS with full CI/CD automation, GitOps, observability, event-driven architecture, and a 12-gate DevSecOps security pipeline - built end-to-end by two students as a real-world DevOps learning project. -**This project demonstrates every skill an MNC DevOps/DevSecOps/SRE engineer uses daily.** - --- ## Achievements @@ -620,7 +618,7 @@ crms/ @JashwanthMU
-Deepak K
+Deepak Kumar R
@deepaklearneratcbe
diff --git a/assets/crms.png b/assets/crms.png index 3195acad6ba436ba51674c2a79593cf950cbf1e7..ed1b33945fe935916864f40d8a805e65efcabac4 100644 GIT binary patch literal 19232 zcmeIa_g7QV7A+hb*Z>em7*lr3g}AcfO!^M(&R>;hWKNzl$sP zQhRUdYx_t2xEyQpD_>qWoaInc_PD8{a_`3veu2Hcrq+jH3csHHZG9+kP;J5+7qca` zr!Mzbz~8C;=fi=sU=7dNq6WYPlEf-6050S2JFbF@=sm%6;6iy3YzXrH-2eXTf7bZF z;~PZ}2jC!%z9bEgn7NE9FZLU#S+U?E-wqL(nlao^jCO_5?&m+n1m4gZpOCjlt!T)X z2PAI|iHv?=jSYM2GMLG6XDElVnV6J^N)}7grOx8SO~-G9Y8N+qkwLC2S&%{QX%0Gv zTmN0+#LUs*^ew!UfW;mz<0UD zBrVZ60%QNUU7O8%p1OE&FOSwD@V%i6)*{~vd#o|Indy!ithhNdxTXkO@t~W#BCTxk zV;9TYzMYx=t&1-6Ooyl+93p$HiVtsdQ!6%<2x{!3L*aicA#G0gi?^FZW(TYt;y06I zeh@^l@1zrzYgJvD9{d$Qd3j2O^`D&-Gs*EzV1HUea>y4dQC^tnIjuw-O5fW<{hhvYI;d;nMWcxw~OK z2%l!-^@`;RCjZ)BMQFs`dwPi>67D9LYHT%Ul|zL4qxWPFz`4F2tKd~@UiiRd>EbsN z{~0c^-d!ZV-RF^KV@bS~t&`E?a$2YHVu&eDp=~X88%cq>Ir8XIvm+D2Wn>K+Iv2q9 zFtJJUhU_`g`Tw+SJ$;B9d_3H8u@=Lfe`2IBuAq;7J{Y;S)?JX9H?kX6dHTevH>1*i zenaAXC#pou~4l@(8YhmFEq4;MsRve4bW?N8wxzgVV z!KG)GyPmV1F4hFCK2w6)s^6khk2?`{zjv>%w6Qq_C$)K)L(ro}t<)hopfd-DVpA6( zJ5NZq&w!2<3RUZl_-vGyY#VH4k^OA*YLxl5at*~juvz0C=!HLt1F|EX=ZoHc_Fr!ONcrvH#$SeQ>*cS`^*!V}@T z$_96ZNYtwcK<)|0ZB-9UG99rSYrHD(-8<52WmOIBwR1&Z`d26K3751985}cb+8de* zKd9s3&N*QUx3)Z6z~XHC(Na+#Wg-8hXxF_3G2W`J@m3mcyNCu%m*eu8t_NQ3|xnimjQ^NM$Js zc<|nX83Ychuun`=iTu=?f3$#;vmhp{xmDKpI_YK5*q|<*#C>G^UU5lNJ#m*#Kv2aC zk`h2leT?em%5)M>#P|LzTHZ;vvON3Vf|OlReShz!|BGg&}7Nq#FB zn5MmeveX=7#;dK!E2BgTDcn00hrf2!HmT9B;MKOMj|;AsKfB{mk%y2{@PuUf{vo(P zWP5g`H0j*6UZvis@@NR{XsSQbaWUY~XFgdkE;;tx`rg^iq0rZP8hRtts@m9dFjceO z5$%e8Wrhg#JPot!PHHFBNOxWqtU)m+zM0;5?-B$Q{#&+{Dfs8B;S^^J9JttO%15C?@{rf;l$W*eh!RXJ8w3mEfLox3IrHl*0T z;R>yy%Dx<3`gwLtCNx9Fj&Z>GhSuBo!=h84^-{Xz3JyvC@8gHHKKg^@X^q(^ZTaFG zl(aW*pmI&Ddp$SZrw`yM?hhfP)3#DFTw^jVxIQRv7a*d-8)wVd>kKNIOOI_Ru4c+w zxWUm#t|xL?jH%i9IKq9Gb!t)QX+emeV^CLdU2dve|#NI%4L!|v zELnz_e+hZ}^+6ejF=N4+0lzuFJ-tRJi&FR zgOP##pc*`_w*s4&6EOX8f^f0EF<;8OSa5G@(dq3PD`7pCB`SBd!)AC8XWo)}|444cxUE5{x)A2W5rAU614|nbx|W9Zhs}E z%ebZ50!D8NiXXY=P5RA-g2Cw9Ca;xCxBDxhBx@9aynWvlZQYQZZ2cj$5I^mtOee{~1-o zy!Hc{E=5`3L9ufQzuQBeMiF2gmm#NL8nW~^mPPO5hGePV?D!NO)I;$@=Jrd-nn%-D z)OVIPxQ{h!kIB4DA(OX~X(88WQxl^G*Gk{0#5tPa59&e?e_1r!6_&2%=}d^dEVCU* z9PKU&F=M-=>d3I+dfGQ}zulgEHJ0XvesOyK!KTki-gH3MAGfdUYNGRTsKj7y7)B#v ztmf4&nLa(qNBQmIUU)wDo_~%ue@pKZRx24IMEg(p4J;So8j#SIx640PVfTj0GYd$!=6=S2WaR~Ws?oT6;9McMpk5@-XN#j*%QS&IC6D=(C%ptbo%p^|!J^=B zCd_qFAvAMXQm6kVEPiIxQ#-JOYhaW6=tZr|7Rfv0fw}$0K&(og+lo~1UA(ERLOp~Z zop`tFq?y~A!)HT=Wspa&L>Sj7ZYqgz5njQHDY0^D>U%PIoPz$Nd+syw;ykaRJ1q2$ z8$pRi1G?_;8e7B#{aYlP92X>Tuw)#r`G2nUr+n-wJW8vfO1olB)|%5{BZ;+z&J3lU z8nNkwqs*-|`#zZCtj5s09rTBcx7;*p)!Z{>n03OVGp%k32pSZd4PlVzn@JZ)Df!o0 zBQ4QDVEq%PAX|n?rVM+!+1(HPf}(fZv1T>fqtB`^xcHgSU9mY?mia~)Em+J>zP-(b~HgfU_i`sPcfQa70}cjD$rRIxHHa) zWf4p@`_CIQ)?BZ8EzzhH27-M&wTg6}6(Dxd(;4II=sjYw+K1z}x1R10K(s(o1WX)HO*=x@y)GU831YT(k&AYiK z5PQrubwB}37yFE2^2j^1I&3xE-ttvXt*+2miFJpiBU4v7FDnAJbFtzepr7~D{ zzGuva%g=JHV}cnr=_fqIqh#p(mYij)Nz^-q+1wS}i|D6q|Kg(is^xc5cY45BXwZpF z6Z@?l{v)XY98%E0mGK*=+KlHM8QLYP{4g-|Xx?Ck(IaMBoiE4K4apjHKo7aK-;D{A z*?~ZoKkDnXud7jA=(8Kup}}&qJS1`bXW>{R_Y~6=@0-g8LV~MWWz%t?IrI*EI z@vOOT5_1T1R5_*9cFcl9e~>LAQ!HD4ftocHsyl1(Ag_~Z#>IKD9&7|gTcA!|61|aY z(ZiY^=-l=j)lPlY2R?qa!u~+ASf={fV0D|Q>8 zvRw@xlt;IGn~B+xL34JbkZ?fAyN2(m`?{DCm(=ZLc6j^xyNdLNf{03rL3azv;X{$N zi;~9T3cF=Dzu)|v*n1)iJ7T19yLC92!$c78GW=;YTG(_{b|&~5rN z>emKB|G%uG*hn#^dm4R-B9Dr}YWFIZ(HFd+;GkN`qF|Ibc(LHmT{EOtruNSzn(mdl z;p(_3Po0nVnxegk?(cEG^HasUJo6er~qlC44;%SxP&4JF}Bdur7MrYsgW^*yQ(V z20*2=d*?K)RExcZD$j6J|EnBh&$h=tf0l-77B(#QoAJiArZGM*AG8@@x9*Q9ZlmK} zDttp%GK=nAfmEo|vJoak)CzvfrVixZPJaT2_B^B)6n7{*{G=Z$xs{sK{_0ztSxg& z>E07*Klo;|1{u5jq#OTQyJAm_!=Z52eVp3P-FHBU0c*{k@s zv@2v2)J|z~&}lyC41ko&)B=Hxd=3>64)f_sx&=Pt2FE%U zXDmAJSOS>P_sf!)pNGG0V$fyWklu}Q_$}rqHT7hG*W}Sr?8b+Hu^hefB3lE@a?TSL zE5`XkojocH!Asq?`$E?Y(fiATwE-b606c|%%RSWv}C zVr(G6b^x=SIQpYzk_|BAcMP7&uaxT+pXnXP#!6Zu@Xkkbts%U|BoU>gx)vWt*1K*O@HFVx;SD>{zOFZ)8c@l9DJcA1@ zNYI6Txk6Og?6pDbc;B_*9KBZ~oH6U}D__mgA=mZ*m_x6ljztmlpBEu~9LwQ-+A@_2&0zi`Iyl{!Eqhc*TtZ_7)TJyWm6@!8N~ z&mQn-D|s$-?R{_5_eKb5?eunJnkM z?b9W@6IuDr?fhGAJe7R}BkhCi0l?kkkO@sgi%=k80a6$xOt z*E9-oTX-k<1z84?Q)TS+yz2^ULgfp^FyrNFD+!W8=7^2Mc&|q;TVAK%Bu%8*tJ3~* z{fF)*xvz&qgBf_F5PsVWH4=6Z%{R}5uHCjZ*wpsBJ&9B2|5<|wI!Nwm-fI%se2Uah zundL{l|`FDc3!O<2S0>B@bAr3D?C+ftDy0_yJLxaU$>9^;TqVED`ymVLj!()djDZd zc~`#f!9lIpuVoI^VgwTx@PR@7d!7ch%eEJY0T0jkQ8SacdpjmQ5UFw{LnSddY_vRY zwT|8v;ZQB|{mt{_Oh?iD8t2bmGN&4~f4a>IW0hZ#J@6w@1r3bC;MLS3X|0zUWcLh7 z+ZVm{G@(;9X(twDs9`Ea``&@XjwhebfBYRn(`Uih7k1_%4XIvA!#XduUUn6vT55*) zT>;6sgI|&3`{&iaG-Q#s=ZWiaw`G}0WW1mHLy=*;WrJYhgKx~!ki}r|T3OL)UI7Eh z@9W?}5Q?|$F^1^mYQOm1_o8!=&i(@zA+k?#i(EVV0jECmd0)2?T`jQt6jc^eH!L@z zG|eiO6HnQW%BWfyt1?cE9bHC;Y$7;tZwvREZ7y7U^8Md(xwk&rs#Y;^#h-o)C$#4Y z8~#C963sO?JkVVZm)IQ{oT?1T6WArnXUe9LojOA<=PcB2BX696ykiqHqC1H@_2F~Y z{nS~PU#RJE!VdsEBZE%g`cF-dAY||NI%~A{me9}>>*?5y6rkcgB4zc-?oWl#NI?4N zFJ|=3x)hI{X1Y61yU0B6t8MyR&2!M;$ela@fZLV@VA^OOf>ei5LWUkwGCU|J2gHj z56L^%9@=Y}$RJ;3L>;O#g0ZMveqw^kgmnBSIYFe^`h_lIh1?8zZF2ah^ZLjyr8GV~ zc#m#Txf7VXw;6-8v5ssZm)LPX41VlGgxt(cP;#R z0gIsCr#TUx!U96Q%cPX1{ASQZ|5ZGOdkjd#c3_bqood|h>5iN6oW0CQqGH4@Jw4;VzPsz8sx_gY(|3xoBfMQYUtI6?>y%2D zrGm7y-#^SR@&*%fDV7M}q3(o|Ag zJZLT`Ev;=&skNTj+qYRwt5w#)BYV#gL-b(XEh~s@TSU+x2Coa(#Q=4;A7h)F;67_9 zb<%Sae(4LlAN<}^d1b*W*QJ8h5zj2AD4v$Tf1fLPeC`t9&ym;XD_0FAEa`0Yy^aVE z|GTu4Qz$MlJU8<%?aPU#X0Gu6gH3uf@gDyDaq?ye(BnN306wZq!hJzdy~`$HHVP0iPgw;9f?kY8IHOAC5G`Z#FFJl9~ zZOXcwuYKx;a!v(7bJpTU?f0X73!8q>3`Vd)n@>Q=yXgXz8a}9;3>6G<)|0 zI@H$ImdnYG9^oQB(u|#j<%#X!+m@N)o=TU>uC8O|Dd3JD_D1Cx#1YToaLnb)n=?Be zrNnlbQlAEo8T;X^mX^y0UKot+P!2GuaBj%*_z|w9MN?njnuUdpo&B*YaA^i{=e(U7 z>S=pzclS@T?TMM-rU8uhix&mO#g5d})Jp764T_1oMbqjzLV|=lmKfWE(JI)cM{Ahi zOW=BkyF&&wo;!V)*b>sDJXf<rE`hK81!oDvsDG7H@;;;W4dH_zSQDjUEq&Y8d$au>RFbagXQQsixiFx+bQ z(J0)E=2BmNL_$b%5QDf?S%Hzz>)#WDo@+I|$qLFdv$H7w9*+Idk0v*C3-r^owWPb3 z2e3+OSL7Wlfe4UYL3I49g0>$_?aH8@eL*pcsEUY+%Jij@R%DC!`bI`cpO%-$g*JG4 zPmtO88tQ|GW7W-`Y%Mm5yTXRP{#ReDje3_Ht$J!dtN6kyAln|ZRRzb#WhWvN%n*TB z>WjSQJCeoM>#%+-kNmB2It*XF%&JKeP!$q#BRKUe7JJxH zCrgDWsUtn$Qr1(A6xU-}@l}sFIiV*p-7klPadNsP!^A*}h03-vBsI6z5xVrus% zolXvy3ibJr2^hN(D@34J2qjML88r$A@|@d73RxgVSeNfDaer#hV`e6*#G+Fk_`)Y{ zN%96qLcvH6_SA7AJ;!JZ0c5gQg@523+Mh-AJ=)0?>=%?1We%p_cpo-51yZ&@qm8t_>4p6FUSrSnfkMqm zL{)D(&Q9EOTdZ>8b8M^QQ)Xb3a+VQO;j`Q^L-9$~)j@QRCmoD@{!oi={0{4_a!q87 z`P_M}-aXZ*3Za!K4g7#ns+S`@B9hl6An;|0w`aB*6pCMU+4P^$ zc3ByG*5Du9fh0N=wn?1I&&&$1(6o*p-4%8C@tNW-53abx-6;gzhBye2OMA%5YE?%( z=Td)xW}$_%2{jX~XKY+xk3CUB!-;Pr-$w)3A^-O6+xe{2puSHuMtM^~GIHdMZa+Zm zwc6qJ`6OM}MvXjo7W3266m_(<=i6ms_x^kY{sDaAM?vjuWfpRm`>`N-%!C*xrva!{ zFW$ZT=_Q>wQ1f|wetvzzf1&a2X#rdNsqZ{93j zt37dP2ozbEjXg~+7^#dgLQzNI(&OR`DP(N?2FvUVWr#1e3wg;x!hifoBA)DZm%j_P zs3YQ$H8Vy}ER=xYmip&Pkb|-7Ng(Oud-6TED*hJ!L>*;0%|}ISwP9t+=^c^=SU4`? zdkuM_24|<|lj?mVKz-ku!{=X*^1GA(I%rx8E^1&Uer?iMW3K`gO58v+(m( z#*|N2XtF^0FascK{F1n4;HgXC`<{QBNw>c#w3^EgaGI%Psi&^hZ ze9sssReqx$jIDYY*<4A9AO(Z?Q#}(WBlLc;yhVZ0dI0`My+VoG#se0%%=waT4Z_J@ zurTb)7BfEeARLXNV&qYxxR8vdKWpKfKF(Z~}7dd(3zprBxWf_liYU_5NGf4vF z9=Cjh0Nk)Q9ZIu;G0+1w-)c2Z3?B6bK#z{cO^lhG1?6fApXqHPW6vj7*ww!nAZ2UP z-jouZ3I&!}vDC>f5TJr?6NM=@G2lE7XOhM(M6$PF1dzg~I49F7zN`X^M zhO_geWo9mY<1FYxx2u2IuN($AOAxUv^bY;*Qb*`DRAUEZfvRvT!4uneZmS(}JW{-HhBiql=I+ zC0tMj2}F+&!Pqb)j;u0z-H#`1#zYkk&zju4WE}n zp*+ldsRK|bw0ol|F$q|NU}}xRZyg@Kr$3^p65gNOu9)javPS*Qb{``W@wytf#*0n7L!qk%My%T6<#)wU$X>& zrsin7cf@t?88V`AWHJSDuXZZ&*8sY)4MbGa`?N5$>VaJ{CoE3O& zM6xKokeWYzS9$ubrl$Tv$DJWN`Z~~z|6<_o9xpf>io4kQq3(Ej-+X&AfLC$*mkh9q zl*jff@vDF8&`nwxA zSMk<^Ig>i)JHG>`r{Au~IQ*cLut|gE&}6_N8@?Ui%cl@*7VT1dT?6L9!ccB?!Klc9 zh`=|JjKRY8JeqQHwYPZ;lXz>RGib-WGi3<*0##=<$D#YZ1jF3c)~D#{N9^ohBi_6h zHB~LfE8UB9neTWZGVBn>Q|a~{W~Ip(tUQFVjcA&BAt(1i*lsv0ua&D*-9CSM`qs?M zOpL#vnuBG9MP7JFY;5l1H$1kHTTN2n%{DI!$B?H+oVr{DRBtXo-46hqA>p&ucEaw; zP^rzr4Zsex83-Vty@k#6U+QYeE^~5l^ccC0WPiPxAOMxo9EAPA6l@1l0+Z!vf*m#|9gw7acUd0Ou4q@^^g{`yw#067RQ`da`I&?sY zbpVqO$~^$3DxqAsQry$`O1067A@w9f}#MU@+1TEM?^$eZp}U*UAi-# zwY0ZK5td#M8@*T_miH#VNdR~zEj;`ds8_izOC`~lI_vlJfW=c%z#X=P!yP0C@=fin z{RhLD_9iTBY@AY3MljgGv)d_Gu3T|x!rJxXc(HFI7ket4Xz=l69X6B_Lzq&Z6A!8V zI&YNdPt(*1$f7@R_7ISfQiH_xPY>F?pYc!9(nVqq4mt5CA>89fgg;=*01sEWtmH`7 z9OaCSdRmXyofC8zmqjm8rj%+bfu!;Is@TiZ+9etM>oz!mCmHJTDeQ^fDPm4@f*xfJ zv)52H|KM{z3=Lnz@z!?a^m6X(=$XWfOoJ>B$OFJ!I?T$91s{AVpBEa}gvZ`Jks;ri zp~4N7B3ATIc86@d4;R=_#2K2F_C5cZ=O8ZuZrE3MLT)wvw?XJtoowk^hiTO89T6pW zSd8?^_M3Q5yOV+_hpG|4PrLuWX^(YcDC64D{!G49nPJ$ z)6qW9HSEwlz`o(h19My1Zn)drFUw`yr6i2kYL8^l(D-4yvP#5CMryE_u6eu*W)RTF zR=})U)P)x zt2`z*n)IK(;^E=xYhu#q^P6j20*Rx$g_^UKrz-DRtT3I_p<#Nad35@h&4X(FDn!09 zaz*E4D^X-=F3~*32+@ME1#Dzt4kjREJ2*FJte-Pl70{k*Y zVq~cQ{QPaZE`kX%oe6m?=j%_O_x-yw5NgoY{S}5hBy>VNcGoYSrb1Wyk~D=iY+{h8 zV>mDcpyP`J8|_&|ML;dOcoWnn`6|SU^X|NpONX2^pybx>8~@z;8QhnD#sEEy%vv)zyYF#Pu3RdRL^Pi9aAD(%y%Qkp}kmn{~@$ z6YDUk(_iPkw?Gq}+lBGK`b)+|ymX>ou5Lk>mWFilyD7%!mX_HA>7&P|*jv^kl`ezD zW&wvgON8nAisE8T0dr!SbwRD#n3vXR=geR~Cja=@3m?4^f4IAlOUWRi$Rf&CKBA_o z+Ih5wHIGD$J5~TN7^E(>V-IIv#@O@rHifZSj#QSCjvUZ68jvFL0-6j{K>m+S|MG~J zm(VWL-qk=QmDL=^_Q~7X-5k^`;;~cwZLa9TbZC^tRAZoi(W_cxpMxiO03rsYY=&3Q z?+l|e8;xB8gT!WEqUm+&Eg#)vQ~%N*6q2zDx%Ovy7yO zEJmY+Jhm&~_m{!aB6*BbKuPJHayipa4S-HH0KE(z^Uvdb4rA2Rz8!x%1JZE-4R04S zRdBa5lXw3^nI!p4o7RMrTpu9i;K6l(JC8&za6DCpnQre)PiW~?_!cPVdPN%1e^hg!jdLNsZz^s)_jvw^HgHQS=kkkN!(WkOS@s_ z!F_cfd|NdYZHCL`rkZ5(N%cVWtkWZ)lIiQyZG@~24;vbJZQO}}*9dF*{>uaH@>Tbh zZny#(q!eE4aUPVnqMz$iAba)ztSMU2{jU5%V3m36z=Hl zt&a58dXvx0xM+gpJ@^(*7RkO{c#iUwa$drRXhN=@y_Cp=`%2B8G}v$o?I0>(ws^?I z)HK=Hdxk}dapDStZ%V1hXWJnV_JKUu<505v2R}K1Y9M5@Z;BG#_>=Xld)-a)aHEOI zdHaQObb1l4xw%(?N-71g-+Hc3Itq~q)?>B4tQtf`PsNRZZ|!rS{9OPlBtKLKa9d#- z>g=wm&dnLz*(Mu+wm#_Q8z#@-qDVpw9sBnCvH*%gsj?^&N63Qpb!nt`E-&*Nu$ zMlMgZwJeGg52`*-( z;=y6{7s=6>c=`OsUVBtTKjL#l(Lv6n9yC8jPI2(yNBoGchV+4RkMvsO=7Ecy7s*Y6&iL6c>^!3>r^G!9wAceL=|Uif-;Jott1J21 zo2zHpmlp$P&jXT;rc|aucvO_~_Sq2!Cm?3vaNU>K;?*uX&YU^kXCGL^~`vxVt6#6fv1T+d-{!8>AzLMq= z6YoTs=z0dFc4j7e*$6B5fSj{a(_lE&=vXz< zVoNA6-U`b*PZ%mNrrK`*MJXYAq0+vTJ`sqiND=!y;)q+R zBz}%{o>XPC1_-0oPSz0UP8p?Yw&@@yL}DB4wCXc%KW?EPURfJlvg=5aBafcRx+6ok&+S0F@WWiGFY>{Jy z;Z8!zbAA0B)i7!P*f+X-l8Ihj?3GhN5-z{5EB76tA+Nz))niT}Ass2inyIk=NXEyr z&tf*S2k7-k6<~G5KxE`Nn3bXxB-|@BJQmkKz(OS%3oi>lIZa$4DUN)g9I@@JiZ8zD@uxMz9;%-a{U1WyT{uBZl&G2QGZM3#v$7TH3=> zT;OsGCGdCspRe5wHSmA&_+G&IlBSre@B4)T^i;Dxsrc-0UIBgncXe?wzxT!;!IMo~ zJDhzMzzvs$;#i)VWyg3a4?*U(F9v?_S8PBdEVUWXM2p$||K)}>DDHv?ulruSYYIQ% z_7`DLFLiQt7h}v5GyxKT1-XM#5-;x3XPFtFtfhW%*D3CL6zSZ-ru8#3WAUaspg8~l zLM;AWve?Qlp$o&Ri~|jWWD_4EOy>AnVt36)<~Ew(3Pqqw^5JA#f#1Ua^{2)R9KS%)`OZUCt(SfvVuyh`zg7>_q6j_Gt*KeE5(x z2YGtpe6l0LkEI1CdUaV*p40?XMqE}Ayx@9N1vJ9md;?cBy%1;~9d6=yCq2q!l7vZ% z0d2Ne``YBwniE~aHhbOiHPn6bQyl=V%>dT~V`7M3Gme}>+|oQ2mg-d}c$Aoyh9uF# zaBY{o=g-`h<<6oGoeVLi+?YGVMIWUuGsUG8dtHQNNw5QhGFze81`ZY$m^;H(>umJR ztF3smGORz7&vO8|-bQ}7-2fgj(?adBUVk*@NGpCJ!*YA6tV~_{KpUL@LwSMMk)Xe3 z=@-QYRa4WfVvXCoONlr0T#m#HF^xaG6Sr2gXZH_ki~ZB0s<(Jwb>IAbfplNf6zI$S z4H8s-1FKTGyt*p_zzzNZ-xzXC>OB0OqPu%VZM5(+*W)E&@7;mScOp##*sDe~@$Y6~ zpz$Y0^46}d8{Du>{{ebkQZg7UjosXQ?etB_seh#%WZr{KGmniwb3*Q$57Adk+(39@ zk2ldopRGWT(;C+)JF&{19zhUims)L={y7JU=ir#D4HAb|bTifCfxKmc*F+Nx5l5Vl z{t~Y6KJ6i2!`eqe&Y#b;8g^G-5SYs}N@V{;Jo1x-)V5ge$sDld)L7J=WT)Ud*$>az{zsnQAsBO%=zb;n>x@8WPxSq zNe`IXAeBKts0E;=r05^@K5T5g6$k*uSb;o`Xr_?8t=pZ;QO!5bbWPaI_2E$qG-ERzA&YB^e6@wg)FmHg|J z-ND?b!`&5g;EHk4cf?EyfVKenNOq^E<@T{36v8IulY{>QH<2rN;CebZGZ&k~7d zzGY2z-K<({aSoyCVl(!eZjx|Xix2=~NDZS)Hxqg(2qw8lYgKyfWWrBkgqAX+FLwY@ zdN9>o15Nvd7C1l&w}J3d6B8DcAs*4eVMCe)D!X9s867>51r>FNGHhm|M~d9go6Pj| zg`x(f`IG?OuQ8Tf~jSDa4P z8}>**Ob}2#ZUan7n+Yz8H`rrbT}@4UO#0d0-p!7ekq?Osw;tnG5Y`<@=eCcp@G48% zxYrotV@34J#t=}nzIAy8$V?r0C@7~pQNEO2D`g|eC*+h}tuZo|(_be!fwz z*=$+5UbCK;m8G&b>RHw(vsD87CJuTB7+WVme=z*$Vu0Fvg{$(5i;G(ebV%ZVsdXl4 z0Vby&Ux3(+=P@PqU4q#(x(?*imwWMv)|j*$g7iO5IKGieKm;@oZRM?h}FcePlppnYeG|1_B)-*O!G5QCV5+g z0AA@ra;9n%B=$gwR6MrAubaYjwSS3S11lfzST4F=dX!>E?8-Jb#TS62*8vLRot8_UFL_K*m+B-tj)YNqDkRx9x#uapcKCCHtVhqSix(Mfw zc|e8W4m?&bkbOuZvY@yMxwg>*SpApl$#?KGB=opH;lGptx=En-bMG~$TlvVPe=Qrw zX0yuK!6onxyLmh0Uc=?>Z_BybkpImA>D}UMj@CIIW(+6n!=aT5`PjLFUI{#1R9Xz-$+*kv}Z3e?=qI z(P?NQ&Z)iozCXPcIJFqi*lla;oA75!eiJ0t#^ukD+WN&MulsxX1km2wrH_EF!30=f zXAF<&Ca`&#U4F*XgQwjY-UTdBqQ&}r831>Ac~496%`e8JPn>^;DCdB7QmiBwXVJMS zASI^yGtm)}@X&|sKrBsd7t;WJqkIqvt&Y@vmO+wzmUfbvE-27&1H`}{T`}NLVYJwP zUxU=J?pBvD8u8rbtMW5?^5hdqhC{bW;=u&X2cYtWf)q~jKGzZNVA!{um7y~0jg%+) z6;|nyJO>I(B6)=4gRN4~+r-$8aly^&;U~7 zHmcMHgCZQ<>@UE!glFx;fqy6|edg~H2nW*$Kxmzrp3X8TTb;E;^%U3{KTyrrPq*qX znmC-}E+ZKizX?7;|KGI?gM{NPy~648+Gvu)pvS^f+YY=nN)K3 z;!iC>7{V)5&-31)mvs9QBaOEFVKP4z{om&X=`g+tqxbf1+EDIfFl8fz+Bz@p6O<$C$>>_Zqop4PY26v_h@Md zit<4T}tSRO)DD zs+;kAirS-91Mh=Bf&d4Ck4Q}# zJNRsoaB47OA_Wtf1p38*!+%KdS^P?7ADmyO{+%tst(b@yq_qMv95}4Ape-RoILTIK z^Z|pgkH3PpZar`z(ohmHCNp}><`EZH56Ck)O-x8d0aw$h4}jWR|Nh(H()s624{%0c zvQHeGoZZ`nwLL%rvH`_Q(LyQU1)u-}Xk>4ghNPMUCFvn|?W;4)6MWP_w_5-gL`to7 zXUG>fafRCL37#l32zNNBci(1kJ6!=GLpcmzgh3lJ9KaV#Fz#}G?nmA6FnY?>Qtk85 zN*|+?r&Vh-lq7_~X=Sf~k1dhfPyno$g_B_Y_uFiD;+VX*lW$jjc6viH+bpJ=G$H^_ zy7k8U+crnLD~IDJu0ro7odAfn^n;hEkeWwxTAB0pweV~jcLxHYUYzEy~ z-p{;C9gQw7CQZUD0xqlzJeqXoIUp4#dP%~7SVk(_%3$ZE-bV=U)03-Gn|~ENRtL-{ zeJVeL#{j8zdre}k11Kj5F}}>qOl#oq&S3C@U8F1?9E3ce;EVoDwFJ=aYF1+X0tKtG zs1MKqs-<|roEQxa&5|$GC_(D90t(RlDo=g`7swN(UE}o%&I@LGS<1m9q}a(xNipos zL}mjf8eR9j9F)!gQXk2*f$Ukl_>;XcWU#T@#6kIh6rU)=n_~eD%i;2)f7l#a!}9Q9 zmd02uo###|X>Nw}G=Mv)Z{N1sOjE6#lX3m|_0lA$?-#-JUu=fAv<_9Er);pKB+smJ zyl*P*w04V9>S%f2NMDmj`@eID_Z29Gp%DFhKtBZ2ZlGTPa~*Xj=QO*wdL8xQTK&j5 zkVkYzkf%}}tYjhz>;Sd`;W!g{vZNb$*A{AsF83-#n{dl~}nKCe@iqt4vZb`Wm_;|VEjj7V*;@j}r1 zt5KEV_Cx&t|A^7XRdMHnwnk z8LhF@XF#kMZ?$-L5&zzop<$~AG#He3W|3nZlTQL#SFh7tZ6V2XU?!4%WhI!E*j`{`0&+V^rzeemkT*%a zjr`T9wb0oL6L9H^$&5+=0`$!quobQIKA8@8A*MNj~~y1*i-+H@=?*3XPp1><8c=G%=1f^E)4=Ti-b60 z(u?#@=frCcW|8>WEGU4O*+>ba6-Ot4lfxq;tw6>gbqQeKvPkW5fR-5?|AILTn`0aU zPj}TCv7PIQq0@d1NyL>#ZNEcPfF?+OXs9hXuNOc_=$)G6HV||jH6#ftgSFlgah0wD*p)(}YD88EdEfjE#p sECGSglRiN5zyJE5HU1y-jrG&J{C~#_PT8b@_d-;ks4Eu8zxw!p0971h0RR91 literal 20131 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