From 3998eda7d6471b8e03aa55ac2230e7fc6a4e4351 Mon Sep 17 00:00:00 2001 From: adeliptr Date: Wed, 11 Jun 2025 01:55:45 +0900 Subject: [PATCH] add demo video link @ README --- README.md | 9 ++++----- static/README/header-center.png | Bin 0 -> 24613 bytes 2 files changed, 4 insertions(+), 5 deletions(-) create mode 100644 static/README/header-center.png diff --git a/README.md b/README.md index d1ff8ec..628b310 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@

- Home Page Screenshot + Home Page Screenshot

@@ -23,9 +23,9 @@ Name: Chaebean Yang Student ID: 20230412 Email: kazed0102@kaist.ac.kr -Git Repository: [Triptide](http://git.prototyping.id/20210782/travel-app) +Git Repository: [Triptide Repository](http://git.prototyping.id/20210782/travel-app) Live Demo: [Triptide](https://triptide.netlify.app) -Demo Video: +Demo Video: [Triptide Demo Video](https://youtu.be/l9IxPiXSwII) # Table of Contents - [Student Information](#student-information) @@ -205,13 +205,12 @@ Browse a gallery of all your past trips, each represented by a photo deck. ## Design Patterns ### MVC (Model-View-Controller) -The app loosely follows the MVC pattern: - **Model:** Data is managed in Firebase and accessed via service modules. - **View:** Svelte components render the UI and respond to user interaction. - **Controller:** Logic in Svelte scripts and service files acts as the controller, handling user actions and data flow. ### Observer Pattern -The observer pattern is used for real-time data updates: +The observer pattern is used for real-time data updates - **Subject:** Firebase Realtime Database nodes (e.g., trips, memories) - **Observer:** Svelte components subscribe to changes using Firebase's `onValue` method, automatically updating the UI when data changes. diff --git a/static/README/header-center.png b/static/README/header-center.png new file mode 100644 index 0000000000000000000000000000000000000000..7f2dad30703736899880b75156998d8ca7a70216 GIT binary patch literal 24613 zcmeFYg;$i{7dMKnAfh562z-$gq+3!@kw!w08YCr$ZWvTTTIn89y1Qpar8|bMk?w|> zfq|L(48Fg2-T&cU)=~%7!gHQ;_THb^`w7!jS0pE;BPAgrAy<0+LW_jtmMICzCDxnQ zfu9uFk-7r^+;V#T4)~XhlKAHmNoqPR@WV^4T8i={rTvfAfp4x_KUaHBLQ)Y!cJ}@n z2??lC>BVy$uS?srWP$1K{%hw1p(NO@Rh+&2{mUgXu*HFFE^{xW_gyr|wHSkB8;>ja-(^Ix~#KCi_gRSG+NZ z^6;Cn_8wN&ROv-33Qn%IRxB;6kmzM#q|Ia?ZE5kpA=t2}!6ke)b#mT@zcM*EAr;@XOlG5? zz>FLeju#fCR*2317isLz1rPjpnyvtgKgy=nOOWr3^pj4Rm6S>c%_33N;QGPlpI=2C z`ou(*DjTXTzn4{??Q^776yU1QZSe|S`J(QgFteBBE+iipo3@r z%B^(=v8MF|nZ=R?t2!=aB>iy`WeRaQ`O2E|HM-fP(G%0D*ca`0q)JzrB5d=4D`(P( z8B<9aLJvAT{hjS@02-c~Op;#io!i=)ypkn+z>>!EFK;+mE;5UcGvuvr2pKu7r7bs0 zYpU9B0KVeuff3&3p-!t~r2R0398BKTh*O2o4fn4k{zk@T%^~#&;$kDHB*`paU-8|p zgp~HE7%}Tta~kO$3As6Um08Nt`$Ejv>47`YioKPi%ATzxczOw%l5$+cI$%^Kz_QE2 zKzDN;zwbR}_K6QVp-*u1d|sRQYFHJAr2mTPMOp{mVkcIF{`##BJfN_0uSrPB`lVdG|*giin= z4Go@@l#V;ffZ3=`?JZ3u4x`n0I;8MUGWLEy*!sk*d<+c~6^dBZUd?g&vsZG}VFk>V z5)$QO`$DP_eDNN#4D#mYS@Z7T^&aS{ov%xoPhaL)1qV7c`r;&iy|_!PII04{!hQA| zOdlpeoV7ft>2Y*PiKHQhDx3!g9Pj+(L!Am$+iun@fw)^uH$vnOj~?c{EQy*0OS_Ei zR8ed_8aR>q=z#zw(6$Bfs^9q(q%)exdxCIZMz}MruB4*m}g3Xd>Ziu*(Enz?L8~xwq|k zZ(Eb~AW)N7KC!+hGrpeInCg@iBUhEzDmB8dHzc0Fg@A72Fo_2U^eOyo6JqYW2*H*x zD5>;l{<}Vf|A^O@FVxaz=4ebX?Ma0Heu$cBbe)oJLe~M=Qny;^ED8GXI`->;h5Y*D zE#0m)wp*Wbv?dHWvm*@XZUh`ApBSPf@($P0_JR*Q>}}M+*sY-(c!%}k!HIbKZjlhy zBr;~6VCXe9k=504Ng%qIUs?FWf>&hgZ58n|Vvc$9e%@?dY^8VN7#fpS zx4i7ohl|4&Y80iR~Y9|D6|FYS8o}3PU0L6ljczrUJ*P|6=h{6KViMa zCko|)Kb1UKHM}13C%ygbFB4C4m1WmAW67zi$&c9897U#d=f4QZf~5jC0VbUy#K+3A zdzi9T_%_d&;Rh?_u$Dl!2Kd&=cse3)Ii_sxtEA(%yBFXaNOJ+U`S-502{)nTP?2R) z$48L~I3H_A2HO5SX0>Oo4TJGrXT$MDtIC<@U;&Pq77_IAD9_?!d?)of<~%9`+cp&d{i7Oq`-wm}kSUzC8xh#lcaLt~gu=VS+zSNLAX{^AQ4cuN=^T zL(h&WvnmSi5|-RONLXE31GP z{Tf+T8Myv3bi!s8S{y*r)voCAx~+6r1tj0u#8sv%Wa;~- zA_4Px-E^;-I?bCbVA&&(#xvU%!`1$oOqJN-iA}0Hu;VmA5#g_8(@|U7d(TzTMDtlt zj9_q73HwZgv_*_WZPT_Zp;|`LR~__!mb@TCsz2(@_M$UNc{1c_iX%t}Ti?boaJNJvuKNV4Nk$%2xd+vCzrd zWu?H`7Q+gE_Tgs{lcM7`5LlA62?hl0PYvPoIVOjH^iEajBD6_W6yem<6Jis<3CsAm z!hF$8`}$xAzB4yuNLDi5M$bHU^{m<5i8Ec&b!rFUck-zt#@2QXva?C$Y45Oc9_NW@ zu3s*QwwOA)t2{=|m?%!p9d~Pehk==}37$gY3Ha@e!4aK{I3iJf@^8(DPje?NeKCD! zt9?z;%?`NC=#xJ3pW8Yz-t1X)8l+SxL7@Y*Zzym>nskjPN0dyE?MO7k00cHqCA+h6 zvNx?kifnRGV#o9cfi#1vj5Opa;*^ z;=Uk!%{IRQ0V<;2vnuZ^N~6rofLTCPxPNZR(W3Q+&d(|`Rh$oKBon-PT*t{nCiHWZ zQ0`2|{MZaIV;qn&!d;Pm%=)CN#TC;v_3qjq2w0j-d%vD(Q6l>%A<4Z;1Z=sKvuf~n z%k|pXLj)G-peSr5I2mo^akLyN>1k`fYzlcou9nif2SS`#+L?@x!dFkqlBh{jGAUr& z%fTGuo@{D;Ea2pa-dWf}zgN+!qLj+hbwOt~h}xg$hjqnjE)80*k*us?&gK_ux+@b| zHvh+k)&fP}(`Pb=*fAESEtx@G)rb_EldZMt!Xa6TP!4ajzZ(V3pC7e}(qb8KCpAM+ z$upI*iD_gxMj9+GB0V^rDqI(&soXLTaWk2!;=Xm`R962Sk_OsKz--%0 z;rhoB&v>Zm`eP`qWs}*NPC;NLoZ9ht%{v5afB!k;pfoP- zVU?>AFO$5IpUAsmRra8d_^%I0TQWe1RgSL6Qki=faz*a^9x>M=wbQ+hyN>B;W&pl& z2!#FDlcdvN&I}`&q)jn z@_VL)58c>e_f~zHkSUgtnu7SXRKz7BdW&0|>rM>;S(z~TPzd)=)44wzUkKR8$Hb5~tyR1*JxrTjX*kR5$)q;t1F$SEAtrrrc;eiwENurh-Ml*sHZY=N z>}6{Rx%&xQXb|;M|NV!2{%u2y?APsNQPcbXPJa8M$~J$IPqlKKt9HeM%1~}@ujL(m zWF!x?Qx=Q9VPti=Sag-i{@xp&C~08xHXscJ3>dL;^lcOQRk$uhlk0k+5j*AZ zNBCD88|gvsLk#48YAV?UvkFYTprc-wihNJ4;EQ;X4nSVG>M6*?cURl)HMFyXj%idB zJfXPm8`dIAH%zwNk@C#QbM$y-CZqUZtZ-dq^Y;h&_fqUr(M+!et5&x*o979|w+561 zI688dLn}C0RQEBQP8rFsuNu1JwcRC~k~u(*FC1s8U+&?f5BT7%H#~A5hHD=`}$fL?RUnJVeZhRSuH_Ryb^*ALiOGlNs8-p zv9K?qK0J;*M|`9}`& zFL1U%9!L~5XF`AN2G`L#tkb$s&(tURt@?5v4Y8(b&8oe2ko~Con-dDih zJ%%2zMTXr85f=h25&1N&|DDLNHm7Jah9f2eyN16aBzZXbHK%?P}jk3tQgd~@%uEcD`X*&JnKA_uLSIeWHY>?nP3J~E{y<} z-{Dl;&nQ-o&Akq4>tGJJRawFb`K1lb+hwKA2i@0z2ir`ao12^Y-Q4HBno+kI0Xkb) zlqcFT8)3vEl`Ob3H9LDuD4lW|Hht13VlDWSugIwY+Sjf3^MpKji({z$F&OR?0FaF6lxNgE-lC*-=Uuh@4X1Y8WL(QQ4Q z|BgUw<6*y~9;tdh$GEZQY$9HHBiNF#p z2A-0zb2L}zj46Fo?AIzx4cdN0M+$K{J3HPrF@F?4+QBApznfy6^i^Mbv1FoPOI37#D~#Iyg84Yxpft#(W;Xb{ar%|%tB0^87XUfRsyX7WC$&(YYGc2QU0edv2) z!KSJdn|-BC%ccFORvH57c8+O9Ax5Sj;C$#CQBDgfDH4aSZzDy{Cg{4h^Zl`d8+vnpg6T!M9(W=CJIoiea+%6=#<_zWIOl9hRp*OX z;4ZEI@ifkxn$KkB{MQwV;@g_$D}8C6V=q*Le3|QJJ*Jgor1=~sD=i&*lK8-6mJ0-; zG;3ERLexmYbnUjxf^3Q3Su3D8QvBE-l9#c|!j=E5eEfYxfTNdgsDE&fapDK-`I$Kw zVkG;G(Ze%he`nfBF=+C-TrsN)$&D_ zBk!}sNZ+u2tS1Nm`mG~pn0_ES$1 z?8yKmARv(LU|j>^^PKZ1757`WotXyYk^-=nZ7eZY^SymTBFGWw&!Hyg2~ipY(zy*b z!g^f6T{L+h@_6O>c$<>{NaafpD$SM?X2$yOq-r>3VVd|a6MomU2+vP8)H ze*NM4ZD9M6p^d(hbB%t-+}2{kOOmdWnuV2EF6CDN_K#?9qQn=MHxEL~efa4b&DYPq zCJIh*2Rt_*Re}o$VN23hYMWON6v9sf_uo~2c(Z$Yyg4nOlHre@gnewRw(3i*RCn3f z*x>3-6)7^y`uos2{mnPm<7D&b3zn=IM?^3=wR-=Kxp$EAgZ-odu&t^YREKnwLmfe< zt};K9g7kn{`Ala5&j(m?C_)Tqqgxd!aX^2KdO*NMh839``myYMHhqPF4b@WPFE6CmrNV$Yu)R&5j=N}Wd z1+wpoO5)T1_Zf^TBZW_977eNK2)oQ@=(XJTLL&*RQB!D03l!=!l52Bv##}b=5WB5;U3_-i77_T2*i@a>qe>pSff>YlRJc+#>6XYFeugKWH~8Ggbu)K zZZROBNb=uYBp(-*!s~!dd`%g4IK<&F+R^d$=(7_p<#v2p(8nI?-pL1d-Z&%U9NIb< z9mrC!Y^j$cXarqMBGZ|I6`9slJ-0vHmYek7(1uRk)hi7a^g`k0>b!@3ybOJ``Ntw0 zSul58>Y2dyC;ZI4fro%dx^iY~)7hI$b&B6-vby&D@xqHt zih#Y(^nb3tBXT#Mx|vE*xv20>3G=5SZ|=Q~EQ4cUyCuT+0DmCRfP;v*h3x>4=Z>HK zofisG&Z%wh6#|v&;N;<6=V%I=mKqM&Rv7=C9Ak|-8qs2i$N7KFLEjFuu@gTT*5T59 zm-4@CmLURKM)g4c6LIBpr(<=Fpj!LMZrbvz`R@f1Q@`BghWkgB^-HX#&jHU#BGT`P zy+jgNSnm6weqHvd;c?-L{qR?fSk1zNF1Q*WSfFX2F6TJM_-vz{lHd%o%Ou}!4y03=cibRGgq<6B-Ja~ z_t&UzFsmv4L@b;tN?y@?WB$8~Tx@3VL!_d~#xV_m(+rF898kXlIIYvQd>wUB?J z7N>b-Az_Q>LCYjk(g!p&R4EqOAqRoi+rBjH#0^J&PO@-)kNxc{sqkK$(&fZpohr-G z$Yav7X@L#zLnQ4QQu{BE+8WZM4S>34I*v!*OikdX76G;Q_F;e=7- zG{}W~G(ySKK8^aod!H(lJ(Ev~{fXoB%)5b0W6j=&g;qYA8X6j zp`kbbT-xUss+y{<08)Pb$yYB!kfoHNmozJB!zNKRT6&u9A<5Nf&OPdlh zcD?+lu(y~+p5WvcsoXvr*aP6Kw%0b zof6<5ISXNu_SxtSF{%YxB{kx>f(OIjn7Rh1SNi;(MQT42|H|j!*UZ+1t&DW;v{2aZ zaxcl!ce{Kca#aOU`M`m2Sq(U4?UQ3lWlDIG`j+D?ge?k1oX<@`Sq}m*ou$Ss&<-cs zylkEBJQ$Ata-?Ev$Z)AcUzYgRBOqk~$zpL)q#iehMv$-K_vYKkf#zSllC8_ZX!5)k zos84gOvya|ZCO8vVdrw3bu6#Ao02H>iNoAQXW{?;{?_&Iwk_}(c1YW>G9@I0l`=dl zk?nne>mt6?uT<<&$e+eg!v(qq&ClAu@~jLsCxkA1+&(GWNd9@xwLLjWH{SUhoBh-7W(#~L_u`j-WnY-SmT|c@ z2a*K%>C#8D0v>fZSJauzNWIbh@Uoo`vs8DqZFWmnNJ0xnU`;klnN~4u#NYkJ+6^3E zpkRZ?d2Vo# G%$dZD=VqBToyr4c;uo$C&Ich8SOiujv`d_))@&(0{>`Aov9fi~o zE!4+c>wfj*MvtADlqSra?{ucuLRfBIrq2dV?jLs#4{GYC`uzOn?U8>bt)a7$c4Niz zro+YWs&Z}4Pmk61^`!{|xf)QDFC8{3y(z)2Kus$jJCkP1^uEHbM!k+CU!Aqy!)b@4|Jne^#(Yj{O*I( zM;oLcr8CVvFj_s-CZ~U)$^oN%VMg%Tj<^ELiX%_(2W89QqBx zu$oO^v9+mMhw0~K3-)$)+(s^4Y}4T8{q_!u74sm$XEXoVKgHj)bg3T)Z_R{ttiy3T zn=_5>cG_U@?sEvA%lw~USOhiChX3rQ$@uw-7^1zc6d?*I=3BHppYK%5MMp)bbxREh~V9z{;ZzvWe-2!273k&aH!px zY8!3jRE^#Aon-<|CO2aq8jb$LZL%LeH;%v`&st}=zb)ejs-w6*F`!NV%;JycCLt9o z1xXCriu<~P2a9qAI$r0!Hn^7e-A4?a915Qw0)>GMN|7@=E!3ta>(H6$70%)EB!YI( z$Zx+bFIcc)yLS35qw-akS@-e2lc{mIsC8R7)gq~e8GnWCXyIql?(P$B#n96RS(L7x zag8ZZM_uJpA~B~?ZO$x75~26=rBFn6xWE<=t!L!i_JMXk+Oydl*J(L!arNFZ97dtr z%p2y#WA`MQdGd7U!}fZoH3d!y zwcx~@mTP0?{3tX>hfX3zd2#{26JmeU|I&uOU*)+5;YcF}+Q~7MqVN1{I48-(XLvq@ zi;tZVX9qA9tk=CVP4)f#6>iW;ce>mz*-IuIUL6^^u-xpfD?Y!JE~&^Bqqnro1;{Wrf<2j~4`d zPI^EAZyOehRwL$>r8v}O&ySF1SSr)Yt*%cpwfASjSM}K*L%pD3n2c{R-m$JH!NB&; z4hLkt(OZ+Nt+(tG0A0#gDjK=^O3G^A=n1CK0MHh-#8zA2tv8(1Rl9_)M&ydHNVLoo zEz)C_6`qnwBO7PMo=pCGv5{sWVFJSGPqt@~cfa3hqn&T1)R6MGCx0+%O;qQ^GLp@} zvQJ9M{3<936marM`Bl&W&Cg6S-g>#g!$$+;3p+sGm1OHHBrc` zev$RUcEyb`(Aqop17iyhgN4aCYDLKzMu&x&?dFEHhQ`fQzf|+5E8%=9FKwv$El9WD z%r((11475KKN#T92I)5`*(ddz@0V!@D%@>Jp}p7MrTjj&4X1V6$LuzBZn^Evg*$B% z&Xk`3{D7}h0AnDv12PrMYrYtCZ)#>wuo*)MW8^~SudPl7s&?#%2BHcHh@y&7r8(u=V=Kb-j?t+9PUov#vjNO{aKxyh5eIXH)Nc&^6xo^tKa@l_0K}XLJ*9$BZzLlVZh(< zcco>|lzc{b47WgH9&gS+Em*9wQ*07~OhQgS_F9Fy+afA75jS1Chr%`M-3 zfqhR1##5uT!&SUpPe8M9HKA(XwQ27U*-PRnbVeK5)H_~zog0mP;m4zvlVZDI+j+b>K5ij*w+w>=+}uJ?+H3DN z*Lv!)JMgcx`$pc&31spNDWm|qq#X(aGSJlaVn!wO@$8iB$l1qGM%ni!+AHGPN_evh{m%Z`HR3FeB6& zwt}wnri`I~tG*3tyZZXJ_D}R|0B+k|U^Itu)bJ6e34v?kh+xW1q`f<)vPC&=W8yjM zF5(Y~+?2~R^AlkY*a1?1z6&U@`6@*G{QF(1yw0;-7CbA0;7KEE(#K)sO0Qi{%xdlWO#|uBHD&&NM@3vm7iKyTCq{Z%a*<4>FtkC@ z&AczP+@sTOFb&8llFX5aQktJHOygXJkaDxOaP^DFlsSo(1zKjYXd2QJlwpO(kN}UG zHY?2Mm4I4HMM>YeQmpD4M~02#LuH|qA2%afw77y*RSX4$T+vQ}bng3YG*D`2wDUyk+@1f6%Rohj$j6iNU8RLiq#etwl)!J63&^!s%#Ux`$FHb~>b z(flLX&5imB$&H-4Ix)}noTSX73;T7XM10+ztE{m|^ujfNf4}d4eT~D_0j6``bNo5Z zb$=L%j7y9B-nR(IyOE3e&pqyQh@t1e$#@>dqtC&XHshv90xL_>ioM6ec$1}T&dd+( zP(ZzUXg~h7z|V?&b>(+~d&gB}DNvcmYvwIjWPt+?({!sgN>g{q67G&~>plyKs5@axGOF}ns@&YF z8raDYu^TIEE^F=h{C_E8;fOoK0CCHjvlk7Sh$#@KFn;tjs$;;mH+1+xMA;Af*ldT% znbsTnEV0q+{>)u&SH*94RX=pcU45o$NHnPd!_3+fw)Ok11KfYWtLZu=DPeZC1o z`4c58uR--%5+32R1?P8(uJ*??p|%Uhb&CZ;a0f{UDOsJ@evcYYH;Tj_*^WE_5hm-r zrCz;Z!v4CUUf3$}K(@cL1I7n%jDOAB=6ugGFZ=g&u}18wefK2EQ?f_Wdu|5{zP1|J zre~-g%t4_9)#4ERJ6 z9x3nL{aL&kdPg8AH4@u;lydsuGn5t+tW@qa|7Q+yl7{d;(*%rCBiFtaFIZXQM&UJ< zRf|#8oz$EAu7xi;AN;JN0NQ8t3l0zOAgel-;RF6VuC6kNDFgAxryUr7B2|6Zurm#K zL7ImbcfvTA?mVsFX1?V`wl!l{l?b3dhD z64zl_?H$zYgfHm&U&{T0y^0It$eh6Sd%|6D0J&@2%z3LUtrtl@Rt7@30gVUub~$dR z2{RH*4xhix_WV`Vfsi}g-1nX}e-#f?3DgA`%$%VteAhG)T^EKT8z2@dlgMX{W&z0 z(P!;rSa{Nc0F2mkYtQG_83dgEXB?%U$VQ@QtAa?wSGS}wGl#!ksG5W?n2%OrN>V9Y z7LJNEt-$`9hIM>~wf4&|IsmkYR`ly7v%J4pDjr3QED;SN(4WO3Oc3kXcPD z5M9nCaJ~Wf5z`_E0%M6d0{sFmCdPX?vV4JS4A|a?6j5C6kpbVb!>Rt(Nm^}1RV5k49nFEZuEtVk~#4M_ENZh$fkHRU-xrD_25E!{SaB8Vve7@@U_;-4q%5UQa3*|Hdz}emT)_EQHisG~8F1 z5ua1_8UZK1?&4K@WBaUj?qhXlLQ9cBp!=YgV9zV##>-}>8L2d}ED-draM zEgXSK3a8`RGfCVxs-WjvQ(*?{ZLPFq>fO=~?ALiv*mf~Sa;nFE`Ak3qtZahrUm|hc z3k}%yMfp|_7fEo)H|RZoyHK%q0w^c^>1GeLzp?Lj4HX&C)C)YgU=^~ii|q^@TXb}e z-5e=Tm_WMnE7+u6m5}So%u1IZRew8VLk{Y6GYEjefzN=xFR>|Sr3W4@QohFV#%LX# zMdANJA^&R{7(V%+m`< zUq*jUx?J&9`F{+Ugs!s#bg^GX78>Z}%IUR~|EFD>bCUEQ3UbCHI@SJ&5 z;kB#{Jskr}N`+@XffjjiR!-yWPKpWq_3QzYyFb z9RQ8Qe+ekIDfitt7LaSHq#7peYBIofzc`k=}srcsMrqxkR- zv8_&?^=DxTs_Z`l_#7=)i|ITEq%nZW7mh4rH$NSwL15cD6rwm+xjMVNp8CLPTNCU^ z6K(u}@-|H@Z*pGWn>@#iC7UD-tKRL8x~kfBCW!nBPemO~Oa9q2r6srfYkK=mNc%X# zTO;t9>uQE)>1~}1+IF=uol30pG|&dg>Ro6QjrFM-APYf&m3~J5@t&(&5(Un*Am(v-68M%1q?%oxWUk^Ny zE5?T*%Ij+gog~ot59Qu$IoCR17^KDD zQfaR4$`n5wiV3KGJk%9JPTwtB6MA3(G!+f=1KCs(RX45{)}NN%r<}i|D53Y<#BJ!M zuF$2YA*RdX)VceY01uPsk^Xux1`J~O+0M3`TZt@PLD&XK`*bzD;&n*Lr`UZ8lEY*$Q~%U@vL;6zQWu1*$NwWG@OCtm$No zaijxp(^jPtMIdj(Qfy(gZchX0L9ft2aUrCHA3WDwDJ44Ry9;BC09e~AA}uy0#T}Wa z#bhK7SgY9Bo{o}D=y3{%kbc0{jPLgLrW%vlJoy#Dl_2lY|1EfCVSML~rsAti9Uu`3 z>YA5%bOoGO0OIN}Iq(f&I$s!VM_6K{w9w|B?GLSW+7?FuE~F)*{XMg6rs%%`z>g^; zEvM!&&`I3X4*L#JAWn*lNO(hkdffm#3t#=RVt=y|N|UH0NY!8yYa?`8)$w$OCRY4X z&x5BXa#CV~N}aGX-KN-;+IbRpi^_4I{e`)`5HX#XZZ7zf)ueMD``N}((m!-H5CXok z%)Th`*wY&7?*XnUWi~PfG69OZve4Zkr&jPnN{?rAcj4rr9;yU{fN$ioCiuD_mybMAMj8^%M%+tlfmwG21>lnPB1PM#%C*Y7pkKQq(;FP=am~8M3TVLYph5s!~iojS7pqcs$xG^J>1(r=*ReaJ}Xqwx8lY02ZqyLT1@0 z>y>wFfn`>&*%?h?=cj9Ag@OjN&E8eGfvaol>-#Y)#3jAk0UXawwrs+<^Prj_03@0N zcGh6B(w}xbUR9vv*SMOJpbsY<%4vUWaPYtKd5O%h{n*;*`Lj(_r8J4oYinz3-C*aA zN3N=qKjVN_kd~a5`B;ge9@^Yv>6_wP-95LhijKFIfozXbX`LBt0dW2|ypWq*G%i*1 zw==i>Yj;^d&Wft&nZ@o$BT&Uxa;n(gbm>8_--e#q3JUL^Hh-)SDBq7l)JRVcNjxCo z%AU&I(%BqgVjtg`ZR%kxdgMOxM%R4@DE-d5-k^y__o6`OPk>e3PMmHQx$u;afdN2nn@fM2J~Qm1);cuO<&?Ngx8&YfrVtw)y>;KSdrtUk9HkJeh0Bz#aI$^UMf zRw)E{;FTInQ|0eJuYCk*IUxU9^{2l}urpM11l*(CXBU~nJYG6mZR*2IvsEuC{@EsV zoq-of-tKZp7`~-w>cp1?jx?ow_t(CLV#`LE*rVbv0u0JZy5>^Wt&SuupM?xBH&DUl@ zq+#YF?rbce3J#?;Sxs9XR091KxnLfn`triZF}4|}ElX2X)&ucm<%L6~#!XlCDL()n z{zVBSKbQqzDETqo- z!Y&iYE3m9}hu!J)41t~_?*B6-Pco`X#B=Rm;X8BvBGNDhf#q)?hGw8uJTE!zsnLy) z1LFrE`xaBv+AgiRKbBIC<7RzB=upQ{F~EZWz6w(>axhS%blR(TCim5o0cNhK88hi% zGwsw|Dkg=53>mxcCmE1>f$d$UlkUDGM{VWUpy9dMtm8NcLSS0JpOfUS$L^d%8*#i* zv&N5x2^h(lDg8KKtBA&^)pa`hiK5ACs8n+7ldtmZB3#S`{oCa@TT4`;|LT0B4pp!k zn}LTM@=ei^(6SL*!6bz##2szSSZB_-xGDC#CN6%9KAX^cDjd|y8uh(iyWSR+U-R?&co|tu*6ollD(YRAT|lN28n6BwuuPb{78_5az#B4j6#r&Nl~M z;8Lq|n4BGrCm*ATRuE;)@~r>*ZXAia&#r`zboCH{ZDTxh&u_faL%!))m}ija?@J2! zVCXnhfV=#Q6}U_d-IpAXX-zsSIv6GIb{9|e!+^4{WBjNA$o)zt;6wv$iT&)rXXw!= z$rVdMCH4xqqmfy)XngK_hk=jL{9&oGM-?5z42ERPQRAHz#VP`&^b&C39k1Vsve+sP zV3nfUwWTf&=u=;}O4Hw$@7+Qy0RtL^g@3!;o&o>;#u6wRfY6K$K5AFcT)BTg(EsDi zT>(V_e3^3W=uU00QoMr=lPw`MC*~NxZW#e6=#M^!syaz%w@@1p9zB&^@TA>C>Gge2 zBhz8~iSjHURF#dO{r&y&-*cY=p}RFS1Go!npCxa)uJ$ub)H)cx+sWJaM{GNQrx|m< zD5sAD2ii)6aJh`ro#>s?ui4}Ra4qLZRJ9TBOs#|GCX`1?Fis;@E18u%4~lcc_l~PE z;k*1@W5;UmD!0jHypFxArz)C`NlSC(lXcjw;&ZLL#;#kVcK)u$R(H~T?V*s>&2lW8 z-FRun$X&t-qu<`|!bTZ$U?7KVy4HbgnTX>b2O#)EdLUfnsH#2zNV=h!n%m_t?J+Q5 zUAa)yqC?kkttm7#&4)Bt3G%q{dZP|)#2KAQj%#fN>XM#2#i@|avrd*69m_y>pui?>>l49t z>LoxVHi$&x`<;@FbtoDv**I+=_&6g>^R>z(!{?SboQ0l|Qc_RSGr~BAk#{?w@qyqZ ze{Ey5K|+wQkPF8wqKZu)#OS|ME?;ISly=@Ban+|3M5GTJ)=bdGaQY;WE9XFg?&sFhTzXCZ|I{=`aQb??l4A9gAp*U zojAUw(Xs&dce@G#GC;u~(Y>gI?km$8yBRQFFY#4A93@8*>-%Fod?m{Nitb^n#v!is z%w~~3z)o+9VVWVX+*VQW6yZjg8}#e)trbBm$~xR3(cMs#J$<9w$_OYuKHTxz+8Y0P z;j0XvjRMPgU$l8(i7T>Su6eb-wZ_&8&?kicH!>ow3&SzHd+_Iik6(KnObHe(s zj~_L;qMN0DHWe8FJ>dJp-xdL?1!EXLM;1aE6a%?Dwrj@wDdN_IpeL#?Wda(;^WMl1 z$2DF?&vM9~bX|LYf7b7?&sg9pnXdhkemsvw^J27Qp{NWHnqQ=dQ$_AeA$ggZ(q#fn zpHB2BOGVPiQB!bh17PsLcIUJebm(Fx+*80*m`^Yr?j5={Vwp=hi_uyoQ-D4TFyn8eXFb`tiJLwr?dk_@u{)&D{S~KhZMkF2J4Y0oCQXMQZ7`SyGq!34m!G9wKWQ z38TW{B%$K`gI|3;hVM}FLA!#$jFi%dXi@J$VX^u)#e@f&N z{R?Z7ROCN(mWb!(oN<5&>)vmnw&V-H=-CksYzd&Zs@G`t9}VCBOn%}f0AV_rd_W+7 zSNHR7sg*D$2Lid9b*_{=g>?pI2U!K)?Nm^dk$h12GWN{={#dW!j&a4RY$k3ayP?6x zjUkKDES8lSFrH@XID-7lcaIErPn60%?&iO7KIl)-GimtSP7n5z(s`XOtWyvsn`Gpo z^ezvr8Q^>{ECLvpe))kae6XYJ8;oA2mib>}AZLq*cJEI|lf@7xeNBLG2ucjAaDI%c z88?w690F5`A^c%xAKcrh^v=3DOG`>h2IuBXlEuJtYd*cv(b4kFk6e2Nej=D~C-sZb z^yl8dkiivWW8-T`EbxRL|H}3e4f0GHpyB=YA8xX>sZF-t`y+WH#Fb)OcF=vNH@YN? zu1!h5uB0A<%2~~LyD^E%tgdZ44|^V_D`9j0##c*u8{7(@Qc;u0(^Y7I@X}!piDrvq z<9hCifQ~_>h0kUH$EXYw8CL>0_O~s}c!!Irxai{`dP?!^F1-%pV+w zY51ABa#qov`t7(v4e#1^PS2rhjsH(if8W0&#u*s+(6QKOd)$_0TkOh;*{T@i%yf~S zckYdkkKxTpY!1{tDB)WWYuv3I215lT+wR<$&oN3yiVoB!@(t*4l|JXjoYr9RL{B+f zRWQ6CXvU|e2Z*>xCRqN_GKo>)n`Bw;y=HoN=KX&tjjACzb10%Mg7>ep3 z+eB8I%>+nIT9x=EG)7^e)EPb+G|r0?=m}px3^bgl_QUc zGcvoYRSL}fp|E)F2FGn+B&4uwg1OWyt(YXoAOnIwp~|rEm=C5&+=kzc*#=~}s{v05 zqhBde(ObemZHI*OT?nL2zE8mXjS=ThVEn;unB5m>aD`q>yo)$Ovc4jGSMkvys%CiI zm)Xo|LA_#iJ1LTk+U0+Qwv-NqP(zvze~%2D@53wZmgBQVb`*f_|l6KFDMy} zfa9Ey(=U>|w8vM%hs{^jplk zp)e)N?c6lSR07aOF10Tjw0+Y6R7a4MHDJ)qAUU|M0>hFv*3IBi7e6ZC<&dI1pfOXo zC2)E?4nq7T4ofu5Apb7lh_e+MO}L$=Ci#ajV1T7~f=&&vY!)sOxBa|Dqt3n0!5+Zp zPX{Ti_Pb1u^{$GTVojDxAuDpXIV?m^IMaJ)Wq5~S04{th_kEQ1!Qq#ZYIBvT1E_3c z#bUdp9=ij>=S!xfU*@}jqj%Pdyl*CaznvLw?Dua1MO=+jXChDLxPUxMHCkdNIb5~k zg!lr9R!$y?Zk4jCi4U{D)l{I~yjzUAzv#~#@&agZJNK0`_`zcU&ozzP`Kj3h_YHu- z%gl9TCEZ7X{Rn_P&Dn#4l#=l^m*@V}1Z3a_7d{G*DW(gz^K9^0=P+cNAl~66Tib+# ziK_y3QY(DjWB6p9 zXL7tlvHthhuWAG#$-N;C1QR1seJ-H5ZnH7Jz0+?bB zO~e@>pw5E(Q+fx1K`XZDo`wy(-=D5g8M06>Lg^jr-{XOi^dbM9hE@^T6IVLlR$WK>@kat4N0sx>7^1Py{K0 zbOdsg4nbPzL8OSZAV>+JD4`=DLTCx(tsT!D?+x$%o(Zt zTX9hBjjD-J3xWj8Pq%uh;+J!al*b+WWcAOS7LKR2pVVjPkV3bv<5>b7^3`_NJeuWR z8EbH*zL5FowbvEL9Y~wmJet{sUS`wL7nHjw-R7VvfH^#4%HedZ3~?poe!9 z(yKhs!TNqXIrXi0%MIe;p_Ndcuszsu*wrUNiS7^)8UKn27fv> zGgJ_h__+=wWp|;ex!K>5eNJ>uEi)WsI%K+hRk<`Hsvj8|QrJa)dM~p#u0B`=_8>SA zUyIO*#0JM7_nXXzj75>Y?y9%jP>b61j$+?0rhiF<8dfS>!+MCLD z2Md}<9^klg_QUt)jVwo?EJnxZn?0G>NMx0)a3u$$D+m0T5>n3uO z=y?bzNncLkzkr`UzRA&bZ|7Qkqy8sqnI60MLASmrHLs|-d2DajeEM0OPO6eJOPwv5 zKvq0nXkTEdY_z}AVlBG1qWkSd_-IOx!#cC4eBx=i5@m;iVxh5abugih$BEUb=} zZJt$j@#K8)mAi9$I}45>@Pjr)6GY*S;3dCa4^<~t6C_l#ix1zTMbcT?Xel4i@7e?BomFQKgDd82n&Uu>&?;nt_C`^N#tuwo z8jB!_L)zwafCJESpt3Y>Bp1?sWbP}?@d0%4jTzg&7;Ylzr5nrPC)^Q&!W5a)He{YS z<|!H$Hqh;O*4+vfT~OuTuw~Fz)41J@3eDfn+eCtYy@_^{o$E6e+O&E@kY9?cs6dCdQ4*<~^8pHE7lGkj7oVfsL6*UDmQywtIt=U3g2Bf9=b>FGuKQakH zx-BLZIJ@r={)eZ!10nD)b8iQIBR(VjkhVBue*ZeAkK(KwxBui*>LV_A&#@0SxMxaz1Kk1 ze9*8(Dr(MSMPD`PeKfF&2qRs|zTUR=Mz?7C=NpQ(ENy?4>h8M1)R+Sl4{}17PfZ7l z*@7&}qJ}I@fHW)sQD)w1j(wD{0CE=c+gtYdK-$sX-OMuP5wV-z2GuO0Z7LZ+D#n|TSZ0J8|+Ru zmcAJH5qySx&2rpKB_nGsnDH$suCuZj&KK?G$#3=U5Pe+QKeTrTB8$ZoL6x}CKfd0F z4P;KBT1qfnm6aEcO|d?vplF+b9~ZM_n!{@%^Q{-udo>4uL+LdRil0*9uvMT>tN=v! z5`m6fZg!m(=f1QG4Un4~T0_To@d>~VURey%!rNT%mQHsPVcDg%8Su+8u zSm}hi{O<4k{9bY|sJ3=trpRF>gDk~NpY6g+{zGqNQqbvlm14+l>^Eflpl#yN`O-#$GY31rsT-$yesUE;xfo1X}(!X;$RZ|^wL0VZ# z&zKy&rmM>w4IQVw8_F!J&RGpjavZxYkm9_wDD#wUW8~_+7x`JlD8&K9bX9rp(J`kM zCB;bE1z2{R34Jtw8+odFrDyX_XrQW?kU`${b5b(#E$N<^SDBiQm$^&{Ad;>kx|dIv z!?NS+D~Fi!wdXps_WkQ_S@=2_)!mYkKYlLM4SfSY%rWK9C5#r%jn5*Nbp&~f z$3ESOBWM0v#h4)G{@KsP7frSr_4 zGPa$1!TD+x(RR1XN`3?dAcvXFn`pZH!(ljSfGY(i0aHxm=@EGN{qfWj_7GmXhhquU zGP@c@)FfVxr80aVfm-7Fy;lIZU3twX_h%?)IMqbH?3)nKW{?yIbHDVUSlG7e8H z>h3bf8vD!zU?6P!aJ~enX$=SrQn4xNUd`*+R9{=?Vqy8o;IEHQm3lp~ZtSAmVkT)) z2zX2d*3qxn;U+h}Vm}CmgIKzB?nNC;Pr>@|6p>SGR3^bG>m@##w)JKAjllHmtN=s) zU}sQ)mG*O<>(cje)W?7Z@8Vy40&n=iitlL^PeP<#wbyi$#3lPbA&LbKkc-NMW6Dxv z-c8XtPg@x#*7Lzv=SUC2Y+jtO)u;#kz^eric{V@FbD7U=W=iW-pQwwyX`51i&rYzbjiAigg^(olad+j>awy-_I2-J>zAEo@Ow%K29WN11=KbRpPsDQMn4c)w?Qug`y1t5{%be}-l|!e<=*nDYbrq=|EXC&^y-mM^SfBKR^0|v^ArxYkKj9`K z=KNS~m@IW0YwM5CB~&d{_`7`9A4!7gz5DY*M3W!rqU?0XI6)josQkFR^|#|7x*GrzVW z(ssLrmgC!fahlsU;4=nvzXH;~0xyCf49s8zvPv{!w?l1qR7!GusQo*<$feWQx!`4= zPl?HXea+o)dl#LV07eE@BK?r~L)Q>=2^hLAi@z8Fx)A?az+Atsi*XzWP18wMW&7vt zqnWO`1Z1y7(GG4a-urvPWAhA$IYiKA>mC-c|7>3;YW)0*m?mSL1^I7qn4c2pCw?Tp z1JuxW0N|P_3A=9ijOVEH>PEB{^}*7&9DLjHTHB1wRHm9^q9Wi|?_D>quo?yTHesK( zqWE7dX|kT-0{b>yn4T_v2GojNKz6?Cjd$LDoOMB@9DR?Mw7|oqFQBG@ST6>+Uj9dY2q5(S_d6>i zXX!d15_psFOa7t-1hA!N9WoV!HFG{w78^5*&xGx;auYRw_N0g%txF}^vNPDn$|Kz! zI>ljjf0(889oW2{Lw3BC1f{%!6WDr2>>D%F(+aIZs_F*MC)q{H$81EWaE_bjfvtvb z0N5hnT75!KPdigu8P~U5o7X%>CVbaCdZNp~9@#zByf?s1A9izqj<~S^LMB08ZAutd zirCsu9aiEW9p;$X{_0q10W31s30evhzsCQfR(Ra>o!{I@6kLXrx%Vg2H7T>&=g!{yWy1tC`S@8Vjhm3S=+Thr0V_}NltmHlj^(Lj6gD~q z3}v2%kQR_m$J1y19@G9U%|XyZ^oUZkkYMrMuB51yM$ZZ0rgoUE zWk>FZmBXGR)Bc(FFRZH6M&3XXyg`&zT&U#M+|*mLz>*{FF*>b&3d|fh{BZ@kOa3$W z(#4CQ;3@Wtyw@Wj{)+c@JL`uKRrNDcc`VkHQ`RUFPM6zzL(uK^6GlKd1lKP--W0=e zyOFU=TlVS|j*)YP3w~(VhKZfRQ1iBs(PJEzKJp(lzyyrDry_I3GIY5xL2X?+Pfy!b z2lMT3idows<^O(vQ%J0MGu3*8I6framgP4$)2?LD(NY-IU%*x#x}b{vt`6c3x=iW0 zttrN}cu0wt^go4JI|Q1*^c06?l^4kuh>J*KEJY=iB>LF=*!}Jspyl6)?C6Sm|H_m} zzWuh2t}LIx)cEzKDM8JE!vr*Xkv^2cffZ{02>eZJXfO~4M?!H|Y5^QSraQXy zWmEo#hds1qt_MZB{bA4sw-UHWfO;tvmBM#RMPEQa}Oxpv&;0X?id#p+tV6659B|@2HRPy z@I7KA5l%;o1DaJYG1BeNINr9nZO+{?QBegwc-Bzi`dux zhLrZFZM%1^9}P-z8QC?2?G?U)Iv5};>wBc&CGLBECU2sKiuPVUvsESZvA(3*JiNKQAr|s_aARchG+?} z5)q|!fohn``bQmSScwxJ9}4wF`3X}zX6u{T$7vKZgG~?5<%1Mb!j#{)^RJt;stMY^ zX36?o%n#%Vv1D!%llBQNc30`nUf1NSH9~^PO0~34t9iKrgVnl&)H&eE2uZ0xrxaZ8 ze^)#KLcyNtHfq8)0u7FbCWOU++>d5@#!xP(4U^ZAM#is`_W>x2!NczVx zJfuVC?|