From 2fd7fe24ef8d4e73f34e375949b561de822e2b36 Mon Sep 17 00:00:00 2001 From: BergesJ Date: Wed, 28 Jun 2017 08:56:59 +0200 Subject: [PATCH] first commit --- ERModel.pdf | 1183 +++++++++++++++++++++++++++++++++++++++++++++++++++ LICENSE | 30 ++ MyTypes.hs | 10 + README.md | 75 ++++ 4 files changed, 1298 insertions(+) create mode 100644 ERModel.pdf create mode 100644 LICENSE create mode 100644 MyTypes.hs create mode 100644 README.md diff --git a/ERModel.pdf b/ERModel.pdf new file mode 100644 index 0000000..d64fe36 --- /dev/null +++ b/ERModel.pdf @@ -0,0 +1,1183 @@ +%PDF-1.4 +%âãÏÓ +1 0 obj + << + /Title () + /Author () + /Subject () + /Keywords () + /Creator (yExport 1.5) + /Producer (org.freehep.graphicsio.pdf.YPDFGraphics2D 1.5) + /CreationDate (D:20170628080658+02'00') + /ModDate (D:20170628080658+02'00') + /Trapped /False + >> +endobj +2 0 obj + << + /Type /Catalog + /Pages 3 0 R + /ViewerPreferences 4 0 R + /OpenAction [5 0 R /Fit] + >> +endobj +4 0 obj + << + /FitWindow true + /CenterWindow false + >> +endobj +5 0 obj + << + /Parent 3 0 R + /Type /Page + /Contents 6 0 R + >> +endobj +6 0 obj + << + /Length 7 0 R + /Filter [/ASCII85Decode /FlateDecode] + >> +stream +Gb"-6bH>]mN[<8;YLl($Vt>EpNAOJ9!?4dH_sP<,rnIJGgHRmpr2]k^oABTI +Dt:q5r27"Rp#eR=_lnRi5QCCpq,b?2o#IZIJ+l1s>OSqEn,#1`hJ#L6r)6JfYA3nU4o@7P's%1L7fT1& +08enYB6-oAQbPa!A'?_1_LHh6aC#h/s4./>DuT?XrjVpt+$Y3\s8TQXD_pj#s.>pUs&MAG +O8nkD+5_SEqnN*eJ*R1Y=RBh'Z%R';_]&Q#nG9E]7itO!p.(^r9)AVC$iU!?e90`rhaU7'8p3>N>uRDi +GMCr6cbSX4_pbPu-'[[V69fru4+s`\BVhs-O>X`FpEs)GO6JpIQ[Y-[>hIRrTM/hVrQT^4@=PUrhJ'C@;+5QrU_Ym#ZSe +]792C,IR*8o'iV'Ha`oel]aSK=#k3-+4$R[?DG^>CAY9uBb:s3b@fG>qt%HX^>\7ShWKUiO0PhTr_+R6 +;XXdfT[!:H%dP2"dEM=GqI;[*IRZK`kT:CN1%HbfW7Tp#YOt)]Z[2:ENf^_@M!b0:2L[RQ7XB=CBu`U< +d>T#tNO-4dm"7*ud;(iXGU5`=BnE$:%HUWMh]JB#iUes?V"A/.TJD%$G@Wkl5B_$_Vuu.:,n(MN>K4Od +ch(CS;gioj6)tkAEsAX13QG]AP]!/Fq3?^=*qYD\g/*^d=nu&:K4eG*Aj>Z7gX+dtI7p5R'BRU8C:LV\ +8o4(GC`c,&HhZL23UlIcem`-PSmaHdUY.qA7mhAYGdNFXhD!N7cR*U-HUIo!r=&"E=060+:Jm/F4@fj_hT@hdM<9Rph_n:0U)C&;?-HMB1H]]Q?]&sT6N9sO1"Ip#B-cr@Pl*rn%.`_b[Se_XZ;tO +A,E_[d_G7_FE@HE"mVGjY7.<:jNNu2RisdJ0BDd=pP2i9LJtQEr?o'q0""lQ^G0b?P,"YcILsQ^C%&>^ +hfClm'1:Cl"t:A;5iF$N1)5f^#b0S:#fA[*Yu->4p'[._CJ@)XGK[LjF@RgGiMIEbla4VQ?7de0@JFVcj->,0;2KA[R4ha][X(c:^4a(@/jLa&MH3,A*;qCeU[)ei:A_:Gk@\VX%[/_V^n!"81GoS\NR!0Ti7VAN6^dQ/Br,O3\S:G)ZN@CsL@!TK +MWp@+k\'V>%+I9-"-e,98\!qjS)r>eBkTV4Lnf`,(+:JF.hbt,SAE>932:tqnbbI$(unD>46(V1CMOg7 +,@,h#+t%7#.>'!@*pE.8_0&5:RjU"7Zr:`*G,B)$ONjs[4UY4:GIN.O:1SFe`f"LF4aY202Q&dfaDHA* +aE\\ffR@DbW!IkW0%Io,B0?3SrV>?s0?or*eHgP;bYVZM)W%`jIqkJ_];3*h7`Siqm%udm_pLq:rs]bX +"2k^5Xo'%J6\TIQ8*?8cbc!c/C[6Tpr<.6pP\*+k%2EZ/O?IAAF%Wbr+#Q4Xi5>t?-riC!=SaGXO.JKU +%Fs=Zf!%E]`/!a+M";kHpP6MOf3N<$?8'(iN/q[LC/HnJ*:5%]hlJbCb+:dFYFrdc.b9&Gl+tq;;=Hl4 +\9f7"T,>CTT'?C=Z?hLjHO$_G2[+W[(2@ZVQE'r2b+dWE_9'KSMs8Xht>^'F1s,q:lC!s +ingGI6H\25:sMqAdGN\d?a\aW%r]i_RD#B/7.r0Yj/)+A^I^JVH:]F_.OjR5]'0T[e!Omb'U.MmSt%%K +?@9^3"4Q,hZRTM4$Cn=p)B5F=r8:$A8DLpWN/40DP$5qMIG("[.c$=9:\B,N+-DP2_UA?2GmH$bIj[V:PWncf%S>dN%,P(>p^_?WbW-m[Mc>[*e$S +2!Jom*VCOk-2=S#$q2"OVDF!oFm>F5)jKhP%/n+WksPDLY;uNfJ*'[50QN\kL,=[0EuIqWFOJo'jCqIo ++0YT0N[i?I)fsXcHgp6+pejUf-5T`,G:q.4KtY+W4@/"cl`CEdS63lZegBk1&T8R8-?$.;_]E3?0@F=a +G/?8ng=r11UA\1qFs9)X2;g!(X:pMVI`M0[I`5nh=I=usQFVQ'L2G-1+Xq9VFFd+(@70;pa*V6%'rB@b +%&o>>'$E?2Et-:]A\BqM3@;as6I-M2Uh>%gqpV,-?Z<+F?J@Q]QB?E4*$GQaF/eOA(Np5F]VRgV=gK?T +Fg!V4)D=4cmA25M!2?=l$WJEr9^^r);n_ga(t&!Y2R.UV_8D>"B_0j*/(tPg]naodV2ep@AM*^?cbEnX +j8Ht$UMTf1Y$AZMD%Q8SasP^d7:dG!Wj`Z/GMUZmBF"'A=,`Y6+1Qmu`3Au-C3:XjXkI=3/D2nCNno-) +0Lt=KT2#:PJ"[YINe;e,rZ-XjT5WaU?.JR7j,H*9*dn2MPP()fpjDEIY,6;6^Vp$<\/]=km4!Ol5=:'A +gU]>J)_sh8%!#g2ERE.oZ\b,OR?"d@Vg1n@fe?59ob?G>$?J/XrCMsUTjWkZQ0X0$PN6]<\MEJF0L4,L +>bBAE-gOcj-=hb1lC.@^jrVGJPa3?Efg884SkCdXe/;l*a9mKlCh +YqA_qMHD`\`p9H/g:MceRXV.+e*Otd)qrWOaBF@n2]kt*+4r5I*,U-FD!$%XH_N:frGH?VBJk;iBp5L/ +F_I=N^\V\mQ8Ds.UZWk24,5&e=67"k0XDjc=\nQ.T12BKPKD78D\W'F,lcQ]fph'#b'hRlc>@Ab(3`N$ +ebM2"]m0Tp52/%I5rm?sSDC-CpQ2d#)Kd*fHs)(AeP28q(['RgogY[6n:24]2^qf@l+JM`GfD:/]L$>@ +(="-RT&/\am5s;+;Hd2k-4O$I*7@[Le)W,5&In/U#J\r]p2%NfGQkYm?a!/4d*@ep0Liqi5Fh`=6[Hl) +6Lhi4QgB3Jf>]7VV"Z#+FR17J("%`m!Jbbh#3nM[WF"OrmHPcZ;//r92K>g=e+m56.lh-ZeP"u]9b,gp +ktN4$9m#&n@to0^jJFhF+&$"h5.H[f2^pAmmm>"f_1=-2b_s'qi`@U@@NRcmV"5AI\YH&@^BYCd^Q`1a +.'$DC\X]4FRd$2\S[0k7$[Ijfgg(Yt@4lO>]>Uu15n/[WC$h)%Gu3Cb`5.::80$C+L$"/[*?fpB#>@Vu +Zo\Te8=Y[1dZHMY]*2&SZ1jD@JMa]d-#kgh[j98]8fn[9R\(kNL*]/!k@n;HQc--llb"L'ot?'t_\,='SeaWHUVnm5mp"eM2^*1LD+?tQLb=iMMsV%3ZT'"h30Tf+,`Y\lSA:R4 +\K-O5HmdMDk)]4FKf=KN$^kK%*f0Gp=)$f1:u^j.F#c;k2:HEfRD`b^EF.]6,u/U-l`'F_FqA@hh!=Ff +X&Pqo@H)CiPb2:O]KH#Rj*A7B+FQrF`@V),Z,>^Ai2Q0V\$2375L&RRqrRX&c&U,ZrpYrtE;@.d)OlK) +p%saVqp(9kq&?3auVuSZ\^UC3\=>8r0;8W;Yr\K^McV)SPT-I +m8o%/#E8%V18u]G]\>?=U$)g$X842*n9T +LXo5bgb66sA*sR):dn4@#L>&%WH-t($F!iX+lRG>WZDNX5fe$F/iMO"lTX<&qea#LbG9"N;)fM%/ +H=\%UYrCV!'g'j]^]>:`2X0Y&HW'u`n?9[-@eXq[[?f1CZ=`WJ<,WF6*.\2aThT#I$S%#-olf=hG +'Wk:5ZLmCZpZ7VXh0Qa0N580#&$@e(l6F4_3C8(B^5X59b6phD\O#Q]3d=1;S32FL0^-J3is0.!oP>3[ +bil@:(=]a)g_"4jf(EUX#jHLu3i+fX7890ceAAE![;tauQ'V6kd_9TeauPcq)k/$=Q+#:5eD +?>O,u\.:D(mf_YGk+p#JVK9U$SM7b4mb+7,qi-O>nV7%[D0a%/^O^sA&[K"]#KbOer/@N/KO3FMg/sQq +P8mQXg1ktq#>a'PD?&W9`I1-ne:]:M.S[!gObSM]/uN,$^J.mpDou[UnS9/'eMg!,m'%B>+ +S39?:-geQ8J"+Ea40+(n!M7:EOoAp`;P%n$`89E+?!e1Lpmo^XW86ROKp(?>W15NITX57fhX&ToWca4'LAYRgGM\N:GU<]a`FOO$b;a`!Es,]TdQQ3\QVmK=kg*(6$,kbBBTc_cnqC-E8Vr$lQR'5f%Qb!)82tMHYMS8bC23$,WCmfYF90*G2*Oap3G#-'5E?\3q's`iX_Vp +o]ZupOXDsPcXd@5m6V8T?aO!\koL*"-;a#G40:,0 +'CR=aTa=\P[[oYBpSiLFcq@VbhNHBk=UGCfo_^d7R[[IVC-+Nj(mbLm@1?r448'Tkq/87kTU14T.^;F1 +IU\6+V)A*//_->0/'L_d\PpZH`bPJ@" +^J]>sm9d35\G!*d0%^([n!X:eJ+mj$B4*d]X!TjmlT=(ZYBGS7^KN)Q4_.9jrV\PCa'T6ZnL&te99/r? +kNMqCoFC><8Fq,e5E>ZHliMSuOZulL09IuBD(Q@>&a))hhF.SbpC+dp$?+Dbr&Ytj+LU\"q&ResB^\$s +,%%F/c+H/^^OR:%AtNYid"Foe`R.e1aT%K2m"RV#nohi.##deDE&%lYeQPhO.E[e +HM5o[d4dCB1Q+QXM")qhm'qFZXlbrk$U6`(4C<&Q2@,'4-&[,#2SuYeIe;3H4m<]pd%aH0R0c9m0`o2N +[>ZMVYNXD*7E+Q-.@">]q:LV%'la`;:4\l3D&o8J2#')Gj3p65lsE[Afg"76]D@:-lf_\ES-SK`mZLlS +.qV#(dd3RIkT=\9?2ZPik0q'r^NK6'bAZ567st.8K?lLC510B-4*D_1`IhLm8/iK'IA@Yi[_bNQI;80p +D.m5q=qO-\n1PKn-uFhE;&U$0Yo3GSn-&2aU`(2gPhitLFhX9F>-5Wu]_MtP+j\Pb8QYJ@t9Wo4tZ$[9fHa=eGeD0K,@qSBaT +am(26b0K?bMPq1X&Yl2CU]<:8.E-Ro[DFo$A]:HY\2e)eZ#.osBl/f<1]uG)W9@CD%,,aQ28gQ?Y9Y6K +p`n(7*3dKlej@CO)1/(M(?L24:n%1N_L:efCimZ665%M\&['(tYE2M+1Fbc.Q[87*&_;hf7?RZ,em2J) +4D@7S.PcD$^qH5bO@WX0.9gYhPQICmRLpDrrZ10X]V&Vt);EoF;>AWX +RYkj)_t!Y'A&f&HX%)lN?SqnW2Y$TeI+A!^d34gpU?T^Vr5,t1YnHO%hq79!oHIY!2KX8-)f"DXOW.WE +]uV""lc;kLV;Y8uE6l@>Dg1I6mR=kFh7^m,D`qFGphFt* +E^Mq!O0,g.?'-82rH"K,*0/.!gsBBJMqi!s[ejSsLX:tWQ%(L.&r]?>71MH8M]?*XmR;"Acf7G(MKedu +#K7pn!d_)3(\uJg1bW^4s#E'D+"q[(l#n_#nF1HOEp%-1,(FGoAu*CM.:1aFn7$5]kq[I#);R.!fd]Cl +1VDgfr/:r;`i5Qo"W([CRjVOb;o4LZ$&1La(4'LMJJ\Q?PR/1:2W2q7]ol8Li7HhCU(bJg0?1HY@jI-jebU(nP:nqV6Ge(`/MA7J#s]^X[rl[4=Y +.D3c9;@t^hn0F,5]6Bu8<;A(XMMYVbnCq,EGT'n]nm)M[2Zi$**8]a[U9DXJIl>h-ms`KklB*>5)/nmm +\&9rd]pEp:of)`6cIQLY[V#j*X2#Ur:uU^/cn/)b2?\aFj"$ZC]8G1b`4O#h+L,SrMPM!NRK#U7F>Ah41b$hqfp)W^QcPp[9-LCA;is\#/c>@@b-1[@^Y#W=s:?'1t>O) +)97#31t7uG`4_Z5QAXNK\kj\!$70cfB+)K.Rk.ZoE?-ODj&$gDOOdk*k8Yhi"L^N:9qjJ*-pj=u\n`'0 +*?Gs6f!I1p.Yq]oFK/?1Dralqkfq/4$2]m+?a+4&/%1;p_qFoeMS?b'H.T")Al5=tNWiH'ZZuHi7pIjV +I6d'dNV&/l2%iEKo_^d72?#[Ni49Y]F6gWQC[SdZ2r&7cpOXbM-,l3!2)P(h`$MCncN&AZZp7L?4nCH]4KNs4l2lK1JYU>]k(1 +cV'Hr=^K;BbChdkHf0PQ9Atls7BL@R,Ds-uX8CEnd\V8cN(gf>q:SVTRIm,GN@i=P\Pqh_oSnQ3k(Q2> +@9aX+,VNttAC?Ck0@R.PQqbs)GV<1rqrRX+hHct8&qXs'W&1#G8XC-2/ked"pZEYKI$XBZZ2?BI1pQF> +Xem/pRMeiErA'$)n=$jj#TbCY!qHN!hPGWmH0:(j*/8'Q7<8:HsCY,k4oCO/q9<.4O( +P&F2XF"Vh:fB!NrhHcu.4WC31CG'7tTk6@J>iRAf?fnD:iTeT*P'/C.?2h[(Pa[g\2jPPlG.s,a"1uQF +UqOV8#Y9k8h\)N$L3E>9Ec:8@(+OLAMGaGV1/iK0hMO/F=7C4Omd2g//_-3he;l(l8AhH1ZMWQGPKZ3D +-[!e[)(duu\]9W!bS8&Qo/XEi@QQ+Z6DARaUHgqD$ej._4FF"`g)]7J@kD`NS4eT`VR2'*V77K"Qe20J +r^[lcn4*QQ,C[aDprUENVFhqj@PCN%+;nAR]?F#;XoOGBr_R]trpe,qj=&8)>XA?5VHgi2\0A\n"SE+ic,Dq`!R?t+9gAOf:L;:/O1pmh@Q8>nV'^)W45P<,e9g_*b35q1:;27X, +d1I#<<"tTH?.`6;MGgRI8XaY;^u=-\VGfN"#"-DeA$^"HhP2Tu%!QZJ>L;P!np1`2R[!3NlS#JX@fH9e +QIhm?H.L]^[[%NuL/ptD_!;SZ"*oli<]RhP5arR]S6,WZTOa^lQu,T"pJ!N:>iAnTJE0MHo@B8uo,WF& +@G-ScANKt[.(AgTiBnbPs,R'Rhga+#pYc]mpRAOrF$pId_bm2Ds,Q22M;&,[*bYJi,=FA[VH8fHn2'ST +)?`gaHUoJ9O@O3A`#YaTT!fIQ6huUBB=jNC&a^>M3FA>?oUoO"rE5dqBud5+%@2.p"D"4'J+hGXLJ<4$4g/6fEoqL,L-uMD"Sl +k4$G0WgB;Crmc9_]*f;eT3%i$GS;-X;6TmOcC7'@OukOi@IIpQPU.G +PE$Fh1s>8m3/3H#*HkiNgh)?7\X_+7I[e^[\S#n8*5cK:)cpM(@!^c7MN];ok\k]%DH!=eH>^(LX2T"` +6_b,U)shge_h!5?j-2;K3q'7^T=9gsNa[3A1nA&spVM4;T:aiTc[!0BJ;8L15T`eiKk&2G@e[`Z?(P@^ +TQp7bTEkAL%`c,u5,FZR7PIs@8O3_Y4M+tbe4sPb(J\rAoR5ZRr_I6MXW.iZk]"YWE#)0To"nQ#k&rBt +B_'?[E1l)'pTlU(qshOS:>MX$TDS%Eo!.;)X1[6"B@"s(k_0[@?9!s4$CJ)?IE*L"r;Cgj0-#@d],(r\ +[bM5qkBm/PiLj!"r?SV&keVC:Rso%YY>XZ*#KbSQX%6Z8*dZe`Lia_kQB)j-lhGmCf@RA+`-h(`A02n] +^ii.:+pL.j.V.]G3j7=`X/!d[CIZC<`\DPV,b$a +OPAQ*\R_Qdn]:*d09:JD]d)T]@6F"?gL\!P4jFf[O\'TJOiqU^PhTcu@ut`clFjil0H)J&G%EcrnU3"J +?WP^dHtGgLmUoLERoA0VPhVJt<[>/F6R]ENpkS]QK68j.2N+%hQPSGIfY0`iP:4Q`C+kkX3t%tX4Of$-gc\, +rZ[Y],p.bW#qfqtJlhAEM*DNRN6Pq[K5WA)!ZQ_uI:]U$)$=`WC55BL?9#]=#\M0GB\6U%,$M_GEaSY$ +mDucdWg!&_]\Ua@;*&ZGn`C!/cUi$deP+D:OU8dP1#tPa%^S, +_9r6DmZ,uWGO4^^7U4:AhRCa^;JT4W@%=[N=eENtL:H9LUVm0ArIqL.qP$a.qcuTn_66bYQAtL:]LfL_ +Rsh!M3"TsOU[kR? +OJ2h`Qo`V&Sc"e4Xij'd(]ukgGRa,O*F(!EosN>(bSn]p#W +S/G._18JO0Bi#T'Xp]/+p!#9-mY6RIK%!@QV4)Co-bQOVHJ"k6HF%L>Z*]T*NGY=0-/>u%!qC_Ahn4)7 +>uG=lE#NO[p00:)'6m.SEH@H'nsT6@<]%-_Wotl;:P:kF=#eGg>5t_DjWc`b'YX=pDoitJ7uOciUXTr@ +S@r:+kf`jqGE',jERb>BC(*hUT7=n-Seb9r]r7&PMGB/Ld3_$VNpdn.B;&V!k1D?S9)-p*2SWVUs-,I) +Ga3@bN]&fPl$LHJUVHhhE>=`uNK>:F+#--7R%I3g,Y1#qht4OJ+X:01Xb@D+FOPA)R6,@1S>.7OHbX:d +kc'cUdX/2q7UYC0<-5=s0i!D^c#hRl\*f=CWu]q#Dio9Mm>[O,hKWc-oe>d+6`dkn;WlnA'^ROO]oEnW +5B&bb4nq&T>;3FHCE.`!(bqJD+;GhsT?5LrlP;Trg9leq3%[O4NKp5Z>k_NB_f!o;W]$nH6;DO@fVQNU +0UkME8TNIuR]m/uM^0=nhN4;nNL-ZCH;epAH:9-.<>8DjDYj@a7>p@MhTBuYBg^8lb"K*t>*'L`SH":- +s1:^XW8F@=<()Z."!8p12tOd(f9Hep*XiLV%h)=CQrFi'E3QE"PhrA)_OnT&L;7rKUYRd2b'LPQmJ&d\ +"piaY2J_;rKIieT\?N@YXV?d:1(_r.J,b!3/Ku%qQ,3G+U.,"%+TIV"7Jo1BIh_FhHgfC1]M6+)I$^6h +.btKI%URX^&UA3+i_^_#,d9d70P$;"RBs/e,9Was2:KJo0+B.=@g5QuTHWS[a$/I)rm2jYL?gUtY +]LD$MZkqrh>Q6gHl(_k@"=rfil![S`dLEh&E3p#MF,PuXM)mFTG&K6A1;$m._pqWV:mgc[rQW=*,cWf_ +LG^_RIS7(^Hc/(SGOoE@oFUdR0[2)>dGK07rV[a6`LcId[<*RmgP0-6(f@FmDN&<)]p7b[,0#e:Gt?6Vg,bGQ'*I(bA=?S!]>'s7).N$@tW+"_5Y +]Y/l_&_,]3\DZQC3Z\.!BejEf>=8h4deDp!E>W0!(_pmJ`g7%(085P6qK^ibg-2PgP$[8Z7,A0BkQ,\C +;4G=g&c0B14]LKD1CW^.U(#qUTQm0T_oAGs`u)q_Dd'N[>u/.gCOFZ/0&@dBLI6_2EusjGQQN<\l/5np +Q+TO\_4/07ph%d'^=e&\Da0X5K,C,_Hup%nA`SPh2`$.]El'MAIujhCX:^Nd)QdG6N$q,);%ka>CiWMG +4:l#-9pKul)LK5:['H8,?K=&$*70[Y;+A$j2C)bTM3)\&:mhI)g1tIm>0NEo.%Ui#Vb=00TgZI#b+?I$ +*-c\V&(>LZBJ/H=BF?&E*%?G,(Lb:%KR(QK@dkt=SAn?Yoh'*U!s%d3"_S8MK*F)Ffrl>'ARF>V%BEXA9,FB'+kb$gFL\>XVUjq'q'J9SI/!_K7/AC*]?pllq +jH,JH#VE+_-*K8s@*TQ[il^%28L*>"BGRjAi_MNt[SblAi(4EGbNV_B5jU)gqeY="Eak.n,#.fN?6W)K +H#7_hG4HrbTJW9lCZno0oF@`>Rn&ZF>;@K*XS8APB4T_dF7i(YagiP9JDRu(/kM2NH-a%&fTjWm\oQOV +[K/*SDu%8?&;@/,bc+qS_^4sh\ObHN,t=,llhM>j#NZ=LP%I1R+@EO=Bm+K=imdKU0c-2';]/N"US#pD +imTO3+6*+3QnU^^1->Re)_f@5L,/@rA343&57`unV+-aZTu?ifN_fZg=+fs$H/=oNIt9occaWH>9id'lgm7=N[J\PaGR6!DOU+6/Ls2RW)k,'m)G0. +A\^07g,:dEC3;pJR;V;dE9/rfOe2m(](&KY$[6km-\#AGMED[Kp`]e-^nF#iVpO$7B(k7rY?'Mrs#RYF +(4^EW=6A%"QA1'jp\#R:[4:SOE___QM\5jZm+e2?=,=-P>IdDGM2QYTB?)rrf`PB(X0OES>j!ikqMc\c +2/m&1rQZ"nr(u0u6cq0C'2l`==YW1p`bZAp_eO7!U(1/1kF0[hoA%8okULHm'@$t`(K.CdH>&WDXgQkqbT&K)*M3@BRQ.d<+^cND@C4GZ$q +iNq(@8Jf\LK"^g;qH"o26L)Ch'@)\o\c!TMOkg.]=h3BAWSj2XfnQT`+X(2TRt,3.FMR[_ +EQ9Q818W'O\a!;s=(Zk*ZJ^mu$M,1/j1]]1'GQubSE(V+o>T4uFc@QL-` +Re)5+nY;4;Aj>rOk +7rWR6XE\IZVt)8!jXVJF-muH68)@c!k*;KR1G^KI*38SuljZ5(FK:h@+qJQPV:[?`X-Q+^ZU^!bZ8i.4 +H&um0A(&dk>o@f*]-aqOCHSfQ2)0U[*EP]a:j,tl+3a2dM(1;mW)(W]qd;s/>[]oNM]?!21M'M;EAID5 +V4_@lV0\Z7R)a0%^k`7NZUGY(%J:dWa>iaL@+fF]VPGR<$lfu0oC(>(s#mH)c6J@mem9ibf$65@29,O^ +G^;Q36n0k9GqdmBRXcm.QeJTR'F5-LQH^J6Bl?nljjmb@5tp"M#,Rd1(YQsrFF+iV9bl'P%+V[F46iEB +6+AXJn8Q)6Y1Md$J!G&t>GQ8r5-iB/f)&b<>d+\YHnX\_.bsJ?kL7gC?H8!".1kf?4nq'?=_K/D$PFAo +;Ri50UgiG32.XPk0(5p%=qrLb[q>3,D(h$X-"U3[%T^\$&ioC-Q9q4`+AY\q*VBa7VNe^bsC7T)4n +ZFS<<^t\0qepF1?jcVKd6O2-\<2uIRU0qKNm@1i4YW/m^Y>$q(^f.<,KSPb"b;s1Gc%`-YEKB/54QH3h +LN$jc_$W$0D`-p>kU1O[`[NAXZj&GN.N_2s=.2?5`UhW79?VAqT1$Znpb;5f?d"Th-,q6Z6DOd.0+7N;BK>r"/c%9TI16 +F)VY2`sq)`'OotD7d?E'@+#23@0:6"F4+W%B'B]d'_IoX2h+3;fM5s +F*;Bf/kl.XYnI7\ap=L*'5Qm/ioIE_SU<3^Po?/POTRakNU8m!33ZKW;Hah5c09VD4l`5-LQ5U&f\89l +BE^Ha'jf[Xn]cej3F6W&1d_5B;i*)H$JtE'Tm50m5A@IoZ(3L9N%::7'5p\6ruj=uB=]XiGUWkd%u<;F +f)(pWVh/7DTd%7O)5%aZFu[Hhm``teYL;R>%WCp.qUCEBaRN9cG`BKEg +Q>>o-:MDVr6'qBSgl(VEC#OgH[2Jif9^t;i4D5G`t4tU&K9' +k6a5rAG8E./!i$sBg5[(T#Da2eaJn$?9dKGDg4%_"ElHZiPD],p.8BlM,3&Y5N6nVf+k*4LT:CV4R)fR(-=1]7J`^8''H0:9JB0,VCXfK],SN/*YR +bgj]R8*3EYq'tba!n#ro7-i`t^5JA=:V1)sr:p_uiY_QecFI&-1.Rm\65P$TYV'-1_;&^F4X`(2&tf0P +f(BE@I)e/A06#A\R[9>4+n +Y*[!6kaK_MBcm"!Bp5%TlE3Y=f\p)->%s&P*5Y.1:O?8TUDj;'4Yl=hP:??'VDOmW@l'1Yh1Ik7BtXcXGm`'\?@oEL-,>%54hI=uoe>KjGB^'/N!Xg"eOm/o@rlVOr'l4W."qs: +D`7$jUa,b2S(V'D%LuXSQ#lPXn!?]iCiFg`IRu]LIS"Zj7l2Z?rS.[(1+7KpO(lP$N?6#a:5\eP^2M_? +rQRh!aXrOb\^WCj(\q(`,2I6BCp/orBg;@]4NI,;bH]BBS-&HRf[m55-f2!sZ#8M_H(B'cVp2Ja)9UE0 +-G*24YB:4sD"9#,552O,(?Vr@ftIu[($cWQga$790!qLI?0UcQEmB0N/nO&@GH>op\!^^]6Hc70>D?`M +l^%2m`O^b>SY8Cfg7_m;'Ru\%*r>SjRh3;Oq+[*NHSl^=XBVmglZ[Mgrqa2@fR(^"lsJ_jXJ,1^$he`/ +_ODqJ4o;g%BT098).'Rcg"CFA^+pSS/oLG5pPC)E4a(Wg@[kCpE;^s@Q:uM]F +TK^i6O$OTQe(QU,d(XXc2;l@@FlUcZ/Xk?O-:dB&6Doc-b;LY9Qfbo)98WY&L,:]jleo>c +o4Durp/9c+P)NN4Q:3sNZRh8&gfY-<>ICg"I*@&.#X!A'#u=JLR,qbm-Q1sjF3,`h-`9ZoK-tjlLD3k' +Bc]$=EEuN-jJjOE0mS\)FD8i1-h-nDC^1Pa;1H:^qLL.K&ls-kPGFQld +X5#I>'oj7lW(*&t=j>dJC6[lm'u;&IqsU#(\Du]]@2.km`+^WHOEO_4#&V-`)]R9he>c+I@b.rPaY@&` +e+4l`rL]0`/e(q`eXZ5lY8YqSJg^&')*\mR3>=nCd4We;Nt8 +8Nesg=CKg@qTuRcYU)h,G5k/YcgX&,6*7<^iAWSqMH^D>kQl/=5KbM;D/l25oI^u<&eCI#5o[&+TrpG#j9VcM +B7SDEeo7%=rR?70L$&nu5ubiiMGb$'Z$Z!fa1cT\.quiS0PaLb+ga7!O?AA@njVf;)q[Fmi6N?@o5Q=> +%aVfnVEE/B1Jmf:q.l7%]ZKKGBXs/'3C`=pQVJ3X^+-=m^3b@,k3bWU)r$HgQckO79@%4q?/9oH/o`Ye +A+Md*B5UGt2<4oN9"!#Y(-UAVNbK:@;Ju(?J>G>)Jg6Wnlu-\nBAZIeJ&/--:*i>9pmefUqMaUP@2t78j-lH(T&N(]A/A^V/N'Z[s(Hb@bca)Z&['diQ=bcI3HCB+:.+'/J;X!U +jn9G3^Hm@P(:jn!kAOM6V:AFDRVs*[C@lu'r_3%#l+8sW(Xo3jSHl];j-Z9pCgPP+kdZ+!S%VB"C,R$R +X_+t@?d[TeC;n^l_d$F,u2LU[5kUP!: +Qp^IVL(1W#m;_?OO,m[CkGt>M>'/4pGCp+GHY1Yg;TD/&U]XimK."?mVs[u4h_K=e"*&Gm%DO,tnnRI0 +2\)3)Y?P81\ucCNEp'VbjmSjgX7#WT=62H9():!ae_]SedoD&ZI=q +MJraH,,&\RY^3''ePk!;FPp5k8o0Vgn>.43@>K-jFK9mLpK/hV +XQ?_F@uZs&qioMe24OIr9KoN5+S*aN9mjC4heKpRE#YQ+X9f&2TZR(MMu*ri)<.ud<,K!uATDqV9c(,; +c_3.Qe]8KJ%#DX(0&*uiqNfM`bRiY()e082KpAf4YW[)eFIkE(?%b."/oXd$B[PC=QJRmee\\\<8hbLG +XPgdGP]qm=eN5Fa:09N,kGgId@aHu!Th5rVe1Mc9?"aX+Q\&@'p0!WHbF4L4nC`hW!!W7D3,$uY'&DDaq +ooA,j/?5%C9nR:RS/Fi2ph_UaG1]Z?*K7?>]EM=305tF&iHY>B@sNR?MfuC"Sh'G4n_*#icpgdp/03eA +oBb2Qq1bf(hN$u0(rW+4kkW#PV^akl(WL^i-LjDLF@5\8?+;-m1Efe68-koc]/hHC<:ul,c>VA"kKgnQ +d/W]S4P\ueAIJ"X6h@.eHN9S@+pON#-?)\5].CHl]lT'-gAHdXA/7')-&6AP>)0=;s+B-h#TF +OSTrfEod/TjJ5LS=e^"=]kI$,Y==ut/NZ;J@t"[o`adDcST./!YHiVs=/iNPMl`2s!O&M`&7LmSV`1$;jr+n((/jBZ-rWge?B+n$u$efF=!c1Ve@DTR<6 +:X?YM5hY&.g[TPC;f])h"gQO#,35.F7*Ikcs,WmXHLF4icPun( +7*MLk\125tU2;j/mm^'rO4DCS-a-0Hrh'K.aP'lkr$J +kk8%t7%"5UoN:lbLsNhGJ,ZG[-bWT@3r'6O>jTeO@m/.sb_WmB\PKp.@#^H!h(FX7SV_V\YSjT;I#*^k +NR>q:Y6)j0@ZW>1LLT6pAot7SnbA9gK2M'b-.J$o_'E0D]L7_'_Dltb?bAOV+7eMFO7:2K`JS`VbZ';q +/fA:Ga::LHfjkG,j14YQ'j7>hO`,qN:)K0k\XFaP+nC)X;qcWmGNONlj$X,?cA^ltdu^u511JrCPkN51 +%ZK]rGdB/3.C4?-I*HKif>+J$bc#OV]J.3%bQ>s7h+fDApk51V1.7=%kB%V?.NkYbMV,c@j->+CHKLU? +G^rlXR*+ofp_)n]bhJ[JB:,O)cnC46/:do*i5$rjP7\0YGo0Cb +ALi+E^Lp)Bh.(;N"cdk3gT0BK::RD!JeR_h%e^bXS/]Lf.VB2HHaqS/Zr\PiRhc[P$Sc/NCo"j9ckC +%p+)$Gpstf16SDlOl@u'52/5X2=`2?NrhGaa6WLU1IcB`U#^C`En7NfV!g8kV!#MOXISA]Agf1=Z"iq$ +abULYHkV`#Yk'(!7.GN"a>\,"N1uo!'WSfEU!gMWIPka8;l%Os)6lu=An3):*_Y"F8+[7Ljj;nL'N2Uf +L%JA:+gjjNV"Ve6W]+7Q4o/d56&27Bek?\'*&gJpWPa72;6hG +=pq/g\b*3C[gs]ZF0J&1Pb=96qA$N/J\,U9n3t(`M0IbcST.N\bg` +`k+s(Ve^CRUoS(aC=:]JS([:CPk[bu/IR+b4>ueb8/K>9ID_Q-@l%UGlA]cdqEuBAu@k'1Ihg1-`>"4er4/K +:G:gX$-$R8j:QRIdj9?WAttgWHDq,qY;`[sr,'(S-$e3h6doO$K>5%=AmTTBpWadZ +Ms/@.=Qr^lE6`=C26Q-rnc]Z(:[]=s1>u>X4&;:%ETgs=>;,hll">(1oA3.(AR2RoWL*;GrAW!%[nBB# +B6e+SV2VB$]rY;mePe-eaoarCXNN(Z^$Hk67H)];XY4TP[#uIgO&t[o=g&l^g%;RV4VE5ho'?N_IIanl +"[29dDpeGT1iC5&m(`F:%F7MK&(as`QT\h*WnU5:&Z&h-1;4aum;8Y*AsWhYV0NCiMJS@RrdqBr)\c4)X`RPboL*ZKMi\ +[&>5Z>83=qrA%^;Z>jZp?O'O$):N^6P@-b?kZqg>dKHLG%7qE%-DUH%Lb&,]Y4"!OC7VeC* +>(+GC('t/`X(OrEX=5/qGD(sQ3+^)LV[Prdr??PjBNa`!#:&53$eJHhaCoMIf.$9oYD!8iTSBWKHF["UPA`(k(Q@KCquZ673ZY?91" +/RQ"39"s;0^3F2>GHC8Po<1,(hkjmqMGBF6;;o<.aJ=19at];tFXV4@"O3*.*;"*.I_LdHXcc5K*YHp) +/#'W66B$lK.:Ti*TM?tR>&rj^^poYA7Ge\)d86G_C>qjC's>t";.(2:]jad?Ue(K(M-RW%c%tX$U;l:3 +%_%?8!(BjGA95O2W\5:.'iBB.Rfjt9>Pf*h(3^o2:I^CMU^Pci7_pu4.JJ?agmgOACo8R_nT83>=Iau# +W.(EX3Ps7#,-!;-DdZ!+Pp6KJl([n`=!ikq.NYS=g8jH;U'po4]l\N.FjgneIDdA10DQ'=]+%aa:h`<= +JLQT\<^_(Wg*=HF]W6:JK+q@6oiZ2/,GKLk&C,aUIUs#IWg1#*BY_^p4Ui9+h,'X`$W_B.GAu,q(uHC. +PQJg\8moirlkCJaadtW3.9C%teeD!;>%I@N(f>_O-m^(;7rK)=I4:?d,H:uSE5*G.Sf\PAI8O9H7.nNO +,"5HAUkn:Pf%e&B$K%Y5g`rgPVE.XDopBgRgYW'phWpDa +>iIGt_iZprUF_H?-]X?==nr\8icsokWlX:d34VJ2D*D/AURr/H=-(GXM/p9TNanD8RJ2L`EO+TL;rZm# +EJGu_SGna4hEo>KmQ"]VS=bg?3]moB,TeMaZR!g%WQige*Xm"Kd!^Z'Nl2Mu-#ok@+,Md5HRNlm^N2pc +CN$s5NqI!j&go2>!%!ZSKb>b7[biB+XrIsESBQ?*OuSJ,iZ*p6oGeZFBj%1Ddf5 +V2S+-&h!65CogU6aCc=8j)RQ) +Xsd<,&=g$AkF7l]ntgPE4`]mmV`u7_;\F'c4foWm2^Yq)`'DX2a=Wj'k#KI/GTbAla3K'+b2K80(nqctBGTL*= +_f>C]4SjKf=gI=->J3-s)s@,\jEl_G,!(SJSqdQIZk(d-Zhh`^;Z-GuZ;mg=iqdtpiH(a(*bG(*9$"N^ +PN/JSdSH8]='ODs("rq/o@j@-41ZirF9h#;gt<3CYp1dIT.B5:<%LX0dV2Q"iFW7;e'^;bZR(?,;MOWs +AT*WFDl'r["F@3mYQMQeD\6e7S7]QeJkDCaXGV)Hd=q +8k6s6SGK-VC3r$IC-2,,kg'L:Y!nc.Y/U-W-FK6uj@JZA]TkGWN4krWm2A&X8o;Vrru>/fhQZ2[cbEqU +g+VL&]+r4>o,pD-i2C(qIGbhj6XO5+@p;W6U^V[+[\SGG9Io#Oi-BP`*I(?HH,iIPm4usZ>B9OTd^UTD +^*9]='RP3U-_2Dfg%.N#i=G;RBoL%(%K"6CoC#d!q@&E0HX$'GY!h!g;taCe@ZPE**9gYq]fg(PEgR[i +)kXO%];j(cb0[UG=C#8t,Do\Cp\8c(DQ]VSd.`F6'6Zi5RW*K6fQVP!h?]8F/T`l)h6fiMi4HTZ4bJlh +%]>DQD0WKWS]l9F>?'=I'5_sF]%aH2ZIYBJMAg;H[/4fdGE>ShRTkJ>k-jE!ESK;,>$PQ]f=LGLCu<[P +9/N2c(9U*c-#!q)]5-,7EHg#F`T$"mtuVY3W?-_&O+\[u?"?JjSH +QhB0$P4jgS]QYjmOX$#Go\H%dYTF2'RTm$^Ve-VKJnP9jl3!&Ys=Rs"[?aarQE +Xk5bJ\?k7`ec'+$JIOhl-qd;XAY*kb/33\VZfHAESgDFlap]NO+s&(XHTg5spZ@^3/3-H1c][Arp\3S)fG,mWTSfji2EQ0p1`9/2a"--+BS +P2kcQ]3JKZr(UeF6+u=ag!SQ>,mQ#:*dQMoHY:GdDtYV#=-ai8gNo/*:oSpm99)r4=`RjERl46RC.e*? +]M6U`l%Y:h"%F`lCW+V<5=;5mSm:F;q*BtsF,B\JZjRVpF0^$/dC4T?G$`J"k14PE#a9K&nBbiPkg5)m!/ON/$f#GH_DXa)cH[)b0q4#.K +b,*O7%(]9_ZY02"AY[,0.K@>?4)HC/2)cSJJ&5%>Sppg-bC/qW^im7Orram54f!TZ`uu\g@H"&FQNoG( +`JA0[Xg[j`Ac<#2-Zm[!!W,bXq'Q4[\(WUW'(\nlVX!t)n==mr:Ui=mo1um2N2/^>:(3I$H$EkDP]i,R +0!CV3n%L]M1pDsoo(MtpN]d>0?sKm>b/d?B%a4/tq'TRln","1QHXZbL9[`hLTOcMAB'pErX#>lcR8_q +BNTXf$P("Hg+34$PeTd]-i\j.o`/%@m(%@`tCg4G&hZ]94'8lYR:DdO:BT5C(s+S>^&M3`r_IHt$EfQ2s`o[6eR +H)>6-BGLPs26X)Qp$^'^h6bQI5"BaKa3V)uJGWl\F[D7#%V9CZ*Xe7V4A3sV.S9sss"O$V&I+\`N +hDTH1GUq8"jOdOoIFV!tNukH'`fi<4jN5CRm+]oVC#I;V;tFukh$tGtKU441$K(=Pq"`8XWNjcP.;P!/k)jp7(;Q?GaVIbJbc&k'1]ka7^mWH60E[*_W8^5#[\=N,hT- +h2lZ_>^@j4!um%"mkN7a]1#]q=/+#T[Im.iBr(XWNRLtRdWYO/](X$ibSQ2eFm+B$^..s7o5&/gu +r]?:?0AOFdHoQ63(PP<#f]IbVh +,rD+&I,?d9Ji6!q_7mEHZ`1Spg2E%9H"f0Z1G]k*)]D"IZ]W!sBJq_k:6QI?G''(nF5i:HmYSS%:q]#iDQ4 +Ym6%8pM;kf'E1;bdVS4>*ggQWV"1\A<9;AHc%a4]f2!mbX@fYHiVP/u?(09;[!S)n]\+N>f5f#mctnYr +HY>=Fq/2gnbtIqJ29"P9g!;[]3ie>omN%()d.?/!h^<6rV9bGjFN=50CL+%!%j!a^mj>0(>h>?g.sS?K +B:DMOn(o"3iFJ@<,r5@8_04,dl,6^W^U_;=:%;j0=5h#/IA_AU%A)'N`KP&!\5)E#SlBX@[/#`0+0-\J +PSU_phPg(GkT'OegYs)(pGtG4>/(+p^FVLaW5$.Z:jS/VE*Deb3bY.d7u(pQILR;qQ9Hs=^=-#]l:\h_ +Hgn4^Q`Fhm*X'H9&Xg\sCt%e7[C@8&q`-)-X*nMnRj6W+F%F"7dc/id]n6fm?;en[=sE!DqKShir2kR'=)Zrku4*C(Gn)rq"^jDNP8h25-$e*-Ah.ptJ^oSg='MQsq%`%,I@br)U!4Qn*8c%!/T%A+V%7F?7g;Q6Ai`)NUs8Q!4(i:aC.Dqn,B@.lVg:Pr](3*D +8isDJ52A+bD5M)KUc-[LAJ_`l8$:)BTDfAQBAYH.GFj<'Y0FVINTF0!NPiLYj;eOgq+QfSu:k2(WrCcJ/# +Xc?>K)5Wn9BX8`)O3![LpWAmW$hh4.TmU!oPV4PkpFu4,dQ@0(%0$/dp3^"\+!d&e5"JXeePr/OW@YEE +DpkY1-Eb=WE@6*qB_>71^'t4UXaF9#"-<8`0Hrh'K-dntlkr$J..;VhLL7\UfBs[jc^rKHI`ieiYs3`g +#ij31ULNWrFtWLOhm&dQST,UkaaA):H=peXS.Eiu,0YGn(-uQHJ@2VQbSP.kAEF7eaA^QuhoUg^hu/:( +-F^%_GZH"k*0_1j5,6j%1@kZm]ZW*<@)"d!k)7$tI,Xs4B"i5b!]+1k(HtXW$f'MVT(rH=MXG`md/J?s +$s;sn%K`DYAq+<$+_2,JDL#KYFX8Q(;"`$KJX#sS0_R)CZZn%h/-DREiU`5'pCu@,HZ$Se +MZZFDQ8[T-oZS*mTn[hFP``-GXgHKjj,dbsrZ-b>0>hic +%,P&bcAKd>1s0B%8Zl/_P2q>2N6\9c-$tPI7sTSl/"j;h1,]TqJ4N3,-e@@H1UaAK*!9>lcM2GKWXN+G +((5nf[CtPuNXl@gcVO+hQ0SQ7>0V^"CPbZ=k8i'cVV,6%d3ar(m0_mO-mqtA3oe0k +Ui"(lSHNikNomn;E)3Mh:QBIY\?1Z,945Zr8qi'SN0323:12=]Vj-$[roWiQ/A#a,\WcYc[CQ*-](&,W +PN-M7c&#RnU0cq,M6A+58[O:odG*tbdsIks=;<=rH*1,s::>U\%4ui87Q$\d0`V[+]iFZjgRBfp'dP3O-&G1j=Z`&MR7g0O6e!-/H +4Cf7*[\W3Y@5'3GkA/&CpN>nc2g5J=ZdF"!c2;OV9B*RhD[b(E@X0hFKZ^%QerEW+5*u&DU`5.C_T6YG +2^s:nkq*46rJj\\:"3A!B1S/>e1O82ZuT_No\5U?GW_Qp>uo(9Um7_8[\RrZ258*'H-5*UlR$C?Si7,K +4Yh(i;WhiL%Cemko^?\4W%gfirc-38()^NsDmh)>XDV>2pkn:Pmo5=%k'F0826SsCmWt-6o$k[H86.8. +'e1e`]GE=Qa+c=h7[60s]r?HF2,e"`]PEisLM5Wu>3TY2Ml+WXk-o*IQfUR0gm]&(X@^"bi)c.?RTaFc +5-]%8&=nb[i:hT5jd%Ze1,>AC<)%#/g[C;sb_WWOXqWD_MgTO!dO62-06?K\DU4mVoG+uEG-L4B4hL>B +]rX_!8*XZVpL^4fp#N\"U1g>q9D]$ROtp!3``PfqZ+:/iRH(PV.X/RYG]i8cg]j!*T3kL$VOGW(GMhGBo4ouO\Q)374447$&C +pi=WP#+Zu4:8-f-!GP0/fs2iP4ei'%pS[/A:s;77c-bpH +eaIg4G5G?$pXLJ0"gp:bL3hmV`GMY&Dk%:iNLWV*&N=TdcHW-nP%'g/+n +CHnSaL??h>`[ie)9S)\/Q;ZYU\M\jRP+V:-9873["oQ"[4=sOZr[7pgVkJk\%,n^=-=#glr+PYU*g('u +q(Y_.QM&+)U\#-/L@ga$!#3'"=7@cLSV=Q&$k8LdRj;cVlAg=f]jmR13/87&Gpd*=i@CuG(MaF`,(g"g +VaA/i$`OTRUr2@7SW'R)iSM0EdMjT)>UmXd7ZHlH36(5lGV$50/YGh6]!2!tN7qsT%a^jqTJf'-7udq= +HMK$ZAu*:bLrlktp6ET/XF(g3*el^Q8dAoS*=JB2^Rbin"jZ&Y59e$ZJZClj%,tI<_G4:sL=Z+Yk_7Fj +T6K8dK&N^hR:`-H509T.9$*8Gh$fVO4>OW-#>gmTGr[(><][&_MIi_&Eoce;fUp93/StaKD=H'[A/q!L +7u,D;[ODru+%cK)`c3d_;h8Q$G=hoT95QF&1P`kY%Kf(hmC-4aUqX99MX/pi8d75`N&GAC/Q*$/(S!"5 +hL'-kH"KJ1[(<]6ecJXlKoC(.o`+_f%a#Y21C><;^7:=E&9P4tMpF9!*l=NYp#mcO-G\I'_bjT%@beJZ#*qS-.<5AW$lsgj4=(fXG2Ud`)%Wq)E/P*X>!k04c;Z8 +aASd+E_2_^5s]GKN%h/SP:3?-QgpS:mn+X.'D0S*V_ai0&'$JFdT(#p8974Aa@^jF<+>26V][3Q^%+*A +T#ZM>iuL5%(Bh-iNorYfa-Z!%3POR9,T3HSE'+rW_smoAC2c9Z!!gP_b,aHFfDpN`T`YJ=':f^@%$'M? +cLJ"1E'1lbN`V.WdqWf?]R&V7fm2:2^')KT.UB0841*3PN:_.Dtkj)Ou7*5>0%#`crRrJT\`kGU@hE[HY'KnA1"cLH;23I[AOEcM"tWP1@So5K)nT'1-@5mY:T +c'7MSp]$^]$8gUFdn"7>A+%H+ZS$a.R^(<4iW_)(\G +RJ&2[H:I.>/ceHok:!hUca',=/G2uq/t6ncg=#YoSd!,JaDkPuA$V46J""`j5$H2KC\/BIFId77)i^m2a[MCXR>lZ2jPuQS:WY2P#6#(?f%bPUs>&Hu[Z11fik8 +UrG"Ra_Ud-^0IJmg+EP]@plcojWDWA,fm8u>)!IAhLehu,o_o(;!!G)k:FlMJnP7JI%:r^.62[(J'#oc +3UNY:AX7>=5O"?,(6^M51(uFAP89'SS/e(YbpKX]LPB0P4Q&Hj]Gu-aI:gabN&R73_iaifhsb_m>pHc. +0lBfr,WJ.AqoCn%@i?6/G,'M-4jca(G+\RMj!lOWFSMkMgefFV-0LiA4d%e*L?.&E:e8,8&i&oZmB5$! +HB$PPm"kJg5.j=Q-#.AB+n`iJ[7B1^7s'QXOJnt'OsjF?a*es]9"DdOA)_Ve`u/kb%7t=/%>:##f3?6) +_e:@'\XpJ;0CL!S[+HI5Q"QVKGdC9]M0`rNhl"`U,5!',*dFq:lj@`QjRpMRY-/V>ES_o,Mq-\:26/ZB +b+AI!Ur00U\?'U"'h-NES%bP?9@QTKH7Z;HJQ?#kHcA,O+l8J"?]TqV] +Pnq`jNdaGZLekWlp[6?4:;/41>1A`(aDEN/0G7c[rVsGuMH3#bb5t(0kfIetD +i4R!sCjqM*&Ns5r]()q$i.Hl)&Qp81FYMXu*\VUb20R\@RtG.7KG7b:/QBB&H$ZJ&"l.^X)r;0d[43qGcR3+A.@%SW7WTH_kPsC*KjC +jJVKB+aC=5O]T6RV;Pl,du+ZX\+s0F+"5r3$T\9L(4YZ56@+aEO#\1;;3#F,D?k^,D9G9>;ZN:Lu[DeGuEq;R:*^I +Vk$pL,WG''.jbVLD*2aK0)"8hgCIgRSQDJY'ib,TAbY$j=dQl'*0#H#. +kpudjI:WU"@e%4T]gHSI-:,sUfqE$mmE=!F.\b:ML>r+QZkGmei#Kfj"aY1fQW%(t +;[rGtE5!ar(Zm$u8[Ko_-,s[Y;S@VhCRRY'6.NgehV@FIN=kK71LsA:FO'?l1@C4[)^nA:SATu#@NN6+ +l_&Tn38!f8BQ'_Kb'\dU7kkfpm_RWE?5o<$G@`:1RW]?=M&J-#ENQe4oX@*HpUWs)7t]N:/[;'3%l`ep +oKpV;R%1u_^VOD43moTUrZag.GgZVonB&VWNQ\DP:=]S``Gh +Bhm!L90_X<=/,49"rI0=8,^`KI"GVp,4)WDo^>o58(g6SJM82:i +`b_"Pb.J2QE"ntUeL0rr=C!9eTf#*)`fFF4l4jaU +Y#+;t._kpMRo/IX7jl&' +oFGK`Rs&EK?ArMkRR9)TV>:V\]>.9I3-(Ce*jO,(H\'+6 +#`tDsaCtRC5P.S+hQ?`S4(]0a.AeG[I(.O#A\4?^mH,CT"iOU+g$*"f'':rqS*cYA$WLnq*,*;qIQU00[UObpVsHaPrKo+>TGrgef*1+HTO9S\X1a>k[/@k +3VCf&m]CA6Q*VMgSZ@<].^(K1jFu2IjPs7@HmRGpne!"XB*?j+0-*5l7Ql-THGq2<)B8oL2h*iC89'E7 +j+k;9A*82.,mV\2r[`!s*4EY>d!nNAM#n8IBJ+.+1PCCM>6kYA,2o!#Q>"Q +,EV\AE7B\:PFm(Sju+nhnOd<+2rfOZmk[%Q5F`bbp*?aa`=Fdqo]Q"`6Z5c`$7n=8hH\0lBBV$UZ+F#U +.9+IS$S@om3KF(]n,t`WYBjoZ"Nn*p +CTOi/4s`dnniK<[1Tod[?i#U?cI"U1J)9\(cAp/T$=1QSlP:4dYn,WMY#."L&aC:YL4=<)arO0eL:Lq` +]7BA2ehnppECOZ#)8]`Z$bO_"FS)Kb>UY#4`eZB(/2 +3&-/8kpK)cZ,q-JRQ20hf:]\A\q[k!dPW#TY2PbZ#*6H&C,*uqO]jl7F/^H=LZFUB$:8LtFf-YLqNS-[ +Z!e_[K+8^L211-Tf6GL]7O*$-q4VTRmQHqpME&1:`A>P)f;OWPQEF*T"G?/S2)HA"mL"(cPnmOCe2@"R +c-\CnjQF)Yc!8jXHq(`NnXuLT)g0L3J'lTY89[fZ9mc@\Y[[pKB2YI8nu""pY3"kGO->"bU#@?fe\dAL +j?;9V[=C/sXL#aJ7iIH*>]r(kQT[6EUq%Cgcl+h2G@M%eQ*)idAI-k8U/k*8Nk^,PWR'SRP.fVlaYq,) +b&7OPqo+t4&`QMgk$l1k_i9";A#V;&Mro#d`>@JC[hld>qXVJP2eDiEPK9K*;33G]aiG->=bbe?\T +9-Fh4p'0\gPEe`^N[t][$"7#i)7KGNY($pM2l(aFer!b1`b9I"$?uJJis?'VcN3:8c2A)'n76!Y_UPKI +Qd+'ZaqjTk,qr!Cj*ar$M-YPlfHVpkIMnQ,_\MN?@_&F8sB7psLLccD%D0gtO15 +!Q3]fcUR5I5>_-!L=U,Hn"E<3q1:"D,]B#RmUO[lG\!au$NkfGeB'/)Y1G\gX*.\0iD@3.F#NR3aVfKe +$U%jUUMoXDr>b0m$_Q/K`81A_h/08A7e#:;S!HZj&9OuX1q7eF)='160IXrB*ue8b,q]$9lc_*@nu*J=CLDr^Bd:TsH]/WR;UI<4CD +SQXRf`:X7=lg+T=[D)0VX`*-$haj8@]H?ha4i#b=H'OpLj;Op0-A2Vrk1cp%>`jE4X\UL;;Q@ +bcA00)$';hF\j(XJ&hBC9"4S2+#B^&d6r'rh-[Acl@99D:53?`SFi@7YR3"(_g@s&liBkbjkk8jLlPa1 +L.=5g%4qb%["Bj!hLQioi_(8Q7D4<\GI0D6Y:,"A'D1Q\,'q.)mjX:4K+C!c%k^-^#6tjfq]%7&F@O4h +hLhF>^Bah!$rqST<^S1MJ&Fddpa9`U0Nr7bnJkH5#BcQb3"E/GfAa'%f=MlsX]D!);KNI1mMK9mp_)8& +U>F0h,LIuY\-5=j.L3XJ(6.1Te9f=kSI]&1F,@"[#>*1NOV]uc*$66#BUma4>Fh[_8*>U%8dop' +#>5X9JohYBdTdJ%*VpC/Io*=\-K`pWZ`1h-!fDjWi!$eThD7:G.:!uaJM69;X^,^_00b,n7P>dB9[=G% +kRCd!mq0X?hl#>J&=dE6>S9Kbi6C-a`tb[a?Ro@bX.P^o)5U_?1`aMW;7./,3I[$RG[-/?[Qs+D@%>HZ +QT2^TcQ^XL.XI94]:s70pG^'8:7OJ6TS\1TklgJN!"Mr +KCeIV:+h23\Faa';\"TGd'Z-NW._rnfBR8.q4cd`n:g7;L/9&T*cN:Q)n<,LWj%!V +Up'h9)h[VS.JO)FYTJiA@l`?)i<\hE@ +/pgOg[6[qLdogaKoJbCjHLpt3-s[0ji+uICb]"VH"W8qW.Y)ba"shPC)%c=!m$u;@#U0GdoX/F<`.D6cZU_TOZ@%'j./mnUJS[GK`M-Vcqn%Se +3\+W9Y'*En5\:H'$69#:*]W`/c9M@/)^bU"ho)06TK.-U,[eZ=+:rkdC9@!=(OI<19H\-s`7mNlt +S$%94_t=@m[(b]/Lbpq5+EB15_q>^oUnlt@OJdlefn_`\4i&lIKZmpHm0S'JNlO:+&%=N7f&c=cMoj)r +4KMb7Baeg8dPPE/0J9JC:LJp,h\5pN!;?U:MT;=Hf_:&(r-F.CrEQ=aE)4OehT7psq9P>a'N45^Jq*+n +\bkfHdN/G?'kgqTOl/k87#n>hRoJZ +=<\k#*52Iu%4b]3,^[N?@c%h/ih#(1CSPjPjIVI6lZ_+tEcm;op4V5(!&`!p.j/j\Ku,9E&J,8_>QKs1 +'t>X\euJ0F&,GeB1I(i'MeEND5OuT6PDa,P].TiRkouS=r.KueB"%3CkeJajV=RP2Q02J1a*a3QV_^R9 +?#'?oo+N4![=>B^)d^:@U.sV.iO5O^eUQB^.C+^Vj/Li_[&GkDbSpX.Mi++]^k#iQB82k>lq1dLd +%-7p*HTF^_fS)D^+)X8fHq;Xi8r=-.pK[8-hXPWV3TG>=@:>dn77D@DVI"06)He8'@j!Rhh=tKm,U2u! +"MGLa-E(V%4$oau-^3Sp):sLCS]jJ1JL2$j?aqMIMS1)OH`Yi88+&(FK5uN%Zj(1!A2]i1*F53'\gMj/ +ib/C+N`.Epc]dBP.79QeIApJ4H2Udf F$f$ru@I+g_U1X9_kK6AR`Pu0\OIe+%bMYGLZ9,jY8$>J]F +"';uR46&3Wil/LlG\g!'W]74X);m?&a3&CS6u'I$9=eYaqRTHOoNp%ZJGPp4i;JIHP9KPW;p83\oUa*p +[0%WVDog8@N=YO:V?WljO],ig#V]_d'H_VU +;.HT]8TE7f+q?6LK`Yu;4]b0#)BOa2rF3'=c""B5A>4\(O>j)[jJj2kF`EO>_f#s76J^hZrpB?j2/?$3 +lL%NG/BS4"a,LhOKCufTVlO%.;9M/1>bfpIGWTTGs_[.tCbDR6q.6EYbZ]-J?J66>8<6 +')t&k^QPp?lc*K(O;oZ7O:XH2%I0TC,]o/s3&#Rb%*:6"i+d +Uc^r[=rX$7<<$u:GMlb1W^;ddM/-uMR5-c<+`Se!j`keXf=;lF+GU[[R9+$Cl&b8%$Ias`Ge>U3mgiJ7i(J's6!b5/g +0B)$_H:Qu4m+s36`,gf\FR/Q3fmg7e6n/$;nKl8jlG^ko[#.6GTL^Kp'io8FV0^:1%j0H(F,:Sk#B0UY +L$-5/IaenB2Q`/[/N*I`gh<8Mnb"+:KFISYN4NGK)i_$e%MV&;`jY,=N^Q(9hB=,l>9-Q;S>(Sm[c"[$ +b7219*2Np(N%a_._GtNk>ZRm7EV`Fm,H'.uHG_DLVl]X^JZUu"8b`.ZEina6OOR-!ZGUd`p%XDW:,; +]C=gN]al+_a)a+m9dAQbkEH.`du_+P<`(cENO)d*G,oF8,KXDDSP?TB$W4CeFN?%%"WF],SAg<#c+)UV +Bk5j+(abhM0k:mn':Q^jC=@Z`ThHC\=6YC(@'(9Z'?W+F0F-U-XLI0nq[8h+Z0C$f@c-`VauemP]D"c[ +,3m!n^$u;a[:B's7]4Vu">UJ4V7W1V-Q`Q4^C.:%q:LX6Ru!4n44`]T1GYV4"'^_W;`KC.lpuOVVj+IB +'3^$^_;6k,D_jc:K^(Q4-nq@]"PV9A%`W2O%dV&K$`I]Z*1-Yo3Td4#C`_UhCj1UbrbH(j/p-m$E:2o] +^5usMi4NhhNohluGRhf@DPOJpSU.Go5Ni,D/V(Z5fs8j=*#bAUWD"m/hNrqS@R%XSYT;#VDR2*(XggQ' +B[U=HgS]<3\k)'S>;2$<2OnKi'.>kM-eMpX#G +(_)@UJmMmY7UHpT#,C&5K3B"V7$0HRo+ub:I[T[ur6W]\*=q:HZN"";m`h2+Y4H1/qD#YHju7X#V#h&W\"Tr:%A$biG#_=jWF7$0ne2L,6Wd3B4q-C?(8.Pkd!7?3mEa6\e8ae!gl_$@@t +/s.@@i6>VL*%=[bh8D=6_bK+YK;!dBTDuZ9rVolmRD&jsFGunR/h5ugG*saKdR@WO-^Jefg&ET"MF[@A +6d%QWfJb4nPXGSkh2sN7-Zk +>0s(2R>]?--Cj27L2=5B7V*t]d5*nY>igoTqhAG:/n]!3JNTQf@qO$[0:?7tleT]Xj/q;JM,U2d/jsXJ +#k-I2eQ41Pho(k#G[C(&-p1\P$"m'['_Da52u6E8*iNXM[#r]btu]3I>Gs27e7k'VQo,rm<#n(@[?0;RaCV8Nm-55CK_n4m)6M,M5FAhC5ibEF_C +'A5r]cl9'la)1SDW_j.$D1EL?3%_DN8):'GT]X*?oT-pil6d(:\`bVrsVTpHrZ8ULi8ri3I) +]':iSrQQc($@7EV)h"]WWnuZd=r!AlOZ7UWQi73gOuB.krSM]/@e[fOCrW6f"eN'go,8Zd$$@JfLXGm+ +D4p*DE2VS\?V^/`ohM[XBGHp8SYEd]CJbU#V$9%1o9:FK42++oR]Bb@@_C70H:-f-rT$^X7r!mt1kA7/['*GF'3`,%2N(VC&PdOk;!:P2uM)_tYR]gi]Qr%>:Qj)@75J +`rfk<`SSONkO9a($nN[JGU!_aEV3V1G[3C?BATomApsXH?iU"tpqM:V*t)*=Hi~> +endstream +endobj +7 0 obj + 41683 +endobj +8 0 obj + << + /Length 9 0 R + /Subtype /Image + /SMask 10 0 R + /Width 101 + /Height 111 + /ColorSpace /DeviceRGB + /BitsPerComponent 8 + /Filter [/ASCII85Decode /FlateDecode] + >> +stream +Gb"0;0`_7S!5bE%:MgG'TE"rlzzzzzzz!8qOC@/p<~> +endstream +endobj +9 0 obj + 43 +endobj +10 0 obj + << + /Length 11 0 R + /Subtype /Image + /Width 101 + /Height 111 + /BitsPerComponent 8 + /ColorSpace /DeviceGray + /Filter [/ASCII85Decode /FlateDecode] + >> +stream +Gb"0Tm;BaJ(rgQ4T>$tieqA2"aqc1%.[_to``,g*s7qUVQDjZ@cE[u4rrDo=h1"^Ub9?Ko$)/h?"W+)I1T=d^::)4KhkqgE=R[lEuD1b0l0_1t-bgHbDU/Ida\pW,Yg0 ++/3eVkmo0#PbN+Zn6W-+/>Nb)<1a'1,)YFRrPerAjTGQ7-gZUuZZ9OMjd\/Sc)D)IH'0 +endstream +endobj +11 0 obj + 503 +endobj +12 0 obj + << + /Length 13 0 R + /Subtype /Image + /SMask 14 0 R + /Width 101 + /Height 111 + /ColorSpace /DeviceRGB + /BitsPerComponent 8 + /Filter [/ASCII85Decode /FlateDecode] + >> +stream +Gb"0;0`_7S!5bE%:MgG'TE"rlzzzzzzz!8qOC@/p<~> +endstream +endobj +13 0 obj + 43 +endobj +14 0 obj + << + /Length 15 0 R + /Subtype /Image + /Width 101 + /Height 111 + /BitsPerComponent 8 + /ColorSpace /DeviceGray + /Filter [/ASCII85Decode /FlateDecode] + >> +stream +Gb"0Tm;BaJ(rgQ4T>$tieqA2"aqc1%.[_to``,g*s7qUVQDjZ@cE[u4rrDo=h1"^Ub9?Ko$)/h?"W+)I1T=d^::)4KhkqgE=R[lEuD1b0l0_1t-bgHbDU/Ida\pW,Yg0 ++/3eVkmo0#PbN+Zn6W-+/>Nb)<1a'1,)YFRrPerAjTGQ7-gZUuZZ9OMjd\/Sc)D)IH'0 +endstream +endobj +15 0 obj + 503 +endobj +16 0 obj + << + /Length 17 0 R + /Subtype /Image + /SMask 18 0 R + /Width 101 + /Height 111 + /ColorSpace /DeviceRGB + /BitsPerComponent 8 + /Filter [/ASCII85Decode /FlateDecode] + >> +stream +Gb"0;0`_7S!5bE%:MgG'TE"rlzzzzzzz!8qOC@/p<~> +endstream +endobj +17 0 obj + 43 +endobj +18 0 obj + << + /Length 19 0 R + /Subtype /Image + /Width 101 + /Height 111 + /BitsPerComponent 8 + /ColorSpace /DeviceGray + /Filter [/ASCII85Decode /FlateDecode] + >> +stream +Gb"0TD,5a[(rgPU*$/'A:emheBsnh$lm'pk>Ge1A(#RL*G^hWRO#gFHNB`qXW'Vq)T"u/"L5`V.THkMp6^#TP2)5B>\V^RXHidRSFEr +p.(hegZ>5\;rbDa@X6qUqET`SGH3-2KT\jZO0hG?E(qH?J,fTO":,P]5_&h8!X&c?+@(GW!V1$AoWZ-,t()Dr&"-GBp@_\Kr_1/?*2JQm@Ml +endstream +endobj +19 0 obj + 505 +endobj +20 0 obj + << + /Length 21 0 R + /Subtype /Image + /SMask 22 0 R + /Width 101 + /Height 111 + /ColorSpace /DeviceRGB + /BitsPerComponent 8 + /Filter [/ASCII85Decode /FlateDecode] + >> +stream +Gb"0;0`_7S!5bE%:MgG'TE"rlzzzzzzz!8qOC@/p<~> +endstream +endobj +21 0 obj + 43 +endobj +22 0 obj + << + /Length 23 0 R + /Subtype /Image + /Width 101 + /Height 111 + /BitsPerComponent 8 + /ColorSpace /DeviceGray + /Filter [/ASCII85Decode /FlateDecode] + >> +stream +Gb"0TD,5a[(rgPU*$/'A:emheBsnh$lm'pk>Ge1A(#RL*G^hWRO#gFHNB`qXW'Vq)T"u/"L5`V.THkMp6^#TP2)5B>\V^RXHidRSFEr +p.(hegZ>5\;rbDa@X6qUqET`SGH3-2KT\jZO0hG?E(qH?J,fTO":,P]5_&h8!X&c?+@(GW!V1$AoWZ-,t()Dr&"-GBp@_\Kr_1/?*2JQm@Ml +endstream +endobj +23 0 obj + 505 +endobj +24 0 obj + << + /Length 25 0 R + /Subtype /Image + /SMask 26 0 R + /Width 127 + /Height 86 + /ColorSpace /DeviceRGB + /BitsPerComponent 8 + /Filter [/ASCII85Decode /FlateDecode] + >> +stream +Gb"0;! +endstream +endobj +25 0 obj + 46 +endobj +26 0 obj + << + /Length 27 0 R + /Subtype /Image + /Width 127 + /Height 86 + /BitsPerComponent 8 + /ColorSpace /DeviceGray + /Filter [/ASCII85Decode /FlateDecode] + >> +stream +Gb"/ik$8\gU9L3XAVORNa.K^sIB,pUN)lRt-'COFhtL(RSVXkM%f)r;1\tCL#oTi&L-8F7Xu+ +n:+C;-TKpgYK-&*MZPlpiOK8J,N1`AjU6V"/mg<$biZ3fq`Cu[\7g?T]D(_W=f=6Ioh$hXp3SFE!;Per +J*8UgC%V\Jr^W`JM$88ZJ\Om%??#]AdI_M?@lU%(`C[gC.jQ@KSr68BqX1nR,bAc>rQ/ldhQ3('pLh+$ +HOS`_rs9H2,*ffE`mE`&Ihfm$B\kR]?d-%^A!00T5Q74\qmtX,U2hB)Do3+[gMd\+.,a%qc^AjW%6D0co%/[1' +"GtV7@Qu0E`@19Ht6]Xr]at^a"\!aol&Xrl^%'=DT?[dG +MPJHi-K9(p]$Iu@O3d*Q*p!'0tuG^Y/fPmK;.a%7'.*("UM6OM6n^(nn!ZlHhsT&$C@ta_Ar( +YN5BV`0guH^]PBr)E;]<.=cY,HMN-%f17NBJm^MeXe$gPfW==GpRKf[nUQBY]t1KL!ml/ED!>5MnE?.= +VC;dIWACT#L=bPj[s\#jT)c-Ab\3WXC![1528e>TLrH*(#$@sJf.9\2:Ds-KQiN=2=gF!'R1'/$@\/Wh +.eTYKWG=m2@*l1KXW#lL""\bd*s!HP`F(W4mLip%V<\tuRW!.s/d`UN/'!?8W! +85_C7S.rai3,I=s-a;H!h6NM=L>gSmOJJJ+LC?^ZUB&+Z5sQI.ZIG*4QJ_#WX%b0!L2LbUD3csgG._QD +032'B@an,'e2?$GaT<^n*-s?npCHtf@+Ta_)?cFs+q)&SY=V6t(di+6T:7T=JC9AC+kA]RCZOCI@Z/d* +\u@0i]"5sM1@\hYF:#V47%B*D")c7t!Q9mr>M\*Kng32?l.%"BTXX2$@rBG"!T`5tREadL#OHh!<=?`a ++<1^Dg&5lk&pOrNnTnFu93nRu?JtkKO#,Ct`\e1FIu=%:X8~> +endstream +endobj +27 0 obj + 1588 +endobj +28 0 obj + << + /Length 29 0 R + /Subtype /Image + /SMask 30 0 R + /Width 111 + /Height 77 + /ColorSpace /DeviceRGB + /BitsPerComponent 8 + /Filter [/ASCII85Decode /FlateDecode] + >> +stream +Gb"0;0`_7S!5bE%:MgG'TE"rlzzzzz!._Z^A17KZ~> +endstream +endobj +29 0 obj + 42 +endobj +30 0 obj + << + /Length 31 0 R + /Subtype /Image + /Width 111 + /Height 77 + /BitsPerComponent 8 + /ColorSpace /DeviceGray + /Filter [/ASCII85Decode /FlateDecode] + >> +stream +Gb"/hkB4OVi0HZZM!$4M0%;r"flFKf$pL_qa_+3+h(T,9M7ugGjh:UU=`+pB=YIe.AiUY84M$VOLe&YW +/N.o>oPk>*]mprs68*m +=dmDcSD`p-151$e1gfS"<5Is:8ei5&82C5%*__ois2C)9c!oJ+Ka\LpLr?Tq7W5rTL_,0m2(`@s;^2l/ +#"Ib2.5D0k:gC01qXCJPLs\PD6.HepdN-SnkE/.ZFX](L26K869_1dt,KGBP+G95%Luf0lRkrW;K,C#4 +D.HI#%]A2Z,@ZT6A4.@@Tf&GW7*(;gA9s552AuS:YZ@l/8*!cA#@AS(OjOd:["J^!&0fRQK2umk)'+j: +AOK(AlT%5-O9*FmH%[([2-YkJJf'pR).YEFM3gj#gE%PlSq]r*">U5pd'2il+5;S_JcM4tf>h)F/004n +YgI-?>b8t"4/ND2nH59Iq:gnq_JmbD;5a +F_&dWAI&lb"1!jk.>U_!@!FV7?$0ooOeQ,L#X);!nb-^XN.qU?7?1,/p'd\ebm@o[7.>*^r:keTh7S'( +1(#3nn?Il!Ba*%(YS#DH">Y'1+Tsek^D\+:!ueUk!haiT_]q'/7aL9O,0'q"7tPu:-oJRc1-c8N!=08r +:7CHo"Hcig[gHm&1_DGH7L!.6Vi0YA^Xc:MKFlXp_7/W;L,'s+T":1elAZ_=V;/cN_n)uL7nB5?l0-+& +?P8^-iIEj^r"%uu@T\`RfPCIb]>ZB$=Sr9(6ig3~> +endstream +endobj +31 0 obj + 1337 +endobj +32 0 obj + << + /Length 33 0 R + /Subtype /Image + /SMask 34 0 R + /Width 111 + /Height 77 + /ColorSpace /DeviceRGB + /BitsPerComponent 8 + /Filter [/ASCII85Decode /FlateDecode] + >> +stream +Gb"0;0`_7S!5bE%:MgG'TE"rlzzzzz!._Z^A17KZ~> +endstream +endobj +33 0 obj + 42 +endobj +34 0 obj + << + /Length 35 0 R + /Subtype /Image + /Width 111 + /Height 77 + /BitsPerComponent 8 + /ColorSpace /DeviceGray + /Filter [/ASCII85Decode /FlateDecode] + >> +stream +Gb"/hkB2*_Z,acu@neMZG=CEhIIW35T"hVqo:1UZpGj*7`'<\@UnM\el*7'mcokGop$[!J547ZsS?@bbgb1/Yg`$5j"8 +r/l)phAskmdVchWn$]:MY[)ZQZ:>,\;=oSUDkGp>fkLn(&CP/Nq.Z+$?\1t6OV,^$)SPZM,OO%68aH2N +;_+YH,/X_1V_=R_f@n.<>.#[bDHCY:+c+'X+0GNa\bTS@)r*!a4]]WH0n`(S?*&7j$\AX1\6ZF-#+c`m +Lc,Mo+'+N?L]h5@EjH!H9h1-W1*!I:#a*DOIQWZJ15SYd;6"U>&CJ`IKhOBC\,[D:7t3@J&_W\ZVA^`$ +KM<\DX)TQ`IMrf8*$?Jp0F65l7M)7LMNI)RMs6$>+i>8,AfQqC)=;p')Fm7cjNA)YZp?sS$*E%a1+FIW +_hcYDf5lU=5)#(Yo*?(!Whp?$":6io1WU+q?=(h"+*367H3uFT'?FQL:rBGY7]$ck";*DAn'C_raF!gs +6DIBh\NGoX"uhHsM@?W-5<=5?%+VSa(^+Aaq..Ps;Z8XAoYkhcKS['F>7e`oPVQ[N?2OSFRlck6Zq$(V +aa2B]2JqDabF&bSBV_m&pN^7@'1?R8h&I7q0&P90G<0_F(dJk[0m\: +2MFh>]":cJqB).S:be`eKU2]-mL>LplP\Np%af'XiS>NXS5:n2<>j(65'4m+<3@_IAWoJ=1I,]P-"Pqf +s40mBV?"m/[j,-+M!Gk!KK,PbFi?m@@;8:1mUB]P1*Y\+B:ts9:7u]Mo,3f*.Hr'D)cVqSgLCsdn>pXW +O,&=#T*&VM':h9S7h$$o^a/&`R2IjsA5JPZY)Hsl70Ke@k2p=\)8(kHas\Af0TLrIPVr$45;@Zsas5RO +$mS(X[)%oA">@G@Y6G +(p!`TO_^IDjn/n@=ff(FDV-KPd0;l@?YcQtjaBD%-(_KA9hTD'U]A%>]btPmr$AnZ2%jlg'_+D\)i,(l?Jobs9C3epphTC15a)4M~> +endstream +endobj +35 0 obj + 1343 +endobj +36 0 obj + << + /FunctionType 2 + /Domain [0.0000 1.0000] + /Range [0.0000 1.0000 0.0000 1.0000 0.0000 1.0000] + /C0 [.90980 .93333 .96863] + /C1 [.71765 .78824 .89020] + /N 1 + >> +endobj +37 0 obj + << + /Type /Pattern + /PatternType 2 + /Matrix [1.0000 0.0000 0.0000 -1.0000 -542.00 401.00] + /Shading + << + /ShadingType 2 + /ColorSpace /DeviceRGB + /Coords [526.25 -12.646 766.25 179.45] + /Domain [0.0000 1.0000] + /Function + << + /FunctionType 3 + /Domain [0.0000 1.0000] + /Range [0.0000 1.0000 0.0000 1.0000 0.0000 1.0000] + /Bounds [.33333 .66667] + /Encode [1.0000 0.0000 0.0000 1.0000 1.0000 0.0000] + /Functions [36 0 R 36 0 R 36 0 R] + >> + >> + >> +endobj +38 0 obj + << + /Type /Pattern + /PatternType 2 + /Matrix [1.0000 0.0000 0.0000 -1.0000 -542.00 401.00] + /Shading + << + /ShadingType 2 + /ColorSpace /DeviceRGB + /Coords [762.25 -12.646 1002.2 179.45] + /Domain [0.0000 1.0000] + /Function + << + /FunctionType 3 + /Domain [0.0000 1.0000] + /Range [0.0000 1.0000 0.0000 1.0000 0.0000 1.0000] + /Bounds [.33333 .66667] + /Encode [1.0000 0.0000 0.0000 1.0000 1.0000 0.0000] + /Functions [36 0 R 36 0 R 36 0 R] + >> + >> + >> +endobj +39 0 obj + << + /Type /Pattern + /PatternType 2 + /Matrix [1.0000 0.0000 0.0000 -1.0000 -542.00 401.00] + /Shading + << + /ShadingType 2 + /ColorSpace /DeviceRGB + /Coords [526.15 202.28 766.15 394.37] + /Domain [0.0000 1.0000] + /Function + << + /FunctionType 3 + /Domain [0.0000 1.0000] + /Range [0.0000 1.0000 0.0000 1.0000 0.0000 1.0000] + /Bounds [.33333 .66667] + /Encode [1.0000 0.0000 0.0000 1.0000 1.0000 0.0000] + /Functions [36 0 R 36 0 R 36 0 R] + >> + >> + >> +endobj +40 0 obj + << + /Type /Pattern + /PatternType 2 + /Matrix [1.0000 0.0000 0.0000 -1.0000 -542.00 401.00] + /Shading + << + /ShadingType 2 + /ColorSpace /DeviceRGB + /Coords [762.15 202.28 1002.2 394.37] + /Domain [0.0000 1.0000] + /Function + << + /FunctionType 3 + /Domain [0.0000 1.0000] + /Range [0.0000 1.0000 0.0000 1.0000 0.0000 1.0000] + /Bounds [.33333 .66667] + /Encode [1.0000 0.0000 0.0000 1.0000 1.0000 0.0000] + /Functions [36 0 R 36 0 R 36 0 R] + >> + >> + >> +endobj +41 0 obj + << + /Type /Pattern + /PatternType 2 + /Matrix [1.0000 0.0000 0.0000 -1.0000 -542.00 401.00] + /Shading + << + /ShadingType 2 + /ColorSpace /DeviceRGB + /Coords [595.23 87.926 913.23 282.93] + /Domain [0.0000 1.0000] + /Function + << + /FunctionType 3 + /Domain [0.0000 1.0000] + /Range [0.0000 1.0000 0.0000 1.0000 0.0000 1.0000] + /Bounds [.33333 .66667] + /Encode [1.0000 0.0000 0.0000 1.0000 1.0000 0.0000] + /Functions [36 0 R 36 0 R 36 0 R] + >> + >> + >> +endobj +42 0 obj + << + /Type /Pattern + /PatternType 2 + /Matrix [1.0000 0.0000 0.0000 -1.0000 -542.00 401.00] + /Shading + << + /ShadingType 2 + /ColorSpace /DeviceRGB + /Coords [492.16 108.66 762.16 276.66] + /Domain [0.0000 1.0000] + /Function + << + /FunctionType 3 + /Domain [0.0000 1.0000] + /Range [0.0000 1.0000 0.0000 1.0000 0.0000 1.0000] + /Bounds [.33333 .66667] + /Encode [1.0000 0.0000 0.0000 1.0000 1.0000 0.0000] + /Functions [36 0 R 36 0 R 36 0 R] + >> + >> + >> +endobj +43 0 obj + << + /Type /Pattern + /PatternType 2 + /Matrix [1.0000 0.0000 0.0000 -1.0000 -542.00 401.00] + /Shading + << + /ShadingType 2 + /ColorSpace /DeviceRGB + /Coords [610.43 .82513 880.43 168.83] + /Domain [0.0000 1.0000] + /Function + << + /FunctionType 3 + /Domain [0.0000 1.0000] + /Range [0.0000 1.0000 0.0000 1.0000 0.0000 1.0000] + /Bounds [.33333 .66667] + /Encode [1.0000 0.0000 0.0000 1.0000 1.0000 0.0000] + /Functions [36 0 R 36 0 R 36 0 R] + >> + >> + >> +endobj +3 0 obj + << + /Parent null + /Type /Pages + /MediaBox [0.0000 0.0000 351.00 336.00] + /Resources 44 0 R + /Kids [5 0 R] + /Count 1 + >> +endobj +45 0 obj + [/PDF /Text /ImageC] +endobj +46 0 obj + << + /Img0 8 0 R + /Img0Mask 10 0 R + /Img1 12 0 R + /Img1Mask 14 0 R + /Img2 16 0 R + /Img2Mask 18 0 R + /Img3 20 0 R + /Img3Mask 22 0 R + /Img4 24 0 R + /Img4Mask 26 0 R + /Img5 28 0 R + /Img5Mask 30 0 R + /Img6 32 0 R + /Img6Mask 34 0 R + >> +endobj +47 0 obj + << + /CyclePattern1 37 0 R + /CyclePattern2 38 0 R + /CyclePattern3 39 0 R + /CyclePattern4 40 0 R + /CyclePattern5 41 0 R + /CyclePattern6 42 0 R + /CyclePattern7 43 0 R + >> +endobj +48 0 obj + << + /S /Transparency + /CS /DeviceRGB + /I true + /K false + >> +endobj +49 0 obj + << + /Alpha1 + << + /ca 1.0000 + /CA 1.0000 + /BM /Normal + /AIS false + >> + >> +endobj +44 0 obj + << + /ProcSet 45 0 R + /XObject 46 0 R + /Pattern 47 0 R + /ExtGState 49 0 R + >> +endobj +xref +0 50 +0000000000 65535 f +0000000015 00000 n +0000000315 00000 n +0000057147 00000 n +0000000445 00000 n +0000000521 00000 n +0000000609 00000 n +0000042402 00000 n +0000042426 00000 n +0000042711 00000 n +0000042732 00000 n +0000043460 00000 n +0000043483 00000 n +0000043770 00000 n +0000043792 00000 n +0000044520 00000 n +0000044543 00000 n +0000044830 00000 n +0000044852 00000 n +0000045582 00000 n +0000045605 00000 n +0000045892 00000 n +0000045914 00000 n +0000046644 00000 n +0000046667 00000 n +0000046956 00000 n +0000046978 00000 n +0000048790 00000 n +0000048814 00000 n +0000049099 00000 n +0000049121 00000 n +0000050682 00000 n +0000050706 00000 n +0000050991 00000 n +0000051013 00000 n +0000052580 00000 n +0000052604 00000 n +0000052819 00000 n +0000053438 00000 n +0000054057 00000 n +0000054675 00000 n +0000055293 00000 n +0000055911 00000 n +0000056529 00000 n +0000058150 00000 n +0000057318 00000 n +0000057358 00000 n +0000057680 00000 n +0000057905 00000 n +0000058007 00000 n +trailer +<< + /Size 50 + /Root 2 0 R + /Info 1 0 R +>> +startxref +58269 +%%EOF diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..6a042c2 --- /dev/null +++ b/LICENSE @@ -0,0 +1,30 @@ +Copyright Author name here (c) 2017 + +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + * Neither the name of Author name here nor the names of other + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \ No newline at end of file diff --git a/MyTypes.hs b/MyTypes.hs new file mode 100644 index 0000000..1f475a6 --- /dev/null +++ b/MyTypes.hs @@ -0,0 +1,10 @@ +-- @Employment.hs +{-# LANGUAGE TemplateHaskell #-} +module MyTypes where + +import Database.Persist.TH +import Prelude + +data FSStatus = undefined + deriving (Show, Read, Eq) +derivePersistField "FSStatus" \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..ef11b69 --- /dev/null +++ b/README.md @@ -0,0 +1,75 @@ +Ãœbungszettel 9 +============== + +Pushen Sie nach der Bearbeitung jeder Aufgabe Ihre Ergebnisse. + +Issue 1 +------- +Führen Sie die folgenden Befehle aus. +Diese erstellen Ihnen ein ausführbares Yesod-Grundgerüst. +Grundgerüst: + +- $ stack new uebung9 --bare yesod-sqlite + +Kompilieren mit yesod: +- $ stack build yesod-bin + +Starten des Servers: +- $ stack exec -- yesod devel + +Öffnen Sie Ihrem Browser mit der Domain `http://localhost:3000/`. Wenn alles geklappt hat, sollten Sie hier bereits die Möglichkeit haben, sich mit einem Dummy-Account einzuloggen und eine Profilseite zu öffnen. + +Long version: +https://www.youtube.com/watch?v=rsozCEMQdSY + + +Issue 2 +------- +Verschieben Sie das mitgegebene Modul `MyTypes.hs` in den `src/`-Ordner und importieren Sie es in der `Model.hs` + +In der Datei database-model.xml befindet sich ein ER-Modell. +In `config/models` werden alle Entitäten definiert, die Ihre Datenbank kennen soll. +Pflegen Sie die Entitäten des ER-Modells sinnvoll in `config/models` ein. + +Hinweise: + +- Ganz ähnlich wie Sie es von der `record syntax` her kennen, hat hier jede Entität beliebig viele Felder, +für die Sie Name und Typ festlegen müssen. + +- Für textuelle Felder, nutzen Sie den Typ `Text`. Falls ein Feld auch leer sein darf, fügen Sie ein `Maybe` hinzu. + +- Für jede Entität werden automatisch Id-Typen definiert (z.B. `UserId` für die Entität `User`), die Sie benutzen können, um bestimmte Kardinalitäten +zu erzwingen. + +- Wenn Sie selber definierte Typen verwenden wollen, um die Ausprägungen eines Entity-Feldes festzulegen, definieren Sie diese in der mitgegebenen Datei `MyTypes.hs`. + +Issue 3 +------- + +a) Neues Feature: Auf der neuen Seite `Timeline` können eingelogte User Nachrichten posten. Die Posts werden in chronologischer Reihenfolge angezeigt. + +TODO: +- `config/routes`: Legen Sie hier eine neue Route an. +- `Foundation.hs`: + -- Ergänzen Sie die Funktionen, in denen auf Routen-Konstruktoren pattern-gematcht wird. + -- Die `Timeline` soll nur für autorisierte (d.h. eingeloggte) User sichtbar sein. + -- Sorgen Sie dafür, dass `Timeline` als Menüpunkt im defaultLayout erscheint. +- `src/Handler/`: Legen Sie ein Handler-Modul `Timeline.hs` an. +- `cabal`: Fügen Sie den Handler als `exposed-module` hinzu. +- `src/Application.hs`: Importieren Sie den neuen Handler +- `src/Handler/Timeline.hs`: + -- Erstellen Sie für jede `http-Methode`, für die Sie die neue Route definiert haben, eine entsprechende Handler-Funktion in dem neuen Handler-Modul. + -- + -- Bennenen Sie ihre Handler-Funktionen gemäß dem Schema: http-Methode + Routenkonstruktor. + -- Inhaltlich können Sie sich stark an der Vorlesung orientieren! + -- Man kann hamlet-Code etc. auch in template-Files auslagern. Sehen Sie sich hierzu beispielsweise `src/Handler/Profile.hs` und das eingebundene Template `templates/profile.hamlet` an. + +b) Neues Feature: Auf der Seite `All Users` werden alle jemals eingelogten User angezeigt. Mit einem Klick auf einen Usernamen wird man auf die zugehörige Timeline weitergeleitet. + +Issue 4 +------- +Never gonna give U up, never gonna let ya down – Friendship :D + +Die Seite `All Users` soll nun auch erlauben, Freundschaftsanfragen abzuschicken. Auf dieser soll man einem User eine Freundschaftsanfrage stellen können. +Freundschaftsanfrage soll dem entsprechenden User auf seiner Profilseite angezeigt werden, wo er sie annehmen oder ablehnen kann. +Timelines sollen nur noch für befreundete User sichtbar sein.