From 22c9e30317f25df3a517a9323a1f93f47723ea58 Mon Sep 17 00:00:00 2001 From: Indrajith K L Date: Wed, 30 Nov 2022 05:52:51 +0530 Subject: [PATCH] Particle Implementation * Particle is implemented but something is odd. Will be replaced by a library in the future --- dvd.js | 75 +++++++++++++++++++++++++++++++++++++++++++++++++ hg.css | 17 +++++++++++ images/dvd.png | Bin 0 -> 20425 bytes index.html | 5 ++++ 4 files changed, 97 insertions(+) create mode 100644 dvd.js create mode 100644 images/dvd.png diff --git a/dvd.js b/dvd.js new file mode 100644 index 0000000..3497cef --- /dev/null +++ b/dvd.js @@ -0,0 +1,75 @@ +(function () { + const dvdCanvas = document.getElementById("dvd-render"); + const ctx = dvdCanvas.getContext("2d"); + const dvd = document.getElementById("dvd"); + const particleLength = 500; + let dvdParticles = (new Array(particleLength)).fill(0); + const maxDimension = 16; + const minDimension = 2; + let x = 0; + let y = 0; + let dx = 0.8; + let dy = -0.8; + resizeWindow(); + + dvd.addEventListener("load", () => { + ctx.imageSmoothingEnabled = false; + const { width, height } = document.body.getBoundingClientRect(); + dvdParticles = dvdParticles.map((particle) => { + const particleImage = dvd; + particleImage.width = Math.floor(Math.random()* (maxDimension - minDimension) + minDimension); + particleImage.height = particleImage.width; + return { + img: particleImage, + x: Math.floor(Math.random() * width), + y: Math.floor(Math.random() * height), + dx: Math.floor(Math.random() * 2), + dy: -Math.floor(Math.random() * 2), + }; + }); + requestAnimationFrame(update); + }); + + addEventListener("resize", () => { + resizeWindow(); + }); + + function resizeWindow() { + const { width, height } = document.body.getBoundingClientRect(); + x = Math.floor(Math.random() * width); + y = Math.floor(Math.random() * height); + dvdCanvas.width = width; + dvdCanvas.height = height; + } + + function update() { + ctx.clearRect(0, 0, dvdCanvas.width, dvdCanvas.height); + for(let particle of dvdParticles) { + let {x, y, img, dx, dy} = particle; + ctx.drawImage(img, x, y, img.width, img.height); + + particle.x = x + dx; + particle.y = y + dy; + if (x+img.width > dvdCanvas.width) { + particle.x = dvdCanvas.width-img.width; + particle.dx = -dx; + } + + if (y+img.height > dvdCanvas.height) { + particle.y = dvdCanvas.height-img.height; + particle.dy = -dy; + } + + if (x < 0) { + particle.x = 0; + particle.dx = -dx; + } + + if (y < 0) { + particle.y = 0; + particle.dy = -dy; + } + } + requestAnimationFrame(update); + } +})(); diff --git a/hg.css b/hg.css index e364a3f..367b298 100644 --- a/hg.css +++ b/hg.css @@ -50,6 +50,7 @@ body { text-align: center; background-position: 50% 50%; background-repeat: no-repeat; + z-index: 999; } .music-player .color-overlay { @@ -250,4 +251,20 @@ dialog::backdrop { padding-left: 10px; color: #ffffff; justify-content: center; +} + +#dvd-render { + position: absolute; + top: 0; + z-index: 0; +} + +#assets { + display: none; +} + +#dvd { + width: 32px; + height: 18px; + object-fit: contain; } \ No newline at end of file diff --git a/images/dvd.png b/images/dvd.png new file mode 100644 index 0000000000000000000000000000000000000000..ebe435fdc8ac163b93bcda192da0028c4cf9850e GIT binary patch literal 20425 zcmV)AK*Ya^P)PyA07*naRCt{1y<4npTXr4P`WSQ0we~)z>Q=eRWyi4`Il+ky zAA|@wf_xx;_~8eH_y~zY5JEzH@I%ByLP){H$_G|}V9Byj9tw#Au}uV4h-AqLc4WIM zx9&N6?=|Nfqc=WU8*{E(b*t)D)vYR9u%vs>IeV|iTx0and+V*Y-Y4+?KmI@c2ms)Z z{ouFyI=-Qg_J98llux{2eC#by5>Yz906;J&AiAF!01Kiv@a0Obb19$x+_&=5KibE? z{4-zlqv>048Q-u+|J&b}@yWM=01&AkGEhGCR+bI`SwIG&bZtHWumT_=2r|GnBQ9HD zZp6L-LBBWv2J*d+v3%;+%QyAQeS;pqsSRNNo8Q0H?|hoI;Y57fTYv>%0w_A=B>@7A z0G?kXmK9tdfX6p?8%yxbC&3`%^?UkBPT+f=M11mBfnh!b*elA%-wU*5ycqpgKh^4Y z{mT4J{qi5t<2RiFDT{my6TRN{S`sS}+*R{dPw9$?YtGr*^J{KK%f7@Mp= z`TQ}UO~}uE2jZR2BBloR3AjBXZ;yy~KCAa;AYz&F@BI$y-v#Bn|4!gH$>W=60RQki zU-L`bpZV@ApLhvW$8Ik?Qmz}d138_W?TtVX=o2vQ$HpSd`Fg+};@o_G{!{+c0E*s+ zpZ^p%KFbfj`)QypGM>BlV=w5x_ya@`d~?a^cl})bn!orr;qe>V1LU9ob|QfC&Z>?!>HMf4Pk-v$aQ(rFxE0`T$>P$0oWKkOjM~%BVF8fZ z;Nbc5UVz#T9DoD;-?{t1xtSar$NPC#}%vVwg=jBo(> zR2HBan@u{EDE3x86gM&axuvcXdSrrmW>V5ir_kLmHsJMLJ z1KZF3lh}UgDIWje&wWGI@~e6LhDc@dr$58x`zzxiftkQQpQmURB3C>P;AH`d+%mI* zUH^?u;&!zw_XbA+IO+Gj`ji(O2F7~giSF0kzaBWA&pw+s5Z2&!1-7ex_xz4tzg@tW zkAeFY>=#`l3a~H648j)6_q^i%SARe8Eq;gy`agf)x8%e7Pk$#-c0^Trg>Lt|R+;A8 z1@Za?K!E$KpG7+mJ-Si+w&A-UHdrvaJK7lO0CL35Jrr+}yzjlo9 z0R+#7eSAwo!0kW(PRzd@1OstRa4m?rfl&bjutS?QC)gIm)PUQg3}Cqdb<>H>kkQlx zCTjBupzgr5fa@z@Y2Z2o^CqrfY%nKn+HymLT(qK#j3M8A0_F9)+N?f-w^zFOtjN!Q z8c}z!&j=ew%qzG)${hu_@GUTa z{#QQD`FEzlmriah1PT!a00?dq(42+^MdBJ9kjlZe;v+E^Q~Ut}bg8?au162P=V7fjT5KF0m0e+2Un{lqsdWB8^T zK>w-F5RZwtbZrC(_62d-fGL5UK&wC{00Nf+ym(oV-9ca2%P%v;otOh?JqgJj8A?XyAwSL0Lqb5U<_>NN~M??=3oR z{i5)Zvoi^Z$7n@=AJ@PFwl{hCk-zZeiKMS1{sZ5HETI3z&#-(~tMRHMN+RYC)Q-3| zVCldm@1A{^eid&{O~j=kmINvgA6tQIlgC)PPU4g@kOH7D;QrwEspm;9kQbSDU`~iC zjx(jJ=`iD;WdXA&_8ScH?I(mQ_RC#XQN&NYyat~>E~6Y9xKGH>e;T-50TKaW9QKQh z1O(Csoa1#~iXbpu%l1G0i~L6NG~ZAU(Ery@GbU=`X_^)VXrX#dEvLm70-Jysx03{l z*{`iOh>-VSRzyv`PgY=^wMpCTETKBbZ|7(4W)X7|klgPMSHN!F*SB2{5(iAg^#w9e z8^?MTZmApcJ%K_@t2Q%IA&LrdUGa? zHMEhs7TRMmX9N=5oylMjLV#S?AeQXv2ZKl(U4(xQusgGekP&5K{r7)}mp}H?A2}}g zhJ=9rzkiA-X7Nf4KLgZMEq)>5y5B7dEAD@8;#PudHH*bikAs(K9%L*);_TtUA3CVA>2_mJZSekIf`gmS1@BTb0 zjUzM^VTfiAGq6OYyg?Gk4)g(ZMy+8ytpW)!N6|}$u>Q&4`;ikzAGrbK|M3Z;XrB&F zzB)$tqEkJYm>JAlcys5Dm^rIxxUT<^l5OKf&V*jCj8n&4zhvhAe`xpEpu#F z7SPY%-KV6(`4Q)H_KUa(fcwFpR+uGf@)dXQ;1PVh#q3IVa)5U)+e1`vhvJatILs$PGaMH4UD#Hbxn z?7g;0?>VY_gheq!R$KO zyD}Okk$XM%DS`sO_dc9)w~^y<_nh~g_;NmP0O%MSKi)^bTmRJW`?`$a>oS1;Gw+a@ z=JH)VgBC#7?vq@at~UVo;ssCO%?xf8*b3Op5EgI5FdUa&V-Pk2^}`!7kIE68$H%$h zMOgy7NSl~aK(BP2?#YI*S8x^hA_??W*Rb4_j#h)zdmTZ6UR%@q)8)jb4&pSpW50v% zcjtsW-*}AQ4eSwBSfZF(KA&U*sMSWSoW$#phA^O9X0D z;Uz+VoUyC0RCb^~c~fn0P#ni(@6hishrQZJXX6MLdEkh1XLue6S+opgWDA6itN`^+ zp_D%D9A3Z&1;ZKW-?u;X@3gOFAHOC8c=|7{sGq^7j^>IEfIEWaboG@+vi>vSRHy)# z9r5^#czpvNHl>CG08LG9I>VdqjUa^qn&n@+PvmZoau`d3(fwb7onURs0%`-$5%Uf# z&p=sSh-$jt(lM%eD3qa?CJyH5foweQ<1v6U>;Z@8l7-1T4ySgcc;QrcynfUL5?>Gk z;0#HpUmI^uWW4n9ZT0C#{kTZgz zzYKz#7opJJj=&ngG&UbHtbICT{vKefh{;CLs)-W-i%(7tm)#{NgWiV)r*WmZiAJw+ z753PNI;a?!j_dGya;SvEUg6kYoUR(qhz6i*@`?xL2fvrydh+h|Bb1f%NA?)>58?~X z@BI4v?l0m)J-%uW(Ei$$U;?{<8@3Q4Zryb2ikNSRvgv1gf=>l}JKOcTAXJ=s^*cVC z0N!1I4XXBKsIEVRn$?_oP|~po@Foo(OA}70sf}-=oJ(!?IzGfdyYt2f^8z&`K0zuR zEFFkln?BLTELRhQ*(;mgZ{E)`a)+Nc(!XJR)f|97xVJOo$u#km(hh(&4rd!f2#fLF zc;CP2_gR1RtHT3dl>t2c*X2+0sfuZvJGc>i9yEhI5DzyXRM|sp zKx|;smx|K0LHh(;?0V_Nh&&5MBg5DO++a0O13M9H;IzvqyIuG|_syPUbGXRivi$q8 z$lbrAPhQx2c_X8*2yBRwU`YTK;3VUS5DQ5gO6hu!qGAq8=(?gf_xDDR_}<%rm(aGm zYr1>R0U+r=hJh8^fnw0pAN-^L!-w6|uPOvwz8`-q;sv-BkSSDM)0Mgktp0noyMAbL zkF(Rh*_%5Du!mwX2)qu|CL}&1fPbC+Qdv1 z!c%?UZkGTz0&l8#?#i=<9|T@pqHO^@1+Z+0>!vR^?Eqf%yLGs8=r#Eat}75PKz%~Q zi?R;x;HJfJsS(`e0RnLc!gd=-7|b=XlkoMV0ayiw98GDRxC_SSB2Cw3(WDTZx90@z zk2v}ZN}k3PM8qWPoF*atVw_SZV4hBJSc{Fvi2vXMaAz=K9C?Q!fWuR)Kl&ehs8H~s z4B+->8_)p0adm9!h;G-v+Wm}0bT>{cUf>r3%?q)1U~Tq02|f|HY=>-0#gYoH9emTk z_W>DN`CSBbc+(gH-v?GJa_oNnIgQ5RqbxKkxo0HiX9$buNIVxad**9e9ow1aXW zM_hIllaszvcb&i(C2F&Gf-Grd4QwD*3^GZd>(^$NF&#+1*toR+2kSV%QYohggIqsH z$jEUBiRT~r*T3T4ey9*I|5icP=mu|n)UhGAUYeA=F)VQs_}kmMz*%5w(mf!6din0Jm=%0Q5AgI~J^!1^>pO5UD;BBvzT^SQu!m0C2Jqbu z-gbkY9eBHg{RP+>&{weU06Jpnh}cz|pH`Js+138F>;XRQ;I`RFot|1)V>4z zGXkGS)MqV!e^I(RvV^GvT*17F4BDQx6=B!UrZ7=#r0J3{QlHb?`Ln*uAab=g8sSNv z?ClT#;s4~z?XRNCmnjGLzqV5Bo^#)$IdhyAfX%0K*MNm11v;Y8u+osyH}%mm>AB3w zjFwBlO5IH`8l(-YA4QQlBmgaR`PUcICtc$%gwE#cNPCf~1M}?Eb@6A6dO$gK41hw& zHol)hXcmLQu@>piuZU@p=c@qr4G5Qylg?y##PGxfY&+uME*_2kA;1@-Kz#+`^=Y*+Z`H(( zvH-lyr{NsT9naIX7x3BGVx~gHVerMCts-&;OFP0yRHu}!S|zLvj#721lk)Z`N{QRh z4G1){iQZ;Ulv=^P0ksHQrPrE1P_-b6JDUM88={)1A`lEQ*L6g6^-=@_B*A#fhyVUh zf1tYf%VL1CP}4UCQ#aC=lBa9jXe6r85G9OFMoOmm8Vspyn-2zkp*?`D1JhvB5^R%e z9Yjo`bFmd*0k};{KQUZ#5wo`|_C|GMNjm$WWN1jo($ZCV+^f6?iMTX9XOx0-7>OwA zm?%#I$QUEQMnulK#<`#U3_FgrlA|n4NDh}>Ygpp|%cUwLMbYRQmN?cy+&=;A;JyN7 zaoQPRx2rF+vIr2lKO^eps3nlQL)OEW4E0~~7u!$1;HXXa5UbaBusP0**i^KUgW1EB zURZs3BIRa|8V2p&sYa01aejAN)m${m0B>*{-+<}nQn6A|?j2m6mm|R&z}@(yDOcvx z0p6;Vv&lH0w7)B9|;+B{=Bj z+WdZSW(1vN6E+c0dfH6y4l0;%7BDKEt_sp5SL?iG!TU%@=u!1h`V6ohj*Eqjh%_Dt`rkX<(B4+37&CDceQK*6HSn8&DuF|lK zL27X4>>OdnpLVgk4(?BQ^Uwc*FWT!5^Z=LN z7DVHnB@JtWQR!g5fJ4B*M9kj!JwX=?B^3jXLQPCvlruV{IM&8uWD-+Dv?}b8{_dsA)4?V0 zEV{<2E91B}D}Z@4w#3C4q6GL1UH34C=!hs1pLVN+hpypR+dP*3SVI7ZXE~;qQ2TPI zj{I6ehat44)BHVOCS7k2aEh~ObpXP_7)BFbsPaxxp$w^oE11+8MFJOqtqDV9SLZV9b&5qa zK^4jdE$tF`EQ#YexFG^D zs~{C~SIQS*5ZVD#(@`kd*{tWqLj#{Lh_uCK>OGs;KUmy6n9IpBu@EuArrexxZ6WFG zC{H&{QM-)IE8Nwp&L&FPPP9}599#PFUMMMVHu;*W4R@4@M?2Z5X$<^O z23uIbw&Bfx`Q7i^?=SKI(|1igPXFrEC_`WJ;^NM5BC}o5QSas%N2_Df9kHTGAa-vN zZswS^cm+D?O+-s9>F*Z~C;h+`VFO@#<9h;I1*7Sjqa&6gHm@e)vdaV1F4fY*hHS+r z56a^$1B)yIqP>DIRcUM^A_)#)o0}BHb<^g}Kx{KuDeP35Pqedz5{RDi90B)43QTgW zmmP`@lTUt!HnS>w;LsA3uui6l6dIY;5Y8SUqJwQmOfz_U7nrW7_4WJ0z!!&rk-lvm z@mMh!SJ9>f763P%?#C@)CxG%789(2BVYu^3%72_nQpkCvK#g+cg$UXu)@ILUWsg56 zY8Wq3Rm73M*H9&Ja-1Eqs}A6zOeCzz;h6ZfPKxt>9-EDB45?rM&n90clTw&0gfRe4 z%|7sHkg?C3HYvJl8^g#G7!yMdfyiho9e8AjKNG4|Bmh(dZKPwr?xH$J#?@1QXM$}t zRC^;%=kD>o5b*Nj`=2`y{xsRDid-`Sm<#X>g@y5{gUU?mv^I0^t@t!5Che0{PT3>a1Slb`TX9eoO;TwUQ55r{c0 z^q{j6r+ia8>jG1g@m3zgDA`8*Zc0s4swcj*BPSn-pM6sGaDwITR9Sq4n|;vE;`_tp zV_^W`XuugBb(Fr*!F~guK4%D!&W;+GPx#z_HvPwA&jY|g1^2(vd8BEiz)SV%y#?Y5 z@V!*r52!L)pwrQO@-R+0j<_m9jN$+;Kx}zb_c%`Nu;#QV!{3Qx{@+N?2335>zXE)j z&J8V-Q&#}2y1q;ek|MNO+XUWbFRnd6j}v4MPlZt!Y90U~D^@u2^7Q~i^fT9Tobsq$ zUc_u8o5Dj}ATYWX6GaZOS@eCIQ%?}FX~I}AePAlEtvYvAJ(2++xM-c&fNewew~m$p z-qG-!-Im9|$Nr7a2k=E9;BEt(c7X6Hcrd`5tK9J`NY}mrcpj7`&vyy{uQUpVyEBQ! z9l*GIY8a_P#>PUI(1kyO!!?$(jN8KWt2{;&Xy^ke{@~E=Ns$vEINbnVv?)Q!!1u{b zEdGqq(Tt8<3nC;p10bL{nmwxWct#N+v=K<4Jg(|3OnFUF$bpzu;zk{Yo`?qpdhWYZ z%UO74c+(2x+z?ri(NQ>w+MO!UpH*?ZehkqIa(@AH*Y533`$nld#*BeLG}SY*ZpS{o z&j7eXxqSLmLu1ty66DI`sQH`8o4irWh^GKLRlgZ5-~|Ric?SXk(n?(S{~zWv(lF35 zGLF9@0Zddl82tTwhlEQ=13>t6`A<~E;R*l^!5Lh_shW+v>p5&)Q_EIgQGoztG3PMT z-p`coY)?@P*evkmT2bbH>OR*A<+5wW5ypFT8CmOy=_(*O#G#QcofBE8`I)7u`qw*h z{X7Ehfq+4Ci8EU(LyGRttHK2(&$`fo0d9Z3{Z-7A(DQv(55(faMxpqCN$#E{gn-|H ziaC?hxOsG~z!k$dy}|&M!=3w&gDnJ-!{F_3Cm6MU4qOqgmxtqV z+rierya8o1-he3HX_c!^05Gw|>Q*m`nw}KP$H*E<;%tD`c*dz?TrJKpyf3qG4U5!F zn3^|h2kLIs5|vKEsw=9h2<}L{LE;(7Cve#eWK*2LF$CMoHI9=#u6lN*M_?pA_ovH` zzt00qza{>0RJnFep~a%VP!%GVxr`W$6U-4}>>5-KP8g)gJ#(kSNxW~P?^(^`XQODe zhpT4eb7VC1K_7)STwSLaR&)pSj?!)fq7d14osf>R`v*FKQBrcTx~h~q7cqR*7qH;; zD3M1I2q=hoQ`~pR49E46zQ&X$pe)|(qP}Hp1u;*W3$Wi1m=RG;^FJE|`@7XVH+jhD zx{O!rdt$+{reT8{>&y^VDwzHyU^@+fEE?K~IAqjPErrZvxZ65>v6;Dq%bs>!gDo2^ zUPHg%AZqx5t_BVO1#>nIIWhX_c=YO@BUQ%2+Q??putA}Jq$OtB*kkwxfgGw}r+v&o z@CMXbi_|-EdqG4I0o5jOe?iO_fV04GFGm=Fnb3Tyz_ogo5fC=In1mAqUI~;HxOo0y z8!RWlIT6i-*CHMtxG8-WQz0CdI1Q{1`B{VJ9jOejRy67w5MbT3H^Y1S9hF?m`JWhI z_K_|GZ$!L?P6on+PtAi8hJ-7#`my#AO(!;0ql-~&c>n+)07*naR4@}_ z@SbNaqSd3e!a68v0#Wtvqlwm=p8=MBc}s+gUfb zfoD<^Qv}8E)dbe6HJA;)N>_=v%5b97N^gfi7j9S^uy>a;2FUVzL>fT5Ut-{&0;Q0J z;!t|X{%1I^2iSMSQjlHOh$7EQi&A6MHDGt%O>cWz3QDNbIa~cxI!dpu%!WuK1L{CQ z!WBzDDggZ3pZTtTYx<7*&jLzaV#G=KU>2eKQKBY`mf7hJTRlsfaO`g7JkW<^Z3J!s zNj~d<@#fIc1EW!cTaoHF4K4>&3>#Vz5LL*L5sr@tD2yCR>ygO}|6*aNs+Ibo-0Uu* zWTDFYdUA+q6Y_)LYjNR&ZJr5VoFgy2CZI_2NTujSHRu|n)48hU#>blL_pSk@)0KoQRzn3v?d1O&Teh!F7Sd?MZ z6>t$HBvvV2^nw$i50nr1^uaVP&vq{32|kG+i3(uF*$EWThR$6l2QUZVYY3Pul6wn= z8c__W4}eN|{Ja-!EAmh+^k=vC+4R|}AiCpbwFUH)>SzFCgYB5qs2Z11*$aCecl!_~ znYzc)4FITeF}oSP?)SlcxQK+ynrH=OAk16=7^Kakz!%h1Bn^Od*-;&H@Ar$~sSW0y&!rSHn+0Xzsp z@ENx3s$PPT0q(`14F?)l+qvZF+{CGKKEL=;mR_3c5(bS(rK}N}PFf)Xr=_}yL1>h% zyp3FMle=z2EEQZG0t-QQ#2kw6ab6#HHI66@h)81C*Z@RMKo!Bmu8j0z$OmlU8Ind@w;EgD+fOvpT$H+3Kkc+GkLkCLrdkeW#I1Dfj?Z#Ma zc7Nu|^TYw_5r`^e%t@8PsT{ezjKr~(A>O~*E8QA!so*WmE(WmryAZ&mH+HwXZt{BE zj8_)BZcErk;c6gmvMU_z0&->6JYtr1=qI88ob`RVDU+zvgv_+zt7wIsK@z117s$(6 zfE(c@vB$ViyTen^ykKSgd@x8u(Hj>?h1-Fcd@3&-t#^9f7`2u--SK1(;7TE%^O)~2 zc!6O=D&n}_5F6qlbekVXg>ON2OwF6;6mTs47elfo2~q z)EM9_07Q!ED*)z#cnHMnu>L{VC0;`U&xZn(ig*mAY2+E2(mKf+Ky}FK1!Lj~Cehxk z?Z7Sokw=#>z@Es}mLCAij-DI9K;PD5qmP{|27Z&VzzE9&k-{G|W*JA?1NdaAUhkX| z{z5B&Yw-?hW8GwH@FYa3qL8j8UPGtoa-LYBdJ6qF$-tRK`EI5PO`X6(aGm6ZIy_4t zFzNxqBgQ0qfKLVS@f3I)3mH@zRUPw2iFk-82d@xt%BT|;%cN^9q0`p^R1bf8MG;!5 z4TS+@K;jTQ0vsjJg7Y()!{dXzW!C0X7{D7S##hMbZ%Vmy?FZ``C}3}>kF$CntpQNG zTxz3_Im)nc>${2}tl*SK7!Dt%aVTW~-L85!0~XT3^JVDS61e)JyGoua3>hR|;o?y` z7UDb=k2bKbMHRW@G-U`uylC8|?8OyAu$OVPaUgd@Rn}o|6|e1;CbN}*n|5731&@;K zn7F~M2-D2|?slOlKy(=;Tj(?m+B_{)o6TXAa=28a5ILWL`bwj4^*td;nkSv~DG^fz zUlOWq>;o*HoQ?HHDI%)C#0}>rT|%YCeVt! zLkY)iA>gQSQo$r*R@10Lm-`7=Mdg+P-2j?Ex@&gziS6=YB*C>}^dIPW6kro=+O|Zw zR&ZC=JVilnKKTtOQPDS@zTD(t_+CMIhsd2MdsQg(u!}^x$D;t9sIO+^YLC{fIUFJN z&NBte!S5WDxYJ5zx?Td_waHaGXzhw8+5+#9Y zA>4>c(33vn(V4*n@FoL@aP4_hT;&bNg0Xm$FE+hucYSpn*#r4v%UuGwH_@F`D;O~d zC}9WE@jDD8Y6#7{3kevUKq!-#><#pm4v9^tw8@i=?xzHR8tBggSSUc#a1$9!FKCoJ zty7>GQy^ZQ;YD)~q4Msad`CvI1KE`yXZlncJB@fAgCe)*861fwq0Cx*+>L`~uED^!I7F4S|$~Eb5!j)r#G4UEA^KP{~{b!eX)LbEi=AVr#ClMv)pg zCx7|F`K*O!Px0@yBi~kq6*vvL1k#|Mci|!iu-VJ0G;*FELx*?h&&1MYQ9F510#R69 zr27RG#I+-Da`OQQi!`E4Rd}Elpql9mDW6INGOS1@FxtKt;uN^#Df2eSj0c6$NOKZ| zLhtb4BLs9~3@e*rOhic_cg-X$^9<1Id^46|!6>?k?oO1t$Q!D1gt6!7{WJiPA{K0f zox@_tKTV4D220!pBI0V{XDc2BYeN`KjUKJSUPNyO50RzfyMkY?o)=UWY32}Gh!Q9d zj`3qW93ip?;erbeBZx_?9nD0tca>hN>FESAc9dR@#q2LYS#&~UuIOtjo|=8ke(DOD zGMEwp7S-t0T}%l-BV11ibf!|YwC3SO&6;?m`2-n3Lc|mu;zqV2BZQ1|mj+Ocv_O;z zr4BKSzGqT$`>+?%L2yJ#dCgKqgLBMwDD^H2s6KU*2oqd3ot6tEfkG87n8TX)CT4Fb z7IoT_xGijWXIw(eRYqpapY9Z|aYg!9i zq^YPtHlkeO+}MY%_uhdFWf`N3s)TD5&}U~&WjWm`X(aGcP_96}*oBWGSQ2HPJaEKF zehFG1mCdd4{f6>2cgKfk|D=WOAg* z2#C8kt9p?tVBSzz10QnP=&HkOdb;S&sJ^BSwJJ>(VJyxpE&;wt;1bFXvIE$`=Rh`9 z>!QYiA^I)Nhj+x{n1A#8c$#}by6Gg3FU#glemN3g^o__S?@((2%L#x*F8S2kjiO4* zRclpcjRn};7GH%|GQ`D}N7a{NE8r}U)>k9-n@(^(LqK!_+AYtz${Ofh;Ja5{U-+}_ z$94L58Iu}MO_B|s#EysK-bAA*$2bNw5fqE_|Kf1aMy(o0s)y=RX2$P8lsJDLE=eNg zHrXY4X2vmXJA0y-^2A`y8i6I?bvyd#)44o%sASqwMV}Z{F_6zZQ@Jc=xD$OBpp()0 zx{8dlZ(aR^B^}?1s1-dsA|_-I#UU~K8G8YpJRs0_*H7H)*6+v17a3aGdu9T$;iz6p z5$vP-Af;4n@qT8NqM%1fT;=^ZXGEuP$T+|}P^42@n9To*owAShrE&52_;!v>%hM zkASj|QD7Rb_@*$H@47%!in9_N8_!L^HIuGAh$D{)9y{yLflf)@lwKuta$Eq%Q26NY ziQJtHQP-jlU2mXU;3Ug}M4k4wJZ33-!`(L;qpnfSc{uG2R^uFwx7RR=0!i!-o!oiy zPilXBue4{-bJ&^;pj?ECqxuU#1O*|tuEs{6*iQHAojIjKhGXu*4&h{{EOQ>r-{`s> z7k4mImq2dKMyN&5Oa>!cZ-#0Fj=jwzD5B~l54LN3PNk=Z#L>t+#2?uLSb=bDeWa^| zjB^NDIC>UC)cE__AZ;ZLWpERHsZlQi9tS4y0_e2E>eV={deFRp zCWtl1p1Z5(ONu*KLoWGo0-u^r^2j2bVF0iQQm!y}q;m@Mx3LMOn9NhDRcKVYke?$`0%_k%JCSlv8FL5 zdrYcOmaF{_hoTQS#JH;g^s(W3UY1l5EXz@tibFE)eI6J924o1RMqbT2Ed^x>yI`IQ z8jn2X@WXd}KInMw)M}iR;Tq}BW5S$)YYtO6wSTi*cuczRB#-Mx6VM`tyOme+u>~2( zPGr-`Pjl#Xwl@RO4T7Q+Ff0h*_yz&}(w2b8$A#bjt9J8Ai=4J$)QL zl>-+=Hx5WhPjT0{AFDCo{DXN6OVs3Y1&d(1^U-{GN*I?rLRowXNHV zCkL|OQtdvOK;M8qDswymTJF%Spq9vWq^c%dRvGe20NrIw)XMpqR$`vw&Cpb!V)u3`@ATC;ob4X=uqqJT_ z+`^p!L_#&5xu1sQtbnnh<&$jm)$jjyyKN$_6=U!N0g*7>0ejGyj>(5qtmhs0@rQfk zjv0A~Q>d_N(zqTIxK%BF^CmE?Z1n;kIjsRGi%toJpt%Em^&-_o_w^86Qm-R@)x@!M zbufHw(>1Ie(8eFv-IQ||D~81Q@r=i#whwtJG@blWHf92xoQ@)u#UzoL$bpw89`2Z9 z{B2k`Vmh7G1uU3A3xby&oD-v~iJrx%(3aLhj(DT%%(}TPOz-zgw_m@Lg^$zS9JkyZ z#I=JpT*w)2Zdk5Aacp)0a-&>(g$Fi^b`_C%lpw5o>Cy`EYs8>p$OTBDReBaA`du}nC686vH9s4}Kp6EPL!rsp4nnY->U zIK&nsn<2$oN-73z?k*!3k5V+*OoUERNEkxRgS0W42iyind50OYI^SQhc$k%*F9PY{ z5%R>lRi%dh)T<{DsV|en}C-FIfww4C zY@QiHPV_i95le*le`cP7R4a}XsglB&67GZrEqw3GK!S+fV7U>P1mIZdlB_(b`1rul z0Bbr~0#_TQvzn*{>B-}<$XmuP{r}OEQ$c$ya&ylur%pJ##vRDs__%wj#S~>u} zbYKaT*OP!x;5gCZ5NyG=hcR4rAi`)>O2?fC$Bj_sGNK`}ihL>x9~=y4ql`0w*7M;14-Ldf0f!Ld5Lg() zWKpFvq+9H%rprOpWF$%{y2c9g8#**mQ+Yjj%F*1!lBxPdEh_0UMOKxab`S}$$g5;I z`ZR{LE=R_ZkkK*JHPxME<#c*)+$Czazx7`5<^fC>qP(hyOX96*kzaP?Es;+Rd~Py` zkz0@SX!XoL7fA#t4I&NY>09hdDWt`XS-HQOQ-PQ#d7WP639K6ip7eTDZ>kg8rKh)3GUsOD{3!Cng$|s4633+SWlGhGVsW; zrv#RcSSSoJL*WQ6L3d#Ri93dY5djsDMp_6{<9$ny(}zSPdl)y_P-`ORUEXtU0)NaA z?GB(B&NTMzy?CDiyz@tX8{%4#Th|PLF$*Z0Lc`Ymr8U_zCOgI34!$(x+YR}o?wKHw z?`={AAB=}F#my%o;n=M_RoXd7>%InZBe)k8W1drSy(`A@24wSH!5YwSakPK2bd;+; zFH_Y?t~#|brR9WyOe=pgj)GUr2CpR$RSlZOlItLlO+%g3b+&_z3K!926uw&y0?4O^ zz6t>Lmd?YeGI#~D?kH2SHzU{-zUUnzJ3t~!L%;3FAbK`|NF*{E2pdqL$JW5ZsK%b3 z;B{~WSvpud{-4|1_lE#L=~{U`YskRla%-t3On`W>%o=9JHe%?~VV;0nH~;Rk+@|Va zT&n;P;^Zp~Na)6lh+Xsh`Y7-x`cp@V3D{IeKsEWpdUn@(j!!_>#O#N|=sm%ypv;iC zgZiu^S^!E1a}YKLgDp|!BH$Qy)h<0pR;hWJ0;e@pmM#g-M5(&I+&eNwv4@MQ75%XRRd@-Gk~0cwcFjAFla@V zuMF@GN2nc}^QO`-XSGug{4tvh%4#Fzk*(CZB1@A|E|V5D3vg_+@P*L3RW6K;Auk%%U8Cw7HfN!3$4!T5J{>lqWV zxZ-CoLkK8x-0H?Pppg#>{hK|!r=jE6@b??Q^UuDC$A9GG6k<=Xy387WVS(5*dxY#3 zUyRg`1Xz44SpcZ>vHKojP@utGNrj)=3QD(Un7|t<59mD%2tvK)2|QgBje^ zLy+t!n1t9_P&MKoJ++S6l=;-|qFYEsoY{dJRoEHSaM86zOvtt)Fq!Ftic>>|Z{}8* zjR+S`#to&8`zbm#+n=A}0}bGlfAo8?{`_Z^zC2cS%6hCzJXED9Yg25mB4pSTalOL~ zGme(=D3F%0hP3XUkE`3r=7E^w6%cJg-!!|1>?qU7@rif^^6mLcg#aAxfm^rQ)(f=L0*N?Vw2Jt21Q4$#jGI9Tse2OGgtOVixMzcbQ94cCb=tMlK{|-Yi>7qwMZdVjiJ;SrGZ>xT1ovc%D+ATectH>rx)>~8mT zQL4!1+`E~Xu7?$gG~rX*wO5k}yXXAu=j*D#Bq>aC*|8AacB)arrPQ`1;| zlTJ*4%j)U5_9i1dOuIrF30^h?fxr7}pS?o>ALIc5RmX}?=RmK!heF#$l%9ZozS2AQL#h` z>+AyDs!q1=G&UxnMe%~$gO%4%SSk)*qkbRM{VJF0+Z0g!1HMNUyC;{rl2<)FwPzkp zn_(iYuQa!$6WIwAhlIW<6eWnHCa|?m)_}P3VIi-H9|$f?_EfTrKrn!`zykxZd;dQ1gyK z>C1qKI#1yIA`rN13QAtzB687t_zi~a3#0~NvI3V?;VRvD`o&xQ#gB*I^BsXT#p;a> zvjwr!1tagRS3^R|7)ztD@XDIg<4JM$+BJd4k$UEnNDdC8OP{_}YnT|vv}KBjDics2 zD&|)eWd^3#6=f-yUWaZEM9HP$nFdjTQuOEaP%vEs^P=X@vVaIOZX0o9`D%3jU zz6MS@TJjv#NdH<67sTfwm~a*mz)>skzef(9Ex}tuxm3q%Z%{G7>}KVdhr&3X{k}cH zDNwJLsx1{^cdHwJR!mbxW}+??&0VwD#IM&S)X3`ewag(s!IsC^8Fe#xt$Yg@RW-dF z)%On?VwKQ$U=;M_h7yU`XY@{>Hq<#xHv=*4YK?omq5H<%bt1CfbjFq)`J(CMSvt@~ zmSu0)pCMkvnMlQizIT)_Ab`H20X+O;pNW^h{%Z_UT`zUi@;xiK6T0Oo4uueU9^_0+ z#myk}5T>F|*+sw4H=8$JZZ?*BfX93h8C4#t45XP8?>afs7!a6zO|CQvL9SRK6`k7 z9as`|s-P!{{_4B@qSOCn4FG`Z;U!d@a9dYyM7auSNSR7?2L%*($7%3fKs8^ua59kg z1i4u1`P{5nfemIB<(iu+TnCDu+}hOjUMeq#+;9N6R@J25@{m4jtg8x0Wf4oLyR8)& zk6pE{2LOtcJ`gZeWmBH8&c(Md^mRAq-$j|rQ0$CwpzBXC3-IbiX>r7%Wh}n^T@>AY ztha(*8Y=XiSUXCw3MmT`H^fA2&nxPz+wLaCOl8{uY`(LJjJk70$;nw!#Rok;5Ce?I z^WS(IILeX`f?mc=50$>Lgy_!H$v*lAs8h<#M1;Yznoy|@qTb=Z1$`cd};oXo^GXv#SRdzCqx-O4Sk77`|su&I+6AKP)i|!8?2h*mMRP0*%I|svj zzchK-sGE0Aey@p$#|?a3k(Uj8^^8&jWmbq|0Oc~|XKF6VPBd2q6A3O2D7$9+1kkY} z5$IMhx4t8D^WMm#c>299__DW-ef!hD%=&6lY&E)%F&7vXjG9W7 zP$dq&I-s~|y(LNs^f$V#8Jj9|{id5SVN}{C$eoX&)lQM%#ue`FydAasp-LY0eM`S` zb!eFaeM^x;83>QP8R{4|y;r%Y+gBQa)IFaYk*y+InqQFp9hk;<1q)Z`=NI zLdLD?J&~MQY^W+j(?uY9mO+$2dbWR2;~o?xMN%oHbvc^`7l%maZsT%b72qGd`|!0J zfQ;Z*I2u07D-9=#*{94WMd}kD^Bmwur%i2UAqu%`)M`HO>bSib5d+y$`eTpZis=1g5@sTIfV-MWMo+>PKdz7v3S zUw^<=xlxpY1Q(&u5km_|jQ^cdIzr8>2}Dh#g{pu`&Olmt1LvM$qD}7+hdXtt*IOB$ zRXA$?5x~1&X7hosfC0v%zuCY9rdPU^T6xfLW8@?`xrv^U0v!rq5XeM6tJ*g1bd_(F z>&8xL4_=yzepS8gLsy?`f)j-1N%WN}(e@B}2F&XNZPhSFW}++={Uy=%IFk4Im0G_u zZH&ax@+Hp0q)s;|EI<}7a1p~ea_oo%rmlvR44mCUrifj#)}+!diMiY9#(jbUga%lP zS`K&ZluD$VNXBGdjJ9wn`#9K$QT_9VAG`wLj-ju-w;##_0Kn(}$6pc%erGveshNA$ zS8y%=gIm3(%bvr*z2Lj>0oECuHjEy{s5UBR z>pK0)<4J+e;~ok9?sqApMDhWS4{`8J35OAkYyu4+E-e564{J$8K~x9R;y?9$vs)pZ zK=DwHw{Mp(d-{P7=>Y&>`-R(2F2DWy&*j@4<<)%5?cpZz2q9Fg3pF3V6kt!+1tk0K z>#kEWiEwG}sm_gBMd{9VWsrD7g&1uRZ*qYIG_wZ)GO#~2^fkcrojIJ5(52Dtegme^ ze_Qh~GGwaqxVl`sN(VvEgD3!o=M-6MFEvqkx<~?LKbu0K5L5~ddRd{t>Enou^U(3( zJRI)r)(JM2Iy}7AAS^@g%}p*jluJBfJ^)M|KlZ!-^56Z6`}(0h008{jfAfnff4`nE zecPhWovC2l7*YCtrBkAJC9mplcf_KGj(kr&Y1}=CDO`^)PJL2GH zk{j%|JS%81@^;?2M5Sk=Eh-Ne3e&=IFq*n^N!8m}q8^KM3F==^6G=osjJ@7p+0X!D z{$T$xTEd22e^eL4zMLsd-*^mSOY$wKZxH|pl#=M9OBm9q6zc-o9vCC`r4H8Ve}10h z!x+GqO#{F1@$LWW_Xam1(Ej;$jA!SVAQr`duPE2;6w1#)-U!^3Eiiz%6!a~RaWA>? zbep9hGf=KoDq{r7b=KcQ0!{VL@hIpF{3bvgcEciMvIBLJf#nXRNnP$gJJD~6zIHc^ z04z#JNyYwj3tH|Sy{X)sdmhv^n_o9XD4FU~3Rg@IHIA;0!)QlsjjB!TyJiB2+zE8| zDYRCQJeN=*|DC4FCZ8FSq{)5eG`nw`$}>bv|AS_$(~}8#PVL z3!NrN`b!tU8=W$p-aPXQ{dDylCD|d}rgHf*t68O9wMg|rrQ)HeP1h|(e|%e|IFgc9 zO5VPzLx)C!?A?>l+_q-Pp7oh}gjda*CnHoBQg$BKj@S(>NBx3h`;lGA5D2tQHv;SJ zd`4?Wr=B+2`TcP3$AkKO6WJ)0xRU?gSF@jARR|c5U;A%=iPOg>Dw<-xVrmi zj6P>i%fW%>{y>zF@;HHdt#*ZuYj*wFNAbmMp!*5hv(>e;jl{-+F!&3cT|7<$W3ZEP zw~16biP7u{V`$5#0!mq<7B|s2uOBmbB2cQPmt-gE>^gy^SmAhc+@~;b06Pa5^g(_m zg;Baaa)xZeOM3hp+VsNsX#NUGlU(MS&uJHN9@DCuU~BI*FPRv^ zRJxUm40$o{b($oFQ_&b*!-o5#DmrqzQj{8|2TQA@J&YxA+s2I>Km6lsG5`ShrJsC? z-}+BnDH&BqK5LO<2I?h%UG;j>sopI`lUC~pCk<)}Wynse()rJRsW~n2ddZ!~K{utf1?#dY+Wk7mzU<3iyIx>|k zG7u7VO0>P8Oag-4jaansRMmEQ7n;Nwx5cGrBax@k=nz1p5Q*DfzUs~Yx(omS_P=xc zXO{1K_+PL=ZAdPE_5irbjgmx%G6JkL`6BSfQd}@O(Jv{G6{Se&YXH?Zk6T5c8L8(k z&3)g9G8s$sINoO{gyOi5PaLXRfTDT_-@s6a@$`_}UXnla+P0C~Tv{RB7 zE7dW)2TBlai(^Co-|DWON3N`hp1SvSj|ZDwudNjZgpd{?w3~qh5g|WfLpCQQL8JsE zWaNm9AF&DX1`d$0Hoy`RUyJQ!y|bR_?)PpL!8vu`8_Tw4r+db5rIDxIJ+Hgpy|?Pr zsZ({O)~DMs8AR@ocz>HSQu9BKia$`*>j}};NOq%$FJWrI!#Jg z_~|w&OJsLYof`@ZJqi%v%n2Cz zk=zSSr--Dk54kLK-?9%;*4+fN$Urd^@dHr|fr!t2_0eVLaIXab0RQ~cX?gpdb$ATS z!^@X>IQ!m>O$m=+f~P|98bIn(n_QEU@oeVPc^V1C5okgNbhT>)!Q!-y-m-;QLcpn( z-cKmD@}Z46hPLAZm^RUqJyr~xlRy=*QmYa}I)$v1Kno^)V1_mU(-wfKA_xUG2^cmB zYKM?;Se$|SFmVwkpFv1#XzE`51 zf`DxssJAN`np&t5b<^@%SNvcr8Z<*Um8diAs$97-67Z({daiz*gA6MuIyQ}1C`oYZ z%w)-)0Qv`&6PF~8$uBeQtcauqYAKkUAl0OB_H0RqN>i_nB0e#Q%g0F!MWX;^8fn*8 zYC>h9LQy~fksQA#rb&>QyT1fHR0h`qQGw0)Ai$S?gfl?~5ukz?#$wVC%C>n;%?+rtL#P%~_x%~G)2xrXKpm(sDx#9z9n(%7 zP>XhP(cmIT3Ia;g;yT2_>)Ss2cCmjivz4=#XrKYaD89{l7&7kl*A$?klk z1XjRw;wT%&xb?WIBwXZ*8+;ra6L$ll^IO|HbiCtA#f>cH3DV~X#q|mLe)Y#F&t7IM+#3Y zuv3Q8V4Vyy3o?LSW{hJ{Z6*I>SSbu`z-b(2@__?dfE=Ix!|m=nL!ba&3hE8rKq1-j z3^Z{AFr5mBjgDQRS>#Po5+q#Brj%NhaNnC#A0Nne{Hp3fj~Z-HIT{KvgNvvcSyBxM zD=fKzp0*|OPNfgV2AY3;_WU}qS@a3a{~9ok6~$!Y9V+{>KH;v$5cwzh(O1Qb z4^#He+G2mRzZ`o3h?k8g4<}0U8pEt|WJn?;5q?Ndn(SOp(#UL^gq0zJ$G6UtJ4c7_ zXjxo8v28P%lp+p=fQ<1q;VC;;d6*T<%HA$Kl@$V$FmPv%UJ0ZmZE~lkW#E?}CYbZ^ zsdS#dEBOIK_J2Tn6>vdKEmy_7uq*;$fvp{G=jXVR1pok#A5IpJ#|LF4w5v0A$^g_g zw^2yR+p}W;qNv}m09+T*G)}reu_Rz~jvP(9SW!eOY~VniQPqqa;&{v+UxL1O7eEU^X`Vt#@PahkG5c=ln%b315P5$3(Ybp*&B^y>^Yud?seoO? zTH*?*H!@Sb?#ytmC)l&2E8C}6y8r;-KPLcAc6R$aM-kc$G>O{HgG80bWCg1hLGMiJ z8LmNhj=nR`227n@&kZvF+v)h(^(#%F)onnm;q*<~R|Z^|ftTn3|J zMmWLMK$6_I+(xm?fdHTs%?5OhV2UJq#gSgjCXPxI1IUJ!mbrQ0oKH?Covu1f|2&?v z05aiuo$kT}fP|S#&lN zK$q}pw|6TrM{zSz1+agTEFl8OGXcU3v3hX@&sB|UvjEHS{S%PAyYnw%r0c8_;-Q@8BsO~>k7I8>~Bxs8wm!&mNtC3;cayzF-Pi}wy zqs8yJK=K;P#Sp<=KUtrA0M|bGz(p;f=+SL}Z>C&I)ELsB0(0iA8u`p7| zg{Dc)R_=}FKhpu3_qPc6(e;@77mbU%fcHN-_#yy+r+?qsn_mUuE30VFbn;fqSRSA) z4wanIeCNSdp*S0nLW<}OmhyneE~D!4;*1Y6O*{U2i4`titkd4wV)+^+0>_X8H+Sltc;FztpCU8OCWY`Ae!m!x_Oe|nw zh-c?qz_Cr=^%ZQle*L%q(jf5rKf8DC@%`WaYwr*9H0pgkn(U40ziV%;e_BMzc8t|r zf)7cp&Y1iGv_q#JT%z~(PvDoGL<7ibp`|1XP`n?!wy7u-^(CM#P5ivA*}y3Yoc!GR zYyiil{o-_}zkYT}@y1n*YmEXfIzDgZ13aESxVsy%y>}cLvbh`T8r{dc4w|q$!9+Va zHzBKJpr#HIpBQP_bH^KLfmzMmg7p?RdD2U-c!G$d{w7cvxph}Ud@@^~J3iWz^$Mr| zLld8aXnZEGFFo%6_*;8l<5lCixL24=+i4<%d3lQ+h=a(XNZkCnhJ1J5f;HSGws_7JPw0i^~nw;$%12 z8<+Xs*E#9SaWyXB{Z~lT4iHH^JM)S&hH`vbmUye + +
+ +
+ \ No newline at end of file