final lessons
This commit is contained in:
149
Les02-OpenCode/Les02-Huiswerk.pdf
Normal file
149
Les02-OpenCode/Les02-Huiswerk.pdf
Normal file
@@ -0,0 +1,149 @@
|
||||
%PDF-1.4
|
||||
%<25><><EFBFBD><EFBFBD> ReportLab Generated PDF document (opensource)
|
||||
1 0 obj
|
||||
<<
|
||||
/F1 2 0 R /F2 3 0 R /F3 4 0 R /F4 5 0 R /F5 6 0 R
|
||||
>>
|
||||
endobj
|
||||
2 0 obj
|
||||
<<
|
||||
/BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font
|
||||
>>
|
||||
endobj
|
||||
3 0 obj
|
||||
<<
|
||||
/BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding /Name /F2 /Subtype /Type1 /Type /Font
|
||||
>>
|
||||
endobj
|
||||
4 0 obj
|
||||
<<
|
||||
/BaseFont /Courier /Encoding /WinAnsiEncoding /Name /F3 /Subtype /Type1 /Type /Font
|
||||
>>
|
||||
endobj
|
||||
5 0 obj
|
||||
<<
|
||||
/BaseFont /Symbol /Name /F4 /Subtype /Type1 /Type /Font
|
||||
>>
|
||||
endobj
|
||||
6 0 obj
|
||||
<<
|
||||
/BaseFont /ZapfDingbats /Name /F5 /Subtype /Type1 /Type /Font
|
||||
>>
|
||||
endobj
|
||||
7 0 obj
|
||||
<<
|
||||
/Contents 14 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 13 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
8 0 obj
|
||||
<<
|
||||
/Contents 15 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 13 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
9 0 obj
|
||||
<<
|
||||
/Contents 16 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 13 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
10 0 obj
|
||||
<<
|
||||
/Contents 17 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 13 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
11 0 obj
|
||||
<<
|
||||
/PageMode /UseNone /Pages 13 0 R /Type /Catalog
|
||||
>>
|
||||
endobj
|
||||
12 0 obj
|
||||
<<
|
||||
/Author (NOVI Hogeschool Utrecht) /CreationDate (D:20260607080655+00'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260607080655+00'00') /Producer (ReportLab PDF Library - \(opensource\))
|
||||
/Subject (\(unspecified\)) /Title (Huiswerk) /Trapped /False
|
||||
>>
|
||||
endobj
|
||||
13 0 obj
|
||||
<<
|
||||
/Count 4 /Kids [ 7 0 R 8 0 R 9 0 R 10 0 R ] /Type /Pages
|
||||
>>
|
||||
endobj
|
||||
14 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1891
|
||||
>>
|
||||
stream
|
||||
Gb!;d>>s9G'RnZ;36`-$Pg*M[m>@eG&e[f/#e8*c_olLB7Tbrj=b?;'pT3es@:Nt`MENk\G0bWpflQu?$n/hlq)OrH*"Lo_0a#F(E!sl9/e#J0a+<j<+l)8/omd<:7DOHW_YuhZG%0rgiWhSRTVs,.]&5&-PR8+DS0oVHO;YS,fjR.A:Si)_.-C?J?^`X(cT*WF'$p<)`VDATA`3g2YL+N;lA`f&"KP,%<eX0po:uVD.I<UR]fL_jak4glG=`F`+*hIQG<&oL0&ca8HnZ'X8lCkdKu#n\I^TXVN4M1t^8,f+kiX.[4dp1b=ZP*o0\4$c(;?IM)\YE=EVY1u)0c3gs.k,b+6Q?==*g-1.7ACm&5IZNUuuQ$$/Stb0Qc"V`WW!,a6_ULSkk#M!OUDp$`[(k@dT_[dsE&poj[;/g0(3,@RGnpN!MZ6nb&6^M]q9=3Ol,C.E)I2k85)2N"Ld#GWkJ"TLg;,T0&Bm.dF!n3tLURm:,H'bItT&\[QcrB8q(m]pQDhjq3Y/`B%H\i>r@\24BK0Y:B&!*TJ'Pbmb(4?7/5rFto\Y'O6/VLm6&TN86.!#.t;u-B.+T^T7^BX9dfWZN1@lZN/A;Q,uKBK;luOCMMk(A7RTq!ud?2H=/f+#IJdCq6V13h4`rjL,m,D,t-UUXCaX"TrKPt^3\*A$4J/;ft+@F;V&Op.m5n["5QH^@+8;agY-92[^"7#(\($l9q:N_[WWMs!P/s>UEZ0BZd&9S28>*"<M`q%^RO8IBPc[jJ]MZF?mc"6lpVZ_el>9GLO'^GQZqHD_Qn$kH6.5WKt4f,YMB1[ZicUUho-tUq,h7>JgiUDTLs/S0Q=SB+I7Z"i:ds3.r(V:HS0l_%n;VS0K,1`4+HV5<J'Q^l]8HfmN=2Y,W;d4Ug<5o".k_dF7B,d%a*YRX$-<JN\YI@1HU,nckMO[SgF,CR)=Q:odsDY1S#'Fi-LGO;.S9s2rf*F[g-ib$e[!GT#=G/-/=n-\2Reh$o_daCE8HYXg&UL4uP?f#tG-D$5i)@AF9/(GP:$Z;E\l2=/L:qF8?')CdF-.H(S*n?Mn-%Kl3;%Wq?:%Y#FZ^hmK&?pa`un7O-#=l6d/M/DlWd,pL2S[Ot7-p:H3>ZI-9iCU<tG0!m^p\uD7Qh<LFlTe;W/4/s1I;ZRq_FiGiuWrPp-b4,u\j'GOmC([gscr>3$3N1bul92#81"ra@7=aY_cjjhS^LPak>AJlehN%QBg`/r9EY!%kYJAF93*0Z%Nmf((b`'ilIVaJoq`7H$NUU\K__f#epWNLlqo`3S_D"K8=XdYq*fch1TJ$f7F:)/ZPNcM>-kJ_QiUcCSIi;drhLtV]CD#Vac(AYsXj#]?$JgkLb7)pb!o"I'e]mQO8\#T^$G/n@mO1.$J#<LOAsh]cn>BDB4&eulr;1#Je0"i67ZS]nhP89;NHG.e2S09q1kgj`aA'+3b$#\";24]ujQ.\[+2C_dhhL/81FV4OmXoh(2T_-s&F&=&@`mR[M-TQh42oeF8se*6pMQg?D3X\uD!;FVoR%*/Hj`"5"a'0,e'N#sB_6tPa!16rI)HeJG,'+m,%NDE[srPKb?`2%meI7%X*t,JiA?3d:-:MU/3nnL7]@9N<_1HBM9.mQ\qqjGi%RG#2@\\cWc_iXKM=%TnI0-kbu0M6UmHNs8R$i]30,nr;X;qF$9<RTq4l'Yf>#+0&OrPpZPu;Ji[n[kj7F51k(DpSYr@_#NYd@lZ_rR#^Uuf.FE-m+klH1E(*8BL<<.9""VgKjT=08Bq<h!/V)53L*:352KQ3==NBDasHPFp@*\dqb5G=Ic-E$f>Add]u$^^&U5k7/'Nou[Sn20^54cXp0""iqFRf_\S.8%SdfX$Ha#fi=;k09?J"m6uP$mr.~>endstream
|
||||
endobj
|
||||
15 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1477
|
||||
>>
|
||||
stream
|
||||
Gb!Sm>?BfT&:X@TeG,iG)Uk8&"lIg8#C"2B%dOc]9i?_cONr#1G\2F'FqP@>!J03S:6aKnL/`SDq<HB>Yg%f"n)4i9]E9OJ":0_,,7nHAk^8#t3d^no=k'31F2;kugM'Nh>#+ku.c*h7odm:8>6G#^[fW0&$]#N#XT5<1chE8,$K:OH*WaIYCd2<8"iU'8DrH/cngHAqRH8a$C]=;f^7^/2ZFhnQ"1*Fp@HJM>Ct+ABLKQNTI2=q334QMI\:V/J0b=.Z-Le3>)"oh/.J;Zd$N@sU-8Ir2#b;!<5*lUgKJJTjSo=M0KshAO5GNP)V;1TCU`ATWKR;ar"^GBWZNA`j`qAK"?!XU-W.JDY6(fkSR+rd6'@aLm#g*Qd)d!F;jH<8K<ae/T'&S0BE>G?;/=2HKbijZT\O8E&/c8Ac@A\UI_Z#2+(_BU_b+;-8qL$pG</_0=Qkl>@!p;"##]8W7Wr8ce9Kq.uBDGNY2O6GEnnZOC.a-SF,ifeW+cRF;6f2"7L_R[1lkN^I1gatj4'K=_dATEJ62(8I%Za?th[a<3Io1SFFDAT"(rJ466ngmI.R3+C'8')Gl7&Y6p_ur9)*e-h&8>T%Xc0$e#<rC/D&+R,17iY"(GRRPp$<QtDn0H)jU\;q6l9J@Tg:2-9Jr]FCM7j&4_0[9cL[\"+Ij5ZA-N1A`l'pKiM.Gq9=;MK-J.2.W\D!?q^(N,f1)2)9u_2Wdi)%d9b^%?[7Oq.6([XZ=3HNIfsh#?\bob5ZEnZab*`7YkYq4prSm#rHY:j+<o&)9f<+4Qjti'H=Q[*54h',2s'G?)d)daf)F/Xi9IFmWPBhXY[WWB9R7;quZ/Um"*?O8dnAcSZ&rAI%K_p_UST3Pli2aX5\rKG+f/dCHUMTg9k;Fi;db-'S,1hNOfIj[kQA9[qSp;E%%D!=S(il48(kjKRd0S<0Kebdm;gpD\JmPuR.kqm/*!`f'<sCRNbl;'g-M1Q%&7Qq$9j,VBLBYH9Re'JA@'7IFVLg12OG:41O&$Z$H6&n?Jii^\e9D*FkJJNhPZgD>n.>IPM/`8_ec=E/95,"uf0@Jq'sCCOlI4W:c,D-e.1qm=Vo*j37\V>IaHkk'"'FSK2KjiFNG:FW`ZmlX23u[^-8VGLidP?C)AIpHBQh9!2eXiin?s/@Ve34A8l0F:RV0DEDi227efk9)KPhU>[mrgVC.d7MbjN\WXE',A=ru;3aBh!640SVocTHsf<$<U($S@-=$SuB[N))4PbWp$]9i3#"%1j_Wc-DkLjgS]T,c5>sk`rn7ltXOPgk+gQ\+ZPQD^KP!V>B_*/IJK^m^+mT7EjFR_NX)a@eTSpNN&e7o)/s";_&Wp?h>n5nuLET'5QeMf$Nfcq3m*ef`,G'`[T*n$3t^e\RZagJc-O8Sk4c=#Q-Z'K!U1FS@A8dI`:1`1UWa=e/_,[Wl9/@%;/#cTbsTGWPIL2O#&'e)!WCn%efl,^:$d^~>endstream
|
||||
endobj
|
||||
16 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 2024
|
||||
>>
|
||||
stream
|
||||
Gb!#\>?BQ=&:Vs/R,s1u*/#WqA7"to/M+S4g8=LNf`rl?NY:+;au4'Cp:'M3:2D9YP-D`)&dXVr\^*2jU0ur<epk^h_!qsG:FT*E_eYnTEFAPR:54D9#)%9GG?c7K\*SVG$#K283Z_hiHGg1n5_3-'iP#C(VhFYl"2f2o:OURkY$V\f&DsgAmJu4qoshJShBj:RaP%f?k67pLkONU;?9l06F=:bm7Uil[cBW.Dg((BdlaniE@K68sjZ>G#YpdU*V%WQ0C,)<EE5e1TDr/<7E?c*]$iLEe;]*5,%!k;^NtTdJr+2U8Pq6g,Si'J"_H:CnfKBRKd"H1Tq:$VD[2_"d5.9asN=*',XP*u^Fi!'">1IMN4Q)Hqa;-a)aMUrbTNSmLh]YVop-j))\T/'Qlf8s.*Ds]9D]Qap75[]u\0g+4Z4CB2h8jCZZ?mI1GS8Q^/Q?L'[;t.rR4_G;ON8=+rME"c$4P'^'s^g8kM@,l0.VE52YXf'H-bf02L;KSY"E35HIBM87g(HE@KKI/@hjiI[I1R%rKu>:q;5b/<fNbO.P!es7B*>-.7HP\;@*et1oj*3>cXh@QYDg/D'>(]Li6)l73^6UJVPr,IQ$UQ0JPgt+j@pu!7HGYq[LKNCWXBNQ9!SL[5d4ZbH_!E$=E-;&)&nm79H9"X%=no33a>"^k0'8bVupBZn"\IqiV@9Wl9=GXcAe!nJYp"o1fOkPBD>ge#*"d4I?Ol4>j;GB%R[Ec9`&f6)3VlJ-:fd%r@a12IjD>XVa3u7B/&-_^GS_,pF.!atbW1%M/*oU`,B#8e9g/rr1s9qmVcmkANPT*2[bF*Fr&I\)Lf`C4_rD7a)$GL'BMChD-/:0H3gGi"Mo[bT8s\pfs?6:!at]$].pjg_j]VGM4b**;M+8o(a2%;8PErhMPcCWX!"FKm8qe4f1;+]^mC.8@QB#kA`b3.MDi(KQi_(>qsr8_>a6DG_8le;2rHr^:)\i5V[MP6H=6tF?<[bRn,7."bPVEl90?>Z_+A6eWh(p9Af30HRkR!Y^V=D=kPhFSQZN[(q'ioE0&q0b&`]4c2fPO*fFQMcInf`\=B>FM^;YieSZ*]KIdNhgsibdcjX"QM2G$`m/ZG:eH5in?S&,MIqc.r;OiYL6HJ$O0XGuNUuH])f%IldYtXd2B8=0EBs)RFdiM[VUsd^+NG[g07i%(1\83(>)JPeV"Dfk*4L,*[l7`s^9$`MO?N2Y"[(qn7X&>d&.<3F^=@Am"e;bTobU:ffHfi`=XiM0`bIh=H]EcJ=%[,uur'MWm=]L_WC\-V6!OlNkGp,EgON8C2bN<f^[]RTn1R.^H(amF!^l:rqO[X+_A1nuWg=<T@(c,"qX-$km/#)p3f]b\AC>cO9oXJrEj/h(@I8kK/<7SH/Cu53SOUfVn#s3_p<CJ6a&S';&/DsW*[kKo8XI_71Rf->6@2<W=SZQ,2(8mDG87VltYQg+%_Fb"6IhOgoE'[7X"ri@P8a7Y)Q9(2G-kVB"Y2l\>_ViX@[c^Bf`2-@X,X`9][F4:-/`pN4GDI4-s1qs!h$S.<S+c#SC:V9(YRW4?;p0);[1]hsAhIu9Zu^6!@WfVjNn4Zb`Mf-j,3+!fU]g\,^l\F,qiE@&IMSek74+.d^&g!s7cjme6h2-Ll*")"iKiUqUoJMY+7EV""iPC?B/MK"b`43A7*+ao(s_Ef4VOM4L^d[n16IiEGDD0L_O/V\Kb5F8De+gJ@7hrFB!HoblP$`cXPmmfG[;j3f/tEh3i[:\Cf?Hr:b%*4$GWPP%XT/946SubDlshF]/A"D$8e>R9s5INF71eK78Y@>1l?F3Bo0tNW"Bq,AC1Ui9@k'LW`J5`&2:-,;B[q8IEW[^mP;'fTeg6u8o6P_>ZDQuQOW;I/ht#Ne3"IS=_U_iWestYXLFm`$Ibf/>"uP!Xo<_R[_SC#2Q4T!W7VuVIc*JbdU+pD<kQ6nHh[F&VeBnLW:/UoUJ6S<.An2eSQ_M,)14i=fasVQ_5:1@-.[2B_7ES#e*Om.?i?A@Jc~>endstream
|
||||
endobj
|
||||
17 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1152
|
||||
>>
|
||||
stream
|
||||
Gb!krgMYb*&:O:Sbe?*V/gEt&7HJ+.1eeu5kQS$S^A(.*)4?U\WY4]nrVDO,[cKLB>%nRbYeJ25.*e>=B.g"<i1&<LklTcuK(Eabe:m)r-mK.p>Bh(r^'oh@h15;d4Q1OY$RGAE(DOtVK?ji7h2m5-![7[M9Mcp$.)<fM5sPN#,i$'O:`od_!l9Bml>sf9p3VJ)0"PZ5k<+.%^VqQMGTl#t3eZ16cknr4>>cE@*[;0f"!=6@%,ZR0HikUWaDs=#-A0'M+fBAhA(M1JoaP0JQ-;oSM_g1W+aR-KkSRm$&fs$KY0kWpQ!\*b2HE#]M:+,_NeL7G_ED-)7TfEq_pIGL;_L'DC(Zt>"Eu*,H9XmLBsnunV$#BO<e3BJG1SWf=bgK*"?R1,+?`>E8d4VWK'%-i38HIkO+`?@o0T<P_q\WrAHmEg(:c$U?G]rB/0o76/6-EqU-Pa)aRi%lheFih%3l7'%O=Nh)La$R1s7[d9?aTuf^ihMeSQ9+P727IVrP*HE1\2%jDLGC4QN''fuM^;g.%aQ#)64%<a+!l[6hMuK9_Ol3ec'@Lb6C#n$%W.!koW/3fEBoA%L/*ZIknSh\BJE`iQICrcU!6>P*LZO)_p$s7c[iC`YQAFhU_dmL4!.b`-Ls_+MZXa`p[W$7fTn\<S@bO+_p'O3;b:oLb+(VQ<-i]=p8gCsroBiHCaakm-(KW"M]46=`jGm+.bS-JklQ.Hi7N50ICbZ\PN7\mT\mC*g-<-De$=Lc>Hb$!m9.\j+C3S[,$PjDhV^bRH<b`OA&(mrS3pKY5/O<[G[e<NU58RlZ'FN]"fs;H)MbS70ZMd:BLW:<Haq5:pY6nU/#ul`4+&/nM'NWsSKBh>cc>KmiLdd/*4WkKEnEE5%K<.pbB'X7;/?Y.[h0^s`[PM=+p>f+H<3rEW[o=o0<U&?5S:Y?Qt0E`T0fSf6mXCK72L96m9"Z('Yk`cEYFp_n+JR$a/gj"pJ*.dHCMCo2$P@EekG#j*0Lf$"L\&,bdu*\F]<[$doSc[TjnT&4\GUZM:Kq(d-ZX&mHXREK;JM=_sXqMi<U1G`;hUpdO.ncI.%;GZg@M:FVhPfLf)951VI:-tAJ)?+<5@#*!e;0r<ap+M=-\LQU73@!.2^mEhL:ZBj1:Dj!0aZdNa~>endstream
|
||||
endobj
|
||||
xref
|
||||
0 18
|
||||
0000000000 65535 f
|
||||
0000000061 00000 n
|
||||
0000000132 00000 n
|
||||
0000000239 00000 n
|
||||
0000000351 00000 n
|
||||
0000000456 00000 n
|
||||
0000000533 00000 n
|
||||
0000000616 00000 n
|
||||
0000000821 00000 n
|
||||
0000001026 00000 n
|
||||
0000001231 00000 n
|
||||
0000001437 00000 n
|
||||
0000001507 00000 n
|
||||
0000001793 00000 n
|
||||
0000001872 00000 n
|
||||
0000003855 00000 n
|
||||
0000005424 00000 n
|
||||
0000007540 00000 n
|
||||
trailer
|
||||
<<
|
||||
/ID
|
||||
[<6c12062d6887b7f1fec7c33b3fc62987><6c12062d6887b7f1fec7c33b3fc62987>]
|
||||
% ReportLab generated PDF document -- digest (opensource)
|
||||
|
||||
/Info 12 0 R
|
||||
/Root 11 0 R
|
||||
/Size 18
|
||||
>>
|
||||
startxref
|
||||
8784
|
||||
%%EOF
|
||||
168
Les02-OpenCode/Les02-Lesopdracht.pdf
Normal file
168
Les02-OpenCode/Les02-Lesopdracht.pdf
Normal file
@@ -0,0 +1,168 @@
|
||||
%PDF-1.4
|
||||
%<25><><EFBFBD><EFBFBD> ReportLab Generated PDF document (opensource)
|
||||
1 0 obj
|
||||
<<
|
||||
/F1 2 0 R /F2 3 0 R /F3 4 0 R /F4 5 0 R /F5 6 0 R
|
||||
>>
|
||||
endobj
|
||||
2 0 obj
|
||||
<<
|
||||
/BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font
|
||||
>>
|
||||
endobj
|
||||
3 0 obj
|
||||
<<
|
||||
/BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding /Name /F2 /Subtype /Type1 /Type /Font
|
||||
>>
|
||||
endobj
|
||||
4 0 obj
|
||||
<<
|
||||
/BaseFont /ZapfDingbats /Name /F3 /Subtype /Type1 /Type /Font
|
||||
>>
|
||||
endobj
|
||||
5 0 obj
|
||||
<<
|
||||
/BaseFont /Courier /Encoding /WinAnsiEncoding /Name /F4 /Subtype /Type1 /Type /Font
|
||||
>>
|
||||
endobj
|
||||
6 0 obj
|
||||
<<
|
||||
/BaseFont /Symbol /Name /F5 /Subtype /Type1 /Type /Font
|
||||
>>
|
||||
endobj
|
||||
7 0 obj
|
||||
<<
|
||||
/Contents 15 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 14 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
8 0 obj
|
||||
<<
|
||||
/Contents 16 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 14 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
9 0 obj
|
||||
<<
|
||||
/Contents 17 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 14 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
10 0 obj
|
||||
<<
|
||||
/Contents 18 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 14 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
11 0 obj
|
||||
<<
|
||||
/Contents 19 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 14 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
12 0 obj
|
||||
<<
|
||||
/PageMode /UseNone /Pages 14 0 R /Type /Catalog
|
||||
>>
|
||||
endobj
|
||||
13 0 obj
|
||||
<<
|
||||
/Author (NOVI Hogeschool Utrecht) /CreationDate (D:20260607080655+00'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260607080655+00'00') /Producer (ReportLab PDF Library - \(opensource\))
|
||||
/Subject (\(unspecified\)) /Title (Lesopdracht) /Trapped /False
|
||||
>>
|
||||
endobj
|
||||
14 0 obj
|
||||
<<
|
||||
/Count 5 /Kids [ 7 0 R 8 0 R 9 0 R 10 0 R 11 0 R ] /Type /Pages
|
||||
>>
|
||||
endobj
|
||||
15 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1699
|
||||
>>
|
||||
stream
|
||||
GauHL>Beg[%"?g3^gl)h0YE2Xq5n@s[QE;ko=C:$W",<<Q6fV!p9_S`THmIA>pYAt/^CUqM?H+n^dl0K.)&gT^/tK-cf+5R!TPm6$nNYIb[89VoAE8,\DfQ65_PgTi]n^Hrh-b-16@BlLdqj^e\pY_6GnU6OTCL>Zt:3`$_O$q%#@q`Rh1Ba;AjV]?P(1:WXakb.b`e;iA1sM6r\pO@CH1a$s0[Y-neSRKJKMQbh$h)f:.i)i+7@IbJe=iVsnn1fYq\2=.F&Np'NG==.A=k><IK4'';u\Jq;9F;BeQ.GD3c>A\P]-@P?q^I$8(qY^qm[kf'Y<`B.a*0VTd@d//$u3)I,'*J@V)I\i.c+<m=*pLN3#AH_JB$5S170I@'jP.A:)S0C;+#eW"6U3;f'k%>IGi,KZWb5;\8V9rW&,+o2d`V47upYf^=l@Raj&!enZ\3Se/#)?m/`1T%1cZUp;UsN^e44f-(.SXhCO1J=tR@eK-qgl64cd5u:m?RXUm7s#oOtjk#_a;3dM_I6$8`a8qm%7RX%cu+@",hC!0aM.1Br2%MTFiBE3nf<An2>4jOh@.`%54r?(W;l-,8,"Y0VDgtVs!l`KkFtbPZ=5R,pXAd`28>l<O,lcRia%Z4%@'a(bY<g/J[pd^'(fg]QFC0U((MuBl(DRJhZR-[&*`Y,nGqbB7]Ye-`#_<PE56K[KCi3.`*l[VGEK%G%IGX0'hjb?JDQ=drJCs`WSF3r:@KJlgfN&;oKj<ru$/)J3V?LH$WsV%%YmCZ/@#4>TS\Z&"K]k!m]g]=WF$O]03Pc?DYRZb@!*o`G<42'RmmWD>=)6:4@!,hS:$r't"p?Mut.k"QDkGnHp/a(e2Lu\FUd!EKKaHcs4#lFjNQpdo##s)R\;Hpn0G<1QGOED$F-PlYjiYm7iJFZ*a"c,'2g<];T+S.n:k'2E#>!k/*Fb.c8%Jc%a"U/kg(YN<b=gOH9q-1RUMP+N^O,o]KY2`O$ZiM&bAMs,i!*O"FDraZE`bWnIkPi4lbi8A]YA`b:o!$*?=nPOuF,h:PLlSY54kRJ/pLGMM.'b9%&15-c6$hBpL^j-Qr@$o^`]S%?8'c:T7T=BnBSaq6sqI_i4.`&q1/hp2nO&Z+*(k`44#]u(*#K+fJ<SRcln*H:JY'=^)sd7hte7V>E3D`Brp3+DZ3oje+TZ0R4$SClMkfKI'!FPSc3#PAThK*L=L")n;qNfAX+KZ9%6)sJ1:l4JKDiXN+0]^<6&FhWan'J>8&:+usW:0;Q;;]NrV*l;A<N;_)mC^V3&RC7K7o?=d]TWjou9WGc#4op2d!V!=fj3=GnY^2"%R+hZoNmmM;`G<DV-Wmi9=\fmR8f]R2s4Nu6e(98$-1BP,]iX%%:5-9=rD_\/&/nG0S2&bUK;JlhNG-)c$PgK19tPSC'<\r94bE(F_El[X#"G7?K?(>87XJFDk:sXZ[)]c6n#bihG-0,/.hb8!S-:5$Yi"*A)425[rC50+)ibgQ9pFF6eY\k-S`.e0rJ<)rp";+(^R`rP/MaE3gJM$G&7"o"G(6Q(f[MIT@CZ-I(5=9s_r8Z:4N@GLO]4"":YWL.6=GMC0WNq5rW<Ls:cubJaN,dJOENjZoU6hC1L;E-KoTC!hM'1M)I_Hf4l5'l*U^t"a7')$huS:s#<pcS,7c<[h4jZSP9.[e0u9UE$u-8bUnE:s?Y"Y@W;~>endstream
|
||||
endobj
|
||||
16 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1486
|
||||
>>
|
||||
stream
|
||||
Gb"/'D,]1Y&H8h>Z/q15[)]lE,l()fP'Y!,f;[5B3rU>i!t3;8.g]ndlaqA(:,9gsJgX8S_&ajBGIu2h55QN@;#E$EHb'@TE=@UI#)pIp*1.ua`c'e5Z1j#D\Di)3JV]DFL]`Keq17PBbJ71I76G#jdX["%";rs-L/A3rcNO=WT[7ZWgg`SN7>"D<$(7t`[;fLa`Asra`)eG"ID3N6)L)ik%6B/FIo.'N@#\#YWfVlh5O`*oKYb:p^RW+*r'Hb!H(Lr'W@IO^?GV<d!00h4Q+kg`^='tV(gk/T\P^]e.Xap:+bOp2DfhDNAju%hI>BP>/-arEne&Rf8l<6P('mZ%T1\aiEAFScHMb9k(BnN;*fc2OCnO,TLquY`<cORC?,0.;F>hV$1stD'KKDJ-*/G\j('J'171/)9Y'%BOS3.32iBFD7Yk2H;e1l,^W@(&J%X(L*#`;GMKDnKqm[8B=9lMVYI6oXs\_'Lh$Ck#,a)gC+HAhu8BU>YZ6]J1H7lrRW4ua8$OUc#J48%a-V5j@@Sj+2dLodL'#oh=c!YUWO1ToN`0Hs^Q+fPS7&-nFA3qkk("$]k,;.95OLR1'&T[^sR)O\'sJ8ld/o"U;p^Eb511)#_(8Dm"d\_g@jW4uQ2Ni6VsU2AE;A%':fW`I$T__e"*kr^W"TqIXe%reN,mmL7>HDAg/Use-`bQ^:.4ZJoBC;lKf(.\ri%$'Ls\le&c<Xl1.%dsCd"gMr1G&(Hk%):AD!D@3u<067#3)4Z_Y65.X\*3;;^]V()hVP\Q\T0-3)\A?Qb,p1)_$&^VT5!X7jeBn!E3rfbA:Ok9PAKgV@FR&iqOjEZ#:q+NZ"sU%qP4h"#CtMm\(l1iiGKoScXR09a#UHCglF?<>9QVm1ttdSUCs@TMg%U'X%Jmfp0nco_(,G0<nSU*>-Eh];GX@b4IopLT+"1\WnTr5f8iV8YI<M\Pr>p'mU7VHfR8!5m,4/T%(/jX(M3q>cWnrM3?.6IDG<L`mk"u10Gd/_-)DJ5QcQu0267a#7J'qY`pN/Eh:3QQ'j$<ZT!E2Aa&S89p^Q(t1lTNVh,dWRDtkAcE<^@M-0SF&\#23N_h"jX^[(7Es,_.(Vo^]F;bh]W'j>P0Zo-qJA,AnZ>O&i#L]g=d.nm5VI?n6ri,,:um)a7Y93:7>^644X_,r5lM5]mLrbsD'@8$jK9uf#&2K];Z'f.;N#<+<J("rthSZXV.4EImQ]^XhM$FRX2RgZujm(YO>p8>lAb^BN$LA2]n/2fTBVEnH0,oPGup9HAk)tl&\MBR@>Wj>#>1E7I%\i4+n"t4f<ad;g#+4l_IIh\4ffFX&s^],dk*JcnTVJ.0QS\U%=0TW8hQ5A2KC^%\e@l9a9O7-JR'KqHqaY_>kJ_OtL"!%_8\PW3.RJPoSW[$4+6elc(!j?ZNkH3u37=J6Fs*;/%*Aba&EP-g4!?-#09D$aD2RWD]MTDlCqTk%(Q7pk"!T$&V/D1g~>endstream
|
||||
endobj
|
||||
17 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1760
|
||||
>>
|
||||
stream
|
||||
Gb!SlbBDVu&DcY&VE6(u@/pErd&SL5S>L:rUfOhML8GN=&g&Sp.>bgR"$Ri"Q7?(_EI)BaQm)g[>R^%*%`!VSLK4Al"Q76)c7Ttg%\q@c";*?!Jle_`?N\.kpOipm;:P+r&Do3lOA?*1\<9CTq[=23M"1ZS`J@F+!fl;'O*Qh&q##6LJ9[6'8cV`4PtKmPmh!T$\e`5Ldbc)&i)9iO:Lo(f@FedBL-8Wp.;RHGKJM/#@?eRsqYd<Nn67g$76&Jr)#c(-*R77oF7-m92fPJB3mO$PIfcB*N1Lpm*M^KJ`-$aBD=gF:flE5\f$K1[)PmHo*?uX\MQIW8)ebh\M/oT2kaN^$3iK[Bm<MP?`p)0QM,UfYaol0u)&+"a3P5`O"_aGn)X5cg%Ef[5Gkb__`=mK_:%\5&(9mba=;T\>s/[D772K]8&Dhg+.1@m#eH.3BB:#@W0H:8*9iF,c#[%4C&EHYt9+W$DD0e3:YM.GZh&5!)O.S\:@2]7t3BenVMf-0dO:MN)j67\Zm;>:9n`oE8p$4j!r;QC0?B#tlV6J1MA6Au^$;+QpT6_XQj9(M3`8kMJ7qD^B%:=4kJ8>Nh$B&"VWJ7,UQ:mb]\;kY;5of4-4>f+1=Sk@*e]GWI^2NT(+C>dM(F#"neS2#3*cN*E67t86*U<n@K*:N\hF>'`@u[Gm#54.?m&XCPCpOW;+GGZde$scO4ukjkh$T]'Bu`<;*nRPV^:;_cG.[lH[=AdfI#fQo1XA,gdUC(*9JPl!YbLW8MXp['>F"sDitlsT`gk3"in+n&]8/Z-,[4UdSE,[Tf28K)4nH=BFBW&noU+ed:@k8a^<G"\#koo_oAn7<59<EYf2:Eap"S*^`6(qSk,Y^kXn(Kri,X.T/q0bV'^TeM><`0r&[&;e5D2nr9<>>`[9duS?Oa4^,M^7]+-M3E]Xg#-D=Kk>C'JREC]Pmi("DQXW4#J]Y\alRN3meBL7uo"<ZMLt.K7>,jq81AnW^&BW#\6bXUqm5D:$Z>MIsp6kN6D:Qjp&.dsP?L'Aurs`<BsdYHn?qnN#XX?;2_ii+7!G)#;"r,l8!_7?aQUDShjJ=G<+YQ5Ore'N"mNn-qmL@g/NEKjDUb_Hc7D5%T&oI<@lEkoOY]A/E?ZXQ;TIMfM4=T`1!bX`0(l?'f]E.jSOsHH_ORGYP(FK!rW0g"oglgD7@T7Q8%&RG/_EA[YDM\LV,+MU$=86(pZI.h"E\W(N&8jdcISN(P+C+gouVjjAGrV,O[LCU>ac?L-?n'eNf-7.HTlS\WF<)d$`UNdCORhQaJ\0)2KDbGhjjqToj*2l?QVXSi*3WMQ*385u<9j0EcYFW5A(U>gEBMprr\OUDd-K7$QZK1T;:`6l4GT,FnNZkg,$a&p6-frjI];,u#BC)X1KC!]Q532sEc3\X=gY3<]-k2QeilMc&!8rn3j\tVi+BfP'OVa@e2O#<IZ!o%2ZCi:l*D%#/:UDmR$9QB#(l$05&poh2o5"!$5Ub'7ZZRe-InJoj)G&!ZS/ujT':-j%\pk[@9M>N"0N?oJ-p0E>UlW[li/t/\MJ)@+AVU8'BR!^9[ppL*)P'I(0`fD]*N_28dd*hOERt[7?(X"@%bO^'"L'O7_RIcG675ra'Q?jkT>XpAM_CS?e=iqf]ekj[dBR^8Bfadt)@aaO,Fhl,.p#eXpj6U!pP>=4Mn\%%+iXD#!m;nf<W7-ImY>-!CAk<W#eaZNo^Pae;dln!nb%VO_"?@Id*+p2.]5e10^B*m!2.Z~>endstream
|
||||
endobj
|
||||
18 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1590
|
||||
>>
|
||||
stream
|
||||
Gb!Sl>>s<8'Roe[38pPu1/f@<nr8t_,c,#u$"UVAB0*[BYOIFW/_;o-ksKrIO4Lc+"W#mIP-fSBXjst3kNGGF.)+C"2ou(1B!?L#J8psI!u")<li[/FF+/<=pN[lD+Dsa+L]`K=o7AH7$LiH&7m(5ldX["%!"gt!L/A3rl%4Eh:e<WrjY.g.:P2ID$(9t3r[iG_pme*m5s4%cDUNb*Kgrb3pmlT,B)=l+3.l?C=g"nMP^.fbZQ+-Q*Ii>F7lloXZHtXb?^aS6MZup:&)b]ZGUK\*VFt(*K\6OQ?5WbgVS]+HF%*=YoRj5f3Nlo8kTio'&VCoTq2AYH\bNg9%:)4#j09kR#brsAd7*c_]%X[86(\eXiHPL9,D)S2Y8te+&Q1tU%+uKmKF/WV8&B^Min-!3_iQRp=028'OALrjka?cp2p#fB8!)9jO?!`o$:fTpJJfJ=,n:r[amd.3g<gG^%(D)"E)p'rml'6RLB=1bAgn$J</cDEObbg]KBn]9jZHee/6*.to/VoE"5VFFoS(,SV+Gd#j5p.XG2=?e,O7h\\kmBI6S4Kkl!ih)QMn5S=C0R:#D(li(+:LKU&D&;St_^9l/!Rq&8b@u3+M^X*.Cf1dH)7?]3[D,gg:^R(2/oO$cPXZ?2`S@S+Z-YXUdQX_ThIjgfQ9XW6E=P'a<t[Dif(U2qU1Whire)&JqF:_n!p#%@J]3ogX4__C%'p:G>@VB@>,JU/Dfj4Z7@af5W;/Z%tW$7IC;:pi[FdD(THYjKU3&Z/eIb&JGT+cAiR^D:"P?mkEbm%8f%:4jP2t4)7R$H/3;*==FfiNa0Y9$"%5.aR%le(D5IUl^oLmVI]Xk.<8\9!\S$H$(/d+i_7DCr*N6_.;?P.P*ekMF)\+a\LLKDa:?]ogg&];b+:3R\$P9s%"C"Q<O!'IEiC[W-=iOUP#/2K^6kKY,2a[ghj3'?)_;rmg#Yo,<RJ/]je1`gF9CsBhSkJ"h(\c,0)d]<T-F&2B'AfZ>T?H,.H-ud)&)G0^kJ=54f#e$l)Ka*h$VTK-$]<+,ca?RB.r1b(G3HgSA(Md.HP?&r1f@ge'c<73JrMWVf:pIb^9f.m_&kh^2d4Fb<j=olco423k:s:?Df%$^g(B;:c2:2`di"\iC[aNS?#W+[B>hYRD-\+<`X9uS!,/t'M,""9^B!PcsXDKNYMCU2-;Hod5MN%Wr#iCmqYA+q;uFH*Bn"[M>7"G3i^FnNSRaeg5bI1gY7_f<'tfT/dnPD:1"J"97e;?>Y7"o8c&gT/Yt7'DI.l!M*)VJHrQ1$)Eu<\CclK(j]Q`*Q?%&iCc,ULZoW%!l:2B%,n]f42ElEu5%2YGQp#a,5rWN)TH>mY&,*g\4kL?-0Va9%B0LWD4%=I#=32NOeOj+Th!.%-F>[dt5GfMAI#R*^=csOU2SC3.Q#:,DQH9U:+O,=gs.Y1%%MtL?4VAeD`KMi*+P3[E;HIg;iBD>b(*emM!N"c,#G\nS!p1[G`eFRLf,sL;pBGnfZ'`FUC2'X*ouo*/@Dqf:CD=3K]tnD!Nj&[k@b_MQZ"_,p-#;:^b:>/=iu4DKWf$okgb72BX@3em^B$0Vk`l~>endstream
|
||||
endobj
|
||||
19 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1324
|
||||
>>
|
||||
stream
|
||||
Gb!;c;/b2I&:W67\@9!P`fLm';L@(8Cr$1Kh26LB_m0MN523@hd?EXekc`l8Z=UYISN%&[,W6j9(@U\'n+b^1!2l/ss!KhBq%1h(":,=O#meKa%'STu@IRX>Um=J=^d?5^=9=Dujq#UK:dChENb'cWEl4tUTWDPP`YKie1I`30&LMDu!R,4pX9*!&UohA?5@dqiEiiH>Fo:q3FaUV(04oMN*JN1[aV`hWet@>iTjh7p-A#Y9K+EH:?c)8\MH)G'5(gW9&sHH-2c:Q=G6u%D/S9HgjVo&^@JI9NY[^X$S40,,qaRcno#l%;H:*1nBj*KPG)UgE/8hP&\IQl;P1bXAb'oObd3\JOlTQp2Wc<?.dH%8Qau5(nS?L@W%(RH)gj3=Z9Bm5c!r-@5_ubj+gP3KH(U5<QqJ4,p_brb,1)\Jc%!eM)knrj?Z9VRLCtpZ9AY9oBh!D2rbrnYFYD'8>ZM?t%"BFI$C8dhM8tTg)F3+L"N4&$cn+Z=k<YFo(RuG)R;676Cj4o)WJm$G9C@g`]IWhD-DY))??'j=V*ANJKOLi38e:d]\#"?_Q4\Gmep,Ib_)rlun!Nnt78#/H<&Y(A%W19N]=&f-T/'$1-jeO-UF8<N2oN/^u(-`nBTDiq$7dg'4mE_9?;%e.i;YEG_fhY$KY/<@Q/I0/ZCpr=[&F<e\MQ`*)ee</o"/a&Oktd*M<(fp58W!m,JLHs3/5)Tgl[rNCY+>faHiu.r1gnp;hPKfN$Kk$K@1E""_uaA#<UC.A&6eql#XJ2:!5h;,PYVC+Nf/"nBT<UhV/M3kZ-5e&ZQl]G"dOB:W[G)Q3]@5\!Z%3)VHA(MK:atKa$.?!IS"uNV"p.MmM-C)MW<GM8DE%kpl+E#,Ai4%?/1c87Qn/tio+2XEP:Q/V#7kM_/,#i/XdI-a_-@Y:Ch6.&ou%]#o[F*F4AEn0]lc)TjWuo<p]TB.4tS8^[MP"<D!Ld7MM3?OSOSlH4hG#Ej3!d:58Eb`RPt8E]7f3_jk3(gk'.B_'kl31,s>"^T)5/*'<fdje-L>SIG0@/Jd920_7:;?L5&2fM0.9_<*BUEpN%%ORLY1!-/sucS3?"WhOLE`CULh_.*X!?P),D:LQ<aOqL\=h=)_](QbK&pBU>CU93Y<.#PQ!.,(@Qr=.X7g?61P<HO7+<])ZDFW@,a6qugb@HurRg>,"hOOI:*471DO1ue?AESLp5:$o,kB\nr'[b(q24!Mr`)KpNp`4&ZR7P_?B)dSbHOT/.jIdLi0*P6@>4[I\K3mI-p8md;;>is3<F!;1[$)YjZBUhARPWm:ekKWnrFWpt)s1Rq3lM~>endstream
|
||||
endobj
|
||||
xref
|
||||
0 20
|
||||
0000000000 65535 f
|
||||
0000000061 00000 n
|
||||
0000000132 00000 n
|
||||
0000000239 00000 n
|
||||
0000000351 00000 n
|
||||
0000000434 00000 n
|
||||
0000000539 00000 n
|
||||
0000000616 00000 n
|
||||
0000000821 00000 n
|
||||
0000001026 00000 n
|
||||
0000001231 00000 n
|
||||
0000001437 00000 n
|
||||
0000001643 00000 n
|
||||
0000001713 00000 n
|
||||
0000002002 00000 n
|
||||
0000002088 00000 n
|
||||
0000003879 00000 n
|
||||
0000005457 00000 n
|
||||
0000007309 00000 n
|
||||
0000008991 00000 n
|
||||
trailer
|
||||
<<
|
||||
/ID
|
||||
[<ee21ac0bb53ebd0c0824ba6f4e8a65c8><ee21ac0bb53ebd0c0824ba6f4e8a65c8>]
|
||||
% ReportLab generated PDF document -- digest (opensource)
|
||||
|
||||
/Info 13 0 R
|
||||
/Root 12 0 R
|
||||
/Size 20
|
||||
>>
|
||||
startxref
|
||||
10407
|
||||
%%EOF
|
||||
332
Les02-OpenCode/Les02-Lesstof.md
Normal file
332
Les02-OpenCode/Les02-Lesstof.md
Normal file
@@ -0,0 +1,332 @@
|
||||
# Les 2 — Lesstof
|
||||
## OpenCode — AI Code Assistants in de terminal
|
||||
|
||||
**Vak:** AI Fundamentals
|
||||
**Opleiding:** NOVI Hogeschool Utrecht
|
||||
**Vorige les:** Les 1 — Introductie AI + LLMs
|
||||
**Volgende les:** Les 3 — Cursor Basics
|
||||
|
||||
---
|
||||
|
||||
## Inhoud
|
||||
|
||||
1. [Het idee — AI als pair-programmer](#1-het-idee--ai-als-pair-programmer)
|
||||
2. [Wat is OpenCode](#2-wat-is-opencode)
|
||||
3. [OpenCode vs Cursor vs Claude Code](#3-opencode-vs-cursor-vs-claude-code)
|
||||
4. [Installatie + setup](#4-installatie--setup)
|
||||
5. [Basis-workflow in OpenCode](#5-basis-workflow-in-opencode)
|
||||
6. [AGENTS.md — context geven](#6-agentsmd--context-geven)
|
||||
7. [Plan mode vs Act mode](#7-plan-mode-vs-act-mode)
|
||||
8. [Slim werken — context-management](#8-slim-werken--context-management)
|
||||
9. [Limitaties + valkuilen](#9-limitaties--valkuilen)
|
||||
10. [Productie-workflow tips](#10-productie-workflow-tips)
|
||||
|
||||
---
|
||||
|
||||
## 1. Het idee — AI als pair-programmer
|
||||
|
||||
In Les 1 zag je hoe AI je kan helpen prototypes maken (v0.dev → website in 10 minuten). Vandaag een ander gebruik van AI: **in je terminal, naast je code, als pair-programmer**.
|
||||
|
||||
Dit type AI-tool noemt men een **coding agent**. Verschil met chat-AI:
|
||||
|
||||
- Chat-AI (ChatGPT): typ prompt → antwoord in browser. Jij implementeert handmatig.
|
||||
- Coding agent: typ prompt → AI **bewerkt direct je files**, runt commando's, ziet errors, fixt zelf.
|
||||
|
||||
OpenCode is zo'n coding agent — open-source, in je terminal, werkt met elk model (OpenAI, Anthropic, Gemini, lokale modellen).
|
||||
|
||||
---
|
||||
|
||||
## 2. Wat is OpenCode
|
||||
|
||||
**OpenCode** is een open-source CLI coding agent. Geïnstalleerd via npm, je runt 'm in je project-folder en chat met AI die direct in je codebase werkt.
|
||||
|
||||
### Kernfeatures
|
||||
|
||||
- **Multi-model** — kies OpenAI, Anthropic, Google, OpenRouter, Ollama (local)
|
||||
- **Tool calling** — AI kan files lezen/schrijven, terminal commands runnen, tests draaien
|
||||
- **AGENTS.md** — een markdown-file in je repo die AI als project-context gebruikt
|
||||
- **Plan mode** — AI maakt eerst een plan voor je akkoord geeft (veiliger)
|
||||
- **Open-source** — gratis, audit-baar, geen vendor lock-in
|
||||
|
||||
### Wat krijg je niet (vs. paid tools)
|
||||
|
||||
- Geen visuele editor zoals Cursor
|
||||
- Geen IDE-integratie (werkt in terminal)
|
||||
- Geen background agents zoals Cursor's cloud agents
|
||||
|
||||
Voor: developers die in terminal werken, willen experimenteren met models, of geen subscription willen.
|
||||
|
||||
---
|
||||
|
||||
## 3. OpenCode vs Cursor vs Claude Code
|
||||
|
||||
Drie populaire coding-agents in 2025. Allemaal anders.
|
||||
|
||||
| | OpenCode | Cursor | Claude Code |
|
||||
|---|----------|--------|-------------|
|
||||
| **Type** | CLI (terminal) | Full IDE (VS Code fork) | CLI (terminal) |
|
||||
| **Cost** | Gratis (API-cost zelf) | $20/mnd Pro | $20/mnd Pro |
|
||||
| **Model** | Elk (provider keuze) | Cursor's models + own keys | Alleen Claude |
|
||||
| **Best voor** | Backend, scripts, experimenteren | Frontend, IDE-flow, leerlingen | Diepere code-tasks, agents |
|
||||
| **Curve** | Steiler — terminal | Vlakker — IDE | Steiler — terminal |
|
||||
|
||||
**In deze leerlijn:**
|
||||
- Les 2: OpenCode (begrijpen wat een coding agent doet, terminal-flow)
|
||||
- Les 3: Cursor (full IDE-ervaring)
|
||||
- Later: combineer beide naar smaak
|
||||
|
||||
Veel pro-devs gebruiken **beide** — Cursor voor IDE-werk, OpenCode/Claude Code voor swift terminal-tasks.
|
||||
|
||||
---
|
||||
|
||||
## 4. Installatie + setup
|
||||
|
||||
### Installeren
|
||||
|
||||
Eén command:
|
||||
|
||||
```bash
|
||||
npm install -g opencode-ai
|
||||
```
|
||||
|
||||
Of via brew:
|
||||
```bash
|
||||
brew install opencode-ai/tap/opencode
|
||||
```
|
||||
|
||||
### API key
|
||||
|
||||
OpenCode heeft een model nodig. Twee opties:
|
||||
|
||||
**Optie A — OpenRouter** (aanbevolen voor leerlingen)
|
||||
- Account op openrouter.ai
|
||||
- $5 credit toevoegen — werkt met alle modellen, prepaid
|
||||
- Eén key voor OpenAI, Anthropic, Google, etc.
|
||||
|
||||
**Optie B — Direct provider**
|
||||
- OpenAI key, Anthropic key, etc. — directe billing
|
||||
|
||||
### Configureren
|
||||
|
||||
```bash
|
||||
opencode auth login
|
||||
# kies provider, plak key
|
||||
```
|
||||
|
||||
Of via env:
|
||||
```bash
|
||||
export OPENROUTER_API_KEY=sk-or-v1-...
|
||||
```
|
||||
|
||||
### Starten
|
||||
|
||||
In je project-folder:
|
||||
|
||||
```bash
|
||||
cd ~/projects/mijn-app
|
||||
opencode
|
||||
```
|
||||
|
||||
Terminal opent een chat-interface. Type je vraag.
|
||||
|
||||
---
|
||||
|
||||
## 5. Basis-workflow in OpenCode
|
||||
|
||||
### Workflow 1 — Quick file edit
|
||||
|
||||
```
|
||||
[opencode] > Voeg een README.md toe met basic install instructions
|
||||
|
||||
AI: [maakt README.md aan]
|
||||
Je accepteert.
|
||||
```
|
||||
|
||||
### Workflow 2 — Multi-file feature
|
||||
|
||||
```
|
||||
[opencode] > Voeg een /about pagina toe in Next.js. Match de styling
|
||||
van de homepage.
|
||||
|
||||
AI: [leest app/page.tsx voor stijl, maakt app/about/page.tsx]
|
||||
Diff getoond. Je accepteert per file.
|
||||
```
|
||||
|
||||
### Workflow 3 — Bug fix
|
||||
|
||||
```
|
||||
[opencode] > De Send button werkt niet. Console toont een TypeError.
|
||||
|
||||
AI: [leest console output, vindt de bug, fixt 'm]
|
||||
```
|
||||
|
||||
### Slash commands
|
||||
|
||||
- `/init` — genereer AGENTS.md voor dit project
|
||||
- `/clear` — clear conversation history
|
||||
- `/model` — switch tussen models
|
||||
- `/plan` — toggle plan mode
|
||||
|
||||
### Approval-flow
|
||||
|
||||
OpenCode vraagt approval voor:
|
||||
- File-edits (per file, diff zichtbaar)
|
||||
- Terminal commands (per command)
|
||||
|
||||
Goeie gewoonte: lees diff voordat je accepteert.
|
||||
|
||||
---
|
||||
|
||||
## 6. AGENTS.md — context geven
|
||||
|
||||
**AGENTS.md** = een markdown file in je project-root die AI gebruikt als "project context". Vergelijkbaar met `.cursorrules` (Cursor) of `CLAUDE.md` (Claude Code).
|
||||
|
||||
### Wat zet je erin?
|
||||
|
||||
```markdown
|
||||
# AGENTS.md
|
||||
|
||||
## Project
|
||||
- Naam: QuickPoll
|
||||
- Stack: Next.js 16, TypeScript, Tailwind, Supabase
|
||||
- Hosting: Vercel
|
||||
|
||||
## Conventies
|
||||
- Use Tailwind classes, geen CSS-files
|
||||
- Server Components by default, "use client" alleen waar nodig
|
||||
- Maak geen comments tenzij gevraagd
|
||||
- Run `pnpm lint` na elke file-edit
|
||||
|
||||
## Belangrijke files
|
||||
- `app/` — Next.js App Router pages
|
||||
- `lib/supabase.ts` — DB client
|
||||
- `types/database.ts` — generated DB types
|
||||
```
|
||||
|
||||
### Effect
|
||||
|
||||
AI gebruikt deze context bij elke prompt. Geen "ik gebruik Next.js met App Router" herhalen — AI weet het al.
|
||||
|
||||
### Best practice
|
||||
|
||||
Genereer eerst met `/init`, edit daarna handmatig. Hou 'm tussen 50-200 regels.
|
||||
|
||||
---
|
||||
|
||||
## 7. Plan mode vs Act mode
|
||||
|
||||
OpenCode heeft twee werkmodes.
|
||||
|
||||
### Act mode (default)
|
||||
|
||||
AI doet direct wat je vraagt. Snelle iteratie. Voor: kleine taken, je weet wat je wilt.
|
||||
|
||||
### Plan mode
|
||||
|
||||
AI maakt eerst een **plan** in tekst — welke files, welke wijzigingen, welke risk. Jij keurt af/goed. Pas daarna doet AI de wijzigingen.
|
||||
|
||||
```
|
||||
[opencode] > /plan
|
||||
[plan-mode] > Refactor /lib/auth.ts naar gebruik van Supabase auth
|
||||
|
||||
AI Plan:
|
||||
1. Lees lib/auth.ts huidige logic (~80 regels)
|
||||
2. Vervang door @supabase/ssr client
|
||||
3. Update import in 3 files: app/login, app/api, middleware
|
||||
4. Genereer types via supabase gen types
|
||||
|
||||
Akkoord? (y/n)
|
||||
```
|
||||
|
||||
Voor: complexe refactors, onbekend gebied, code je niet wilt breken.
|
||||
|
||||
**Vuistregel:** plan mode bij twijfel. Kost je 30 seconden extra, voorkomt uren herstelwerk.
|
||||
|
||||
---
|
||||
|
||||
## 8. Slim werken — context-management
|
||||
|
||||
AI heeft een **context window** — wat het tegelijk kan onthouden. Bij OpenCode meestal 128k-200k tokens. Voelt veel, maar in een groot project ben je er snel doorheen.
|
||||
|
||||
### Tips
|
||||
|
||||
**Start nieuwe sessie per feature** — `/clear` na elke voltooide feature voorkomt context-pollution.
|
||||
|
||||
**Geef expliciet de juiste files** — AI hoeft niet je hele repo te lezen. "Werk in app/auth/login.tsx" is beter dan "fix de login".
|
||||
|
||||
**Houd AGENTS.md compact** — meer is niet beter. AI leest dit bij elke prompt.
|
||||
|
||||
**Skip large generated files** — node_modules, .next/, dist/. OpenCode doet dit by default maar check.
|
||||
|
||||
### Wanneer crasht context
|
||||
|
||||
- Mega-files (>5000 regels)
|
||||
- Veel back-and-forth in één sessie (>50 berichten)
|
||||
- Veel terminal-output (test-failures, log-dumps)
|
||||
|
||||
Symptoom: AI vergeet eerdere instructies, hallucineert files die niet bestaan. → `/clear`, herstart, kleinere scope.
|
||||
|
||||
---
|
||||
|
||||
## 9. Limitaties + valkuilen
|
||||
|
||||
### AI maakt fouten
|
||||
|
||||
- Verzint imports die niet bestaan
|
||||
- Gebruikt verouderde APIs (Next.js 14 syntax in een Next.js 16 project)
|
||||
- Hallucineert function-signatures
|
||||
|
||||
**Maatregel:** lint na elke change, draai tests, lees diff.
|
||||
|
||||
### AI is overtuigd van fout
|
||||
|
||||
Een fout antwoord klinkt soms net zo overtuigend als een goed. AI presenteert beide met evenveel zelfvertrouwen.
|
||||
|
||||
**Maatregel:** vraag "weet je dit zeker?", "geef bronnen", "test dit met de runtime".
|
||||
|
||||
### Over-engineering
|
||||
|
||||
AI maakt soms te veel — wrapper-classes, abstracties, type-gymnastics. Voor productie OK, voor leren niet.
|
||||
|
||||
**Maatregel:** "houd het simpel, kortste werkende versie".
|
||||
|
||||
### Onveilige commands
|
||||
|
||||
AI kan `rm -rf` voorstellen, of `git push --force`. Standaard moet je goedkeuren — maar dat is jouw veiligheidsmechanisme.
|
||||
|
||||
**Maatregel:** lees commands voor accepteren. Bij twijfel: weiger.
|
||||
|
||||
---
|
||||
|
||||
## 10. Productie-workflow tips
|
||||
|
||||
### Tip 1 — Klein per commit
|
||||
|
||||
AI kan een uur aan code in 10 minuten schrijven. Verleidelijk om alles tegelijk te doen. **Commit per logische eenheid** — kleinere PRs, makkelijker review, makkelijker rollback.
|
||||
|
||||
### Tip 2 — Test direct
|
||||
|
||||
"AI heeft het gemaakt, maar werkt het?" — runnen. Lint, build, unit tests. AI ziet eigen fouten via test-output en kan ze fixen — als je 'm de output geeft.
|
||||
|
||||
### Tip 3 — Lees diffs
|
||||
|
||||
Sla geen diffs over door snelheid. Aandachtig lezen voorkomt dat verkeerde wijzigingen in main belanden.
|
||||
|
||||
### Tip 4 — AGENTS.md als living doc
|
||||
|
||||
Update AGENTS.md als project evolueert. Nieuwe afspraken, nieuwe libraries, nieuwe gotchas → erin. AI-output verbetert.
|
||||
|
||||
### Tip 5 — Combineer met handmatig denken
|
||||
|
||||
AI is sneller, maar jij snapt de business. Architectuurkeuzes, productdecisies, security-tradeoffs — daar ben jij verantwoordelijk. AI is een hulp, geen vervanger.
|
||||
|
||||
---
|
||||
|
||||
## Bronnen
|
||||
|
||||
- **OpenCode docs:** https://opencode.ai/docs
|
||||
- **OpenCode GitHub:** https://github.com/sst/opencode
|
||||
- **OpenRouter:** https://openrouter.ai
|
||||
- **AGENTS.md spec:** https://github.com/openai/agents.md
|
||||
- **Cursor rules vs AGENTS.md:** https://docs.cursor.com/context/rules
|
||||
- **Anthropic — Building effective agents:** https://www.anthropic.com/research/building-effective-agents
|
||||
200
Les02-OpenCode/Les02-Lesstof.pdf
Normal file
200
Les02-OpenCode/Les02-Lesstof.pdf
Normal file
@@ -0,0 +1,200 @@
|
||||
%PDF-1.4
|
||||
%<25><><EFBFBD><EFBFBD> ReportLab Generated PDF document (opensource)
|
||||
1 0 obj
|
||||
<<
|
||||
/F1 2 0 R /F2 3 0 R /F3 4 0 R /F4 7 0 R
|
||||
>>
|
||||
endobj
|
||||
2 0 obj
|
||||
<<
|
||||
/BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font
|
||||
>>
|
||||
endobj
|
||||
3 0 obj
|
||||
<<
|
||||
/BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding /Name /F2 /Subtype /Type1 /Type /Font
|
||||
>>
|
||||
endobj
|
||||
4 0 obj
|
||||
<<
|
||||
/BaseFont /Symbol /Name /F3 /Subtype /Type1 /Type /Font
|
||||
>>
|
||||
endobj
|
||||
5 0 obj
|
||||
<<
|
||||
/Contents 16 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 15 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
6 0 obj
|
||||
<<
|
||||
/Contents 17 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 15 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
7 0 obj
|
||||
<<
|
||||
/BaseFont /Courier /Encoding /WinAnsiEncoding /Name /F4 /Subtype /Type1 /Type /Font
|
||||
>>
|
||||
endobj
|
||||
8 0 obj
|
||||
<<
|
||||
/Contents 18 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 15 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
9 0 obj
|
||||
<<
|
||||
/Contents 19 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 15 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
10 0 obj
|
||||
<<
|
||||
/Contents 20 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 15 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
11 0 obj
|
||||
<<
|
||||
/Contents 21 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 15 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
12 0 obj
|
||||
<<
|
||||
/Contents 22 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 15 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
13 0 obj
|
||||
<<
|
||||
/PageMode /UseNone /Pages 15 0 R /Type /Catalog
|
||||
>>
|
||||
endobj
|
||||
14 0 obj
|
||||
<<
|
||||
/Author (NOVI Hogeschool Utrecht) /CreationDate (D:20260607080655+00'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260607080655+00'00') /Producer (ReportLab PDF Library - \(opensource\))
|
||||
/Subject (\(unspecified\)) /Title (Lesstof) /Trapped /False
|
||||
>>
|
||||
endobj
|
||||
15 0 obj
|
||||
<<
|
||||
/Count 7 /Kids [ 5 0 R 6 0 R 8 0 R 9 0 R 10 0 R 11 0 R 12 0 R ] /Type /Pages
|
||||
>>
|
||||
endobj
|
||||
16 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 2096
|
||||
>>
|
||||
stream
|
||||
GauHL>BcPr&:XAWQuhtpBcBnp5X=5ToThYn?FJ_W_e'tr<c#`[>TkK,q=QfN%+l%"EI>4:8O48Sk54eq8:lGQ5IC>-VZ?2*nE(r!b$]T+e?rNuT>QHSki^#rSGB;mQ4qnGaM8-'o+0>mP_$k,*jUko@/F!_]ANnC$A'r3L?!ZRqOdsr^D]tRHuAh4$W]MU*q6<%Nl;mRWEm^-4PUo``tt-46AsIC@@5Ru3^X9YK5/%[Y%:PXpL'N.d?h$QBCIpRMB\YRGliJ/-/t>I9?)?=3J7(c<[@K-W0]3PJak6H6-#tJ",+JgFf4Ds.!0oD3VaFbAJP=63;ALBXupZ(LW(9Kq4Zsoo/l1WE?(=*>i2SA[3<AQcseml4WU\Ni3;pG6Tf*i.!7)qo;EP][W0L\BaB\W9#JfORB1+Z8"K'Y<);)PfW@*ESLbi8(e0+,C]!rmdu'#%bso4A((C?-+EiLVE(YriaN!2C1C%2HIaH'ZI*3"905.VsYdS9nCK_/?k,#oN[+MK>]:J<AfSq]5ngFr\$d?#G7mkLZ<C3+G9)!6fiZ-aL"q$:=\^?NljtlZNk(&L9g9r*+U^O7:DQVo@iKs4fQM&&Hkr#h77a:kpo]nhSVti_;=]N2+'SS)[Pj&6[#2#T&8hj>/7l(;rnP*<*9^*HP)=DLV1&*c7bO-)o(nt;jc^J=O)K16A<'q4"ot+Ns:gjQh@CC>W<lCbkB`<0,k\a?C$H`o7e2L\-NGO#JAs4VXR?!H)G8aG9]iX^$93!O$a5\9,IQROaC?S^fq[oGJ;j!bq&hsO*?3!Yg30eLn<Om^*;'FueQ2&'JD511Y_gO&N[,0/FCZ%75_=jJqq^63m.gnTB.;h.SQ2=[1i(&hq8fNOMf0Rj#TWGB*I!.L6aLUEl#W?c1[DBudk'/*26tXp8Tm_:SVMg@;a_>B>]0=FgctX<@19L,h1=f?jW*[C;q/=MmXL[("a/6a?bIU-F)rdHM4*C"4](iWffQgG">8Z3F]KFNE8pt@*/72.uK5+""oA%W]K1d9Rk^i?43$6F6CA#U1g@`jl1Y%[En?:/)K:Ia@s"FLZ6rK/$b,6^];ka3)4SjbpRF&lS&e[cf<b0,5nmua,8-M3`'l4-jHqu6kN0&nu<]d<Ic,a1DW!e2'2N+h[2b<Zc+IsYuh*"%^kCqZ"Q(6tcM3cf&K'bC>a_a?'d]@gGc,ep5Y_*MG%O$Gk8]4bd#G`W%9W<@JL!\"sJaO0(Fq@Q[n&B)a"KOHaX1]l];go*pQ`Kq)P2DZP@9;M2\Q\;h#);C@0]e9)5e_/Z48JO-bP6jX:9*k#kF!+cBUIeY.5T=2M/XQc762TfmNcB,:>CW(Ac;\bqj+O+8X)MEVtiocb@^q0-O]8bBq<sTXNTdtE">mtJcTib/S[K_RDPLkF-3RV1eFGN(YG7Y%/>>eBLjVjG/7CXSMV=`VM,+cfXIZIb>`4T[gK3M[o"nfb,!I28<Tj2OJZe@hSYjhliDA*(&@-ng/^*`(I`UQZ-C*qUR.A)#9`bI/ssg6k'Oc81s-Bdb2Bh.;/3q/Ze4;NB^34#TQXR:kX-/NZ`LkOgdb;Q&MVDORfGXsZ)#T3Jf=f"3',[k0$l;3b+q,1[B5:q?/7T4oqf61*oFIRe302,=,#/@lq,ilb&"&:/hOShn4&'c#a)5C+(:@0=M:of;U/.u)2@j.l`PlCDV?`ba,i_eThUa(d#NHEmG)+G2;>G'nNN8p7nJ._2&Q0DI%nln/^$S?72hR^\6FJ;DS5m5\Q*L#$5Z%fj\I3_>XLWko.#popoVP`6u2ldiE"EVXE[KK\>6jr)l,jeO)]Mq(ce^#5ZsPR:Z'0Y0Ad\bNH!@#I_&.H9]+sBRM_H!WVin1b(=!^%EK7Pk%<oj6>;g\5Z95>ds_<$mAH-IJ\JhIH.nD8o4Z#ff[TJW0\`dcM,YZOZgo#YU1.'Pa.S_9auN7;GFmkKMIX/_W,JA/Y41OVi\Bk-,hLdEpQkEDXG^E[Lnq$p\HSk@38kVB5(A\\2_1qdD%=gdaHnBr1:(,;.bH(<75?OB@gVGLGWe&KL6G<W<5+IaEDu3f#okCT+j&nE,,u7:T"PFJ7fNMJQ8-D~>endstream
|
||||
endobj
|
||||
17 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 2092
|
||||
>>
|
||||
stream
|
||||
Gb!Sl=a/Rh'Roe[\.:_M,R%<hm='-9V6j"W`704oAO$?`OYh/:_MNbjmu/"bB!^7PVDZAD\T=,+mULg)%nlpCVZ?/jE-u)F7:7eMb:stR>f$6okg(K+Gf4f20^QT^6NT_jWuho%UC:DRn3Rak&=C0Dp^T97AHY:9!5W`jDttLm9\pdm@/->X#7_T%ja)LPjLf>SKV3#!E'5jZ5@<Xk..opEX0b5Ob?ne7'NSdE_pro=drKjQ"t=XXID5*d07:q5nK$d!r%8-lhanXtikoIPcId^pI*TZ7(u3$eSJ':Yl?E>ui;'EIY?7Ah4t2n)dqP=L+>!e)&Aaff7k1ooLD[J[\VU/!!n1ojG']gXT*_+;kkG3Fe1_L%_[\EZ%k8aJiU`RN+*b_)eCuD/o?EU!'d8HYMJc>)[4G7u1._'gVU/J.USCH1FHd8oAUkV1]pomJbi$B=+3$F#ZRO6MbG50*ChUG0Q:mYlN/7fU0njG8G2]$D-o)*I;M[.%BeK0D)p@)k-P7$-ZJ)V0p^U"nR8eWp@YR\N[B,C^4>rooK*N`8dPq5eQG:ce<XJg&laf0J`Z:(7W^+2V2^Yg:UTtF^h^Z/C@+T)tJuQL;jXbCO3EtT[I6PFXHX?%iPq@9IYqrb7J#ea@A[n$@=H0D[%!RHJa!-Xc01BM!:Ei6*dk#*Bd%9sCE14m1_<:?u$^[AZ'@t]@IH?/n!oG@39dpK4#p7W,pi`^h!J:2pd+#@m$-b`c-aY,7]\&/P`q>:&0SpI]-t//f43"QQiqio&\q#m<=G`+E:K*]N\OrBnr$Iaj7"Wj3R4]FDZ@ga2WL!3NOA7IT57MLh1tmnMW\c.>Z\UhV4bZh"rIW;)XpG@W:%G0;N-Qc'2[ND@&k+pH42<$%l[`!XH6tW'#t@FrW<h,7P>XH*Lm#iU`bMYO/3"FQ,W_FR]*Q5\'C:gO"cJRhb/DTD,-QgFMa7*NCcn1qR0kG(]F2*&@bD\tMNqbQ^qm+0&/d#OZX3PdDn^&R*3L%SA">u0nJPs6<&l@bRJ'9k^mrCV8?<[(%du4p`GpNsFd.BN,.,"lOh%mBr)1-Vc3oB[cHq:/Z:D'\r'MWJ/q1$hIYi4GZZ?O?a`O=6MuZ#YW7"_ur#[IY?Xi)PNb;;,M_$?5_L0=\DfQ[B]VrS,4;f0[>a_UaV:[BN_\7jk*?j#dU]n@O-<5hLLiI=WJ:0eb3(4:E:n7m@<KB1C?#X)r73sTVq,kRV)=spjG/,fs&DXW4Z@.#&6`VC*]?>hD1g:&5C'WsH$._Weh[`m<CbK&@kZP]n#m>S"k=%^WLp*+u?54:?!+HSmJ5\iH4'D\Fm@\[3j4G&464SYt;s0\%C>2*plE+)MC)Y=^%5^PQem0j#CTl9fd+car-SOED"FKs-h)=M`5h9.+b@;Um=)W^eQXu)"L>sN)MP@FcpM>s*>]W6P#oiF_ot!S.HbSH@^:bfK(lR^^/_jch=YB;un+/+<0(#W/e_W@RCok/dmAc1P'M5$631dgsd2KoUMqPQ192hH/ecW"gR[iP]O$ONBV4N'rpZZfB7q%no+'CAPCKGZT-Xn-p=KSb1hdaa$#<ZsR:&2'I&%C:iOe*pV1]Z_77BEWoAup5fHS)2A2Q`f,ddT'Ng41`gkBdW;cE$eo-+s`+D'i[S;7,e3#Len1*j]U%m"RKKG+i^ffK`Jab8pa9/f-kA2i<S5+XRMFk^pBQ;(Lce*fZ9sO0b4Ii:6rG-YYbCU[i^E?ElJk_-QD#XHN-DihD"<e'iO^k'ILf:YmG.Zd^AM`'"kV-;Lt.?h&E&UO*O`)uBa-"39!%R/qI>pj.3r\F@j%J94ple].f1[a-2:ndO$%D!g:a(c2BmqrZUsf$A;=H"<2(n$A5V/^_E9BdrNN[2WAU*6?6BRMg9<3(1g]p_b,d\H95n+sGr>/oOX0`p=bKJ,BaB@:5_W;r"T5WObrfM$4W-qL<j9\>&2h'6WIqMDL3;(boh0OPq)g\[q2gHr[DpG382%!4OlB1YaaOW-b?^Xp]N'TnMr9>rpJsFL6LdD^+I<>M[=J&#nrjgI1LMCZHpYnqVJ<[/+B".#[]u91A%_SpFJ(+uoE,Y[ff'~>endstream
|
||||
endobj
|
||||
18 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1500
|
||||
>>
|
||||
stream
|
||||
Gb"/'hf%7-&:W5<EPV:0Ftl]h'M/bdK@;0:Z(h%KGJJ_/Kd,!S&m=j;`E?RA\*k_JZ>:nJh#qGs/N,/<(@SuLn)NpT"r(FGr/@NR7g%tH0OPk),@H*/(qbL]JbQ'4\E$6b5^Z<)O95f;pBUNHb92m7L-0">W?PLP&=O356Ob$u.E*"^#"GdZ#"2%_ZiHh'+LU!nmh<f'\eZQQ1>JD7`2=WgON8_/KNZ"9(d>d%5rD\k5q!+?!.u^?]KcA.&&6c%RE#tV;ts2M-Ctojagm"0+5WH?8aXa_Y@);YK@eC7bG^L@6]c'=kW:Sm(Nraq3K(mK(4k?uE/kg;/P*U/V77d3TE6qLq#n1^;io:5pB5P:Aq?9_*=)`FCgKMD)AS*[+(/uDgY!KsHSNT<[kY,0kN6n#K4lrp;CK,pYQS?SPO7:1XZ=CGbP)+1:m/2KAEi@RdLTFaZ(4XbD#!$#hN4i^e>5+@-jq=NZ+3mAG=qL(\qC;J*l?D?8l[?Y`_oTGl6`Zg)Q?@r"]aq%>sB!Lc'ZgM,P<(G@CY$+X1j8,.=T<_mZMmT.':Z9g<?89<p\5!RhTcZ'[%pUS?&iu2t>&0k[%9/]-dZs1;f@?jg&V5&X&53/t8ojHo@H\;Gdpp1#S5:@QQE;.!\M]P0&H<]t$?J_'4`o.Q;Q5&0E;qHm+.BM17_K?0WBk>I8U4B\'<S+4EK*'tu$WWJ.6oeqY49Ba6Nb25bd.%jQFROhnu';$"[I0ZDc\1-81L"9s(i?okOic?BjIPq=E=mOP2HW$R68=9le[q-LJb3*[9n[TMs"/)1AKGn<EtQ!)`R_(Mh6+Z1TBPAG'@b?#4+Cc5$3F:0?GJ$*A3A;<*,69QF`WqY8t<kPjsI`[h#&>[WC^mJ^c?[L2RMdq+'(!'LViOmAWfdL1iCJf*JE`&rdm1n1GaAm,48HFN6h@1*'WT;@c2[)lL!H*guP`)P$KNW2);)8&SfIn*7;q_7'!L:a^MWj^DTpHLXgs2)X&:V'2S=2f!781-tS3OAOKhqHA(OWPq\4(^CV>kCa?"SZ0[Yn\+elt>Fo]R)D]l0LEMB0`<MkTFeYuBb"=Q[fB<Kaq6[6%q:m^):2Deq=(`jbb]*NdXJFqioemkf\n65g!.h/<Qj(mBh7%>Rd'LK4]G&_DCe2ba\.N6mhE](5O2r<UHRgrZd:8EucKU>',YWQ!oLrJ.lZ\s`$F#']EGAR[r!URSB/i]b)UW;6G@-Iu^c*EiUf+C8E'I:<)$>$1CJbiT)!SfPS\3;kNj^A*LIjMtVgs7g;We$412_)d72`tZ=o&h]#dC8q$2M"5#A.YHu$q:nbgr=#ig;u/B&f$;@6W:q>)a+Agi'n-6tW;g+6MhgeGG=gH"4&)la:,JI-?JK]eNA4ct'^mWSJ]Xf](0,"`l<k<%U8!i^fMR^(f\kHHe''f=/b1;.D`;(YG^)K`$DbR\mfPUm^B`_=r9l0ZE"pQ\H0<K82l"m6__'B9]a_($r<$4BYWi~>endstream
|
||||
endobj
|
||||
19 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1785
|
||||
>>
|
||||
stream
|
||||
Gb!#\gN)%,&:N/3m,Y!`a+aWaSsd%Ipl`4P9@G<R6_"CMJgf=eTn8ArjQjDX.?KE5.o&u$PXZA'`U6mqT#Hj$."7Q^c"6rO7W<UlJ8lE#JGI-=d5*a&%K74V*qIA_J9WgA&e62WbQ018<"O^.9R+DsV@eY0+8hLg3)3r@3%p.k"A6Jjk5bYtKf"[8+>F8@34q-+,9c5`g*]0'-D/V&n\k]=6GaKY_JHrb$mf$APgepnKX)^-?o3MpMjJA.iHL]J3h&`E_AfUF2Uuc_Gm$Y#E$CUBP]NPl?uuRIT8eDn;Ep,fKeQ\3qFoDHQBOe[T4qV2.JQ%0YAaYH)FE;tMEFYnJGQeHAq=*kTV%k.IA5X=K84)ONGO\cZO"I`V7N7_nchN6L0'9W]7rmS$4u5aY<ghI-4D:lN$SZ:@?`&]`lajAR%%1e0Xuc@31dp%i($WXB/`j$r0Wq0h2k9aOAMQ=rK2=NP79RPLdWd&I&h!>QB6bi2R+1^&Sm(?!]P_2\r1TZs5LP4Rs)qfB.FqJ%SV]q%Vn/@o;;DS%Aj5seE55ul0uoP`5VtIZVAbPpl&e(6gt0jH;SL"k8bmRQ-$:U&&5tc.<5uoK"k'A:7e)@fbh(10G>?We%3VnW+qlhV*1kJV@-PWRko1ubOZ!O)Rm_p96"3N6T#89kkm0JS#,AWmbp^clM]P)<bJ2e%fpC1M7FBgBsNX(aEa,#hi.uUTu-CiWJ^jOKo&@n6AaN7#^AZaNICjc7#<@K2!D9^S3;o<NX`8F$986,`3@'`3&\8Yg*refXTrH*&<Xd&4E^rM%b"(]cnKB1X._pY_$fd!PH1.fo2K@$(^m;8a0MZ7]@4,_53O$1Zna\>E[K.n+TDnQ8g.pYl$RqnNTg3@/>Z;O]soQdTjaM&D*<&/pRpA70pt9Z[$9+.^`!dcpGKQ5lssWlR:F$VA#.^1o#W(G&0H)Ed.\q[I/aGE@1Zha_C4m%0Sg%sGW6TG8Lrj5\.M(qGN!6!7VJ]YG.&HZLAd';Vr<J_f:j2$j[*`c_2V9YUK&HoJRdJb,aMJpD;%m1oPlKYQ',keJbmmkZGc2$-YpsN7HOuk&'L[cCW##P7D<]'9>aQ3pUcUDVqgCc[jLq:19II1CGnhdEP46=];Chi4knKC?A/bS8$-OoqX;s^9U`2>]=fHH!k6QkHhu\)Mk[<r4[oLm@chL_<nO?*RFS5^]`"iML5/4Jp7.[,_hS'!W.`#c"@l6`?]8<\`kn$+Cf4]EjH[fp2leZXn\b1:Z?9O3ZVmT6Zh*mVak`diF_Z4]QkoJTTK_5k1T(cHo?,X4I@al@-o_$.h\9[Der.,Zia;r!ZNImh5\IjWf6NcbRpFQ"c`nf7!UJr$#d:[RF?BlE>9Q%r,EJ.)H!n)9h0U]6ekC:jDR@C6(]#Fq'$'2b/6//$[VrFZ/Z0]Z/qVjd^TIkA+/HF0g72T@F^Q9)CUb4aqQ>5tFP*.4.^H%f9N-)=pHrrZSh?%VRUJEe\o"YD[(Y8Qgi`n+q!6DuW>('%Xl[PZ+lY5D*hc_MPDA0t_q"J$dEQWD8:7%53#`$'7%M,[LF@6fZELKW"$\'Eh6>Q\N$$]ijC0R<h.W5>pV<k5A9#AYnP'bCftLJ:I^'@</61;3GuHT(POQ*j(UMqt&!W=2G2_F&SKlc[[4'8J93K0-<at15,6De;b!fH<?(8bkY;B:?Fd7,@ZA#<T;N"H&[u9VBf\X<o"$(r+[[VU@m-)^9kpA?.?C<FM8srS"Z1eF\B>*eao@"5Ih^;i2:oL,bm5+&^p_Okmoka~>endstream
|
||||
endobj
|
||||
20 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1931
|
||||
>>
|
||||
stream
|
||||
Gb!#[968iG&AII3lo9bM)&iWB&gVm=lb(\<*@Fm.8NL@KKIBrMQ%\KNL]7!"pla\tVV5WC[3SCs(;#KC?QU+]I'Da_PQ<n<_sBAc`aQR]jq8KmYMn/^o)")Z_0so;iWRa;3KVUmIo%GT*'?MTa?p.4oh")Ri!,,C5o9UBID4$TW"^d(9c+FK:d8oM"O%O1phIQ2"QsIP-(Y\,mJWT*JTWUkU@SlNCnIX7-!5Ai6*'#YaunR6Gm;aH2]lABb9Bf+Zn.(KhO@,+9*:eGpYk0J4B9u_/P9#+K_ZA,+'A\M8mN%e&VRp"oX1]7;_2)uB/7lF"E-rL>=>^I+F*(8a!kGUE^Y@C(hKC+G_Yr.AdcofnKco-oanEclh`9@_cf*@")9c4Q3R6jTe?#I=+Xa*RV\_:3H9\%2l_Ti(]=bZ/6h5+McON\?s#]pRkO#Z&O-Q0I\n&qFCQhid#Bh1IMmP#p2<^4q%uhlP9u@WUCHta\I2i0YET/q7Vi5Z,U$f*!2l'k'O@s5H2o<GSt40Q8J^2(k'e*S!odW6m&k]2HpPD!k]B%>Z`:N5OVq"Jga3W%9h0.PATeK#f/d*+'ko_7fAh[Lmrj'(NJpoYE2rmkjJk\oLG8a5Wq31;V8:JUV`-Yt&)hnAb"Gm<&a_1p)6hu(QUPb5SfGWQ<CLZH1EMY)([_Q:bU:o<@1V"S,/70hdAe88:-HIIf:VqgXbO_ZPfgR<ocYSQjm_@/r+MeQ0nl<RRFOe;JQ11-WmI<</95j2L<ImSX+afVLuZ;im7""o*tCQ5WO6dlAHd>klf<L^=B:IF@`*!kr@6p/FYkSRXKc;8r^C2QicQPY16RtJ,]6OLXh&`B*%oCHbTPHH\H$G1.U?K+6j/NLX@H19o83."h&eK*,Jru'5%]jU.eBIa=.PloU`G6c%d-.@nV&O;fgXXLqn,'@96aO>%7["Tad>DTNQM`d?=BieB6BQu`71@GViSHGNT<D"hWZdt4nU@lk*EGDjf4J5`E$n%1tLaDO:P&,V^Q>Yk3_p!_*t'>a4YMq#b0,joX3qi`F?<W]`!RZ0A*^i_n(-M2St's$FWjdc?j?gLgjq9+4\SR@#>%@;4#g:Y70!u(JOiQ2]+0W`)LSOXK8X.%"T3QR1JqiQQMrj.C0cB"'DR<.8prK-gls\M5;+#7N9N+-$u03U#-=8a/V%B)AsD5WBEq]D:;kXDpd@5]+kO;^9DmY0[K9C<\6_!76A[rn``a1?.j+;9FnrT1W7pfYf)k`O#(Kl6Eit`iJ.ic)I"?T.=-[-%QRI^dWuE@S^8a9$HJb"D?7QXJU=rc%Lus`\KPe%6"K6o35a#B=V30o`i>(no6Cj*ST)W-Dre<Q='ADWPU_/l9eM]7(bh>"R!I6)RbeDs[KF@\9""Z>n7gScQVS.44i#Z65<dY$>[X#>)X4E@Z";i#iO>QdMt]>836jc.gYK4\n=_81@p#R"k6d/QWVk,c2l56q^!Wh4"#hj&mtTSY2g^qRgUV>phn-?]&ZlHh[-?l)[^N=QH!cFTqJs2160C5I=*8_V\/Am4ZBFq)NP>7`nTp:!5hi,-f.-p;?p@qrF_*fjAkA\*X:eZ[Q/3U,g4[h-E_"S";=K]^;qM$kgbfoa0lo^eIFhjZZ6MYfiNC"%V\L+4(fp!/A,%h7222jW;+<LQro:W1%__gsQcVA,V#:aOK\;GFqf1DP<rON5G/(q,&XfAFR3aq8D3d^eOR++omAKA0<_1R-_+O(?J+k4lR!uIRO8fDMAHZ<i<Pu8sbI'gfX<9)-*FU2j1[#(p:+mSqX&Dd[[009r@"1OSIdSZCXKJV;W8BM8FU5W5OnN36`#A[l,8RZ8<q%hG`bN3+b-`=&W=L0$ELa$J=cH[cG1a!6fht<?)A3A.>!h\f-(/+[b7X`c+0dt3XUq6%-Udk'/AF&_@.G+S:0dr~>endstream
|
||||
endobj
|
||||
21 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 2034
|
||||
>>
|
||||
stream
|
||||
Gb!SlgN)%,&:O:Sm-%#4-(9$TH"\R>dj1-8PHjDcGbtS*.gdU0YTRW4rq\6<h/#Y@*N,;s'.92=+E2MMfs;&I@+0%lq)^2/?;9AQ:BqjU-8TUgbD41EGWe(`kK%[2GN9!:H'.KR?*M>?q#r62&eK^s3-N=P7/"]Z7R$U0@n"d)!gfJtNLUS/K\>rA#HUd9O!5[Ia9f^3gj.b_6J&'/I4GT@n_NApp`]fYCkYN("LJ'#c"Mg;$u3JVk?GA.Muo@\d/S3.p(#s%'WZI2AIa3(L%/Ec\a,:6jZE5>0/8e>Wb4#rJB;kR^t,B3(f:Rtkk:kqYc>(#[@;PU.2NE0XUW!@#$3m>mLn*l$`th]IEHr$?tb%-#@W7':2!b7>?4GIrA,nQ$]&@kk'2TESf*Ho<7LuEQstdoJJ>"%P6!7-&2"Ls7h#itCR?TX_R]ni5=?mQK")2h"`sU>]*,SX"@9,77EJ7YJ'jdnM4kGkc3+gcfT]`n?LWjjjqbUrPr;H%)_-fC85K:mBuL9q8HEJ0cql7hE/psHQnM9I?,Eg5bO`WeKX#_e33q-Dma_09'SJ%o'RV,r[q-nli&'U#(i4l4OT^B4.?7iQ"A?!bTcXIZP/9,EDB3Q=gEb\0Q[D^%*-%hV$,\Os/!g$)3$\]jaMeWL%HI]A["AR"#ild>AAf<J2jZD,@_jSSmA*/?]-4FEX>J,B3216Qg30n3YHK5uTsETM+pm]N0crZsQi\lYBW7.m6`K,M`["7SK]ko0Q,"@Pigcb,U==.?@Ud\u)8#e7J_G.6>gAeN&q^j(<Y(f>7,];<*j1K$c'1+$=YGl4?<%tr49oK>1^SOo--K*_eYgH-N_JiA-1AZ46`QMY9?E$^jfY'k>3W;VH!Y8=]4<l,3pL^'^i)c&<6Adt@q.mGOc2F72P+Ed5@1*nBf+U)([5Ch\Zr_DOt%Wq)l(=-=/n'O-<?GQXOd"'>a#+j]"7/-Y=MQ;j5p5m7,4:%.g)GIfBX'[pB7AN;SBlh2m5G?:9>^S*1NIEJ&##Qb$],HD1Gh;$+[#f8@WQ]ZJh)VVC6R'm,[*^Y0r8qO>E.G2%tOuBh[q>9TU(g9s.gOM?-h2,^)9mi0?L72J/(B>Xid/1sB&r`m@gS4NFsiSblpo]@HaZ-A9KeXB7>e(WJ`Ll^>Wa[P?FZfBnE!XkI'A:TNY'n=mr\R18NMp4)Lh7L)5*NYONKjD:C[W7g/TVJOo3%-RRr"5B^"9GaYQT,g%X7QpXh"h$GWEC1DI+.0>n)`!NaB2\!)EK5)nE6KE/EoJE\.R:se1.6,3fKV(TD\&;<UnFD<+3IcR2,1]29qF,10qM<RTOK3'*%#f*mc4)cTgJCk#L0*_LiRf9(+*V__Kai^P09L9=&ae$Wjn_TZ&U\#i9$!P<6S(1lILI+5B(1t1jLci"A;DYmUXlX_E2A;r2*sc*ON."[Hdj(3>.-ZHT(8eMWq"b_6LX$YThsf4FhbWGeN%7"6eBh&%phhRH21;E67[PVPK%Y3*g/9`flpX80q?`LbR944bp3meIAtus*n2:)6+W.2"74bf@cGXcg@cOE2mZERJC0WlN*8)]_q]Q[#\#49s'>rXK8RYAll%LJ,MgGRf7eSRsfY,UM:C1Z$KOB<&CrUmY0YnX1H$S<<nR)ffh07kg#_<!Nn$[nXPFMBfK%MEA5YQ1]_E_FZ/PnBs&+s:TL.f=-@lOc-q=c9/NgA0FB2=AQX^9CV.t(B<SR'#FNjG\f2sVn6D'8.p:45:??aGf<EIL'p_qgX]8iYN92E@9=O_OoI9@n.SNS'&r!m]Y5?-Hjtj=Q<QCi_Fk-m!)\$$bh'qt3fNtN#'RkZPWo&+)kb[F%2H>ne@U]8>=4`J,]s4P?BO5)5/!K"A5BWJmk(Y;4VRF!*4.L1Q72>..eYn"9RYJuH9+aV%9L9EUXK'KT_PT/eYiV7HY=fk4f7dUtk&L"@6Rq,68MeH'antch(=ei,1rR,m"!(8X[>Jq<[j6:^NDB)FVkWTihTo`078_k-)m$t'5g`]H_`Jk:$Z04.Rf~>endstream
|
||||
endobj
|
||||
22 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1789
|
||||
>>
|
||||
stream
|
||||
GauHKgN)%,&:O:Sm,Y!X`hI]*Q'Y7:ju.@'<Uu@jLg3Q68:h"1.J;;:!K+0.>E30>CjRE<$1-cDZ\sMB0)^+i1TLL.-89c5J`jqH!&&F\Qs@M/ak=FANZ\-i(kE?rDD:e#)$f:/jQrt&.!FUT5P?4B'.6L@#ZK&@dr>^Ym7S'F!JsW85P)Z^@Q-kGE)J?He+gr^^kmK3>_c&ga5b)9S+okphUmZDd8?:e*uUgghBo5(eKAs=01mFU<%rRsiS-G=.qY`c\I^'7eIo4!L@;jK^n:)R03hp7)O/"SA-%nW`kd\_0MX'N38$6:M+VJZF@JI")6Xo'3sIk\K"Zljhh76t^6;$(8B;a#]aiE,n,8b]#`ZaLCP.`q.5`4V51D+D-(c>kU8h=dX$,p\qN&\]NrM6i`bK'J>]t^<NA&?0r5ffb#c]2O_7CMt%Q@#bZ@\c$2Ga40"'>jQQ,^,JqA]d>_eh34TkW$sL;Q@!$kEe,n3p8VN6*%hJJo:01P,?7>D[KXHUVirB,\:3KkT($!eUuO3V$ET`&4SUI6/eVPe+m8$?u%1Do:`[`^j5g/7704UI8'cSh)_6Z4%\3P`#V[Hi\Q<(Bs2[2%lnZP[I(M5o<*=f\74(h"h1uf(34BnQ'P9k^8lj^iLOk-q3!)RcA?=jK^2Q)DlA-d@D6E#4`nm:O#6F/cC0caD7Hc[Ersmo0B%gh$N/6"b7l5[Nu.Bs%MJZ'EkP@Ghm+\79rCR`QI]H%4-^qA'#N[&/?n!"pN^o`&uEQ\M3>-HKeEeG\PWXSX))\`Jg!l1u=4pDb/(rZ8@B!VVpKIF\_&'>ZspVOMhmSot`F]Q;a)$:XE8ZqN&dlho.ZCV'5$OO&$qF:&!_]A`blpYG(2/*BYS?k(n_g:CT+UhQbSn>mjf1>h\@j4R;!iD-\)i/pU0,VCaImF(f@K6rV%H0uq9K-Te2+CFFjII`:!+0=,OeO.2FNeQ+V1FJ/.GIICXA1+hn&$:mIPKejD"$#G9oql"<6>tC<Z9BEf7:+5?\G#'8+]TnC.,r<*_SMLg-&n>gJU8kITl6_$Un#'*Qc_u+q)0"j=;H2BDHeP\lP_:$!bpuPeYG$O4Y[[5Z`KGBXIj_$(4Kbj)buF5qebdH)VogU9-!sN"P[X:WJ:d;Y7/jS;FR[(o,K56A$udN8Q;H$?]][qM&Qk_Fad2(BY.H&-T1UFjWpQ"<cuaf<^./A(%_qm<I*da/DZD)uAq52??Oas0'X\8-">l:^'meBW6iD."I?IQ2;%;!!OB9XSNAO"1S.J^45Cb$E*Ajr:WL#"l*G@_PJ>ubI9fJHJMP=%Hc,a_H23CDl%1PL&L6nc!KlbJJZ:$.c>06Ge6S2H$_GlcEd`bHjr23L9`X/?bC;$KRlAd1Fas\6.NUsSpcF^rhALgfR2MVEai2!&rHk,\qA@pcnF3'%LVDTHTC3p,W8U\XYCL;9<FpRWI\".tt9!@5]$hRV?H^3P9ajDL=c\Xb;orakaiiMsL_>:!r4fG?YS+GcIlUJQ)NTaDARh<VJHt68!%4HoeICcM,?h[:k%G,OQl1).FDD?(-%S_X%\ts7@\0LmhICecl?h_Y@ZPbU\h0_l-L)@ZMh8k)WFF.B0R-sVbVAdZRin@p=6>&+_d#;#eG5r2-:Bs.(^['t(<[o#EA8CTA.s69=+326_\<GTo(6D5>)Lpt5[;cEih@k(FgXNHWpUXW?[@U%=n>n_+0$Hk(L+4_]3Ze*SL)EY]+ZT2blg\,]f+.*U=bJ%MA9>nQVAk0*XheFYn4#m>ln=n-%uVIUHi~>endstream
|
||||
endobj
|
||||
xref
|
||||
0 23
|
||||
0000000000 65535 f
|
||||
0000000061 00000 n
|
||||
0000000122 00000 n
|
||||
0000000229 00000 n
|
||||
0000000341 00000 n
|
||||
0000000418 00000 n
|
||||
0000000623 00000 n
|
||||
0000000828 00000 n
|
||||
0000000933 00000 n
|
||||
0000001138 00000 n
|
||||
0000001343 00000 n
|
||||
0000001549 00000 n
|
||||
0000001755 00000 n
|
||||
0000001961 00000 n
|
||||
0000002031 00000 n
|
||||
0000002316 00000 n
|
||||
0000002415 00000 n
|
||||
0000004603 00000 n
|
||||
0000006787 00000 n
|
||||
0000008379 00000 n
|
||||
0000010256 00000 n
|
||||
0000012279 00000 n
|
||||
0000014405 00000 n
|
||||
trailer
|
||||
<<
|
||||
/ID
|
||||
[<073ba7643d43bab714be89d42b8b18e5><073ba7643d43bab714be89d42b8b18e5>]
|
||||
% ReportLab generated PDF document -- digest (opensource)
|
||||
|
||||
/Info 14 0 R
|
||||
/Root 13 0 R
|
||||
/Size 23
|
||||
>>
|
||||
startxref
|
||||
16286
|
||||
%%EOF
|
||||
BIN
Les02-OpenCode/Les02-Slides.pdf
Normal file
BIN
Les02-OpenCode/Les02-Slides.pdf
Normal file
Binary file not shown.
BIN
Les02-OpenCode/Les02-Slides.pptx
Normal file
BIN
Les02-OpenCode/Les02-Slides.pptx
Normal file
Binary file not shown.
225
Les03-Cursor-Basics/Les03-Huiswerk.pdf
Normal file
225
Les03-Cursor-Basics/Les03-Huiswerk.pdf
Normal file
@@ -0,0 +1,225 @@
|
||||
%PDF-1.4
|
||||
%<25><><EFBFBD><EFBFBD> ReportLab Generated PDF document (opensource)
|
||||
1 0 obj
|
||||
<<
|
||||
/F1 2 0 R /F2 3 0 R /F3 4 0 R /F4 7 0 R /F5 13 0 R
|
||||
>>
|
||||
endobj
|
||||
2 0 obj
|
||||
<<
|
||||
/BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font
|
||||
>>
|
||||
endobj
|
||||
3 0 obj
|
||||
<<
|
||||
/BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding /Name /F2 /Subtype /Type1 /Type /Font
|
||||
>>
|
||||
endobj
|
||||
4 0 obj
|
||||
<<
|
||||
/BaseFont /Courier /Encoding /WinAnsiEncoding /Name /F3 /Subtype /Type1 /Type /Font
|
||||
>>
|
||||
endobj
|
||||
5 0 obj
|
||||
<<
|
||||
/Contents 18 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 17 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
6 0 obj
|
||||
<<
|
||||
/Contents 19 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 17 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
7 0 obj
|
||||
<<
|
||||
/BaseFont /Symbol /Name /F4 /Subtype /Type1 /Type /Font
|
||||
>>
|
||||
endobj
|
||||
8 0 obj
|
||||
<<
|
||||
/Contents 20 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 17 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
9 0 obj
|
||||
<<
|
||||
/Contents 21 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 17 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
10 0 obj
|
||||
<<
|
||||
/Contents 22 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 17 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
11 0 obj
|
||||
<<
|
||||
/Contents 23 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 17 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
12 0 obj
|
||||
<<
|
||||
/Contents 24 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 17 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
13 0 obj
|
||||
<<
|
||||
/BaseFont /ZapfDingbats /Name /F5 /Subtype /Type1 /Type /Font
|
||||
>>
|
||||
endobj
|
||||
14 0 obj
|
||||
<<
|
||||
/Contents 25 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 17 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
15 0 obj
|
||||
<<
|
||||
/PageMode /UseNone /Pages 17 0 R /Type /Catalog
|
||||
>>
|
||||
endobj
|
||||
16 0 obj
|
||||
<<
|
||||
/Author (NOVI Hogeschool Utrecht) /CreationDate (D:20260607080655+00'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260607080655+00'00') /Producer (ReportLab PDF Library - \(opensource\))
|
||||
/Subject (\(unspecified\)) /Title (Huiswerk) /Trapped /False
|
||||
>>
|
||||
endobj
|
||||
17 0 obj
|
||||
<<
|
||||
/Count 8 /Kids [ 5 0 R 6 0 R 8 0 R 9 0 R 10 0 R 11 0 R 12 0 R 14 0 R ] /Type /Pages
|
||||
>>
|
||||
endobj
|
||||
18 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1821
|
||||
>>
|
||||
stream
|
||||
Gau`T8TWWE'Ya0?]VCr6,?RJ:bcQlb`0iGrC*eX1/i8:'Zmefu.D+iJmfPLFX(A,!/ScL8]_-Uj),P^cjtiP1r&0,hk6r2_a]Djn$"<B7?;6$`J8iV1(]b5;MO4L&L&6LC(0HA<OYMn7BW?kh+bZ9rX^_e[cRHgIPQnic$Q'F$WR;q$bp'.K`d'iqkK#\0Od,D4q+a-@`/BK=UdHlkIjBb1=JsY6<J6%284>5#_o_cdT.f+s0f)gU>nf;HW_8O^fC4K8"i"BZRCP8%YqY8m0Y)bV1WNlk1mEqi7F`m82p8:K0]d.Ejc<r<f`]r`_FHFk:I=VI/h%W7E?rp'HgMbC4?!d;'t$N-OQ/c'30ipWaOjAum]Rq4_/R5X+>etC46tKD&W4O]:h)%oG7DcNPr'?6c@_/1YX1K1lC"IL758i\m.PX1DA=<2>R0Im_R/G,Fm"Phd9oA;2?#\n\Nl<El*9Y]&ZTQ@^$\#NFq)ZM'rUqJ1$Cg&:f!'sB&B`&,8QDt1!R@?+lO#k0f8`_Ej$8Rcd.`/FKpD4ia$M^Y_rP,Pi)TWMFa_()sk9p'o3X84cEI9hdcl@A-B0(CeS<`S,c+Qjg(tF'(1mNZ.@Pt@f`PWQT?f9`Z'XTN[,W'g]b'qh5cMjcpg2_jK&8B"ejZq.!kd*RO&M4:1._HN_#B+:-L&7033`I9,/[^S>M(iAui9nc($HS1mo:e-[E+`%Jl\<-+pS`Z?fdT6cj8h^F`/t#_/B'MgT.'e3Im]dGQDV*9P-So94)#F.&?IU>Fi$EK0,]egSDHUbQW9_!3k3@b@nfoDX,sM[rO0CRAU'M;-Cse,ksu#\#"A$/TOHYgpqOEb#\?3A\c6c`Ci_l&BZaT>(X\gq/6Z,Wj9<"i1OqZlmZFRmNX5X5sar?71#9m**6o]JXY4AiI%7N3R>k/;bA&S%i`Z;o,1ZDG5q3/BeK#__o/$ZUd\e\g>"(;\+.YQS?FLK*?Lt)oG2W)tp^*.s@!VXIDD-[ue5+F]hD)Bq:Xo,ia9jG_N^RlHRP]qE%'NoGpM(6%[K`<\R6!bfiFO=@`gY05Q0caS3];21p)ol<SXtfbtN(<`il&ef,Pl>kcN#WSqGcoYeA<FkY?U*2EEC-dcnP#>^6K[k<T+ZJM-BI$;Y8LsNp1771FF%Y_ssXS7Dt[8TUIkA;$nGs07XYKF.9!#1?+;637/:6leMoCMVF]UkqNR=U2DkLaV6M!V0_R:3E&pBAFX30d@gW_0MGhkR&%iBLYn,MRn[l`rHKof"FY@$@C>8Wr0GR@V4<b=de+Mg\Xn'&Xg"IBEP>MB:GPr16ngAnR4M&Z9d5Er=E<>Vfd:$rt'ggs:C0r^7K^Mo<e_QqcN_.4m#Q_3MRflF*7c#EO(0L<&WKCH(l4F`!esDPing(j.q%Y[$Tk$XO<;EF`eDG5DI`iVO)A><=M(A-)<+S.uPm09U$Jo`*&LVcTaqZ+:qu/f%D>c#0k)YGXP<c=!A*(l"eFD/.a<g:&`rT5:c@fR#0_'9gY@!t$*IX+ks6^-5\1hjC;tc0i_50P$k(%A_fi#Y&gD`0PQ@DZ/+Eih7GXh*eEs##[Bb;g6SAq/MqOOK.i.me;\&FR5IVok+u47,aq^'6$HHFdp#HrCZ?C<!*Sa"/?pnVOeXt]\JmW]aiQ8g7KIonNXYMI<GD+$+OsY-$jW)mY>;4HF[Zlc'5kWgpIqf)c*,Q6K;cASSfbEf[.kG*Ba@4W-uJ"g`S2T>r-I#eoX<e`**-?a-tprPR/VQ(`u!iUkb:MSgCqN!E-ct_<K9B8*_OtBZ9da@ne$92X2OB_pp)D6guc!'C1M~>endstream
|
||||
endobj
|
||||
19 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1764
|
||||
>>
|
||||
stream
|
||||
Gb"/'>Bedj&:WeDbZgXF=gY6[NRRU.EH1A&[2YTA*rJi;/@')sU8s"#aiT&$lll`E"p6#/H&1E%H*oa.q.<)1*;iY1Rg]=(p7Qh%JMQEuJ9&N#pDUWVepf9gHkpZ3L`8Bm`.17Yq#cnj,^;NC,8O,^SUc@o#9HbUL/A3bcNO=Y5RA8iDc%X.mfXd=&lR$drMB*<nJO^FS9Vai/Y90,$]TBCnLNj#bioq#i=9$?ePLBKEMs[ucl9j<l.KDkE*T359Wj9tLHi0ZagHjr`WGr2"F^prOV]79SjDfLHI!%Q3MP<,`"/Br+jo=i<k]=6G"UkW36btBClZ@O1gs+qB9c^&o1A.+*)43)_K5Vqn.!G3&K8c[JQX'8r#KR_&YMQBjD?X$%sU=ah;NG1+0a[X"gs##3&lX)@F\GUW3FW&;T4Vd1g!fG,IcBNOGhP8d2,mEoL3d@kIH\RW:n`J%cBrQ:u]36-fF'mf0/MlS=Oh1GG0A4IWg1fH!5S[G[NWp2:gc0d<N;Y*k*:6>2saj.MVOC7fm?/Ia?.lP:8u<8BAN,8LDRhjPap?3=V=C4kX?=7/(hiCp[a*EK^"6$ROe#05Z/BW4n!c>cD^dX!*["a-0sl.\r0;C`a$bS0We6]"D7CoGnA#=@&orFHF_"TiJ-X7r8qf[rEn=9j,P+&nD)c1&`<h)dBE7QSX=@l`]?c6on!sj.=f+dJs86aW*+W5+Ze`$#MB"_RfSk#]@.XDE]]@,n5Hk6FrD+P_O:?f6UZJLW%Lm8>.E\&0WD[DEf,A&u59ni)$KPgOClKX^mF\m!M"qC0k*gc1tIbQ9n`7L7lO!nRJk"]?dG2::e+On.$+J=[*9bLdX[]S-tF4L-[P[r=1AE^q<Wb<[F6U_iIR$6$B^if4M\"XE[TUGnK>gaN(%4>c/Vs7DFO^!b!.Q7kecL+IG%qc!&u`TjnSXQC=tn-Ot?Pq3A2@PI-c9QWYO*In5<'P1NZ=*u_#$O6=_5Dc%.#Tj;]-1QJ/o+E2uil(".UeWH8iZeM9uh6MHiq:(Md6=fKLOKcTl3B'>O@[-]5e[-,>gbXeCSEHpti"9=8XHBnDp/iPB#;5G@Npjb9QA@EpIT2P63NCMqjFt;43%`_^cqI8S?I75*[!D'*+t>JS&$CU'BFq[3&LnOL4KLquFn(M)'8cg$\6Wf&\nk3Z\/Xigo?6K4667Z*nS$DnRCYG[bVas(%C4<>3,uLtIEfM)A`*6Z>Cq%1Baj=Sq=1H^F#!]0Dere5#:;X30j/DRHC#3kia6!+8(Ugun/bnr[4W_PJ:T2)nBFbr)I#hiSj*%k7#6DS%a:M-)'CnKf09)m>qj1.)7)!/$f81QC)UJg/(/H.2(_q=?7j\7K`8sXLU"3l(YTXZ[L;uL]'(`^U`'S<>6e0U(P(nK:jFBVBjaF&1L6q4WgDR?_dB=*Da"(>?K:Z]bs8HcT)iOU.W(p_`gJ`APD_74Eq:oP@DVurA::21DK;#RI(*>ih0h8?Y3peL;n_poESAQ2^L]@5+O(i0oS4'Ya?biA=$kRoD"@2f..m8.*SWh@IlHc]1u?:"]+Wc!bPiDcpg/&^2pd9IVTWBk[463*>Vkb6!0oA=EbW@3*Eqeu2nji\CcC11Z9)9l=23D*ZF:>b]FAt%G:IkSnO+4LBT0=chN4g,39n_3#^`$Wh%#rG;ek5Whrhl#Mo3CA@29)oEL+AY6G(@4(g6rcoVi&6k5FP=4\I$q&+ABh69]d!,*Ip4N>abt`+:C?7E7d]J)=\WL&~>endstream
|
||||
endobj
|
||||
20 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1892
|
||||
>>
|
||||
stream
|
||||
Gb!SlD0+/q&H;*)Ylc(%[(4t]FJhf@#"!jI"U]86Q[DZ+Mk`\+<(V?cPQ0LigW=Ui4392'Bq-;fhL0SADP,as@mKS%l@4F(^oIcX^L=o;9TFZq,%:%(lqKs!NsKs?Oq&%sWUMkY:K0Q?:Ib^N/oa&B1!il3XX$H^Lt8.%Nd=;P"hB3EB-RUK\Q!8L6o2m6mO`iQ>gCa(,`_2:bPJ>j\oQ+ADX/=Sg&*$29!C3%M^g!GbY\jDAha5Rn]O,/9;eWm:=:tR5Khgb-RBaQY2JD*]J^QQ:,A(uKukc;SlH!W5c)Y[X/K2)I<Q_IQR4q4;#]s^;<!4q6hl=5fKm$[oh,UXBST3MHMi*7#R+AIZ?lAVhr&n/.Up9Lhg>dk=4-79JLH*'b4Ze%$B9[[QDKF0b$o_LcU1SG=05#K1Yu:(Co)&&oa#b\"jo9G..^\K48Wi7TN\r>/iF'r\-K@&<2s)F3u3mQVNkUTA<XnW<)PS<U-"cNAB,O.L_,q'nbeauNi_TSi/Dr@OS-DL+B8@RNu1_tc[AN70\Y7g7^R@d`Y[rVX5?Frs#1dcN9V[l5#!Y1lf-H*U-uKT3k*HWnMoP]GbUerHI^'NK[Br;j`PC2J,Qr>$TgMA&)g'T@AO3jq-b*ddiE\MBm011kOm!#8#4Y'\&q3iE&Ptio-E*cj"s8fa2bR`Cr11lknAYk3,'G&r3IJ7k66J$c&P>M\3fE`IFMf\'bk@%L%%&-Jg]k=KHNm+hLOD:]N?i30or?Od[JrcP7e2.?Di/$9=0[ooO8KK*KO>5h4*<j;?J3\^$*Ta4"Z"d7ppRWNq2f*%!Ktg,0aPai;6(c,mO([#RfC3\'3m)IQMp<aEh&>*N\/3a0biW9B=BCeK!;?d-2d?7AI/c:#(cDGIX&t0dD<'9%oTchNFG2Q-a=ZqI=+M3&)^!RA0>;E6o.oqjYO@mgr-)BfJ!&Wmj!^YmF$4EX9plo%t/l6HIErXh6ZOe)5%:m/3?k0('94Iou'@oCK:ml/!]\R]sLt<:UMr4Y/T@f9s2*P<TNLB'D;-oXOhh]ib^%;9*,:]ihq"0ip*aS#'kRH4RTLW]/ZKgRIR9mD3ISlT=k'KjK>$ikjb.p\lnWs/HHD9tCB=hp5`j8+C/TKWofB!(#rfKdk+!>K[hH?Ugr%6gbj/Z96A3bL]0tV@DMiItlc&2.W?`fn(hFT.9RbkhiM65E%=6h[AdkKQV:<(>p6%&rI80lT[W[A@,sY;"I(q1nbn=/<LpU's\n5Obu^'`=g:QclS/>[_=P[(:IoL-J.DNo1.K""%UhBC$o>H0oAP+D+%+.'i3Qn@Ja^`"Jq0.j;+p`=uq'9rL`lX1'gQSej[X?dIHlm3/,Q2cc@H>9*%cb,89N2]6uhUWbU;UjeCr^GMK$C5l48_J`$?-L?G8Tqd(W!K%"N'3`+/_4did`[WZj6/L,!J=0Ic1??PKU@/8Ji8\#_,dg%"BmRCTl19(enEb1UG\9r]u2-'E,<T\>@"f<21cDSWr,'2NmGZ&igV/O@RWL6[gVQ.,F][NCSQVQ/%4Qs/VYT8`MSn/E9=5YVL_\VWYYLXOSLi5'%!VCMVck^INY#ZOn2]6<eqZ8ok6aJcdG<O8V3t'cc`IGt)e!0`tT226C<Eb^QX>9-[%]e&@g6+h]m57NR'j9m1,OTPf2WD/;Q08csZY69"7>Z`,m8Jf^i5=WFn/%=u)P&mRWn.-+J#Bfkd@(FoC0YI%lAJc(AI^o=*>&N/D:P*JCoq#R3#Jgk9J@Y)mS'j$Xqm\I$=I.N9c[Mg%eg01Za/FdN;)l_GC7q<$02T/O,="\#lCqZc-'S#`*6;bm0S3nA^"M1H2A(`&%eUMCkYO+ck<5#]hAa=l6q`^VA_K0NiLp:p8Q4e)b0i/$W'G\~>endstream
|
||||
endobj
|
||||
21 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1651
|
||||
>>
|
||||
stream
|
||||
Gb"/'968iG&AIa;CickO-4g0?!9nYf9q6Hk),F2_8kutE1*k>C5QrE5HTM,o?19/_Q7U/*A9s&<,XGo0mI%FoL]PIR.t:&FJ@>XET.s^n#%M$^nR-;Gmg%->LN()+k6#]+l@p9Lkh6i?M5.m'7"d[5&5Yq"l%'X)&d2VC*9To8,T$^FQOX*A"dOWD,[e=l`2!,\&Y.n0*q=pi+3q(["VtE87#_[b<Z`$1:U"$%<iYHtb'`Hk?j=;/5(354+4?"g7Q5%M^usLOd7k*<c6^.!#k-80-0\[&@i4"<i2'_P,LdBc#YF-XcjrR8rN4;NP4E6BM0/r-8&>FuYRr%'ND$j7"?uM*oQ\!S#R/P3AYo5"B4qfj2($!8QjNEA`jZ<WZ%d:arg?tTe;NJ\r]HVtP%T"3]gb9UA-LCb:dP:Q=s"q:_C,cq3itPGcF6Pid*%+>3$,r\nYE6+hMrnB(Jm253Rk?$&F*-G*=80I7SZ&-qa_>hGq#a2$OGkhJk!6ledo.og(>%,]LX#sC'C0_F=E/$f,?Yk#q!KH(2H'_WQk!UjP2^@]C!3STlin.7M-q4c-q].6P=FZ"h61I0'>OB,'>h?9b,ci*#2$Tj$Jgt37Z+$R2YdRa7.E$:,]sK)Td_,.1@n@o"o)8oh7f!U.uqSSO*97kkALs.*b)u.Yij!]"X\;$qcrRT:TAj3SLn?h8XQqe!<rkQaAk]_tkZb/,o9,U^D,GMca=:]pZ]R\-pknN0^plVm&WID_kTR+-RFVn86Bl42;jl.5uj#)=\RP=D+b6D8B8,T,&bH%D#/kF"ljdJc`&`P$"auG]=X9SK`(#;P9eQJtoKDO'ZXUKt;b(e[OX%[P$GHPaPr\9gBSK(:]6?+([W!T7JFJ#12?AMMk4)c4B_0;f`r9mDM\*5*q\ph)fuSnk5u0&=9p0Y0r$P;5>@2eRP@jG(`MFn,!':_W.e`*%^`PZ":mo`Nn(Q\ZIW3B^6%tdrl5/ZG(BOkpGQH,:i#-Csj1@rSAWmGZ-,`BDn)Hn]S@OmPE]\C@<kU1reU!AVt^><A$AUi*hsm;8f4YSAe5"dKo-SY]lP*jC\PY*2=LnBorpeanDUOVj(#Eq%iPT#<^tQ&*t?MU5cLb,NVoV]MhnNj>@.W4ISU&8+Y>j1c;K(flj/4p4OG/XBPDXEHApB,sb.LoIb,P?mkG@j4[(V731lej^9aIm9&-d,Z9BrO,,o'7+rOo=8phfB.e'Z)Y5&($N(%r=E^&>aHTi/CiVFrJGI.H;Z%ZR@7d]+;-@CX*m3(3HWT<MV)!::If@&rRPIuQ<A)HN[YGGQ;+`A*WHUn+>_HB"hp+[b`$Y6`(N)@&rG&R9Ed>1t0JD5!4qB]K[gG(Z=9<=u\O686K\opJO7l;XLZmXJAj:RJr\L9OC!T!W3a&G*adUX>MmFtc':;:bBf&]?nG%k=KQdumq$nm$cVsZ1?K]_lAo6F4T#WmA"o8*ZI9KX"&67O,<9;G)org^F1%#6)HT&Pi&d@CR0uXU`.qj<923:W"Ih;:d*RoS9U\"AY<$f]p[8-U$g[-e?CA5hR;K(?q0NT;R.=*B23E('1%&Z$]?KK(-Wo>;<SZ]KlagB,k(YYHDqE%VL+#W.kj*gpJHo?9(^J[dR416_d$1M@U"m8*q*X?W~>endstream
|
||||
endobj
|
||||
22 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1859
|
||||
>>
|
||||
stream
|
||||
Gb!;d=``=U&:W67fU4p*aj_"*hL9/Pa(a=KP%Lf,R7;Ip8Q^R5!=T7eZ%%1gVeA`Q&Sp0&dYJNr4[/4d-",`%']7:Hi:RWcD[?s^_^ck<@DhRC:56H#4bL>qZQ1_Nhm<Fl7UY=2:ue,Ia#2Y&"pB>&1ORLQgF%aE#<ku>kBXuJ`Sg#mO+?3"VWZ]Apr%0#GA4g'\<J1QgMgCVGeCeScd0Q<%(DB0`@O5E$s/N_WJ7Ea)^]Pe#DP%uJ,"8.$Ld&CA^Nog"THo.72$+T8j.EA$?+Q+94Z2p$Q*3fn7Bn<7FZL;iHhBqOQa;:cYf/>Q;mhha'=;UZm^;g#\t&*XlOLc)c7d[6JjST8HK^uBq?Wr3BfS/e=[;3#;GJsSl]CUN$UXA2tN#eU#l>[_mE.A4lY(/U>B@EB6_@;m"/2"()R)FMSh!%H_aip8C3;<WPtL*LVJ5O2/Ot%R1!=ucWga>i1EKiCB$Vi`QtJAknSr;^WZ3i]X8k1%+[95as:.<Q?+D&"ktb:bO^Y`3h=,en`qpJm%+5V8ueZ:k?[Pb/AneB/[q>d)rN[i6>F$i,)2MEk6ZcnA019.*@_goqHuHXMEp@USWiDH<BgjIPNW2J47F];>lV+W^<cssqoV&=b0NF.0bI]e?+@RN\p]TIs*1\%WF3T+<5URL*\^gCNr!U9U^RfqT,l^$_&'Wu-eLZ8@1(9l>VO.#mXP\T<:Vqoi0@SWR/W.^r?2<09FI)G3a"=k`M%I5Q!$f42VAY=9an/uUMj;CFIc::"/NB0V#*u)Z\hL8Ve'lpObKG[UnIas`:#\8:iOK=XBa6kkmZ'HT]=g,;t^,R`$u2+L3k@YVFn&73[I2gh?sU2$P4)DFu"f5.2+D_3^"Ai&fHDF6tZ;:1/2hL<cfuu=^,Q.InZp'$&b["_m;@58TDaYP->Acr2&!n[MQXD/bJlo[=2V1=A$S537%/_&P8*VN67pp>BId*?L<OF7auE"=`QA%a45>R?B/>Cao/1h!'.tTnjJ+6XIRW.Bf3XgS8JFA;>eel=XH8[E"e+4EB+,hJnC+c/7W.1`3^Q"/^R7s2hBtW_5joKP;8o1F.r+`0T,-I_Pfn-r-*skKUDY@aV"'U:*D2u3/%';_/.._q?=UaQ:K[qP`&51j0cd84-gr)/+cH$nLW]EY>[+j`CrZ>4a"t<QK+8-),p&DVaW;2%AB6B*WS79'0?'*!LjA^43'gGis`;*@s3K3n^#!`WDkq!.?[<nnHOrV.Xa46C0l8&k^@"\Q+!538XpTunAgnP"Q`P+q,G86<+o*Ic`]cK;$EX&?odZHJQ;<q"'DHFiIX@mmkE:oJEf96HkqGC-6M)N\pMjBL-3#kDZlGTDOAR+-BWFRFiQW6'Kg/;Hbf76r/;#jThl'&_,Z:Lq04#^-nm_nhr];K:@96[2hMuP;p8_hoo,T8mOtl\/oN1]jjB'GN9bRk'IPErM\[)S#fYY^\A/.Zr@,l>PSGnM`@`s,29J'p)@F9E@ZcC*?`l[V.kQY^7D#P"d\=HUcTehc)Y,_;[(b*2lFW9t0!)#3[.llM6@9sH11#b62m$h&ZP:?Ss*faF$hD</l*NNGq9uXJdr^t)X'4"Dd#@$+VWL\'@;89U"Yk)7l^9h.Nb:>[AW`]go+R?)XkTSBOG;.>*+RWb6=23#I8H5JBNDO@`U/"OgU3SKb)]U]E=BoB#t6ra2'9$be8@mdMqKbKSqeM[Z*0Yn;oIC^CK)&/anhl%F60?9eK&NHs/h5J=2eU\Y\GJBK<2)iUSZ?7\=lhRK[4V6nD\]^l_#[DZbbgWV<t%,&^_ap=b;KXr4bg.RfN?ar,[:]=9e.<pYhOY<&J*NQRhLRAVu)r5Nff*cN~>endstream
|
||||
endobj
|
||||
23 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1789
|
||||
>>
|
||||
stream
|
||||
Gb!#]=`<%S&:XAW(uuu<RkQ*V8Q6H/[S<rupVtt,!e-7Xg/b>nV5-"8dJpr1D+ClV]34UV6'T`;IWLT<'>Wm-o&!1Bn8&6j0*r0sUF?b/(l[=gMp^JK!)\B;9F%A5XB?7!V.D<AZU"l.JIIH?"?8:O2]4;E&Eaf6Wq]8OQllQ+*t8Jue%d;CJ2kpcDRB0rA5K:*1SbtEFdKkMO([TXa=+/hAemU'R%b_";mfSa+\ZuVLJ\&hpE)S+_<Yb]@V6`N55^g>iQMrP;ej1u.sN\\#sVT#Glj`o0RAs4=:r[aJd`<^lU"sV?Mn*M73Ucf4nCuZN"lYk'SJ'M9T:7!A#>o#+63:Z_M()X3"H(m6W!;'<""^<0j1au"3YLCIn;/QGuTQ/@[_'JY1ffdU_CU:V5c,NOO?Zg[/?%B(g][?+sUG#$").0&b/;mWGu\Z,MVh)H_Ch-Do],=+c&N16L[<\e&b#QU1/h>=0$ReNq[]>SfAo,N`o2*]&S`8/&3lD!?@4'Y.N$)n?ErsT#::_MBlG\^)%-d:2YLA6"q]N-QH(@-pP6eU;gSN(i%5'^1MYCFf23L4jpOP7&JfBCd7I(\<YGp>Yer0n1p.*j#?"^MiC3Uq.a<M?bRH46R43K)bjkQ/B1<2k'SI\q0K0kbt5\cX^$djcp%9q6RCI4T<0A^,$/S;M?A2:^M+4n)biD*7M5PM*mb/^5jRA0h9U`$m8@3)O_Ql5KM3MF>)fB7*uakp`&lPf]D\7Hl8W7@o^?]ZVu([p)Rmo#YS4O<$^('p$;B>u'-dW%DB#XAmFW7>g90aqZh>HI4JR,4_.a,dlU/TpI:YO:Vnc%B8n1R9.+n*&I'P&XXTKUMXF!_GSNsoqV)f<uE=D^%(ejc+)'l&[DNIP8305Uq4+d+KFqukOV4lWJC,.mJ55,\057WQk-LKPDJoNI'M4]Y]]d3$c:,`Z<?);=<llt[$fn!AAh?/S(Y"psAPW?b;<nK6X37o]d42U]Hm<WKe)*?/2iSKVb8U0CDqU82<hqrV@38heApY-LUHh#OnDqhcrI;s<m&2WSDJ9KpBc=._fs._<Q';`mnO(:b$-/p9)TpnW=14$-9<`E\fd(1]Jj2$T"#9F<2H#]q2%<*%5,FQLE%sSN__LQiuauGR)0mlSVB)s[!Rqf/pitKKd-5-)cgP[,n3K<Ddj#tVfdq?\TF4PWsWt@<pAj`.h@iG\&,Isqf%Q:ue3Vkk)klQ_js4\bnT)igo-]Xe0/pMZ,lu8)^d9d`45"m-(_pnB=QU@m2RN1Q-cP7UTM.I63SctA3($:#I6W@.Q('F_OR`4r4^#fhB`u/Bn<8WfV#W$;"Y4.=g):WF?c%T-s.5=6@@3no0TN8)l<d`T<*tVt'ShK&k#A:=^<SP0k%Q@FQ/<-4FT?^h.aDZ()GL[EbY]=\_h^I6r8dm7];*p9=R9c*od>#h84[Tf.mqk.:WJgm<rr(WO<o`d/K&b`Hgnq6-8nF`n;I"pURio>K/ID7iKM`ORId9[c*4elmJX7WbMuPk2-2\M"br^&X!B*t1q"8LdXb_Q$87TM<(%48rfaA?8XL?l`2[j&=am4$M.V&mEedU<LYY=)&Mf-8rR\B8%E.g*Cs7_5Gl\H4+f?-rl`_lE/lVY,`U=t3F-*,;eT=RAT(#0)4NNNAMX/7%=oiRg;lc`#;<aC#o&*VrF$B+8oR[U.q$TJOPB^4DYW/Z"acG9/P@dB#ic7\A(Mn?L/6=7:<45-iT[A.9dlJ1+A,1K"c-dg5o`lBK&Z>V*[_@GS;)%2(H!,=D"-i~>endstream
|
||||
endobj
|
||||
24 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1994
|
||||
>>
|
||||
stream
|
||||
Gb!;d>?BQ=&:Vs/R+%t?]-rsr>;e-]-sIJ4[^7U=mR,G.j+p+]=C0[3dU0a6a1%.'$-R?)P(OE:)U149q.;Gt*.60)IlmgX4+tE^"j14t$'Z)5_tWY<f_`9NR*Pp0J@L0jL($W:g-79T?4*9"r/cUH!_8>;E8UaC5nF79E1IP>J<=gHVFQ1Ch[oko&l?mbr0?q-nJT6H3UqJ]]YD2/0<j_q`36O82&C0FL,3KHWfcRei_WEq0UtH/o],*J37\b2a&B)Rpp2Y0Sea"h9YeINr$lVqU,-Li_se"fDsRZKU"lQa(QMT5H9>:)XYeW;.A*>k8g=lf$"mqg'tsOl+bAfq1d1j)PWpfDPYQ0i-a:Sop%eZu]3)AX.34Zoi)[t9&Z]K/DXCB.UgR7mmSr-0SQ<]]KX=&PX57FirSLRo4MQD7V:XfM/Y5/%;.STW_H:-g-PJLpbigPp(E8XU;tM>[f`U`La5K1BNKe-@e\qmNRjb[XmHK_sfRC?O<?Yf#T,'l(58YY,NfpBeMga2sSC-XSG'FWU\.::2j/ha^2@/Zd7[?nQ2_(BbYF+?'R9WCH`b:RR<*i\]9VdeRKGHE)?WM81];MFMlKE4)$&)_U&"sIBI:S],\Zh$(QQFQe@31Ga0^E^%(<k9e,s<;/G%!J^d$INJmYL:%:sXuFc'SbgBfTKKWh+uAf4>dbQ12Sk-8c\u,:KSjP4U.76.#G\Bn\S7?83'^csgrt?*!WMReC7HS+]Gm[]c-7>R8O5JRh`"9ul]G#oR;<G_11qF_OEk!3c\ul5Krr9]\8q)NoBI`cBDH-n[3\1OI^%phi6Oej?o;HrgIFAJTKX#*je/AU'pl0;:eYA;VA_O#;ro(hs4R7uK$9h]FT!YC=%fX:P!h,$t\`24D'.&M@Q6eIH_J,Op/B_*d%?fd&%jQcL-R%Dt^_[jiCcS4%WToBjC4]$mOa<qsLUgp,tG1qEmP_R!o"8WeMW0!p'c1-\F,/es7<27u##YL%`VYhP8*R_\IsDZU<gL+^R/rc9mKnC$M.P93P2I%;[-f8\A$)@k5s6'*$GW6('iZ]5qcA4K7_Vr5Z/'k3r(/gVR8!UXdU0]?4"FBSGVp^.6t+sG3CKD[>RU2P\,jV9e)='$hUg47h=&J3L!6*9n8S/(8!XC./K!El6"":\t7,#R-sA;ILI,#uF&N=9:I*SG!3#l]2eB_U66f5$R57^l,E>rG\KXGtn>$[MaCiGJ>C)=Le)DfbPXXOCE%[bNm;D"P;*4Mbdsa0'Q;kC_LV[56;C.TNf'9!E&6:(1\:a%bD=$f=!DCo_`OOhTK.faDSCRo!bm:cWh99lReRLjqlnrruGNEC!,5#-'7CL,,4"*n617.EB%D(T\m?[1h=LBI5js,(=$ao)?fJ>//VP4Pto)BRO)X9/ViG>NfJMl)[_V=XI@U(9M2cmqB-Se"9)@fp#M`0VgKUn1RTYSPATKSJOM#'d+l)c&210n+KC<=B9hr0bdgZ56-8DCtkM@^r]^$OmBRBk)Gi+K_`9ed15ik$clH=ck3HVj_^U1U-KJY=-I`t]n.5FPEIR\4-eG.nY"UiqB35_nHpo27A3YiLs4&f7jYZd]J/H4Z]p-27&!^`QZ?lII0!KK"?2QjTk6>c;1]YFaQRn%PF%e`8m"RgB6AHa%Z=dI"ikjGGK;k)q`@X34bUl1fX3"gLHU[iSu.59OHsIidnX6ER%YH/D=XrCl_o;8R,k1:WOaX03r/66EY%D/4q?0lK:%Nrf5<]>TgM3jrWd9tlF<X+3@3K9O8,6W9j<T<@POk0TGb"O[H:-2<bk0p<g_A(ouq81`9#^e>1p>5CH,N)I6"BeT[P<XII38?8.Aj+Y*%q'K_$<oV8POldV[$Rh7e!1a1'YY[1:O/b:ChXgZAb>]KQ$Wk,<F*DJZL@`sQ:2Q5f7@Qc\jOW3!6%^g1,Y&*o@+[[$&Ug('U*-q[ppFpC=abt!Uq?mjnZ?k?o&?qi<BX9ZFg!'$N7gA~>endstream
|
||||
endobj
|
||||
25 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1676
|
||||
>>
|
||||
stream
|
||||
Gb!#\a`?,q&A@B[H?+k*8hgGS!h_2FYoQo9UrGtp=_brtTI?2%7=bdP3KCk')Vi$IVUl_Z1*mLqj`R?qJHT5*On+"/"PB<]lTG<&_W1t.Eu7S7_V<2rkK'?e$Kd!$8_4=u3.Y`B+HK#2I.$KS"pC_P*%;^Y8K9/]#o(tt5m66UNa@_O3.eb/12nN/\`B+.HOcqf<AV\Y4Lho8[SL)u!f,CYTpaFML#EG<44QsrR,\fdpb5jfpof<gqsZ4r<>!K^/;:8S=4,g=+f,7sm),te;/*I:q$WQ0_rRXockFP]EO]u,H(j]X8b#I8Mb;-i0MZ]qZ7"Te6?pU)iOP!@?&$_dD7@/`\PNLH/V?=C&2`]!Gh%[e@a_U8"_MV!]gj$(AQ6^g3G2^V6KZk5[>LW'DidZ<97@OCC1TYE0WHgn[!]T\NRJ(B6@3t4V"B7#gR2@aYZbh;oH,#8lZB\?j"]t+>useZS@'#b6d8iiarI7CD3I(d:K(8$_O3g4Qt+Tf$ub`"bDViajW<kp67U4rYFABu,tbJMUsupYcbB>.-9SD[IF[V)V';[H@'YL7cN`%_d[j1r'O+;T3\"F"HI7E96'e-siF8k;e"tA-%^_Yd$;Hm:R,a-8oa6/N1P;%\#i:(,!E#:#(.&\S:bQ`dN;&Lab9B.r`s^7&QikLT<NK(h[/I.>M95<i&7sSV=fT%R5H[rr#`ULiK84%de2fC)Piru9Ze7B>nGL>u!AX+m[OEQimNMB?7Z/s$TG(lZ<em8"FCE&9!]G[`4YXWPR>!J#Y-Qi!%a%e[\#%G!IG8[;$E<n6[IB7`Z-c+'3'JLKoQ8oh*:D$N[")V^daVlH#8P*he5GPS-*l^k'=rBdifGZ(k@goQ\_"c)YEnBaR3h?4Gl;:Gi<rq@2sG:<HYFipoJN@,A5=r*+(7sQ-M2L^R1n\Z)H>>&AL_R1a^baUfa0Rl3Js;8dgbtdJ9.<0=M/KgDs,fW6KRF+0!M@miHUF1_\WEV+n?[NYHT\4`c)fo^C_hEouKR2"DDG=(MN$X4>`PN;JVJ/&JEN\j:IX\*!pG.X`gEbYTm\k%eXg(JE;Rn;3BaZ/0-J0g4e?ZbE09p10=*<A2>SOFgH`G#kqINWYl27J;TM,=2G-?-aa_s,:KShOcJq#PeGgh-d:t"79G@WkC_OB>-ID-l+TW^q5@j#p=5CH%tZQ<ORLaX]GFqUR8=C;GIRh2''fE!S0\NsoGKRP-FL'l:[@A)WpJHNR\VkT4jO]]V3T,O<afE9g%hbcJ$33O&S-7\YY-q$C9CV:pX!e@A(cbhpS$E'\1s&-;b.[IjNe8?JhGkm:`c5eEDd^"c2IN;dVfJLd$HUFojRo*VO/eq`OBT3mhNba@[!fsklFb6#gqnJ"V\Bt0)'(FGD"oJSpt(7^/1oriTbeuX47j3W2`tO:^!CTS`?9D7r`pNng,?JdqXdVQnrAI?fS^FT?d+)f;#jiYE9hTjFk;<TNE4:-=N):ZGZpIh2+I=OC&C8s.9W/#G^?;Ke8uS[Bdh=*@2!7<6]=_iQ:od,=1g)9oB/OQ$n=;0OXdYHf&d+:&Nqp<I5N"dog^m5nsP]Zih8HLMZA]o5^/8F+k3W0J23"gSoUKAh-lG@<8i;_9@Fq6<LFfglh'lWc2Qob8%,Rd,U_rjR<cQKf*+]&Eo[u0_u=[OkO%~>endstream
|
||||
endobj
|
||||
xref
|
||||
0 26
|
||||
0000000000 65535 f
|
||||
0000000061 00000 n
|
||||
0000000133 00000 n
|
||||
0000000240 00000 n
|
||||
0000000352 00000 n
|
||||
0000000457 00000 n
|
||||
0000000662 00000 n
|
||||
0000000867 00000 n
|
||||
0000000944 00000 n
|
||||
0000001149 00000 n
|
||||
0000001354 00000 n
|
||||
0000001560 00000 n
|
||||
0000001766 00000 n
|
||||
0000001972 00000 n
|
||||
0000002056 00000 n
|
||||
0000002262 00000 n
|
||||
0000002332 00000 n
|
||||
0000002618 00000 n
|
||||
0000002724 00000 n
|
||||
0000004637 00000 n
|
||||
0000006493 00000 n
|
||||
0000008477 00000 n
|
||||
0000010220 00000 n
|
||||
0000012171 00000 n
|
||||
0000014052 00000 n
|
||||
0000016138 00000 n
|
||||
trailer
|
||||
<<
|
||||
/ID
|
||||
[<523578e4abc2fdb4125b5ff1e456104b><523578e4abc2fdb4125b5ff1e456104b>]
|
||||
% ReportLab generated PDF document -- digest (opensource)
|
||||
|
||||
/Info 16 0 R
|
||||
/Root 15 0 R
|
||||
/Size 26
|
||||
>>
|
||||
startxref
|
||||
17906
|
||||
%%EOF
|
||||
263
Les03-Cursor-Basics/Les03-Lesopdracht.pdf
Normal file
263
Les03-Cursor-Basics/Les03-Lesopdracht.pdf
Normal file
@@ -0,0 +1,263 @@
|
||||
%PDF-1.4
|
||||
%<25><><EFBFBD><EFBFBD> ReportLab Generated PDF document (opensource)
|
||||
1 0 obj
|
||||
<<
|
||||
/F1 2 0 R /F2 3 0 R /F3 5 0 R /F4 6 0 R /F5 7 0 R
|
||||
>>
|
||||
endobj
|
||||
2 0 obj
|
||||
<<
|
||||
/BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font
|
||||
>>
|
||||
endobj
|
||||
3 0 obj
|
||||
<<
|
||||
/BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding /Name /F2 /Subtype /Type1 /Type /Font
|
||||
>>
|
||||
endobj
|
||||
4 0 obj
|
||||
<<
|
||||
/Contents 20 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 19 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
5 0 obj
|
||||
<<
|
||||
/BaseFont /Courier /Encoding /WinAnsiEncoding /Name /F3 /Subtype /Type1 /Type /Font
|
||||
>>
|
||||
endobj
|
||||
6 0 obj
|
||||
<<
|
||||
/BaseFont /Symbol /Name /F4 /Subtype /Type1 /Type /Font
|
||||
>>
|
||||
endobj
|
||||
7 0 obj
|
||||
<<
|
||||
/BaseFont /ZapfDingbats /Name /F5 /Subtype /Type1 /Type /Font
|
||||
>>
|
||||
endobj
|
||||
8 0 obj
|
||||
<<
|
||||
/Contents 21 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 19 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
9 0 obj
|
||||
<<
|
||||
/Contents 22 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 19 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
10 0 obj
|
||||
<<
|
||||
/Contents 23 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 19 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
11 0 obj
|
||||
<<
|
||||
/Contents 24 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 19 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
12 0 obj
|
||||
<<
|
||||
/Contents 25 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 19 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
13 0 obj
|
||||
<<
|
||||
/Contents 26 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 19 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
14 0 obj
|
||||
<<
|
||||
/Contents 27 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 19 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
15 0 obj
|
||||
<<
|
||||
/Contents 28 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 19 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
16 0 obj
|
||||
<<
|
||||
/Contents 29 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 19 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
17 0 obj
|
||||
<<
|
||||
/PageMode /UseNone /Pages 19 0 R /Type /Catalog
|
||||
>>
|
||||
endobj
|
||||
18 0 obj
|
||||
<<
|
||||
/Author (NOVI Hogeschool Utrecht) /CreationDate (D:20260607080655+00'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260607080655+00'00') /Producer (ReportLab PDF Library - \(opensource\))
|
||||
/Subject (\(unspecified\)) /Title (Lesopdracht) /Trapped /False
|
||||
>>
|
||||
endobj
|
||||
19 0 obj
|
||||
<<
|
||||
/Count 10 /Kids [ 4 0 R 8 0 R 9 0 R 10 0 R 11 0 R 12 0 R 13 0 R 14 0 R 15 0 R 16 0 R ] /Type /Pages
|
||||
>>
|
||||
endobj
|
||||
20 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1720
|
||||
>>
|
||||
stream
|
||||
Gb!#\?!H&A'Ya=F3*1ITNiJ7Y=Yb1OK9eZK=M(Hd9l<Y+"G:3\[KGiErJpe!4!]B1DQG*/8=%SKhXbS$:jfPEF1M?r1PXLo$lFci$s5ar(r(jTZ1lcn4QJ7/5^Z$!L]`K]qZFgmb<^e,N-N9+;+Zu\+Ae"F'e/'cT9N#9TjdZC@mFQqV$_`$-:/Gbh!^GgF+b$Z#fGm*rN1OkWY^f%eIL,GhC&e.Ya1N;l3Dtt+U*f@0Y7&Xb;m3kF'VPEN61"!<Tr[I"V]0-r,N:^l<BgIV(Q)ip_q.*/\jVb+=IhN+P2=]f;2Us7I1/*M!&In!uhOALfWl<KY1;:oGNdRnBq(CRb/#<^4d@odFa^NL5Uk,)VQ\DH\]c,rAoV2k8'$PKF5Q^^&;8.I*!ROdMRn2;\%%=9YJ:(b\P&M%dg+?*c1+=<$T<,p3caKG;8Bq.h<XnQr;^0mMpksYJWc%2?#c,gddL@<($(Y&uqm,4a.sTV];)YZ/"0PEHaLOQUZ>+n)eMA#pL3bX="bp/m*e[d3Y'+26m2X$o()<*Z/"lc&Y0c@SS`DEuu[-8?%QZn--Q5gd*3h-U:rR=Bua@#:2kcilp\<JkoE9BaRCP82MlUpngZeD][.0'I@T2_42>`E;;%Ol4/47BRRFdO,D:f8a]2PG<Z7<27K7Xc$R-3?n>H_XUSJXFo<8-M/SF+PTFQS@H^h)qoWO:ZE`DZXn!`Dke)eZE[M:8!I^.%eci,FEW,VH^T%7AMRfGYdgU0#\]upO1;+3N-P<Sf+#L5erjL=KVFA(t2R#C%_fW^E"L]_4fm>ASqZDE<%W&Sg5MkD^?(L-c((c-rPN#\Ri6uk#5pW#:YNlV%Z67,@=AO$H&/^tm<;aA:./rK5Xu0H%D80i6]ariXD0J'M,LEcbSlVh^_-C=_X7W7jZ[ag_).pCHl*<tl/i68H@YoTrQ-Q)OE+r?s3[aEdm]8KR`)mU:j7W<%([%]gs4i.=d!o'V]!OHKVunSm"`9)VZ!aC\N_lc](W`\pDZ4CR]-TqoZp%ZpOS]XRgo4`S%(315NT82c<2M0VE<IXjEHMEIH'[S2:6QC"boISQ)3V\>6F"^:9Nc#AU4b6McuF9TEI=89:=D<SFLfPo33J9#9QQ);h<Epr:7'7$nT(%odhnWUPC'28dsK%h3R_uU_CfjA(CAgVemt1Dd^f$%H7S7T;6/NO\+W#(0eXeI2EULS^epdenDJQ%B!fq8M0]Be9b*657@MOE=3?SU29^]1dFb,RZXZf5&8bG?!OMmk3Y`0\J9uJi4*&`d%'s7&$'TD-Q8g$EK7sE^Pk\W<q4t(A&q5GABm"6qUKMbl.>[cj1$YtQ-$5>_=c&(AQ!t89h'DP2b^-@C\m1g&-SG'>UTT>G?6%_Ns"H_N4s.T^lQCdpQ0_=rrTs78o6]Je3,ClloaM^YN(iaI1&d,3jG<sa((]/`(:Jr[9'7)F4Gh:O'b3aQ/g<B48<+.3b9leh+5kWhptfWY`L,Wt8"qinX(S_o&#!,.FoQftl%@\PW\KR[%?;5aTp0.ih8P(s]S/+g)XQu)BVGGrdG!Dp[a&tV-LAifXqPlCB-pC?PW%,,?c]mu#=LYZ-ZC$fD2TU*3g1@E=D9kD$5Y&:33@(cJZ57nqg>sL_(+5kr34%TEUbWX+l)@W9_Hor<FIZ]THes!g38$1ecci&3.$XeG7j!EHml3(+7L]'W$(d5HL!$dhEPaM)PR~>endstream
|
||||
endobj
|
||||
21 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1731
|
||||
>>
|
||||
stream
|
||||
Gb"/'968iG&AIa;m&?bU'b#U'JA/CI*N*U-:/\(YFN0*1'J._-8;;fgkb5c)$bi`5/31/:LIrVOKRh%^DnfR/^jtF2<WAg?_"/upSM=LlVO,(\ikb7E]U1bK*Pqn24<KA0W>fk#TkckhbafIGJ-7#+)+Z65'HVL^&Lg'R*6/B%";Db,T/mC:#cNh+&BXi8"rlT.&o`k0Hc-GHE.*+d:Khud#o[mkZi3=%fRl%7eQI#X6CBKSQnDfhroU[kn7+B.ATX2K$2eNF*F0Pmi*=((=)b0(kTn>onH>`@0R[[`(`;pn8po5(2iYQ&AX:XLeJW\6k&IDO%ue.g(0`9iDkICX&F!+(g&EhL!sfSB46b-1nl.?[.lWG77chFGiGF]_lc=TSku'*T$;56oAW4]"N5@>F=%9)(:MrGP$8)VG&0.aeXC'SqGo\lJ;NVrL,7*a#euOkqbq,:I!YCrW(8nFj"-C"n#RRO1Fs'$jdosd,Ji>^82:VjCTTZ(6Cq3O0b`]BX%:hJ(CP_I$aXN=N1tEEWS?.T'.j3+!(Jg(c5fb>c2?FF5@?cHH9"qpg?F>r?0Lc?BYs!c:isAS<9@oIhStpO;hpfVE5c@2lYXQ!K,,]5JI1.i"H"F!mPD!uS5\o-cRnauUXp%Pm%uJ3n[H-7Yg)Hgc>`hC#0F9pb=I\jZg[qt;F6-B3_1$0,*hBhQ<kb=s2GlYWEC`FAGQ=m>KZgp-@W8lF`<@NuFN78?ZuKCW_Y-64D/eRUk*X:\1csJXHaVnsgSDJN-GJQ39^X@8pb>_TmkfC'=FE-D>iu%k`9Q3@.Ag.k=KbU]kk0f,<ge3s1l:t6)aga08!`+1!OZrugo:?$473VSAZ)fX=?8;tBdJ).Ti#RnIBnY*.31\+S@5#jdT\U)!$mLuY&q%lZPYF$3\U1T8)4dlQPIe3,.22`Kt,G.Hbf7V+#7s\Z/QhB8YMEsE3;DCEa=:>o)ZpUQ.Q2/chHF\D<%jXf9u'(>GJ0+[AA@p@Z'7$5<$*d)#^;*Ko)SD?7V710f#Qjru^n-(\DG@$)1$gitMYS7Q(.+i)=??^j'ZZk?)R:1"I6;T]5$BN0VH9G.T>#\0:7PFg/TOCR(?L=]Wa3-&I?eKpjs^i4?Arcm9%`F&Ne`jL&2h?$X\K*+5SmcRkDfio8chU)blfQ$-!WgW/q?).#!?G(OfRnJROlS*N<HVs(]`jgsnbcFgRL\K@o8f)2h5jIJO^L]]R:?c.W.>Jb\@H&W.1_3seFa((j7lVLlo;1(-e4?+FcHosUH\T[T'DW@KCU8*^5$0uR^!j^hW4YUuLI=WM9+-3(<Xoek!$k&#$1:t)EE4J)?<kV^84k5m6Q!eaEbd51Eg(^UYJQR3,Wsn"(E+-FIrB4Ae&Gn\>m']D6"FdNaJ4sS5$J3p!U/Z[in/aG>mU:;ko1U3'Mt>1s]Ie-p^*Zo2Sa3+M$U`i"%=cEH7F4Nu#`Fn+M#M:eQT[(F;V[+nHZ[Q<:;mPC_.;eBDf$\-/)Zh5q&3PY=LFM_l[:0l4qT!?.,<O-M6Q=8I`m!TmjXP[`Ok--fgjt\];a@/M`=:#p]aL"W''jBNVRAjllJ&Eg`Ee%Ru<+]-;Na9ZUGDAA\6U*4eR:"ie9N^]@s>;O3[ZmZ'2kajmYsKFAS,.X\:)BiJHY.ND-C7U(^<&gY5Dr555pI*0nCp7M)M<AaEaL:eD'E+YGA"GC=;=QU)`%*:M0-p6Jb(PL]R-j~>endstream
|
||||
endobj
|
||||
22 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 2057
|
||||
>>
|
||||
stream
|
||||
GauHL>BcPr&:XAWR!m\![oJM$8E;?sYIj$VhY*I&I]*=*6];T\OZ*123s(@\@OI2*ZaLB&6CR`45%=p@^1hYJk5`iJE:B"lAM?:QapEjn$+q+9^5WC+RG\)W?[@1>J4.+u5rftI&;2<f=@>H$Jk3_/91l"=,VV>.";OaJ3<*JVJV_YdOoph'#\A8H]MCl6O>SCO(e-I1GPItd(QkphLG7Hn'#P`s'<7tqF5kS4">HFbhRiNShnX"`eQ%!*9EtOL;TBRh-B&6jH3;LdQ-N'sbC(47_Y=Y^?pKq]*XR3H<f*F3aqRFHH9r_'1sHd1"!SgaM[M!Xl_"PK,VnjKC;3V$[%C>a4Q)5m@i;JXN0AYXZdD]BoM5ofRGu3(oj$Z\k?s:(akfggB7P2GQGt^?8s7<qi<l5$Ug@9!?irr+o=2aq!5Np$=Ib_nrIkq)?"KR'CfMlU2F?J2Vt("hgZ2N^9;2NJU?V=]9.m9"r_f%Fe<DsX:ZHQV#Cb7fZ't#t7"J,3."\`V"D,1OqFRa?rj%oP,,N&.Pe.5^<b_7jbnE'#4l&udO#IXC@2T8spTT%:>.Dp^@H"^K.oX<MeesulX%S7CU;:T3l<K\NcG@^<jn;mpZr<5cn[C]+G8=[-0'fmMbLfiReXJG-`6VK4$>hA<o6[eIGpA>c`&Y6*^c^s*_Qh4"BekZgN7Ag&cAPBNeDsg6nqMZQ>FM_$oIC*U;C-Ec??jBE9<E#9lIu?q/aucP9NVk_f\/L!7<o9gqKs/O^0A<^NtG_4.`=f84s^6+OtKj";"+E&]K5MoWLbuu+0%Q-+O-AWX(FCc0GkH3$!a$ekeGYd%uE^@!k*->[41,16H?FLUq$[/n.s6C/6c0#$@\k=3F8qCT/gOWF1B`hgc_Xb7%`F9djS2VL@[LCFKWnESSSn+!G3+>LOkY%r<=bK%GNs7fK2UP)_o&8>n#Li0&%dJ,B8p/au[udbVA3!?_DNhHPApG<pRob;%Iu'4S"4,Im(:9KHA#-!cqe:0-.&EE/5Zt#J0X#ZC]m4H<Y!2Suen;?a.bAn(#6GRb'bNqd@]fT:I?FO1nWaA:G!%huR%:qh$BD$eOH";\gk';M3dUHG!.d.j4',1R6^3+>EfIL1Q/0Tu9L,E+RD#ADhrAi:6U1.N)S0D/3C`r)#h<ZhY!qO3>dRE6k%O5o>e[CI4siUC_()rjrV/2nP#ffHDf]oa'\)/jqeqoP<-99@"V`0(m+Z83H<siJLn,M+@L_'j+g0A=F%["S%07@6pCjfl$'eoIEIIH'=49&Q0)[HV7i)P#mTr9J0oGQ<:cj950\Vj3biE)=lR0;$)0%)RFZVFu=5H]nf(8Z4JF1^Mnh#)lEV_fIW]uCUBN/JWlITY&d*kG/G23F.-l5gpWndiShqZ4BXn`oc176P`eKFa2U+[SHU*WRS+[U-:adXl-m.9$i:']4m*LA;b'7WT1k5.7IK-T,`+qA89i0-l:g0EW*U_?:)939]U@>QLpAjUA@tgk9mR<GiB=9UJ5GTG)kp-eAY$lEDQ+&Vd<T/@e?u>bcqFn!6h.7hRp^o#*COp6E2fK7/h.CrUp7Xh$Mq%ME6K^NQ%<\D[V;%:X'9!:c&H`!6gb)4b$Lj"=3B#2dU>O'Q]cKeT=%:mY_elGobI0I8G7\9@[.t79"2?FWJ`,8X1996EbOn&)$o5tTaNHA/4&I#Cg"feY"Ri#TSh_8*"3]*AEhcqKR#gL?c\6[p)WbE@+_*]U#DP32OTcsDCW@rKT?GA,P/BfgAIuAl`X^DIeT@ER!7=-0mA!5inL__?e_;mkF*oRNE23;p"D*R=m"Ei1O!>+Cl7PVKu/Zo?S,Aq1,Oub5!qQE4FClBW\HroEr95Ef#[;nltq&..d2uc@hd't\gjjg_)@;8[QkGOh<")dX_BS+@\;uQ'Xo[]H8BE5(A+l&!M/Ka'<]OAb-g?US31LIZ6SPuGh[="X`goR_h9m'7I!Vjpheqt)LQ(rnO%Q%eEjp?ZXIeeXoAS9*ZY3hs4MQOjel]aRUta-"W//\1rdCXRh/e&B$TeTZ"h0-#c%D"@1Rap~>endstream
|
||||
endobj
|
||||
23 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 2020
|
||||
>>
|
||||
stream
|
||||
GauHL8QXq3&AI=/e1d69bm5unQ5^:X1iI\obk*1ta&[eKA%?/2d$ORq;j&0U=TF5t2"2-P86):^^=mCTJ\S(2NKsS5`c-6<Jn`&G"stW1`ZO1<Gjo3./D'Hk"2smB40X5<[e^"Z+(X<>`!rf`"Q/^)mnoal8UNbl_8:8bB6k[;bh`b%+J*@n4pBr8NpF;=kAB3^(947MESY%"I#ZHRn,hV#kR_A!LVe"c=^S1kC/\T/Np"3&$,b(rrjdUkI*RW5QLbgiQ@_Q7&giq+_:]Q.YSBfVcGVGrmpQ&_.Hh&6N^4YSHCI5cZ@_8E#TH':_g.E!5W_<HTbVdE\Ud%oa.R*or7]M)=1?P*0XMq'`XD,(5#AjPnq:@2W"#C,kNShNQDm#/[)`He/jsI(pM2WPp%O8UF&V^<BsN8acg2]*PE[(NWWtQT.T`m%>\1$O='R&I]gV%h8/]^=E6BM?%B#P9]kL$3;A<Al11`oQh-.T*-Gq,Naid@E(hWXBPT_Q+RiFY$N*!7fm9tp>H1bqk/g+a;nP$5^m\oriV9ZL"7/*bmd1=`Q'<YGS^d<cYN4(m9,(4eo3I^n'X_NW7<'TetCS1(ADcsHgH%K@uUE(Eu7#3^Fr>nR%1:UhU$\$,?$%d4)MD91td(o6.M-69XXQX^mgHE?^>@b9V5>"<Hn&fn#j9Tt4OKSV0:_kVMU"c<[VQQ\9n(lpsI^>_4Z/#Vb:A.^_"<$@c#Pc(;LNC2RH%mm"B%*@Z-BK14!Qu`=Oe>L'>)U]a](jJVch@7r[\VWCIKprL8+7tG5`$D41X(E26><G#%;6!h0<YTB!S-,D'RHlrCp?eoJ`eM6Ce%6fk;r]#j(Z/'L]=!hdAI7R02%YFlJF6FJ$3,Uct0*a_i%G.P=-/srG)K-g^`-NKJaWR,T-=oAlrD5ad8\pYbg*pXVTt-`JS\>Z)g`uT[\JY9OWq=9?sgiHh@AIq(F\\-Zl,(jk<cs04@8Sli^cp0%Qn(PH-=B\&h=X^"UroHr%&8h\W141#5#eNe,N",qS(("FLQO?8\7A)bKn1.(ir)Fi_IZV>A3;LK`HA?JFN6#l\@NL=O&#U5WX"FF2Z4!4H[Vg_<hlVA#%Uo?m1+bTJ$qOE>P09Z%9DSDp"3.T`SuDEnr/*F'+_3M;sF9n:Jl3hX3\%^o$TR-508)I@X,?gigUc'mma`,H\pMe^gZ9Ur6pCZ2/N<1=d/bmK>C5GSCFGeW)2g1Z0XXf_rqYi"<RBX-.OgY9+87YBHH*d?0'\q8ZJBM[R)=-rE:_ZCHQVWD94pIX;Rg3Z3C6nh:F]&.56M90`71M8Y/89/tWf.=l>EE6[B-D#p*]+H8#>GJ?^pLuHI@X(A82?!W+$8/U:2DJ!\EK\R:E:f]t$bh:.EX1d=^HHm4U>ZXs]C&k^9f]=eksfNi-?#%%X]U=g>-^SJ:$9nc?J`R_Rhgik"V`FWe`O3=B64=@0dlJB]&'Jm3^/11.4*;:mMX"[W[ZA8IY;m^Nd:_/(^g%d`^3f8<bu=G4W9Dr[R2dn.h1+35iWUd:*_PEOuY!0LIlfQR1RY^DUd;TO'jG>=H*d9M0B&RFiCh)nWt\OR.:JaE@tY<KM8*O;fm]L'MP//T9eVa6t%rgBc!IF^ln#7D4+mfS>*+,0ZN2d6toa;cek?U`3hbCTa,mAEGugcMn.cBT#RXAM!i`8c10muRC5gPgTh`kMW=%h183nNZWp?PMirCBH;oiW8O,E\;IZ5j8H#]5l-pZLWDZi&V$a1-NH>5C[@Z<FOG,/rm%O7l#<'\iWe75i1G+`dfk(9<QTC6jldU3!WieYt+_=>$,_@Z(%H&;H94bGip=C^!3-q,a&^."+NaOZ5:OD$(]/U9A***C>ctXb:P4M@//S5.Xo;1hdUBYq.VL*UuA1Q@H()bFuX&:g_eI]G9c1)Go^D1DQD=?o-RHa@TflKq)SD>P#RiU4IX[9!;_*&G>N/m:_TQ9."R1tIkC+IG)oXI0E.K$XK.M!#j_]BfmPW1.t<Y#[Jn/ku"B*J~>endstream
|
||||
endobj
|
||||
24 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1769
|
||||
>>
|
||||
stream
|
||||
Gau`T>BALf'Ro4HSB2GiAZ`X:]AbD^il4nU(PfFT*?MeX(/PR*+t\!/dbioV$^/;5+QI/F@u3X$^@0k'6G^JSXo8PuJ2^st^SF+4N2JoE&MUqRGN6NK!F[%5_?IfA_gMa-kN*fHZU"Yq7m*F>'U0i!Oog<26n)ID_gPE\$+YWOo)T"=4\$t&6rDQ7hLkcsG`3fQ+Kjo'g\Vq=WheekY@32ClSf0g-YT8S/!UM%:fk4^?Gc3La$6`bI6'/Q0Mg.7I^ciojq];&8U,XeDp=i0e'-lc0`DF>k9WAhW,Nd:EZmAq?CN.`_HaR%53Z47BQ/;b5,/kE;EWN,P7Ah[FTbnJE?k3+35D'tp&#F3<LJG=IN![?3WjR/QU]^E)XKfR@0%2/1.r:E=BHJGIk",%P9G"um"W\3=]pq^c8PIcAF)n8B2!)qgXg;^U*V@jcr*$DKT=tLXVVPU9W(a(p/5W'l8bk7`MpSSJZBo:.O<T"n9VhN_,%C]a1djBS"#SS'SY!=`u=39\6;EnPd';@cX:urL1IQFUBRG2<&!L%]QnOrZ`I;5D]ZbPNPgaCh'@ZAp`qo,,BW@8>)d]_VOO<PI5(D7M2m)ZL_`d\"@#50TC^fme1>$gBstojkA>G[k=p\3#tf%(r;iP:qpNejc;UV_)o9S=,].6T>Q\67:Z=b]^!0W:[=-Vd).(rXIdptj:$mk>#I,9q&4RFuaK4e=gmZ+F,i%k+N[AC7D(@g8.VP..SNTZ!$VhtNZ[u#/qB!)]p0%]?f`h]62[OPFh1t)W86NFKFtFa@F?XU/QJ+Og&P"gd^S9<*"G:lWQF5I7fXS[CM'F=%[;[TqrD:\1>sV?DLNl(@<3#]#dg:(VX8jcWl?$u+Y0Hr@S*i0ObQl\2:qkL<SV(9p"G<m,l932``+P<[5[B+RA`^m>eQ**uG!Fr3I:b5Ss2`EN+HJ;T&oNX<m,SRAD+D4MIg^jN67M2$+Ks]D,0]U+KKG`4jd7t)2lP)>RO7`Y32VKb4jf(t0a7+uU,t0JLDFTo0$?/W9Q.0s^-mKdBo/Lm)Ob,DnVX@1.)(b*YbJGNb'-/"dSioA6+j/l@eDM*KBbPNZotn\$h1ea5SU"#X>!H1<=jlH<F/iBBmnFG6I1bf?TNN?fD:9EMaQiYNe-,h9n55/)qg4e@)l<,C[MPRli'pA;WZpE.9c?AJ3,lc#b_rJD"Bj(_e_9\W<qnsCp&t2Rc[6k!Zdb3BF@(Y@]mW@*h@-\]f\R-Q)%q])u4VQcHY`.b.17<YXD,,dpX(>Z^tY;=\ZEEj&.aDhs,T?0bYIqSTX_fnZBGR;/Epi_hCqg1Ge!m`2q(_0c21FBTbdLjDgk%92%@[QU2eaF`T-sJ&1%F*QP&J=YEVSe:S_ZVE&_P6@8:ud?aHn8PG.Jg8^:E'TVB9ba3bUVs$'K"L!Hn*7JMem%^3*P^b8Tc0_B5,K&h,hJUHU(dn'oD%&P\>UA&#j*2e6O5RnQT+?m]"MWkuC6]TL%V(^_=\6Z$Q.<tHpZ-.4(nW;M,W>N!IfeQ0htupPb:&sDel''121<+jgHAls7Z[:=]>l@3rPuUb?Rh4TM1ac<B\;DS:U[ts3>VUq:A?`d@2.Z:Z.:q$a!7m@@Q&>,qid629$W@*#o6Y^@3+u0&#SCSZNT'QI"BbjmM]D9X=WAOYibQ\>A]q:DToR)Np?+G(![4G:0pXbs%$6,-9M@!2DYqSmsIC*np@N73tZf9Il[&Anm]kF/H4b!j*eKq),;fOlRqQ$K`hV[!^`H1JH~>endstream
|
||||
endobj
|
||||
25 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1810
|
||||
>>
|
||||
stream
|
||||
Gau`T=``=U&:W67fZ?eIF9I.;#a23WRF[3B:,5C>.qp*t&;l&b7_D&SZJA:UHPa?VMmDY_7?'lif\LK7Kaj]")9#rI!r-=6j&6$g#1Fk8S8ak0LY("kpAn]Sg"ZX<3n/6h&D,DRaB!p1/4"s4>QYs\'?B7N*J6>3lMs:5gGWlh,V3:2$m<!O[_mYUL*[gZKAIl*0bhlh-%pW9^;B&HGV0RC3eUXbOW!R@.]"&d-7@<IC^[*P$pT.;EX$HFQ-B2LP(`=-A^Xp9Qn`3jcY)`>mUV]\1-:*P2jh>+!]j#c7>YSrH_9PLR4%5Co,:*5HE/1^5]iB@67^Vl"KS3K-6nO>3Efc/fdMi+rP#HO"g3Q>:UQ`#7lf97_fOq9+G_b'O/\)sX-]^De6>M=o#n4`5]2?dlp3oR(Z.;bA!#%m8.+%R!X1k"h^#:e8/>,#,moDl[IS,8T@8Ll,V1598ZZI(%KI^Jj&Q+'Z^ho9[(s5rQ06,gBUB6m-0u8T!gQ<lGHdC5g_VVU7hA6Ll,Uh).tULU,6g#1JVhn3bCnB%1r.<[beeK=U&haj1'sGXE53Ko$/;:';[&kbg>*LAhW#.#Ho<\V*=VGA]>fZoR[UNmcEM='Ri2FS$F4DrKEHkZNmi8J>@t7-jUZ#4-H$u8er%2lVLA(AlTnBfoMp3XHtn7;G`EE7WZ<)b]>R/&![Gi2(>?.:ll\oa9Yh[9-*YUV#bI6bTAX1;m`idurV;M`Q\pNi/VrLL]Z]bCH>8qk'/*SN\+/k"n)]VXX5cV>^LrmeL=N\7UQCfGMM5;]gJG_,)uD*U@]YKMS..2*s6:3<d=RBURL$,W,M3ic]n_J*`3fcPVuVi&08RFT]fc>Q7Im?h;%Sf>UYO1kN1[fMiF^_qg=0uL+htlgj$#eE&OT[59:3oN!$*WTeVI(iY=>S:],Ffd(1+G;eA#9]qZ+2S`a\=ZW'87[@+U[<$O%G7Ae87.]WFdK]c?Q+esLc\`N_CG=X3Mqlge*I;N:H_#YPjeRO@%qUA5(aHh"tn5a0m-QW:!Ga5]&C&M%,'\`9p[@eZV-chs)'1j!6b/7Z%[%jAE<0Q!`R[W1E<*_Om,fP"D\H9Bc@f0dN]^?OmWU7*+qjC*Jgg]-\Wr1*;SUd)BNS9m>Sflj*qn;$Vgd/gB#F@B9d;m]_L!`SGqJ/LJqP)F^+@_)r%/KV+g=UZ\4/5J$cRpi/__?3sh"r`MlVXshs:6Tgi-B=/2^f7DGR\K28poO?<hO4q2ca9C>Rb*&E'YD1%V\*Io(u**60?d/.Cs;qX(+5HOD-bs(#oFFfC`u)s/2n!h8u7aA3)"]Q>UR(NR$?$6;pAmPK+_hE.P;7Q&*@%9S.?%P[hAZKE3+u,PB'Kui:-\^1M2JZ5cZj:306M`LN"jK'7=(^%mc8=F,6+7D,ri'97N-P!D]]hjG"h-Qh*>dj)jF/39,e9`q)M^^D%SrgPVj(L;:9L3WuCcMOpbthS+QOc%^QUSU3tdVG7jR6cRkAAP_5h?%i:hkeG4c2VL]_jk@@[0s4,n]a47tDHME8AW&qQm-"F4n=87MHsg'+fYU8+ZYcp41LA-`>&*4/42>aDUFQ-/E(&G,=:$p[e9gdZ7<Kcebom[/fR%f@p\hnYkKY:Hk?Fc:Jh'B96>93Xc'VHqTuH?/1c9QqRX[`ToN6:]LIFdm^70Jhh:BFd[li[%P+JCsku7Dc",&k2h['>lq31$a%a_PIoUu'T/dsX?$<Aq-FlCjUiA(VoT)Wek?L18U1(V`i4jJP\ZL-dDG*_rJO'5>R'gFsaa#Rp]Q-,S;e#22W_*?Q%S;7~>endstream
|
||||
endobj
|
||||
26 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1595
|
||||
>>
|
||||
stream
|
||||
Gb"/'bBDVu&Dcq.k%(=$?iU=$:qOZFe"!4.;lNoF6W4Q<La!ZKFQtFRm2`q*LMYXDe#/udM@aai@V.;1+9RL>epN6WJ<rng3aof`/D%Z?&[6Wfh^ttV(?$n?KEK/YeFkm6hl^<_6rjMP93e+d$mbM%oE5HALm5UVNoN6_Gu,nk5Hu%:c_[3I5U:DUl!><I':3bs/VrGurmgNZ5?ZJ,M;,:&RdC?rYQsJ@25&ZT;!*!4/@R>1nbpKen@ai])9,jXn;A_p(`PHrgk-D]i0??)WQnN6(m^e%q4oo&!>Q(jN\.oeT^PjZo2QA25X,ELOp0c<5X(hWHPDfje6GeBUR7,![g8bQGL8js[<6WZ+q&fk\:a04Cb=UkXa>i3e.Rqq"378^"tlU$HIEY_pBdt,QUa1#3hh2jgO/"%YDHm"m]iqD^gLhAW:;4Bn<]B'^Zc"n7pDZU7kuOM$s^F7j(u`-TbUd+0%KDKj@:RUpeB%3,.jqD"Kf,V\;S0JY3j=XA084:5cG0$IBEoRla7'/(p+nd10>tbX,PHZr8oj"&T+"^2Wl[QF'+)]Wh<%L-oU;nS0_$cfX`kZ3tt2_f?)l8*QLG]+c@Ju7"qeL'neWu"dE5n9q5PF%b=ukX;@p;2\&LnA7]3_SaAtm@F\b5L=H-;dH9oSgZWq:\=4!4U)u&)DF`J[0d_Q&7M\Q:Sa[]+WAub(0(GDd'XV(iK-=nm4-8-,jIatJU;#+h/h7?+BbL(I2JKIJ(La7_F3X-./,%$&bMA#1#]&UIot#LaU1)U5lYL!]*'D+$E#]Q/XZ0GI0-t#WS113?Q0i\6&24>0o:UWEh^i6MV<`(Pa@LCc<1(AFELf#Oog3RYb^qrA$M?=/REA3KFJ8h8'rpt68PJsG:,5pN%PhD*a*bkD;KSU1/4QWl9/uIG:5DnjI`m]F6"XZr0dH\%#ehdg9cq4.lKm.;l-m,N9^<h-&q=(2=^L0(^43[)Xrop7`W'-AQYATt@"PGZXfaTrI_F7Rqape!TSQ(Y#>+mR(2:K]gKuF_qLIXJKYVG?/Ra")]+AI-rgVF9^)AVk47U3S1u+Z)<X'QZ5osCg9>PI->WaD_LJbF,U*:)Ki->m54665lijOnQs7=0G+3FL/il3;4KcU"K&3%WQOtk+WioWcu3PG];F8W2i^gLiT`GN+&`,01],8_G<I:I9/Ud73J_58!O8)4rjHj$\]<_4&-SfDNc(mOJ!BtL*4YM7H?SJ`i>YNh^bKJa:d<N7O1#1C=nqH]i6h(accbG)q/SG;("kM%lV5Ra8!S/$:'`!Ds[:7TeRTXW/eVg5LCJl2"PK<fjP,9<7Kkj0p^r2/Iu*34%BlND9"cFY:R1S2G">blM:+qk("1fCkZP>A$+.P]7%4e!nZM^gX^&SCq^ro7)YpUO0mi+9<RPaR/Km_Ci#%tF2D.b/8El]`#d\5$o>`XWCf!e#k&PL^c,2NL)5)##"j%^-NJa*PA:bN[6%D3@mgAZ(UXVTWe"b3"cRJ0\QEBEWgY/)610YKR\Ah1H'(;E:*O0B-MZT"_q)Hq=O_<Di$jO-K3HbtPVX43q:)"6;bF;UFVN".9%Vnu@,BIL"?j86u~>endstream
|
||||
endobj
|
||||
27 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1742
|
||||
>>
|
||||
stream
|
||||
Gb!#\?$k9`'Ya=F39q;r2q=(.=jC;FRl5,mAI2RZE\V&,\/:^VVHJ)IhnC?2!s<^?\m?pQK_:jr=%>dL3J)jB05CJVCOk"MG]c<'176::]#9<E-[7_XmOZ47o3Dl_,A\`85QXIUJQc/)Gb"8R"VcXW'B-R]$;,sW">J?sIHlHJ0RmM.+?m8_i;sV@j+8B;4+oDEY$L%,*ZXHHpk4A<&72%tR,o9HT`hJ5eQ?s!@T1VI@'YO70>IL+$1G3SbbJa8-1H8TA@*oGQ8'K,0B%og.[+ZneT7+*J]S;eTOlXGCuRIX^Mib.bd5PfKoMe,E"SukLmF1\0T*7Qc73MA_hdeu(Se0d9Zs(MNr/.J_:;:f?0F89N=n8`URNI_J0=1enCp8rQm<<A1,$Ld-IY+'h,n>0bHXELZGGUWXkaUj^"!0R+-UpQf`mbJ!9;5;1NK7WeO6N!JiLoY'W1C:GW&l_.;m-]aQ>0TgXVG[\5:;jRq4]8?Ci5W,/^J@J_Q4S%Wc8RCWkgC8*>4BK_nI-+kP\D_<kp017?u_56V5Rhg:ud1\e'26:-p=f5Uh,RHKCl"=u2*p4utNArA0PJ7iHe,8:ZXZP38jN-Kn-IL3Dr^l]+qZ(r+/#8Zk8@33]!YdRfo0<(b89.X/s>&cLOn-pbRC]!K:;9M@.1ZpH%UjbWd'Ig5ol>UF,icio$6XipP$Xoq!7`X)g,0SiR8arE>;5ro$m_20AdP?c[?Y/S2>rWC_=PH5Cgt(2BJ-:fdhMdnJjt\L5i:T!'B(0-,$ntQ;![kHLN^G\IF`qT,<2N(opMmHknQ+b>K!CompK4S>dlcN)2XNRPY'[%ZA',:ZN9@U^5EV,coWlTn[&@$^-7'q1Q"I:hXL5_>gij6-WbIi<M]tei?ieU4m9i-FjF(]:HCVl>Y/>3Yr,@6`.S^<olO)Tq.APE?Mph`ZZ_N&a6S(;iq)4+@rY8'U&u.j`PY,L:5D^FE)im[Cm0/+.'QAK4&U:Z#fioS;da3(EX:4/[q(U(_Cr":N;an(4PAr2;;TUc\B@!HC?nOYQ8W%hQnf8DBK`:9qW&jQSL'F_PL'5(P_BX4Xell;e>B\h@Z-;Q#b<b<s"q:C"leJi4FtROF0'cd(5-`\lXZP9)?KJt=gT]pf<5c)Sn"X"#3=CF.p2cbLZMV:=g0m29]^C8"l(>kl-#"=')B5eL^CqOYI:JqIm:BB.!,OJKdsW.Mf*JQmIBn[FF%W.dRaDG7(>gueQU<HA'nl+U#(g97&\Ul%30iuVL?rtC]%b6P$Kgkc\'KiV<VcpUa!"]q0]MA[77;<E$(+8k`hks<!`4^m!.PIZW.bgKO":N%lg7j@np_B$Z7(Iu\5q=#da\>`>,0cG*X.QuK9<gg[ORGBm*e:46XfN_6TjfAn9Fp5SfS%F:75BHiRad%3:539nF*`)[a0#_5*Kr#)D9g33(jK!1b&Uq]B"(IqLG1kfVo1n*%XblDqg;_G7,s%E;e'+*o&]>B>*>#rKtB[.=@[TR(5+pRE'WS1ioV`9q>Sk)L.7WIkB^4nns@E1MhMQ$bVTqnFjPQe&?:46%,X7ie^AUG%"$(4hftUUOT!lJF]I!BrZYuLf`%Z<"Pt[?iDW#Oa6tlWG+6l^ZtJfBf>t*p!kQG.i2VXFT*c3ahsuGEd.@Qam4,sT3P[&,93-2Wj]DdfNG+MKu8=(IJS9unf^fUa#V#lhT#5"m3I^:]H/.+"oW&%^nb\L"?u3D!j$kPQ4KP3~>endstream
|
||||
endobj
|
||||
28 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1847
|
||||
>>
|
||||
stream
|
||||
Gb!;d=``=U&:W67f_W]]`WuSd!<(KY3S^JleT@\KLX7:l;l0g)K]FJp^<<!,W5Ea5'3hnUE-Lj>@e\W2.9Q@>bMV7ui7Ss=^7[_/N$gk2ikY=H4<KWuN!T"lG?c9!Y\]p4na5<DoQ6=LlOhHU4p>A7,.I`8TL9&m!(/op.0hG5np!QRE6mO\!@"K.$#`2g-6?[,[6n3Fo@NYNI%l/S'<al\0WQ!.6O?pXeQT@$@SrK(0V62HS%#"BiK]kS4M4N@J\R/0iJiC=`]3mB$,=TY9N3A3,8ea7r4(CPB@LoQin=lL2>UM=.Z8Dq)L<2nj"pbNBB23FE<DYBGso0.K@/QmA?1MY(YLV,Zp?:X)]<7)P9GAeD&_'`CG"GuCRDGTfQG,=]54rPjb[J6=Cjt-qS[^cio-mc&)fs=bO('S4cD>krDn%<2&d+7)(3Ws/</iuq.1^jPP<"t;RQTr_;BggWY4BH%*V&]Ma0cm>c;qF;ONu%BPZ^-4s.qg%WO'q\''%>B_hSZ_AJP)DS@H;3X'RPKA/O[C<ap92'b;FiW86pQ<F<)AI+7</)N$)7mX-I%Ymq4m!s[&<[WTil6*_7H4Z0AlYmuS_@@];I6NjOe5,2@7L+8o<!m8b2Qik.b.\#qrJj+K&YVNF)bGf.0A@d?$`"s@n8^p%\8,5YhUQ?1B*'0;db_1SR`AT8UM,tAK%@@;\AE+e^@X]9B,##nfm10O-`hd].B^5k+-][$C$A][-E:X%V\PRY40KaTqXH#IPh13nhnki=kr?1*M_gJB<p>@meL@ANM=Y)W*l1`'ID3Sd>P[)dDU6XOi`K]u:*5Zgltm&u;;2Am($0fSUeQ\=&R97X2TT*^doGFpa@b1I@$FnG3L/je:,iJ\5L,g;YG9mhCrp_5WBeM1j_e^[TJ-%[jb(c2K2%<"%"p*nR(;*b1;OK0''/kX?nQN1OnpCqA:!o^"3+_S]+bpJF#I.PNj)]<_^"6M&Lo.i<d?FNC2ofc*60mgh-i!>h<$?UDbd@Xf&)7Da!jA(RV]dQjnp)nr`%8hOcV$p'=CB+F%@'T*6BugK@$,.JBM98[HB*mo&OYRW'!TMLY8Q\aQ=Q+NR*NB#dpW"+e?+2eJT'2f*H"AC^moB_gLNa?I=)2QAg]B7)a&CjaN7mNlClGU6,aPm@%Muhf<"+RVLD96E/#+,Un`E>,Xg8XFpaFhV+WU$dj<;FiLM#Y7M"@F?WeIejdFIVY_3jDFPQIVd7Vj((m$7SPOW&R0O0!.W-VFG>5D(`+a+@,[!^"mB*oRdC_CRoHJu[/dH8'h)W*A4m/T^iTg'#e-K"mR)rer^sR0O2;inZkJ\3?fYh3&I2ibsE6YnNA"cR)kQ%dh&JfmjbH?0l/D>l%gi0N)DuK\8[m\ro1E"2r=Pb7;3%[IaB`r5XI$4=YT&gg05f5J9)1iuj.KVeA;II-JqM7`%-YTV0T5Ztr.1:r!Q'S2_#r\]X8g5R>?ptG;8`JFjNqE2T)Xtj5$?IX'%!GbUF8RJ)S0(*=B*Re"^,:W!9e&__9Fk_Fq[Q'H]>d)IL,(Ojb<Qt=ZbPE8A)F-@r^_!!a/kYCbRW<blYFta]r'@Ss0nuM5YWBLMd*\F3dL9Y2=^bDTYC"<!rTULn"4#<jhu]!q@Gicgc9uSf@'Sl$*m7%#;?^cpLGDeIY`<GA.YJFec0E#FrF+1\h1lR<,/eWF3nJm,%ns83P]GC@unI*/r=+)fr6uMP0@g,0Y<6d1!tW`c44farGU<:i[0285*+g&S)qPoZh!Y;X7'::Mc'!I^;[EqGD=u)ocZY2*tT(^?JJenl/KKuTYO2s4n"WWJbLMX6>7:[I'[317Y]<?)%'=m~>endstream
|
||||
endobj
|
||||
29 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1944
|
||||
>>
|
||||
stream
|
||||
Gb!Sm=``=U&:W67fM5e<:.,,ql'G0)`(ai!3?$G=8_*(@,V2e:!>^@L1r$a48j$W)[N(?kf$[)98F5m*gVkd5J`)GeT5bA1Hj%=p$IjgX2,MnF@Isb1Nd?3L/DIW9f)s2&M%eQM7?70G2<bG:I*7T;LdFW6.h#[%6Y_<`'S;>9Jq+&u3*cL5UL46h#soH0OEuB>Dp<JWhmQCiCO*W9h4DBi0/Vf[QG9j<c!7qZ(d:7;:,Poif-8]P4;d2,J,A[)28#(c?H,nm1\aZp*`"YPD**8\YMfXlnk9g(4b:uh7R%ao*MKY%>9rin9qcKM.>pU!7aQK?8Hf2g3`8-aN3sM[?JC2O=Fl#Sc?g<Q2"D6Rk'Mfi_5N-^>.04H&`c)6#Zg^Y@p.+eM4*!+22cu#]-QU#K_7-@Y8Qpo>SB`r8lRqh>/\EFW.fTGqOto\ActQ1(Klfn>@H\QBn_[M=55%&0c=:S[]\f&hR*=&]kOYoPBj:]I!FU8<0<JKiL1OQ<K!s"VR@"q@g.m0LXi+"JBD;nY!L-^s-:c<Oms%k(=1Ze%l,$KX][*lDBdRSD1p&NZkb*J*)]XKQ=Yh!f&*$DC*=_Yb<%_:8Cj<IaJ>k-]`#M]$j6T!9u@>P>SU'M9`=]X?=fYiBCK4W%1XNa=G@m4KO:]I3o;W'[lK+LcplElVm,Jh&b/!;V(fn>V1(ZK$G4.NU"4gA`)*tSBIMYpOB*34Fe+o:)gpt5"pP/H'P7C1rH\,^]IUMMiXD\f(MCW/P+H5`=mE=tJp+<0(YI!T59:Dd8N#:B2:isKY4(MFkA==PHW0UoYEl85[n?%u'O"(-XNpNSC,Q\`E]]^\Fh:sB>0F=C4gU_%JeQ_TmG15"@I'9b_-S?,C3c%u[*c95E$_A=[0%09T5t#hD?<&]0O(?L`Z8,m$!0>YV:>!U26UBB,jV.-<$-/&[1Q4`3TIANc\4%:9^K/)lN;/g?trt;","^ckq*IJ8ZK6rfS<R0_B<@8bh7Wg$,Lit(8#P'bp$L49LQbB/toQ:RIatDBClr.0tf!Ebk\IrQ<c%s9QEJ[G2N$bIK0:+q$g)!iFoD>J'-esL-14l>c(tjDW.1H"TZ/hV3K-t3R8O@kcNLPC/&`QD8.sqLtlC%PK!U5?^dd[df4h^X1Xr0r4lm)'k`sG"TPP.X=.J=l3UfiY*&nZVVqgfhGJI'VrnFf+osmQdgQ>&gjb6"@O_'dIcW-3:LV2ilm<Ihp^-L58(&]u_fO]uU$&hh,D4`q^6Rd=$4:>oj/lk$c2rg<"H*Os0JM:t/OW10EO`gRdH.'\8)5D"q5]%FPs#1&8GZaGo0QpZUs%^IY,%o;cW_5@-71if%',d92op%rV;,`:[ihqO==c;O*ZpOQbRb0$c^@DJa+B&;0NE:\*M#I$7@Y]PTM0CA3#F_`Y\FKF(g3`[[!N#tND>ihUPG*9<M$9n].*rBQ[#WSjWnGh>m)U\[;OX$g\Kc\\MAEB<-c*,mnu;GN8_eP71)s,F/>\d/rEg8]FuX2<nG_Ms.*M^.CKOiYY@K_?m9l*.KPXMc@1orE;<^[8.T\8U])W6`<;K3?"5IV<13'[^bH<P'6JZXc`osVXHm:ON>\m,AVh)1(dIiAg7S[OJ=,<ee0MF[F!h>hG$-kqF1a%sN:?;9a*E31cS/:ARN0ep6HPNamr<io\LDL%9.k?j'WZh`6j0Z[g9J_G>901;eQMX\<X1ddmsf2TF"&nU?tD&K(>jP;6G9=ur2:j*9@H!TCR&!]hW&.#P)cmKYCi*9&jMR##7-)C$m@"!1U-n&dWcpR6mc%<;bRkR79UV%0V"#tG??U$,L1>YAg(0E!QNMr15Mj*=Mh^biPUFLkP(QD9K:7-?;[AB5*hYD#2D^ddMWf(H74[agEf^/k3&]?Vie4[`Jf$P$WYJ.-l6mIb9(JJHCKtOp$h+fehlUh$QBFubl~>endstream
|
||||
endobj
|
||||
xref
|
||||
0 30
|
||||
0000000000 65535 f
|
||||
0000000061 00000 n
|
||||
0000000132 00000 n
|
||||
0000000239 00000 n
|
||||
0000000351 00000 n
|
||||
0000000556 00000 n
|
||||
0000000661 00000 n
|
||||
0000000738 00000 n
|
||||
0000000821 00000 n
|
||||
0000001026 00000 n
|
||||
0000001231 00000 n
|
||||
0000001437 00000 n
|
||||
0000001643 00000 n
|
||||
0000001849 00000 n
|
||||
0000002055 00000 n
|
||||
0000002261 00000 n
|
||||
0000002467 00000 n
|
||||
0000002673 00000 n
|
||||
0000002743 00000 n
|
||||
0000003032 00000 n
|
||||
0000003154 00000 n
|
||||
0000004966 00000 n
|
||||
0000006789 00000 n
|
||||
0000008938 00000 n
|
||||
0000011050 00000 n
|
||||
0000012911 00000 n
|
||||
0000014813 00000 n
|
||||
0000016500 00000 n
|
||||
0000018334 00000 n
|
||||
0000020273 00000 n
|
||||
trailer
|
||||
<<
|
||||
/ID
|
||||
[<459a20e2e948bef44ee56942063a15ff><459a20e2e948bef44ee56942063a15ff>]
|
||||
% ReportLab generated PDF document -- digest (opensource)
|
||||
|
||||
/Info 18 0 R
|
||||
/Root 17 0 R
|
||||
/Size 30
|
||||
>>
|
||||
startxref
|
||||
22309
|
||||
%%EOF
|
||||
354
Les03-Cursor-Basics/Les03-Lesstof.md
Normal file
354
Les03-Cursor-Basics/Les03-Lesstof.md
Normal file
@@ -0,0 +1,354 @@
|
||||
# Les 3 — Lesstof
|
||||
## Cursor — AI-Powered Code Editor
|
||||
|
||||
**Vak:** AI Fundamentals
|
||||
**Vorige les:** Les 2 — OpenCode
|
||||
**Volgende les:** Les 4 — TypeScript Fundamentals
|
||||
|
||||
---
|
||||
|
||||
## Inhoud
|
||||
|
||||
1. [Wat is Cursor](#1-wat-is-cursor)
|
||||
2. [Setup + eerste keer opstarten](#2-setup--eerste-keer-opstarten)
|
||||
3. [De vier kern-features](#3-de-vier-kern-features)
|
||||
4. [Chat (Cmd+L)](#4-chat-cmdl)
|
||||
5. [Inline Edit (Cmd+K)](#5-inline-edit-cmdk)
|
||||
6. [Composer / Agent (Cmd+I)](#6-composer--agent-cmdi)
|
||||
7. [Tab — predictive completion](#7-tab--predictive-completion)
|
||||
8. [@-mentions — context erbij halen](#8--mentions--context-erbij-halen)
|
||||
9. [.cursorrules — project-context](#9-cursorrules--project-context)
|
||||
10. [Debug-flow met AI](#10-debug-flow-met-ai)
|
||||
11. [Wanneer Cursor vs Console](#11-wanneer-cursor-vs-console)
|
||||
|
||||
---
|
||||
|
||||
## 1. Wat is Cursor
|
||||
|
||||
**Cursor** is een AI-first code editor — een fork van VS Code met AI-features verweven in elk onderdeel. Geen plugin, geen sidebar — AI is overal: tab-completion, chat, inline edit, agent mode.
|
||||
|
||||
### Waarom Cursor?
|
||||
|
||||
- Vertrouwde VS Code interface (alle extensies werken)
|
||||
- AI features die écht in je workflow zitten
|
||||
- Multi-file edits met diff-preview
|
||||
- Background Agents (later in de leerlijn — Les 15)
|
||||
- Werkt met OpenAI, Anthropic, of eigen API keys
|
||||
|
||||
### Cost
|
||||
|
||||
- **Hobby (gratis)** — limited, Tab completion, basic chat
|
||||
- **Pro ($20/maand)** — alles, onbeperkt, Background Agents
|
||||
- **Business** — teams, SSO, audit
|
||||
|
||||
Voor deze leerlijn: Pro aanrader. Hobby werkt voor leren maar je raakt rate-limits.
|
||||
|
||||
---
|
||||
|
||||
## 2. Setup + eerste keer opstarten
|
||||
|
||||
### Installatie
|
||||
|
||||
Download van cursor.com — installeer net als VS Code.
|
||||
|
||||
### Eerste opstarten
|
||||
|
||||
1. Sign in met email of GitHub
|
||||
2. Cursor vraagt: "Import VS Code settings?" — Ja
|
||||
3. Kies thema, snelkoppelingen
|
||||
4. Opt-in op AI training of opt-out (privacy keuze)
|
||||
|
||||
### Model kiezen
|
||||
|
||||
Settings → Models. Defaults:
|
||||
- Cursor Auto (default — Cursor kiest beste model)
|
||||
- Claude Sonnet 4.6 (default voor code)
|
||||
- GPT-5 (alternatief)
|
||||
- o3 (reasoning — trager maar slimmer)
|
||||
|
||||
Vuistregel: Sonnet voor 90%, o3 voor complex.
|
||||
|
||||
### Een project openen
|
||||
|
||||
Twee opties:
|
||||
- File → Open Folder (zoals VS Code)
|
||||
- Terminal: `cursor .` in je project-folder
|
||||
|
||||
---
|
||||
|
||||
## 3. De vier kern-features
|
||||
|
||||
Cursor heeft veel features. Vier die je dagelijks gebruikt:
|
||||
|
||||
| Feature | Shortcut | Wanneer |
|
||||
|---------|----------|---------|
|
||||
| **Tab** | (auto) | Voltooi-suggesties tijdens typen |
|
||||
| **Inline Edit** | `Cmd+K` | Korte edit op selectie of cursor-positie |
|
||||
| **Chat** | `Cmd+L` | Vragen stellen, code uitleggen |
|
||||
| **Composer/Agent** | `Cmd+I` | Multi-file edits, refactors |
|
||||
|
||||
Deze leren = 80% van Cursor's waarde gebruiken.
|
||||
|
||||
---
|
||||
|
||||
## 4. Chat (Cmd+L)
|
||||
|
||||
**Wat:** sidebar-chat. Type vraag, krijg antwoord. Net als ChatGPT maar mét je code als context.
|
||||
|
||||
### Wanneer
|
||||
|
||||
- Code uitleggen ("wat doet deze functie?")
|
||||
- Algemene vragen tijdens coden ("hoe gebruik je useMemo?")
|
||||
- Debug-hulp ("waarom werkt dit niet?")
|
||||
|
||||
### Context erbij
|
||||
|
||||
- `@filename` — voeg specifieke file toe als context
|
||||
- `@Codebase` — hele repo (gebruikt embeddings)
|
||||
- `@Web` — search het web
|
||||
- `@Docs` — geïmporteerde documentatie
|
||||
- Sleep een file naar chat — toegevoegd als context
|
||||
|
||||
### Agent-mode binnen Chat
|
||||
|
||||
Switch knop bovenaan: Ask | Agent. Met Agent mode kan Chat ook files bewerken — vergelijkbaar met Composer.
|
||||
|
||||
---
|
||||
|
||||
## 5. Inline Edit (Cmd+K)
|
||||
|
||||
**Wat:** edit-popup op je cursor-positie. Beschrijf wat je wilt, AI past selectie of nieuwe code aan.
|
||||
|
||||
### Voorbeelden
|
||||
|
||||
Selecteer een functie + `Cmd+K`:
|
||||
> "Voeg error handling toe"
|
||||
|
||||
AI past selectie aan, diff zichtbaar, accept/reject.
|
||||
|
||||
Lege regel + `Cmd+K`:
|
||||
> "Genereer een TypeScript interface voor een User met name, email, role"
|
||||
|
||||
AI inserts code.
|
||||
|
||||
### Wanneer
|
||||
|
||||
- Snelle wijziging op één plek
|
||||
- Code generaten tussen bestaande regels
|
||||
- Selectie aanpassen
|
||||
|
||||
Voor multi-file edits → Composer.
|
||||
|
||||
---
|
||||
|
||||
## 6. Composer / Agent (Cmd+I)
|
||||
|
||||
**Wat:** de zwaarste AI-feature. Multi-file edits met preview van alle diffs.
|
||||
|
||||
### Voorbeeld
|
||||
|
||||
`Cmd+I` opent Composer panel:
|
||||
|
||||
> "Voeg een /about pagina toe met team-leden in een grid. Match styling van homepage. Gebruik Tailwind. Maak een aparte component voor team-member."
|
||||
|
||||
Composer:
|
||||
1. Leest `app/page.tsx` voor stijl
|
||||
2. Maakt `app/about/page.tsx`
|
||||
3. Maakt `components/TeamMember.tsx`
|
||||
4. Toont alle diffs
|
||||
|
||||
Jij accepteert per file of "Accept All".
|
||||
|
||||
### Wanneer
|
||||
|
||||
- Nieuwe features (multi-file)
|
||||
- Refactors
|
||||
- Bugfixes die meerdere files raken
|
||||
|
||||
### Terminal commands
|
||||
|
||||
Composer kan ook terminal-commands runnen — vraagt approval. "Run pnpm install" → Composer doet het.
|
||||
|
||||
---
|
||||
|
||||
## 7. Tab — predictive completion
|
||||
|
||||
Cursor's Tab-completion ziet **wat je gaat typen voordat je 't typt**. Vergelijkbaar met GitHub Copilot maar slimmer (gebruikt je hele file + recent edits).
|
||||
|
||||
### Hoe gebruiken
|
||||
|
||||
- Type — suggesties verschijnen grijs
|
||||
- `Tab` — accepteer
|
||||
- `Esc` — afwijzen
|
||||
|
||||
### Cursor Tab vs Copilot
|
||||
|
||||
Cursor Tab kan:
|
||||
- Multi-line suggesties (hele functie ineens)
|
||||
- Cursor verplaatsen naar volgende edit-locatie (handig bij refactors)
|
||||
- Suggesties op basis van wat je net hebt geschreven elders
|
||||
|
||||
Verschil voelbaar na een dag gebruik.
|
||||
|
||||
### Wanneer uitzetten
|
||||
|
||||
Soms ga je sneller zonder. Cmd+Shift+P → "Cursor Tab" → toggle.
|
||||
|
||||
---
|
||||
|
||||
## 8. @-mentions — context erbij halen
|
||||
|
||||
`@` in chat of Composer = context kiezen.
|
||||
|
||||
### Soorten
|
||||
|
||||
| Mention | Wat | Voorbeeld |
|
||||
|---------|-----|-----------|
|
||||
| `@File` | Specifieke file | `@app/page.tsx` |
|
||||
| `@Folder` | Hele folder | `@components/` |
|
||||
| `@Codebase` | Repo via embeddings | `@Codebase` |
|
||||
| `@Docs` | Geïmporteerde docs | `@Next.js` |
|
||||
| `@Web` | Web search | `@Web "Next.js 16 caching"` |
|
||||
| `@Git` | Recent commits | `@Git` |
|
||||
| `@Definitions` | Symbols | `@Definitions:UserController` |
|
||||
|
||||
### Goede prompts
|
||||
|
||||
Zonder mentions: AI gokt welke files relevant zijn (langzamer, soms fout).
|
||||
Met mentions: AI heeft exact wat 't nodig heeft.
|
||||
|
||||
```
|
||||
@app/api/auth/route.ts @lib/supabase.ts
|
||||
|
||||
Voeg een endpoint toe /api/user dat de logged-in user returnt.
|
||||
Gebruik supabase auth.getUser().
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 9. .cursorrules — project-context
|
||||
|
||||
**`.cursorrules`** = markdown-file in project-root die Cursor leest bij elke prompt. Net als AGENTS.md in Les 2.
|
||||
|
||||
### Voorbeeld
|
||||
|
||||
```markdown
|
||||
# Cursor Rules — QuickPoll
|
||||
|
||||
## Stack
|
||||
- Next.js 16 App Router
|
||||
- TypeScript strict mode
|
||||
- Tailwind v4
|
||||
- Supabase (DB + Auth)
|
||||
|
||||
## Conventies
|
||||
- Server Components default, "use client" alleen waar nodig
|
||||
- Tailwind classes inline, geen CSS-files
|
||||
- Geen comments tenzij gevraagd
|
||||
- Volg bestaande naming (camelCase functions, PascalCase components)
|
||||
- Throw geen errors uit RSCs — return { error } object
|
||||
|
||||
## Verboden
|
||||
- Gebruik geen Next.js Pages Router (alleen App Router)
|
||||
- Geen any-types in TypeScript
|
||||
- Geen inline styles
|
||||
```
|
||||
|
||||
### Effect
|
||||
|
||||
AI checkt deze rules bij elke prompt. "Maak een Server Component" wordt automatisch "use client"-vrij. "Voeg comment toe" wordt overgeslagen.
|
||||
|
||||
### Beperkingen
|
||||
|
||||
- Cursor's parsing is niet 100% strikt — soms vergeet AI rules
|
||||
- Hou 'm tussen 30-200 regels (te lang = vergeten)
|
||||
- Test of rules echt werken — soms moet je expliciet refereren
|
||||
|
||||
---
|
||||
|
||||
## 10. Debug-flow met AI
|
||||
|
||||
### Pattern 1 — Console error
|
||||
|
||||
Console error → kopieer → in chat plakken:
|
||||
|
||||
```
|
||||
TypeError: Cannot read property 'name' of undefined
|
||||
at UserCard (components/UserCard.tsx:12)
|
||||
```
|
||||
|
||||
AI: leest UserCard.tsx, vindt waar `name` undefined kan zijn, suggereert fix.
|
||||
|
||||
### Pattern 2 — Onverwachte output
|
||||
|
||||
```
|
||||
Mijn fetchData() returnt undefined ipv users. Hier is de code:
|
||||
|
||||
@lib/api.ts
|
||||
|
||||
Wat gaat er mis?
|
||||
```
|
||||
|
||||
AI: leest code, identificeert (vaak) async/await issue of missende return.
|
||||
|
||||
### Pattern 3 — Tests falen
|
||||
|
||||
Run test → copy output → chat:
|
||||
|
||||
```
|
||||
Test "should return user list" faalt:
|
||||
Expected: Array(3)
|
||||
Received: undefined
|
||||
|
||||
@__tests__/api.test.ts
|
||||
@lib/api.ts
|
||||
```
|
||||
|
||||
AI: traceert, fixt.
|
||||
|
||||
### Pattern 4 — Refactor
|
||||
|
||||
```
|
||||
Refactor @app/api/users/route.ts naar gebruik van Supabase
|
||||
in plaats van mock-data.
|
||||
|
||||
Gebruik @lib/supabase.ts voor de client.
|
||||
```
|
||||
|
||||
Composer doet multi-file edit.
|
||||
|
||||
---
|
||||
|
||||
## 11. Wanneer Cursor vs Console
|
||||
|
||||
Cursor is geweldig maar niet altijd het antwoord.
|
||||
|
||||
### Cursor wel
|
||||
|
||||
- Code schrijven, refactoren, debuggen
|
||||
- Nieuwe features
|
||||
- Boilerplate
|
||||
- Documentatie
|
||||
|
||||
### Cursor niet
|
||||
|
||||
- Git workflow (gebruik gewoon `git`)
|
||||
- File-management buiten project (Finder/Explorer)
|
||||
- Terminal-heavy taken (gewone shell)
|
||||
- Browser debuggen (DevTools)
|
||||
- Een quick lookup (ChatGPT/browser)
|
||||
|
||||
### Hybride
|
||||
|
||||
Veel pro devs: **Cursor voor IDE-werk, Claude.ai voor brainstormen, Terminal voor git**. Gebruik niet één tool voor alles.
|
||||
|
||||
---
|
||||
|
||||
## Bronnen
|
||||
|
||||
- **Cursor docs:** https://docs.cursor.com
|
||||
- **Cursor Tab features:** https://docs.cursor.com/tab
|
||||
- **Cursor Composer:** https://docs.cursor.com/composer
|
||||
- **.cursorrules examples:** https://github.com/PatrickJS/awesome-cursorrules
|
||||
- **Cursor changelog:** https://www.cursor.com/changelog
|
||||
- **Cursor forum (community):** https://forum.cursor.com
|
||||
219
Les03-Cursor-Basics/Les03-Lesstof.pdf
Normal file
219
Les03-Cursor-Basics/Les03-Lesstof.pdf
Normal file
@@ -0,0 +1,219 @@
|
||||
%PDF-1.4
|
||||
%<25><><EFBFBD><EFBFBD> ReportLab Generated PDF document (opensource)
|
||||
1 0 obj
|
||||
<<
|
||||
/F1 2 0 R /F2 3 0 R /F3 5 0 R /F4 6 0 R
|
||||
>>
|
||||
endobj
|
||||
2 0 obj
|
||||
<<
|
||||
/BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font
|
||||
>>
|
||||
endobj
|
||||
3 0 obj
|
||||
<<
|
||||
/BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding /Name /F2 /Subtype /Type1 /Type /Font
|
||||
>>
|
||||
endobj
|
||||
4 0 obj
|
||||
<<
|
||||
/Contents 17 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 16 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
5 0 obj
|
||||
<<
|
||||
/BaseFont /Symbol /Name /F3 /Subtype /Type1 /Type /Font
|
||||
>>
|
||||
endobj
|
||||
6 0 obj
|
||||
<<
|
||||
/BaseFont /Courier /Encoding /WinAnsiEncoding /Name /F4 /Subtype /Type1 /Type /Font
|
||||
>>
|
||||
endobj
|
||||
7 0 obj
|
||||
<<
|
||||
/Contents 18 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 16 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
8 0 obj
|
||||
<<
|
||||
/Contents 19 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 16 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
9 0 obj
|
||||
<<
|
||||
/Contents 20 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 16 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
10 0 obj
|
||||
<<
|
||||
/Contents 21 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 16 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
11 0 obj
|
||||
<<
|
||||
/Contents 22 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 16 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
12 0 obj
|
||||
<<
|
||||
/Contents 23 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 16 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
13 0 obj
|
||||
<<
|
||||
/Contents 24 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 16 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
14 0 obj
|
||||
<<
|
||||
/PageMode /UseNone /Pages 16 0 R /Type /Catalog
|
||||
>>
|
||||
endobj
|
||||
15 0 obj
|
||||
<<
|
||||
/Author (NOVI Hogeschool Utrecht) /CreationDate (D:20260607080655+00'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260607080655+00'00') /Producer (ReportLab PDF Library - \(opensource\))
|
||||
/Subject (\(unspecified\)) /Title (Lesstof) /Trapped /False
|
||||
>>
|
||||
endobj
|
||||
16 0 obj
|
||||
<<
|
||||
/Count 8 /Kids [ 4 0 R 7 0 R 8 0 R 9 0 R 10 0 R 11 0 R 12 0 R 13 0 R ] /Type /Pages
|
||||
>>
|
||||
endobj
|
||||
17 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1919
|
||||
>>
|
||||
stream
|
||||
GauHL?$E&%&:N_CbW1*nDBfo'OMnl?g[%FO]'\oDDYBdg"2V91N55nShY,QFKJ6dqFpRClcERo.0JdopB/C5)#=#TlNog=+NSqc[$C&A?!n=P>(qk\`,O:8!1X:[:KC):O%2d`KX8a<7=t07%joGi<84V<1Gi2/.9,U9.pmr$r5d"McgnJ0amKi'./ZI&Bhg=7g3FcaVZ[L,Oh=k^bUinDqH0lW`C&UsI9$eJUUXf$RL\elCd2^G\qf$ri5A*np7!De"^`R-jU:V%U(_cE(&mhW(9!X/nT>B_47aJJnN`(p2KYYR8deBaib%tOOHjlom)?T:Spk077B],t8Mn@ISJa[(/O+u9GptjfsKPt>b5_9MtboEm!3jIhqAaM:/aD)bEF`#1nWID;sj0gIO!0&m/"!c>5CITMK1S%XUZ"Cpg[5k@oaE#Xe"M\aJqF?Sjj/b<M(Y,B\1)I2O,_fN#6t.uJLRkuSdM9'GSI+&5N\=W'/?#B`A'KhLhE3XIRh;RKk-W.B)7rr3gHMHs[_P"pq)#n2fHc^\(uE#PM`/(?%3u^iF/)*.b\&D1k(5i7*Cg5Ol@Nf->I/RDpf0JM<BY;^C(9N[;/ID??7b[lb;VFM5%\SqX"dji@g-ejELGpL-3rfN\s-TCF9S,/p:8WXI'K2VH4pPUb,IL8:&WeYmslq5.gX/mDc[AnQ%kra=Y$J/i7W64Hb&6[f;em3Up9[E9t,7Tfm12'a5L:"AXF/:boe1"6-efh=;HtphcKcjrstC>4m.S(5"hb&7H,Sm%t[(IF:rhQY+r`Jl70s:7Cd'sduM\-XM0bmPf,E8+_rUd\W+E(*r,Uo**cPO04BlF9OMl]CCOMh:l(BFU[ZG/#S!ppQCW8BW8,DO%!FT9[D564/jg[U4,_I6=,2j)n9nE;ZqBrgpNMsD=2WkroLk'"-C!0b2q3J\i!J6G*:7FJilN-?<c&'tN4DXNZK:kS;b`ZhT'Y+r?)DT4ESRJfq/H%(qk0"A;g0o9;btQ)5<joL`!)NCs4>NKGEf2HP/IN\WhGnp#E<5++\r0$o`3W!oe_2#Wa%17HVc1F8d.$KKksVN@:#s5"(n@U,(pd>U*W>TE?%2-$%B>oIQe>CCB^aU1!`gjP)0OhAZcB"gEg>uoG#uI3Y'e($"0qI?uI1GM`[a,c.U'`r;HM^B,[a>+rhiTI%20Ha%h63mt6W07!G%GEG@P=)WWOUUefubMC>"C=D,[ZSu+F95$3TkVMf9)a9q"r$[@@EcN`m8!R+,7cP$rVBam*e$MlU@9(]n]Zs&I+>I0#9Yh>&310uEV0G@I+=]MU-.Do@Vg3M,l*sI._=s\NG+'P[n,e?i<*/058Pbk5Q>(Xn8j*S9D'2u+]C#fQ!AOn+7.[d&/3)'D]H:21TrNa\fRkM%ig2J4I=&HNEWacU%Ng+.nQGh/VS>OA)Vb^ALGgEs,:<=d'ehC/Op9dn1io#R!)+Omq,Wq[cVnq&aq\n7:V5\?&lD+%[gG%]1QDb.nDT&RNHE##dd-Iaq++Se/@)L>a-@C9HV.Pb>#^gD\9l8Nt-m.pQ.@2(@>:-`>7ufkU/)?s+g/fcSf+sPeHTE]'G\Bt)V1m#>4ZgdV)6C[hY-6'OL7qf"#f0-pCHN6-&>u1a).\!aai@""%3s0TBgmqj3K;L/R-KGN7ZrMN]npnY6UbGS&p2rIC\9^OVW8`@Y$H<s%b3`IF7eTKle9^.<YcL3RYBJo4\Tq#ihELimW06-ft:Y!+!*W[ai^t44S_\#?E\`L<o-Xr%Q`k&qSmC1<R/"pb<0"3OV/UJ`)p(38Jimm6,Fn`jnajIK-EdNXAqH2AC"tnAH$r"_lnP.hN)0"l2"@dW?_*)'s',iWbVH->U&TG;#a%]K7Ns49Ze3q6=NiqW3Ujl:F<ZJ_UHm.5\1,b?c\/TM#~>endstream
|
||||
endobj
|
||||
18 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1629
|
||||
>>
|
||||
stream
|
||||
Gb!;dgJSt\&:N^l\m.fAG/U[BHPJ1_Y`0fG!\Pq_KpRqO&qa4@l^:l]rqc9Tl3?fg8QPWg.X7?:Sj(u.:Nq_J:VX"-gReJ9FQ)_R!TVNI!Xl[Q]'nTpGOOR`a((]o&U6V,#AjrW4",ToN:mrRYnslpRmH<e?CHNYVT_]^Fpabr9+mP@5o@>iA)JZ<T;3WT.?!1B??nd)@a=6'd#6nnrUg&fIqe.RgP_udOdl$!N6r;T$>OH9#X+eK8HdiUm/MKRFUi&1KXQB*FU%k*KDc_of:44-Hk()a%PsZNGmW;2ke8N"=>Cf7.7&cRa%"s][8%6J,F;jbPlSO/hucDe`N=dpS47ruOf)^(3j'&o3Uj'hn9G4Mmo*']qNY]6ZK/8$@Hlh2.A,:pZFYP1P2qa`b>&8cM\o+?dTo\!)N;#C`_T!P4>OKE"#q?qEYbhP1Z?]2<%pSY&5=Ki<?3e$+0au*AYV>?q&;ZW$LtlE`XX?Zi$([6I,9Hbj_g%&A\SC:%?qP335.M10g=5)00VMg-K\6m:m!<6`+([]VuN7VLR!p7jl:,n>pK>/04Q&Aa3,V(G"J.Y[;)p(ZS9"U8(^&T^"rj2EFa`dG07;uXSnTKR@Hg'K,/Pt&,LU8BBZ-l/a*Kkqp<(ic!gN6jgee:/rc_Nr5/EMM%FFK'F0b3BSjF&LNuJ[(9H$Y%oonS7cC/I;NZ!L*kXip+n2&J712L<OK0gKY$!tpY1_'Qj@X2T')?5bP"/@2M\9U>!0%4@M=2t2\LX;td#b\4.Lk/W(a8*n#`]-)Ofd4P^q%K_48+7[N_5?ss$5qs+':b*nN<^LbN:ZKmQh(`Oi)*&#d$IW7-Y1A[n[cqC(5@h^?j*GM;l(?CGT^#'%aX\4h>mEbeDL!.aqi,G="U10NK-Re>9%3XPG9,Tr<g(bed?b?L%WpOhNLYG8?7KF\9B<NQ$:q:7#kUTOGdT/gQ$+#:T5B6e^OsNAB(I,?7JiAR!33OBL8Yhar#moUZZ/E$qmb)R.*G@(i_Q#BusX,Bj8Dc6p.\DT4W>kaYTsqtl;?RX^.V<.63&K/LI8mD/]MBtACFPeIo8L"TSk3G*s5)/@VOZO9ak)Q:(HFcj9<iharDQ,OUa'`ff+WTcYa[*J%$7c'"$")2Q@#sU4M2g2AInTQ<,IhA;.(e\UVCWLf5q:hrcB?FDF[e&G!+MjiJ8Y_oL5ing7B_<=%,'3JAbE>AkfM;"3ptJM3Mn?DpLZ?7:6fOaK9!&6F,Kcp,d)3.b9Zl9V]=NEO[9uqS),5>]*NdK@)g_#en7oi*'?]M4diX&eIs9R/L^9BhBFe2+]JKJr=)K#i)M>ol9)\%Sh1uZ&:t7+5C&FNpfgP^.,dpdIX$U!&E.lolN(Oh1gA\:_6j5@nQ0[L\CCG?UV`Pm`']_a@@c(%@5dcUjF$JJE(>X<gB1O6"3c`C&/LSW3T^5EbL7@q5nk15feJTrd7.O-"Bcm,dMRIfpSmcrPFEc,+U_6WN;rlnRmB/Aln5e+[)K]YpS^R7?=9W:7P%ISG91.RKg+j_n+8FR?2CPI/\<E/b0o>85&;;VC2LeH,nA8h!]\')mh]ND#F-&kofu5";Q-Kd`Q8'A@3+h`)Cghu[;ol4j>+Dhk5E;aoF8~>endstream
|
||||
endobj
|
||||
19 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1971
|
||||
>>
|
||||
stream
|
||||
Gb!;dgN)%,&:N/3m!'jU2mEqr]P"+j3mOR>S2@3FkJ])"[A#'HKZ]5'B);%'J<WIEU1HEX['aGlZkgI1KAD/cE\Q^rok-)dGWCH?D`D\:__H+g=YMsnf>GEH""##H=uJ(`1JD-Uo1el[Gs'0`G*q:tT7^ddb]>A?4O-(8pH[(bfB"XG#ihfb%a9&(f<^!QgibgC`d!\-6I=-rZQ7*D*oGoI'Ki!J%6B)D^M,I/i/L\$=\XelgidNOcJe91YErnkZ])/F-;p`1H^SA#.H*l)(J`96'jbB"(RT[__^Q"dWWcRi>)l**3,WrgF"E2HNpB8##'#e0@(%EW6k%q&jd68DCr7IZpCU*ZKX"tY=BK?*eZ5tFSR!Sd=%&O^I;K2!@dgsqpOIOCFmH\d-Y]=b*GM8$aVN86I:m87hdB8]3UY`7mLYr+pXdt4':G1a<UMb(L!,-DOB1M9K.OpcAfKHG"d+GpO3lp5NaWLe!S8/p*<oLmYJ/nHXg,U)BdmV6>Z<FHCRJQ2AMP977b>BjR-gKa!Sc/Bca#CL&71E\*\Q%-RK9>XdBe%DTJ`V8LgpR`WBi/0^_A$1#F#6dPnu2??H==as7AUQ\CN0*Jpl9PQA"XQ&%9LM1(Rj<TI;Nh0fstXNY&4d9Ta#T--`W[O`NjLq=>7Th$;23,<OY4XL<L`V.F[0:=>TAieVVa*(6XIMq3,!'Yi#`FMPEL$'Q&hOC4M\3^(msq!II!fs"_Xr-X]@FI0iJWQh?$i](DD35VOa3EM*EgOSpCAY::Tl??<28J%+NqOje9=!&*2YODodME-h!""F$Z\.18Rea`-7!QuV,Bd7'qo.$/:`]E\#'92B`N7;5,_R46!D/cP-G0i<.H4h<JNeeUe`B],%>h-+18^]eMVUJ`J-:9XD)jtL3WJ%0sTpOF$GR-_n_D'&l,=97T86HGSGn@na0[#Yo$pdoHV9DF<5%"[_>%l,u57V*soYUOK[!;sVXFji-+3CV&5Kg[CD03k[20ms.Skp!Pfs.FHI$^j^g3j0/<dW52l.nB@2WH7>^&)[C#%p#.YINolJi#Ko3FtQnXaB0IBh*CrYRZs5?R&-(2c?V1XtliB59ASmCK*S;hp0Wo>5*(0,`Qf(R>t;/l0=L26)aaRaE?LCi2d95O)qkXnSdXc"8+:Jio<Uq0'^+ZE]Jn$jtk^u3Z,1+bFL9Zb-NCQ8'A]s3q!+@0U_@T6W7(tb<pK'q>+dZZs'M;BrtZ5qia']ZXAePjAqW5f+MRA()S@X"D<sbl@:Ku7m:ht;qq+k"K^1c0*+\%_P$*9?p`roPp-T-@GGBB`Q^N`d4!,rimoCR2e;]thLEOa\)RVrGr-]E91mt.5Gl9kp%"B,MVW0i87d?FKe:jAW+rQ!N%39A1?_d&s#U7q8.cYgFN3O7bu=u`ko*=-9dq'W9((*/RG=j__KR%qNHI=&4BD\PQr%L]_,fmNLI(mh.WBau;60'CB:4tuhm88fZqt(m"pW`g3%8J/2eYSfhG`e,5='pk"Z8&sEi)D[+@L@JWH2=&-0?qZa`J<`H5"moXBVSa<1:Z^(jF7(\mB>kD=FrU^!35##rguE]=X=%g_VOVO&=c7[Z=VP7C>s/ZRXEch(jVLlDYItqI<?u+rMqqZoh6IV%u?oFrG3I0<4-6ck#Qm:3!2Ll;n/]-$:@S@QNdre9q^/et%WX]84,H5*Ks9M-efXn-g4U=(9g.HI64"`W"#8)spp[&n7A-"WN-k9T2T"dU]$m;:6lXZsBTtZjgcW/_=WqD5s*!o1lXb'[DGHF$o#cXZN$KH##2B^"9TkPE*Z2-#I8DX#*0P2,cmZS%^d!KDO'D3$Xg+kGOCNSmXIfi=#5dh_QfU,Je6;Ve_i(c#YtQrNM?#lK<>7XpA_pq8:_[i)1;!R--5[8W\o[B4E7I#BuMNYDtF1@9q*#P#57#;'eFJ_j;X;PY1J++G_4HPg=E@P0nI$_;HEY\8bX~>endstream
|
||||
endobj
|
||||
20 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1727
|
||||
>>
|
||||
stream
|
||||
Gb!;d>B?8n'RnB330TcUUmDW(69sGVm^AV@[_$Bjnrae,+$1b'(1a?1YMURU0m;mlp:?f/@N,]NF2*+C%bUFBR*R_oGSS'J)[@>ed0(G,EJWJfn'TOt7huc^k8m`C@(RQa.s1G+<7@T^4CO).Kan6oDZr<0*]R13KE3bfkPL8M'uK%bOTUn&Cd6ic"car3n_h&q$-%cY[lbhNp%,;5JJKoG6n9:7ft<+Xm;Q7*3iXgACrc-1Lb^scnFu#Jr)$.mNc0e!KeKICpdW(W@m6Di^i)3QZm`2*$ILFncSU7q;(_oJ627KKhdKfk@aYh`7o#7Q!q-`r8/>H,&?HViGD-cV2CH\siuS^M\>JO.lPk?+>%*>sYA1't:6CJj`>"nriH4dJ[i8+LBB/0)[5So":L:3Fe!I!hPR)P1U*h0276nslW`d:Ji\W*l]BE2ug_Ys2D+JA,mdOJpkkj3ObG>I6E^>hOp/W6fPV7m?X.rGI@ld8L[&%HGZq"q,.Ai"nO6q*Xo4].(A%7)jB942u_0l/G(Ful1JFp697c>34[>Ac7Q*ufb+lb"'RNStsfpZ#Ig/mH2Rk"lYOossOZ";7*)a)rO@XNWFr"a@T&1^#i+o57!kI=,V"\Gl$R`H=S?51Z50/[Ui:dH]iHi]VV,^f\nOlGm5O+1F+Hl%^Xn&OFJdSeXA3D#oZLl3uk>6A`aNX'uU:/ag:Y?SLm_j@k<LAR7[F'M;g/^`qhIAVY1fS!Z+GR`FPBAZ>5Npgm$dWI+eE<<&YCF9pGc7u0:^/&X]-^:u:-q_!m4\*8.-r[e5b*isnrd">lH0qEbCPjX0lD0N!@U@=ERP#hdQ'D*SXb?@W3rVM^p[]N)<0e.";Q,g`^#@Z1q=ag@H`7BE2G7%j3_:`SE1B`K\)"r-1B@$b>$l!9_!<0p$Ru2[ZJY6TbN6UiibmVg=LV_KcU?qPK+D'/R'8X!i!dm[L8`^n%XE'mFF^I$h%O@HP@g;QoT`B/f@quU[!ocVZDnWPhDh(!<3lo`Ge`YJ?.6t(k6^"_>im/OL6%P?U`NoRm]W#IIoTSk+X=pI4FjQS#+:Bf17*"'"+(Uq,F<O:/1$Rm!Ed>N78K'gM.O3Sa"fb^`A/K=;Q&t%bKsgOAa$2.3+?Yq57G_K3BA]YM][I\FLZ,g1RA8?%9,?OULH\Yh#LtcTS[ZB1-83M9H2&AHJc)%`fq$4`A^VoDlIVf3Wj8W%-]Glb?GrdZ_VAO-P:p$q]n+ujIIG<93G,L`B%sY*C9rb).jau,H=^)i$6ha<[uOXc)Z]W!E%#GJM6icJ5LuHL^*$YY:SIHkFDdSSHfpFedj)B=dE^?UT4=i+S1T1C6dSOO#2$/&B3<&`VFt?l[[cl\B0J*os]I<KBVM/d#f>Ha"I&MZ\[&tI?Sf7X*P=Oq#F.F]i$j?$E>Ap:-?1@0OO0R62jPq6,kXFMC'>nT[X2U:adZ0HuAAiH(#cb^]fZ%#K$^t-SHhQp8_rC^uY/3_:_!EdK[_AKIrNmq@S8R92&W`E$Adl<58'5okHCU,[\YLj$_o:XN%3D&%STm9&AqjB0!gm=Rnj^AV>Y5%8\gK@CP!9adrqk+^8>VLS4)A8JT2b6(pc"dtIp$bp]:Wk#]cP-0:@`?!14I>c&8VJ"#Iqk%1E>lqp^`O7s_/@9fJj^tT<u!L:iJ>V"`Kqpaj,k4t#<\Tqr^/VrJdYlr<Zj+KnnGloBl<(X>91iW(/<6n^;~>endstream
|
||||
endobj
|
||||
21 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1831
|
||||
>>
|
||||
stream
|
||||
Gb!SlD/[lo&H:Nn1$TPV>dsF\?E]Jdl<St,'6$3'O\Y`33#cL/gDfKR$iT`WlaJ3T>c.b!dksjofX!B[bg+D<[_]hI?%,6l^n2i2IVj^3@5J)@,qb/5_Q2)#f)n>Woj&)a__!7/5Q]"(5oq+Yi%`(M)VDhWT5`ZkQeR2bJ-3c5^2Nn1$^a(=Y^uSno!o-]gE,DAc?b7"9$t"=4N<!?oeepNi!"eakR_A!O31;9Y+9=83\I[RchCh3_VkCM(N85:`M/1N8gWt0k9?@1(fT_;+)g)6\.XX%MYno^(,1&H%'1n#)+PL1^T$k--jm(gQ')Yd/@,o#2$G'VJrKt(CKNcsKR9#COiQ3l2XntN>.Y2m\KR:/R*b[oO(!"=apXJ!.:<ibNZs`@';;8Fi'n%_V<R$lZsG`%%Q,d?`$'Tqmn8eZPu@Fb])&58VX$+!YlTC`OiJZ.Mp"[/k)c=o1TA]%'0&ubR4&Ln?>mIr'T#L^Oi)DTMb1XGQ_j8`89!`;IQYY6N'sO/9VjA]:WZ(RG".8kmTP:"?)??MpZAV_i0r;`cF[X+EtcO/\O-<H?m=nnh<#,eekKB1mE3dmLeO5djjC0mi:%Y%GJSBoX`TkU4rE%gh[.`9M.bSu?F/0/`_PXhVXb=25aA@g.`Og%;A='rEi]PWa=oX6>V:n/o2sPoYOf$(F]W!M*q$3%^oH$^kfW!@MSrDNNV^BLh_0*?;;Su9U(6X(f5bl;,JcTfesOF*>)cNFa`Jf<.[i!;?fiEeJFKdR?F+npAhX!2gS=[r>M8IGM3^Ygbf"gANsAZ$?=a`J#.uHACr$(U!e9">A(t0637\FQ>F?@-="9%q2AP>@3D*6b)P8_e@5aB*9]Q9<cn(-_b'RUebF?9L,;?dd@C:b[=@hf<@0ZD/cZ!4:`C*'bF`O98)2Mg\D1;NIi7Z]A/+]L(-jadJ84j5?X9_`8VIA8=i]Th_bNVf<:g_'JP<Xhfe2K_[H\fJ>Gt&ktJtYdEA6ie/MG,9%R_DXdS2l/LFS^AEQS\U<6UTIqXk]TkgZnA&*B:_!HA<#<X]6>g@\;"o(3*UA);fWGi#/4#fY:Bf]/M$uV\LaXi8c:TJqttdW2<^n1+g3`A'@[#cGO1b%7A<SQl\4h:[X0AR6`[MMF)K9MC_sH\;.i.a=a=)BtHk`*OZQZ+3NRdEqfHO[iKTLA,C+=B%Gq;p=shES'i;0bc?k7I$Y6JbZPG3f_TJd\Sf/o*!6`'*3`bgr_BYCoX[-?gsA^_pSjr%FIQ%,D(YqF0+24XY0-Rrk=r::N!;Qur?]t*,ou7al62TcncI9N,-^14a`#Y!i#[-7;lVj'NMj6LE4,%O.3^d9ij(W:o`8n\KZiKI15lCa`OFZ=&.T.a36DZ75!ZOJGtEDO=`FhHd;R=Y$;Wt!3:=^o<QG*&;`,:LG^I>,bC:-t"]l>7?oenKWQa@r&(Q,p(a+_bj^+sc6YD=S(-N=@a7I^1gmj+\0MOWq[W!-8n$2VL7>E]%c`b:$Le/,C=qV"4&7HX)HN:-]L;Oo5C4dp&VNJiQ?&5"3e';JoosBNia\UHn$;?1RlFsLpC1g?jf1Ri^R4Lj5%utD@n9[2n8Y>snb$TP93H^3H.T_@IXK=Eki\,[4E!UGY*LmAakH7`IRc?@Ni7$?[n_guqpuuXj1HuNiFq[?7=bQT7m:6X66X,*`SV(QI@+m5S/6La,\=ti$E)Jhl]V!;Gcee)oVLM4p"q<kD@@e4Rl;GO-8EtA"i"/E^;K*((Efo=S,71^O-;6l-)\e#6cI>IIT+ZC(gjDK<>_j9gS8WX)Bcj8k*reVqVTcTI'\MOcE:>NN66#I~>endstream
|
||||
endobj
|
||||
22 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1936
|
||||
>>
|
||||
stream
|
||||
Gau`T>BA7Q'RnB33)aFE^_0Y1jkBknP]E='=eMHaI;p7GF^nWY=_WGXrU5(Yhi_</Z7p+D8K(_mp[aqOAO,e)gj<3+4J0LL.gCsMF9,&H!Rl8^E]X&47!QL7i</TolGX`6m+EK-fr+s:+@44]"q_;9'FGB`,>f.F_!tYHZ4OBr`T%O4&dC1O"H\H85nr*6mu`-A<%WnJ"S)0VXaQ<h0.&u#*Lb[ZU+kB=>,Q\GSfj9nTb#Tb`p`piI1'sm-L:;/W<,7&/^nbCB:O`roG1cS93J3Ye;n!`!Ro(i_1kbu7-HrKD@:k?le8:+,NM4Tj])AuL4G=%_+m>4>I/oX@$"KLOWP0)=WCgoqTgM42EW4C-fI7la&%da(cJ)Tf8>]HW'**kp$iOu'f=]NM7Pk7B\4&_O9N@;U:Rb"`&r.PCkRSFh:,ZUYFqiQ9/4;uU1iRA*JDg+=$!(.0a3$jD/IT0h@+n2U[sVK,Pu6(IJ?E"m-9k!W3(l8KNZQY#9\C,G[][]odj7J%[0nAR&nR.TiPqRM5fH:Oj=O'odZ@U[9^;U!]kn(7m`8X-h6V1*5cJ`f]bP!1'8sUOO\`To#cJ[&tC96>&'EP#3HO*Q"=u"aX_>2>+2k%%,#JmpM'<5Q8?5"QdGO0ek_H#o,6Y\NR&Z.]sS^\`'t,-oCh>gm@NdbL(-L)_:H-6=4lB4J[n.7ED1nYCL&Hmf7g;q*a39#+]C0g<Ft5-ZXrR,#5PM@%,0.P>_\VEAo!)tX.8\Q=(a5DeF-?s&9Rfhn.a#50B_W#ROn"r!iDg#:+M#)b9\.?o2%t\)jo_'+H*)'gWGd)n6R#(MAhL]^O/7/+ls\TF<4TK5a8m9K0r*^iiJ"+p!;q9(Oa5UlO_Yi=GBGoUb([*[<g?3oc*l0(r\p/G`:pFc*`B&N"-]DIG/N&/a-7e7eL,7N9XL.+H-fAIPF<3N^>^BB$,b/W]gl/nSt+tb7CU$G%1Qe&Wca7OGQjZBIk'5&)bAOl#O7<(1E"QkO-ColhZM_(H&DsN`I\*A9%7%Z.VbU"6.@`BI-?eY2i0So9Fm\kWC_!Wk$n0+qUn:3tY%j>ijKU0#aE'50'1ISa)CK)pcMWT#:#9KFiG&BTEEbRu+g7Y`)'t%YHsLa/Z_8Q-&-ZJ\kM[BLk5*:8GTloKPeR;&,\+EAT50F^^lW!R:j>M]>e/&6T?%;Qc0N6`&pj[RU^K[%"h^_Nu$0?"9Ge<KUAR$"R*#n]?Ui]fh\%*nL=Pe^sM.WliamD.N;K&M]K93_?XQDFrL6ShCYs)G-j,aC'aqRNrUX`[WG/.`74A8L]R-S%ZeP8klIgq?c_q3_c'nZk(m)PThmq,)UU]NcV>*)W.CB9%U;m%=C2sDB#gJ`UJ*C'`J+jZ]ee+%R25i-apX'2@0^kc)K2Km"Oa(,fE-c)>qd2Y!%o.@U>Pl`7VKj13Dls&8b:32S2QRF^hS#D7sb-nbjn//#T@)D#UWm7<[uNiYL%u@J$<NnE",aS[UZb+;`n3c@Ik.7PY2%d*Rb,hC$`mR4^(nq^/![3&gWK_&l7SFM.*hcQBrfdW8poRjo)8j.0b^q'VLi^Z`eWpqRKc[du&Zm*7,GMFC?L,ujWs)P$Uf/^VfihPHOj[TfT@Xgl-F0n3+VFcX-@g4u!gQdY;L"Q"?#dD=DYFIfZj][KE4+['3FgX((50o0%LTpb$RCKMmo[P4$!:ut4W)5Y*Yn[E=QTsZ@cE#HQk=@**C^!//T1%a'X5NqqrkMN3q4=n=MEQ1u!.OW;$&54m:[.nHRnBR5*7%Q;Cj2BTeU`9=46?iHn[o7V_:lDd>h7jc/YR/\J+hskjjBbB=?WKUeg,dT$+Z6uOp;t@e)O6/@3;C8ST#MW52uMl.%Cn"%OL''f=VNh@937Y\_'JTA"l@Q*P7NMdJQ:Y=(J&(;[DFG^)ogJ\J^M6Ck_-n~>endstream
|
||||
endobj
|
||||
23 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1809
|
||||
>>
|
||||
stream
|
||||
Gb!#\?$"^Z'Rf.Gh!%IG-P_pu96OXMh6c!]VVA;NgD=HWMClW[f[L\4fjDKq[ZO:Q"Hr._)_tfSFMDqCnWbPJpnIG.]EJ"X%&;Dg."h%(-mp"Sn)2`@n81FX@$1a[r6Y$["sid,+-a)t%Y5`H@M+=@P9cA4GXtCC7NjHj-RG$SC7%1*:`rY\1?:\e)Mh5fYhgaZ0m(Z3+@L<oI2cO,_i'=aUVedTIl)m9BUb6ml>tt45R&oK_XRMZ^Ycnt@]$2N?5+9)0r9on"t#:#GjuPUlAa)HPqJ]Ep`.:LXb33B/j`5taBbS0FB+`<g)0XaAneD5p'c>c$>qF$eqPK!6,LFt=S]PDd/<>Zi;pD/l<WqK?*RNC:Pue71(CfGM\9c+UY#M5S-]Qkqob8TYUEPOf(W:6jq,k(JQ8Q_$_8C.,^F6q,4t.NRjOgMN<GukI5YcE-l=(C#RbT6K&qMUfc\@qAHRsYE+(]d?m^]M4kUn`[r^P[)rj,=]HElTWU6&qPR<7:\&Mu@WJb.G'&*toZU'EV_qr^GB?][h`<3:O-GqJhf'RdM9m7Hck(B*Tp=0.PoU8-Hmt=3J(AL%_6mQ6+$"0-eV+_?An`<BXZ2cn>':%a75oQ^*<i*dE\V/#6>3a.Y^g6,[Su0%nY"/HAqY&AV#=',RWH<E[aoj'/\6,nk>j%t&D+BG^^)p93H*WJ<U:k<?n0@iMoQ=j6OTgImhB#%]Fk&ojr>rd%bnC0q8i`:1G59MII0JQHXp2+,3W,)4k=8@NB/<g;;[c@Kn)OJUUFpYV&DF)De^#0ocK[f;MsCfnIT4>N1'cCob(kA>b6s#5V4h"\e_9@#-fBdr)ZBg!PEAjg0BeVGIel59*;Mq9S`Cu6,F3`FM^+i5nN(/dkNd]@(J#0Xhkr=rr^6b&<1A.3;Ah>0:7`U*bdu"m%r(9C")C;A7GpmtHCS#tBS_R7+5b@3*Y@;Rd!E9KP4'(K1KMg?50qZ`O]nSPNn[;&-0-a/pkhZt;tu(b/CWmnI<5u:F/ZbCSZeg#/^k<-$#33r:#h\=PMo!1"kHjWQ[(\k(Fh:EeS;4gb[GIU`o=HhE<)VV`;?8-'L)C'T?!<d"]L]Nr.$aP^OO?hYB)D+@X#QBa2R>L'q9P$`^\p;#/QXjTFgYn?_\f;![\#sf;Qc2.$VS_<"u^'>Qer_C6\VT1s1f&SM@>>otVIl,/SUBZDKplTQjG\Mfk>mS>bNTZEuBJ&=Y.*H\?'&o3QiPl.G4\(g`H'\ss3-SU:D(3]?o;A"@N(l3#e'^:kVbB>`o1Vj7Y>l"QoHGeI/iqbhXOMI)A0^j!<&Qcb^oeY74tHOk1J=Q/)>n+!<3'lV%UZ_"2L']o<:(q./MoR;@W6V&E##^Due_JZ6PO/S%X'VB!#Mnk<S3kI&*c>LSdN-Utt#H%)FJ!rNPkA%E1+<B"7`Mc0*f*GL"D(e$#BB;0[^]p:`^XaoXVCI!Rc%^HC`3Z(&CY$;,L_nAMlu0tkmOA-K_lO/G[;jnG2?d]+S"qUS)aE#r6=r7*_XS\FCcp0K4\Q3"@(FQVqJ;VS@s=(W6:f=tH&dI$YFRqTE"d,;aKcJ\E/^okKWle*8dTmaA"Gj8T<-3CbI"7AI8I.4<Z:Iu;!qA_`ZMXm1OYt',b;d"Jh9d'DKlgdcP)]#bM6@\rZqg!%Y;ufk<Ff+)]hIlUYkJW<)X"9na"^iD^jqVB(!LfG'sY?]A"r]U$hPO<6?/4oW`,'1o*9AGJl9MVi'YKHG7dO]Id@,Yh+^qZ\RA+HVr#V!>E+IId^4K^<h,i;V9.Ul3B8?l5'm."oGsZ6N~>endstream
|
||||
endobj
|
||||
24 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1122
|
||||
>>
|
||||
stream
|
||||
Gb!;c>B?8n'Roe[30-h4&Vu>VH/%K4lu]i'/DDPe#V9J#5ctZlq=cCW%Sd("4?FUfit.9JF8=+*oGn*fWIJmYN&#oZ!>ma4YQ_iMY_*o$^;+kFq`."ZYrp&1A5gtN/O7$U^HffF**e)ODtt6Kkoo=Pi)#@\odO"scL\7FP/HS&$j6'VktqZs`@dkFKtWJ%Aa.POEXD9.gNWJ@3^"RI/j#V9qps'b%buWhH*nZ'@b5ZEaC,#?YO?])=i@t/ej?2%O-2V/.p,o>#CkOF'n>/@fQ)6A_%-f8e,]bK*C;UdipAi+_M^a;<U8_;`C\@*%NKlF'mu.0V[H1(e'XH4b@\*9,%rqi)\/qi"22B#WnEh7E&,Me"K0Pm\?U@P%BK((p:S'QLIp2:\JS7-L^!0m`&Z[ur^e@aQeR`R4rQcj3?jK9?sJPeb]p:X8m^NPp+-ua3b!5=%u<Za7J$HG3'*tZJ2S9MQEh&7nq=&@OLpNnIIj\'nsn_pdDpRtY]]Q%l@:FQh^/[[+ZHH$<3Vb14HsE_JXBM*jNrQ;DOf!m*[dubWcp@.S5"+"99*)(Vc`EQ`>a6"c81cmR+Enr@@8O8_cDX:4OX)&2rmUaNU's+<(JVhn_3V[Gb8HY$ZEglVKF^Y?ZYr1#`<IUg7%e/j;a%7:X_mkrs+gRU+3[+,nJ0YDW'dL'Bl]#9LCmah7V<@I[3R4JQ.G"\^eJJf1b#W#=d?TIKeW-T"=dIJ#0'8+%)GIa+r)A:l>g8mWks@rC3p'F.UrQ;cEQi>kIU:1XN3!K@#[kX6]A7bKWPe9NepeLaDFT-s;`!CPC9Yr?LsTTj<"6h[nRdRQ)9&o7cSkqDSXZ?[!E(QDV;[Dl<[`aEEADfAP0g%Q/GLhVO<(a%UQ:ZZ_*Ic[#Ne.;'<,&G-uAc9L=!l!o]K3U=)eko+%\U>k/m_6?sT>?i"7]o&Or-]1;M+V^h3f;B/b/;+aNWg*GKa:6,*'-$4lTt_;p<bPK\47]>V33aA$:A>hR=_^)$rek@BFGbOLHL!>&nD?#JomHT,DhD'&&/d\S\2pm!_-oJ=X]Z_2ImrDfH;mnPf+Yj:8R3>H6ba8>bk/;/j3#M,;3-XAnN&LrV\HDL>/9K3G#IMW~>endstream
|
||||
endobj
|
||||
xref
|
||||
0 25
|
||||
0000000000 65535 f
|
||||
0000000061 00000 n
|
||||
0000000122 00000 n
|
||||
0000000229 00000 n
|
||||
0000000341 00000 n
|
||||
0000000546 00000 n
|
||||
0000000623 00000 n
|
||||
0000000728 00000 n
|
||||
0000000933 00000 n
|
||||
0000001138 00000 n
|
||||
0000001343 00000 n
|
||||
0000001549 00000 n
|
||||
0000001755 00000 n
|
||||
0000001961 00000 n
|
||||
0000002167 00000 n
|
||||
0000002237 00000 n
|
||||
0000002522 00000 n
|
||||
0000002628 00000 n
|
||||
0000004639 00000 n
|
||||
0000006360 00000 n
|
||||
0000008423 00000 n
|
||||
0000010242 00000 n
|
||||
0000012165 00000 n
|
||||
0000014193 00000 n
|
||||
0000016094 00000 n
|
||||
trailer
|
||||
<<
|
||||
/ID
|
||||
[<3aca6d13cd74b57d5c4397c35a55e608><3aca6d13cd74b57d5c4397c35a55e608>]
|
||||
% ReportLab generated PDF document -- digest (opensource)
|
||||
|
||||
/Info 15 0 R
|
||||
/Root 14 0 R
|
||||
/Size 25
|
||||
>>
|
||||
startxref
|
||||
17308
|
||||
%%EOF
|
||||
BIN
Les03-Cursor-Basics/Les03-Slides.pdf
Normal file
BIN
Les03-Cursor-Basics/Les03-Slides.pdf
Normal file
Binary file not shown.
BIN
Les03-Cursor-Basics/Les03-Slides.pptx
Normal file
BIN
Les03-Cursor-Basics/Les03-Slides.pptx
Normal file
Binary file not shown.
181
Les04-TypeScript-Fundamentals/Les04-Huiswerk.pdf
Normal file
181
Les04-TypeScript-Fundamentals/Les04-Huiswerk.pdf
Normal file
@@ -0,0 +1,181 @@
|
||||
%PDF-1.4
|
||||
%<25><><EFBFBD><EFBFBD> ReportLab Generated PDF document (opensource)
|
||||
1 0 obj
|
||||
<<
|
||||
/F1 2 0 R /F2 3 0 R /F3 4 0 R /F4 5 0 R
|
||||
>>
|
||||
endobj
|
||||
2 0 obj
|
||||
<<
|
||||
/BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font
|
||||
>>
|
||||
endobj
|
||||
3 0 obj
|
||||
<<
|
||||
/BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding /Name /F2 /Subtype /Type1 /Type /Font
|
||||
>>
|
||||
endobj
|
||||
4 0 obj
|
||||
<<
|
||||
/BaseFont /Courier /Encoding /WinAnsiEncoding /Name /F3 /Subtype /Type1 /Type /Font
|
||||
>>
|
||||
endobj
|
||||
5 0 obj
|
||||
<<
|
||||
/BaseFont /ZapfDingbats /Name /F4 /Subtype /Type1 /Type /Font
|
||||
>>
|
||||
endobj
|
||||
6 0 obj
|
||||
<<
|
||||
/Contents 15 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 14 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
7 0 obj
|
||||
<<
|
||||
/Contents 16 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 14 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
8 0 obj
|
||||
<<
|
||||
/Contents 17 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 14 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
9 0 obj
|
||||
<<
|
||||
/Contents 18 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 14 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
10 0 obj
|
||||
<<
|
||||
/Contents 19 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 14 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
11 0 obj
|
||||
<<
|
||||
/Contents 20 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 14 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
12 0 obj
|
||||
<<
|
||||
/PageMode /UseNone /Pages 14 0 R /Type /Catalog
|
||||
>>
|
||||
endobj
|
||||
13 0 obj
|
||||
<<
|
||||
/Author (NOVI Hogeschool Utrecht) /CreationDate (D:20260607080655+00'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260607080655+00'00') /Producer (ReportLab PDF Library - \(opensource\))
|
||||
/Subject (\(unspecified\)) /Title (Huiswerk) /Trapped /False
|
||||
>>
|
||||
endobj
|
||||
14 0 obj
|
||||
<<
|
||||
/Count 6 /Kids [ 6 0 R 7 0 R 8 0 R 9 0 R 10 0 R 11 0 R ] /Type /Pages
|
||||
>>
|
||||
endobj
|
||||
15 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1944
|
||||
>>
|
||||
stream
|
||||
GauHLD0)1+&H9tYfREF7Y)6NcM104mbr)'#f,%dYh+WQ2`PKRP!_tBDosXuRYT73>b9ZeK+JdhA<mU2K@6jA#Wo%IjE&r`;Es@T@p_oMm>SqsBpLEBQ6b(I=lN%TTMLYd8K_^7JlD3A6`".+.5Z(+;FMUt9-l"/g\5#XC+kL]3g0m7B:Si)_.-C?JhcVUgcT/"KM<FcPpA2cmA]tO<hcPYGemB,G1KXb%8eitPb`a*,(GP^Vf?Xj"OA0j0h.0XiJ![^+DG'\ZEs_:fi(W%n,[9R32]0kKr7WR_#^(PbHqEFsck!1e\C:8dQLZo'`b>^[,N0TQE%SriNEs8+6jB5Jf0AM,a2`<1a-Buu<!irg"GB_24R"i[=+[pU5"(FE@8%6tH-E@,a*]'V$c#AE/?!2aATf>>3farP;.`=3.uh![,);m1$2ujSRu8.QauMBjmODX;EIlb&1.,"\;<X#&_p/FC'N0(YF%N=)SnbP%TUBAVfb&kmhH9,fKXT<BX6b=G2o7]:0rA%\bU)%S!J\TTU<KM^rlI1cn4d^AZ$6p%*U[B%1F]g6M'c+MK8R:5F9-8Rgbk'MWF'3><b2F(UtC2#S/DE*lM,h-ImeRp/0WKo3n<KOBL"T+,S,igmK=KKSkna,?Oj1ZYCWG`['GeJN3utf6)])9)IItQo)uA?Qu'Fe#cZ8/k[ul)]4#g5WW5V#YRZrC2J%q(kG3)3-?,QYdRdQ\=^(GI6QXUL+T/LeMcI#(`DH)/.!j>'Nq(0#5>.k7SS1Rd&-PK(0\lD;mXNXaQ=O%3Bir=$mT+_idVER_H!$gU7dq11gBk$e'6`^!pHNZeY)7?*$S3qs*Ti`$i5ajZh*>.p^G\quG!VKQ\/&o$.58>(@A4hnYJQ:5Jsh@m::/:oE0G#"`%=001A(UKNg"^fF'++S]S(tkTu:(;JM/O@L1VJ>(h+^,Q9!6IB/YI&Y&^)m5/)W0)Wl<-S!K^i$6R1?YgKf$Z^Hhg_5e2kQ1o728u".2'5t3.Y86=\;79Tj4OR'](T#[j!["c!*L't[:0SKn_Se^`(([u-EIAa[Go,:(L>9qF>'P'?m&K]l)7"j/ZqqZ2?0/,3hW1un_'@COcZ[o6RBaAI+A^>C&oQ95N%:IbGZ*p)jdg2o'p!j"4+hO]Z&-K"hfXbCSVFXGkejG\702WaPC9&o4J;=EgD/45Gk-[#!R\C8?Cg,$%Io3+=3Fp>g9Vd^*L288!!\ZIbf[ti''jb29:H%B>19XaF^Xd\!qRtT99UosCiaBIU.B(oc'f)[Ad&B.HE6X8kN!dmmOZ*^;]+h>d9g5L[.Gopi<,V1+6T/ti>bm<\H<<D)iILWH*4Kl">lu!;t[HqJqRd8B7VQ;^ib]jH]])?a^9j:U6h_aV@dFXD>8$n\</B[k^dL='DVC0i-,FakJuOGeamnml0^ItEi3e[BuF^jA+k<)&Odb34Q1j(EI^!`!TL&ac`+nodakR&_bVM/\f2O_YUX.8kTRsO@BQ#T])L0Fe]Xm]Uuqn]/'B>!.!X7Hf@mc846O$]N9TWg<`<KH1hmf76Z#IdW(U]G7'5Woqcm]i(6]\cY#6NAgoRT2Z[gVjX9EbM7C>(2K,qO$S]A)P7U'/qePe%(g=k8^Dpbrl2BC^f#DZSa[3Lp7h+hbA?npQ@r*FMLrT0[k!09^fPAA]E<EsK%'p$d"[5#)b"L_e*1""'lV-)(h\kb#]_tX4A<e\g,4Lji7LuY@(^CTXO)MH/aaXSbFfYf&/P.lU5Z@"FK9,PXlpKk^0k+KKHTE&1D02RF&o^]<+l;1_lmNF&l#_<GRGVPp2ZUhV32E$,hWt^%T[LP(:PJh^(]c:SgRH8ajHK4]sZlN\A&4C!:dUuRpNj?G/IN;3=3jSBl*?5HWGsQn`Nb''P_l4]MU@V:O+:[5c^H;>jSh)5chYW_M)-@G]h.;30++Z&6IK~>endstream
|
||||
endobj
|
||||
16 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1939
|
||||
>>
|
||||
stream
|
||||
Gb"/(gN)%<%"7kOTRKd"%P;!T;LW\%4%Yo"8Y`XK*Bf'&+ds%Ob:]-%jlsf%bDRR$UeE4t;g2u'I$&T/`;sq.ZdtgGT6gLmT*)_C_<I3p\cJQ4ka#hskRCdWNrD/h%,5a&!GJ@b2hqTN6W8D`#`ff2Cs=">6QOsrUUcBgQE+f(4*8<3I?('a+:omW+6fFYG2I9kcs2!,]68&+WS*"lVCcXmgV`FWjnW/(]V/r(Vk[`;?h?$UTpJNVSn_G4?QV60(sScKbM1o\_^cd;lJHP%_ac0&^QC3.$jY'b_Z_YHjp?oX0UflBHY$UPTpDfr[aTFY+8RIFdT[Eli[O?/0Oc(?CJT1N&6=jrNUg>7@;G;(D\;WR&RMg$#?t=n]crPY(lURH]aKK0QqEDCa>WBC>.04S\n/RZ[/G(#ZF-uSjn[ltQ:nQWT>@F)pnq8P,1U6#WP^H\ojcKgl+(_X7eW*9bp^=p#e_;ljr>].AkoPRE_WaA5>B>QX1^[So/i0L))0AM/_afQS(>Cb]>"rueKN]*lPJZJ_fqA#?UgDL&0X^Zm]orH`":U\c]Od+RU;mM(!<!@If=M!qm.6AU<?03p:K8LR<d$eN-30T4f#&m"'p-DQ*'a&RnZ3B"aUeG;Ja?9k0<E!E:-0b$$[VRT@H8uQf$TiAeIoD3l:5!6%p(:YIuPn_XR)gW,1i-`?\oD!oh2i;F)uh1:@=]%?!<.,o/KH499i4epDt`F9`kaqfm?b[e@Wa97g/Y.-F?uGU74EU3O9M,,>9E+PR'Nd=47a.U.7t6nD3*'7VQR+OW"og(4N%-PF'O7dq,V/.+43iZ"#6]<HNJ-k8Qf5ip@%,9^6+!]MW]HF3fa;ENY12SpP<mbrj!]-e?>kIiD(SJ^4XETeO"GKkmKSDN*)XaW86<L3>pi]e)XkJ>ega"!%Un3r9KFlN4M*m1hCSg`7JEDg#9R`PH.E_a;t))\,b(I`%8T_GW@RU'kbG>t=8+;$Il7+=COU47.Y:.3jr?"7,XW"c*c65)H(AV((+j^bb$$0sm=0KUCch2=[fL0aCsju'&"r!b38lg%2C(-;_J@d41a`ThurB1ol$:Z$Ql8-Ltk6&?tf(o?L^6i[:"-<M>h'Gd2S"OXB<oH8Sm3r!u&)8'c0230>uU\\9jY%)=i`V/m?:$6djgj)pnWLopLN*$er<HG-5iJ(i$._b!gO>Kd=M_(<^l<.-c*JSid>9Lr$(R30qqEs%a,dN@!:-1uro.()GUD0Y`i'HMKNZ-IG)B*a@KY:s^g>NQ=WogcjWlBNpWP0n";i0$m6pCS=l(*oojTuYhlAI'Q&SE-G/!LWqq?#5@P'D6aV*<3B+]S;,+JJ:eaW67&nPTZL/nDmeO;sn$E",ZNrfrT?UnP$:QZNB9$2SqchPn/%6_dJ+,T\^l<Hd`#$(c[1j^RZ"_X1Z0245#sr+.Agq&YA"$ed@1BrjiKPsT$g%2Q2;i_4[_Edl8Yr05a6=D*q"h9`4`l#*W,BVZg`p%pUeC>9XVLrMUVq4QO"B`Klh05-'+!hpAgDjG`7S<#:0^A[`tjbK9`5%gmF90CCAH9ul"4M2iW1a6DJXq?]=J]Trp6,WVP/pMno04l)C\9H]VFoAT;qp9&5WZ%N?(%>eKIQJ"2ZUb>K?2!FX=0D5aHHGhPhVjZ']T&PS<1'jNa$*&^cgE_lP]hZoQHcV`X]8qD#HKl12n^Y"+Eo<a]o3QC\Q5XpYTWpKbu=<-3Q;na.6*7`oU(=(Yoe%46WiK#9K3RR?`5-ldc8KV*kd^`1gYQYl!JGfE3QX><0Oo>k=LWBlPemT0+@Pj*#E`d\hQe-;P`r6XTK>k1r#V[DA:\N<(`j1B2/QGg+`O+<C?G/q"9ZTk>fD=lARj)?T.8gV[X]TE8iEYXC683%GG)EAK&34/hLgB8d94EI;?3PPB$2Km;Ttj5Du].pA~>endstream
|
||||
endobj
|
||||
17 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 2056
|
||||
>>
|
||||
stream
|
||||
Gb!SmD,]1Y&H9tYf^_UELp12:an.qJN'fr[Y>_?i:7R_WUpW3e5.T)J#29(Nm[[n-[NsUX99L1t@rZk)pZut5q]$Ankf_C=_\p8C!)CfkY\Y/8^iE-c"u"s2i8Do`e+RV8m=OR**N*P&flPXNdd_m=Y%N&D]4XFVn]ejn_$qqO#^QO(AEWiU%k5BZaajVmmreQD"Z*Bo?JsB#*Rh?3>1tjGT%@2U0Du9CHTfh.]d#IoDjlVS=QQE[=WQ,\=C&ZLK,GN0hu%Wu09S&%iFS1jn6Vt/?:l'g[L^\:TT<.k-Z_tB?nd/J'=GX(Uon?uT&9'>-[h-Kll+>e1!<cZk(8/j1rDD,E&!&ZQ[\ajD$JgV9@,2BXTHoCpXMu\^f;nVS1B\CPQHPjEJBll+p-pA5%SGQP,&\eR45I<.pb(0@4h@R?d-qTd)>.H,u)#L:<-c?JhThoJmRU#gaU8\V#up_r56D(J7Nh];PF0-=P@@7CNek6NHdU1):1$S[NX9PGchW@cUB6BAe8s8$,UO#99;,&0hl7.:0X'gGh*>:V<'f8cc+UF[\8^^H))5L!<g6Uj46T+_Zkj]n$b@B=D$0j!ioM*4j6Z"R)9W+`&B/*6R0o24be6N7!U2eiDD2FqA@EnRn>pQ[#QRh-<f45_!aB,#)fnWM?/XQ4=1mLM.H/'fET-(9Q>rA=JWq]!QHK)>VVp<.BQIcoMf]nVJAC;1/8KE</T?19g4URo_;EAR:jFs+<Q6OlgdUT9%SH2bJt5>KM2o0TeW<qElDK_PL<l=LlF-Lp_Xf/0P&<o`mo>dkAA5aIRI5ipLD_jV8b)K]6U$JdoBqo@o0)i,&2aI`++Y'/C%9#<3WaG-7g2MMMEC\66a8jgIS"q/<Y9=^?4Xk[`UnLaSdX0mnBa5U!$i.lr5IimQF2Hg$U#@<dQQD4(VdZqccub@mfaCd_8Iql]kbr[MD+\.!-[L&q26)CIUEi[lCOM.1XMoEJo3M-]u6nPhkOkZYoEe,#M]8VaRSMMt)j.((tG<ePhaj6i&5%).e9lB763,;;EO()7Fn+7-BQiMCKW0gK75KI5&b!JO-HF*sUCuTES*oaI>3@6?nb@.4j#A3g1':-mFPt+oDe)'[mW"D"06ljRYB$oQq>,_['b$727r5,=3_DN+;^k.Dn4DJC`BSg+Osnc;`B[e,t:4(i9@EMf(IIB(HjZ'4^aA.sHbS2=Y7i!r9AUfe@EPcB02l0*eZI[OIqNrn:'V]qd]NbYN!omGmU`M&/m\Ai/<6M1F1ocNhrFh-rL(<"QCiA8dCJ5('G'-[7p0kue^q;-YD-F]1+knp,he#H_[C3\Np`#"YdW\31A%]NEodj-5c_mih=nT!rq*m$>dSQTX,%3'4j`J)OY6IqRTME4[1g5*mN`MG7D$N[.k._a8-[;BAcrK?gD,?E1Mn0kS$#T_j7gl/>7hmWST=8pceu1FDuua+oB^<NT!!*[afB^?W3XMh2k&rVk8IYFb_ZY>*R44&F^##u#&?,_M%6*;#U*KkjF/Smn:S==bCI\EJDelFM=,>uW:^Hp2%&*ZD!7>0mO.0q;/;)1`i0l=SsH<Mq8:<5@ZBM33XS]%M)<Z>SOXc65hYH$1u#\AT7V`$sO_;as?XSl(j,L6"*iaAR-Y,T"u9,fYY!ZJbYJ*iV.2j/O`;/1fMqP6_u>Ib.ab:%J*0HE@E'9lR6idpr&N!tBa+9t?!^LpBr.3f2Zs/:7'\q`e0;Q5eV_A9`H8Is4cFhU_[M9>RR9$pp,S*Qpo8hIqK*W_N-l9bp/]XkAedcSljKG:s6Y>B/Mrbgc>eJAG^:-db+4H$lUdOJ:2*9+r@XFh':Nhi>e5:i,DP/YeV86Hh4,a-jjfFLOt?YEsS-lMa-AN/(-0]t43W9Q1?M"bs#Abj59]=jNsFG3eDRk4J)3h&`oL4'REe?(ffk?iAH=i)6TJ$-(FA<8VD3;:mghc18SdIGWoqXC'f25fUir;<p\D.ER.9bSoSm0g$&P"IN%%per#Wpo(7kWVSpJiS_62D5sJtVo;s(n44KT@SUmCRtMPp_SO"Id(:G~>endstream
|
||||
endobj
|
||||
18 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 2026
|
||||
>>
|
||||
stream
|
||||
Gau`TD/\/e&H;*)EUA:m/M]ek.#H*\/8^`]^sH/l+$/kC,1DQ]=`c)A7C)<qmmt,QQBDq1gt8hURWgkXGPCTe'HDKtq\a;PT$?3gMumQE>6<o>_sC1oI5^mV+j=R"pOKcjEC0pUFNkokeKb7C-[s-'$Gm+*#WQchM%H?\L2oRF"4.[H:F?iIi&cMJ5Qpb-iU=n#`+KLFk/?lin@!^]T.oD]`36:11TNGa_\oi<<3+R2`1^Mq_/'5&f5EjdJsU3uoCtYO'L!:9`YSg&)%5Bp'tfW010%PXT>9e+Al$YQ4f-r3`"/AG=6[m`ahLH]Y-bj$<_4&-mqI$%&FS3d:nJ$>i<VUGm+@r2/QaA[ed8F#5pJ#_nZX3]32L8n"5F`=I)[(qeu_kCFq!`,aIRWuDRIiO2CaZs9$-Uk>:V#$Id7_B='CmDB@g16\!JPFjLHn,FTG+:nKF)WM=VCZk;B9:b;,!66tO`s1S%=*6>gc=m'"0b?nJQXb_KB=D#WLkfuis#N0R`9mHiZ2*Vuj\JfflA'D>jMp;r'_q1k3fT(Pt3CqPmu4rQl$ZU=N+jh>Bo(nTYGm=^8,hJZ\<PD3)?s!5!Gnj6q!Y`"@/A_Z#OL)A_UZ-NbS>!rO!8r02Mjt<QG.UcOn\2[`mFJ35b1297I.U;U)s"14e`:q?<3=UR;.pYb08d4St)\4/S&4X]QI!<!b<oVWHE'(-B)LbLfDe6YLNL$YdbX#Co7rT^%AI_ie$hTA*n2Sa)$>OW,$hW!0dG6%ee2\Ykc!imMj5XYEXiPu`<ghBV&+*J92DQdP!5F[X0@UaQQj-`bV\8/rf^D'BYril=but@hpXJ[u7JJVsN0)1NZGOK[A%!4DE#\%T,7DF%IXd?B5uHpK(ZN=D#5iEO#5=]9h\F"08>^\N`>1\^grMa\c7`ba0`2uF+#3/Di2p%<1+nUFNF(rc4L`/ur54*;XE>ZT5%^\=YgEP[UI[bP<XI?3_mn6Q4c]r\;Yh:cFY.bYMPqrl$:"98a,kZ#;s8@lV@iB$+2gi]&e@?SRnN?>-eSk+KadY@M%#Ja<c63ZmL'Fjc45(KZ%F#g*<b++kV@ec6H8?)o4N\5'eV/I<_/?'ChQ:?@"o0g&F3k2QnrNIU^1bC?E9b$\qfSP@6HTML!5H`5d;-A@(]&`8&2L5bC$?6LHLPs"6K2h)o;^DQoQ*=s1.I''>?j0T.H0c_B\gS#(TWrBAmcD!)D"ueGed`OMX!n77T7REG-M6UoflUClsd&!3I+kUEoJc21n_\L-C=Z]0a>=-;6C<_E8eK@5Hk.:gHJrA*Lr(&h)BA[C6l7EOZ\S7mo-\T!VunB^R8gc`1aBiOA+s8<%ZKers8Fg(@<74er``![2kS4.S.)>:[^j7s')s3a6CqDE$Cdn`4.gDdCSfBpW'1Xb.T;l@,_qa,kt5@M!ken[Rm_Hb8e]4BG[Z<@X+QHCRhGb^<S-:8'G2c(>DOS2?\F7sm8"<sSmb2Cdk#,]FX-EoXJ[7YJ<+Wm-!R]!9J^13,Rd)-T0?M_U^%/A9Bjk.<@YjbWlISMj`@#hs=3,AX<kPeFGLdF`0s#+5Y]Fd4jY%S>7C_'A_+/,8TM[=h1QI]^rT=D<a0TN+:n,\"I[,YuT@c9Ho'EnS;n?!r/RR5@@NQDuJo10p9"fok)6O`5qr@,bM6F=X]f];#i;N-t&7J!A@uVsT-j"2)UaWu"Wqr#"\7FI$`ap_d[)M:^d1=LU*ra-OI>eqXl_-<KC9CdQJh:%>o@/A.(f"<0Er)JOL]")NDu);e[f'aI2s7,S54)"/f<9/Cf=Z0gE+0e?7FO0&7VpI>`Z4f%3EemUe7-Rn_ElO(DQPEZtp1$d?3.6>=@C+X*h$r=;B/Pif":8c>#eiGK\L+_`sKoML7)[a$eJq*3#'njL_*,@tDP/R`,V=:[4bP<!c>R4BRA_7>S:i_?@!TYS"dKb['=W7?4o)u'Kr#WC4D4=8^V\mHU."/8f3/Oqf`-:tr+P%/EYJk3qJk8n^H\D:'rSLB0^uU!YL<oA~>endstream
|
||||
endobj
|
||||
19 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 2010
|
||||
>>
|
||||
stream
|
||||
Gb"/'D/\/e&H;*)EQb8]=;d6q-n3%fXA,0rmJ=-"*AA05A;Ra_aHT1d$/0P%I7NSA:2IsG)?frA]]b(/*KSP&4ZnmZLVM>Edi#rb+WNVB5T(!N5WRdWHj.iNK>.VD#o<(3L`^nkb^dXGr;e\lBF"_Q0oIJK?:^fP"-4jeU,W4/Ea_L+0G;Bd"r'TV]J/>1+rZ8.XN:9,0SVr9&dT(VQZ)8LXEcN4X`\;ho7tJm#Akj=C\9^XBFkA%SAG3j2]kiR759p93\?4/5#b"KdgA8n(;_^PE$R)I?Hf8A*en;]Ht3Ia;T].h,4raQ8mg)J]ThQkdIK2`.%NW-Uu<=\fVoF`[4>dH7"NAjHMkE4#l[=p06R%34@_Y!4(Z:_5;Rk=7c:+(3sV<%#,VR`;sUegZ@q7N:O`=_no>#&Kup-6AiR7\-2[1D/i@/P.Toe+<]Q$c%;e&=lZRSh^R(jr#:g/:/2JRq:F]?:7H)3hE$i1GmoQ.EW-234gVH3$21_H$Lu$B6G(mVM0%7N&Y+W-;-P:^_J<Nde=H6(WcJ`JSb/1q_JX<@a<Ojlk[`:eYEFj!W()PC]Y11*0(c;!rmNQXK/_n\Q!1-7\;cs-M^.^5R8.W[Xej4@UN22Xo#l5@*O*@":\1p8Dep2<<+1*LS1p1erB=5lmN_tFpA;Q&H1.k>C@5q08i=>"TL]h_YbTkW4Z,$;*mgW(Fr#Qt(&/JZ#%'osF_hK-,[X>k8cO):nH3+\sj'K7N&p8WN6/Uf\VkeZ,2&&'Pe*7>)#K:>?ZaY<I8Jjn!am3M#X",38Md^XRl)eVf(3V;Oe%p.a.*hfM9OtIYG#X>"glg3N(Ln(6b!^`g9OaOrD_Q%Qq^ST1&q5Eq9\0^/Zj0t.fbCD:bO2d.Wqfn3mb)n%UT])=':m9.a1!/"nW6$-3^6fFmt5:Ja=X-^$,6A%&jp!f0Z$M-6+')<+LMlTMr=WN\\Gp/?+:l_.D=9p!KVOCgtLq@+JT[XT4*PlqE?cO?7d!MWN.3pB(I#&_/eRI@W_2b0C@"^kCm1P,R-7c<o`al;<J>0]HM<CDoq?M11EN,Fe.^;.$lM7cB,96YBsVBA#C&6Hsb*0C*M(!*7n.LYI2B>mHUWmLT'B<:^KGf"*@,>bi6?4QXcY6!>1k!IIL1:j]n_?K"f2N6N>K36f6lTP^/1l*]Q)t?@ID,]B$c8?CGks8pG-/XA1;@H[U1k8W/sT*_":E"/p$A@]bb#65$f]2KCjHaW2Zf,3FYX.l]I;77ge27ac+8oR.AKN-1j4<jjn4ETuqHL*ie,k[>;7[b>WlR&!'rcA(.S//-GrgF1.(7@t+F.>V9++G!Nu@d.CZP]QP4@gXi3!mFjedW;%mW9QC'op_OJ5!f^LPoI1u3uIpQL>bTHI7aQ5,MJ3dRGI'fG5Dr`XJmh9gm7TOXP"Lsk;T]DlueeJNL&Nq(HpRG(Lu999sSPsX(afo!O_qG9+m0jSO#$F@;=#5\>aU\h:An9?F+0bWRCAUQs)j<Q0J+%;__WF)H3"9WhRkj9cuP@#']Vjk.:5f$g<KmT3t)=49)IBq/4Xglr-C/SfLO-gOY'Qn$"knU5-W,9X(rZf"&0L\DBtR1l@TR]`ftos#qDm2]#fUCJQt%O`"<B]rfIlj0`As]r4HeNtSZJ1icoeW[c5*X;J4S.i9F$R_scI@[Gs[#&FMQpt[WK@W3hU4^=EOokY[BXG)Wr5UtoW?%)"hn],@;0oi7a-W2H$HnQW;4+P-7#/X;C5$(j*QXqq7]7Fr-mF:+Hj<A:s)Khlsjc6mO@VGpbe)GKld-r'K\Jm:o1<FR5f3n0sSQ"LQ5*?S5]-^4+=#fYVGJ^+`9LRfW-9THL^;IDmhT,?N$TD/PCmC8ea2\(p@dG%op!taQ7i4tLmasCtCQ+EC:QTR-?h/;Xn'`?[N0Xh&*pg?;F#'=6qV3*L3K0)H8hKY6<#KQj(#k9"DDup&X3_YPS_4ZUeQ5HA,FKq5[\$4!_ms(n&BaCKcaa2`rrU9<J*d~>endstream
|
||||
endobj
|
||||
20 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 621
|
||||
>>
|
||||
stream
|
||||
GauHG9lHLT(r#074M,`!\@+-#3CTFKWn!h]<EXM0"d(`sHp@m2\*hl"5amg7WK\E<)_Uj]I(crgpJ\I!F9R&PEH*9I,iU8+@LDW2?fJo*!L$\*'nQUT#E].IJnC[u"pI?<F<i(3b71dI6!;%*N@^m/1I`3\K^&:tJ/QUk<FAj\g?Mc4!RjqmC;iNAUVlr1524/:R,4k71:uYar!BVc[6kB;j!$<'iYBaV^Q!/N?"R'6Za*iqLT;ho3BTiHnEC.DoLR/G:";bPF2[5N5n?q/_6i05+7slCf>":gF=?%1/2%Y"*l=J/n-)/%XY(hUZQWC6qR7.+nT3oKn`%]HeA`Wc*hA:k,bnhY8(f9GKqYp>On*\-UM)a8gWmuJhd>Y#!dgA2[F<f;Fug^u0h4Y:JqZNndGmR&Ne!%9n9_W9(F[lX.R7!6<^Vh%C<XaBITk3K>30POD.,kUm6a6Adc@>PItd^qq>SEWP4,%(rQPW^6N'lnj:<;qU(+qadjT6W6[[/A$fj`tB^)(S"mTY_n_oH)Vqqd=*W?#)rC\UUXo60qmMsc[`jFM\r6=ED&@Y%XUnnSKFoHQ3GbsHg5gSkPC:4(.:QdR^>,'lL.Fj3<(d%n^P<o]~>endstream
|
||||
endobj
|
||||
xref
|
||||
0 21
|
||||
0000000000 65535 f
|
||||
0000000061 00000 n
|
||||
0000000122 00000 n
|
||||
0000000229 00000 n
|
||||
0000000341 00000 n
|
||||
0000000446 00000 n
|
||||
0000000529 00000 n
|
||||
0000000734 00000 n
|
||||
0000000939 00000 n
|
||||
0000001144 00000 n
|
||||
0000001349 00000 n
|
||||
0000001555 00000 n
|
||||
0000001761 00000 n
|
||||
0000001831 00000 n
|
||||
0000002117 00000 n
|
||||
0000002209 00000 n
|
||||
0000004245 00000 n
|
||||
0000006276 00000 n
|
||||
0000008424 00000 n
|
||||
0000010542 00000 n
|
||||
0000012644 00000 n
|
||||
trailer
|
||||
<<
|
||||
/ID
|
||||
[<00f9ff5fdbba45abbce8b22e24867ac8><00f9ff5fdbba45abbce8b22e24867ac8>]
|
||||
% ReportLab generated PDF document -- digest (opensource)
|
||||
|
||||
/Info 13 0 R
|
||||
/Root 12 0 R
|
||||
/Size 21
|
||||
>>
|
||||
startxref
|
||||
13356
|
||||
%%EOF
|
||||
@@ -2,7 +2,7 @@
|
||||
%<25><><EFBFBD><EFBFBD> ReportLab Generated PDF document (opensource)
|
||||
1 0 obj
|
||||
<<
|
||||
/F1 2 0 R /F2 3 0 R /F3 4 0 R /F4 5 0 R /F5 6 0 R /F6 8 0 R
|
||||
/F1 2 0 R /F2 3 0 R /F3 4 0 R /F4 5 0 R
|
||||
>>
|
||||
endobj
|
||||
2 0 obj
|
||||
@@ -17,22 +17,27 @@ endobj
|
||||
endobj
|
||||
4 0 obj
|
||||
<<
|
||||
/BaseFont /Helvetica-Oblique /Encoding /WinAnsiEncoding /Name /F3 /Subtype /Type1 /Type /Font
|
||||
/BaseFont /ZapfDingbats /Name /F3 /Subtype /Type1 /Type /Font
|
||||
>>
|
||||
endobj
|
||||
5 0 obj
|
||||
<<
|
||||
/BaseFont /ZapfDingbats /Name /F4 /Subtype /Type1 /Type /Font
|
||||
/BaseFont /Courier /Encoding /WinAnsiEncoding /Name /F4 /Subtype /Type1 /Type /Font
|
||||
>>
|
||||
endobj
|
||||
6 0 obj
|
||||
<<
|
||||
/BaseFont /Courier /Encoding /WinAnsiEncoding /Name /F5 /Subtype /Type1 /Type /Font
|
||||
/Contents 23 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 22 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
7 0 obj
|
||||
<<
|
||||
/Contents 19 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 18 0 R /Resources <<
|
||||
/Contents 24 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 22 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
@@ -42,12 +47,17 @@ endobj
|
||||
endobj
|
||||
8 0 obj
|
||||
<<
|
||||
/BaseFont /Symbol /Name /F6 /Subtype /Type1 /Type /Font
|
||||
/Contents 25 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 22 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
9 0 obj
|
||||
<<
|
||||
/Contents 20 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 18 0 R /Resources <<
|
||||
/Contents 26 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 22 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
@@ -57,7 +67,7 @@ endobj
|
||||
endobj
|
||||
10 0 obj
|
||||
<<
|
||||
/Contents 21 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 18 0 R /Resources <<
|
||||
/Contents 27 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 22 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
@@ -67,7 +77,7 @@ endobj
|
||||
endobj
|
||||
11 0 obj
|
||||
<<
|
||||
/Contents 22 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 18 0 R /Resources <<
|
||||
/Contents 28 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 22 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
@@ -77,7 +87,7 @@ endobj
|
||||
endobj
|
||||
12 0 obj
|
||||
<<
|
||||
/Contents 23 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 18 0 R /Resources <<
|
||||
/Contents 29 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 22 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
@@ -87,7 +97,7 @@ endobj
|
||||
endobj
|
||||
13 0 obj
|
||||
<<
|
||||
/Contents 24 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 18 0 R /Resources <<
|
||||
/Contents 30 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 22 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
@@ -97,7 +107,7 @@ endobj
|
||||
endobj
|
||||
14 0 obj
|
||||
<<
|
||||
/Contents 25 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 18 0 R /Resources <<
|
||||
/Contents 31 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 22 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
@@ -107,7 +117,7 @@ endobj
|
||||
endobj
|
||||
15 0 obj
|
||||
<<
|
||||
/Contents 26 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 18 0 R /Resources <<
|
||||
/Contents 32 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 22 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
@@ -117,115 +127,208 @@ endobj
|
||||
endobj
|
||||
16 0 obj
|
||||
<<
|
||||
/PageMode /UseNone /Pages 18 0 R /Type /Catalog
|
||||
/Contents 33 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 22 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
17 0 obj
|
||||
<<
|
||||
/Author (\(anonymous\)) /CreationDate (D:20260305162606+00'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260305162606+00'00') /Producer (ReportLab PDF Library - \(opensource\))
|
||||
/Subject (\(unspecified\)) /Title (\(anonymous\)) /Trapped /False
|
||||
/Contents 34 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 22 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
18 0 obj
|
||||
<<
|
||||
/Count 8 /Kids [ 7 0 R 9 0 R 10 0 R 11 0 R 12 0 R 13 0 R 14 0 R 15 0 R ] /Type /Pages
|
||||
/Contents 35 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 22 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
19 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1201
|
||||
/Contents 36 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 22 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
stream
|
||||
Gau`R968iG&AII3Ci4:56i[c$_-B#r,<*oXE]g&]M_9qobEPRb"t?DAoZ).^;R@]QEA!Z>B'^*NbP`LZ;%+k%R/8ru!'\?jm[O=<&DmL%6pQ,+PBc^Z@bjVTLbCcDd.`A04MYa-l^.;_lh;Jk6n$0p!!qb]#T/YZ7fo;l(F+;QlauX3`!*TbJZGXO/;+IO6"Ic_#S4j&N%];Wi]Y6[XRt,TbuQ\qWd1nuesPG"i[)N]_:u_W&?]AV;^tP,0B=i)1/RrKcbiR2$6PXW7(+K\OabZP37%SY<'uWn.KW[_?'WM=elgh14sYij\9r(.$<icX@(-E0U*Po%X&^KGXY"gQ:H=QeQ`n18U4=p0%H+#R/G-I`!VcHnLd)4b^keILM@)J%a@j/X@OW`F3Z*,:`G2o0Mfc3p;?_`]1nc*cERE1qN(0H8fs;P0c)Q-S*j`SU[\<BBfq^2bh8_-U*,!I%9%RkUhGNh@N%kIbP8&nU>h;O1Cn-b"e%)Vn-h&d2a0uf(%H52CT9:t34B!:^Y2OckncrHh1g?dM3n<>rb3s+M)2g):>r7/JR@Tj7X=^lHjJO[hW@#gRV7O.i5&?00L*^?#'GYGI'):#[^$+'<`#$QD66>m8TRtN]\.S^ko1O;0QTpFb+&Z(Oo`/dGlkS]CY`7Y*W(uq)H*NrOh/-,:I!ZXH+(t(g!["Tme)0kL%GSjKKSCs=#06I,^OP/kmUCsNel?PEWm;Ttl*:N">3IFpNIT;<LR,c+mG&3$fpI/"K"]_2kt1%thNRl2RrtgI8SXWfp/'u,`I`;H)QOLdW7YQ$-[Dj\>AJ$Y:F8e@>e"Qj;lm90CKmD42Rq7Ear2;*W*OupG,q0dh:4g+kj5`01,.1-<K)f3:k"@G*m&m2EO;S7`OP9p_!*Pe1_i!W4g2qVL[;ihbCtS/eE.Z^%7tgL">dD6g`qm;o_30)6,V/l.q0I*op]$fE=id$T\GN8@ko6+rI=G/FV<SZ_&*L:c\q$^4IOJi?C;Df#=Q_U5Dk8NrVkZ4n4ogT1\0s=m)rHO\>ibfO61eWRj?f.1>'/JP?<(tFkBHGmN^<;E:T6qL1>pWkCW/&,urI1imBEtF]2b-NBPOdNJBFR%pJ;UH]bp3H]e1aV%=fhT*Q^8\A/S$7Ik?Y0Z[@HDJMr8UL-CU*)*R8\q!Q\UMG<s0T"TEQXkZN)dkc+_<=,4\8IT~>endstream
|
||||
endobj
|
||||
20 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 774
|
||||
/PageMode /UseNone /Pages 22 0 R /Type /Catalog
|
||||
>>
|
||||
stream
|
||||
Gau0@9i'Ou&A@P9(cZ@uF`#0+iDq@,WDEsHlCm2MZGYZJRtN&6.)2?FS6`Q2-l7]9=IpCkhg=Cg!)>oRs(i!\SA:K[!ec6f(5--(P&iTW-4^bE6lO)i,:-H/Qkls'D3N/pr/ob/+"!4r*?[@%8<tB'Qb,JAGGjt[e8mCE_%]55`@"1l>EOOUcAJJno,P#i)-0k`YfJpb7t#W&d,D]d*?-_[`l;I>@jQY;j%MkI;3i/Q1+>8k*-=k@#R**&mD08Kh/cGEMh\_DaFk8]`&&ENSH@@o?'g\p<(l]]paAnt@_t]YhpC"XZ13=*`e.D(k365hiFGqIAIW"m@--.VE>H]7Tc@-<36SgihFm@%jm;L%cJQ'c(MboUlj?=]f2A*SU&T2Lr\r`12`\#Y-gAnT3*du$k#)%gdC@p*5H&6CGF74(!eILWh,\+I>E@f]TcN#W2I7fTR=*>hW)j.5*V=?I.V;GE(QC_//Sl[Wd/5nsUCqbu!coh(OTf@.cNYj='YuY]`A/4uR21>adoOmWKT_MG?;:k\]05IM12&:I4HW%$XLmTU@!YO@cp[;&GC#3n>0Lcs\3J]HlP+dl4F1a*XR!00i*&_\Za9nnd*i4Y3%H`X`I&1ko6UmCSI_uUCA%@X3QsV&_Co;";OXo6bGN+-]hnR2*s9F-%%OkZ,#a)H,V9_d"AR<X:'NFdZ71qF7>_f>6JMJd9[BsEFTfh$$Epbh="Tq#=^#6>QHMPVfC(q:n=uL`PMML8*fLp"g_VE\/Y"M?!o_:XoD~>endstream
|
||||
endobj
|
||||
21 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1175
|
||||
/Author (NOVI Hogeschool Utrecht) /CreationDate (D:20260607080655+00'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260607080655+00'00') /Producer (ReportLab PDF Library - \(opensource\))
|
||||
/Subject (\(unspecified\)) /Title (Lesopdracht) /Trapped /False
|
||||
>>
|
||||
stream
|
||||
Gau`ShfG8V&:W5<Z'imZPg#NO*QJ2+Wfte1WGL`&8RMC96"`fK%f&BT3.H>m,h]J>i'c\k0S@`Xp[.CXH`'XR#[XmK-Zaes1&US]"j.t%!m2MnnJ%^BF>KX1:D#Rh?jo7%LBdjtAKuR6bkJn]bi^#N-Y+Aj%$Q]nZcj)W[ScN]a7T`F^aQ^=KqS*mDG=Aj&Y$;I#rZeN^($$GJo4W0Eu9CaIZL@u?UFZ2i`EPVa/?68YQg`i3m6@R=;pj<joY:uS\n0/+cPpf;GLK2?Ua?LII`V`'Dd=X2524B^j#]^d>plO6'rk[KljpWg%L%TrEt\`JC]DYCXPa`>;)^po@,U2#G^PIpe7RS=#>?P[GAR$culkV@Q=5[,`;?SG9NF>m])._7cA?sFc^s#/M*@c_`W1-^eUi9);Zu?=VsuTi-hd!=f,,o+]gmm[\2[uW<FlQSPC;-homjf`e5tbRnR>f%H`AEi6*C[I+artbo7tTa4h]T8f;;[VO/e\DjFOpk,Pd2m21,VOgZuk)tR1sgHEmQ%]dQrh>%[5KjT;-/FR76Y4op,;&Usk9L2<cTZja1.cEGcIVglqa2lDhcsNjE,YN8g<'.9h%!)&h%),fq7leU!>SIpSN(e*@4%;]AHWXAL'SVt6XBcX#9Gr4[8I\SDlK9doK'21YSUt",.)"^J:R>>/Wl.V>'HT$[MiO"_Njg5YfLFW7,#p.i?T^s?j'FKF;8F,k-klKH@f+m@bjdhLr83ad];Vn%cdT5a;kH6oCQ1j$G'ud#]gKOuU(=UAGuDfg:\qHa,L6FT*JPI*6]/bmh/5V"3>I@f"j]uH)[DQ=9f@WCh\J7MMlINJo`N5ZDE&('4Bj8Fr%B8=Z\c9&c`%(L6ZCr(1.rb(?$+/MHbP5&Lh(ecWP-pa:hE#6&DW][R-:UI(FN&qN!p$@a%//ie*SMn#jar\b$<',Aib\)f2S91WEH["G;19G5kBFoL;7+HWiXQ&LC^7a-rX\8e-lXo8W>e3g?YZV4^9@q^M%.iI?q[pE11FFZls'Q"Vr>(32j'KR);e!)/^Uf(X"W.G\!lZi8t7nD#DDG!-:+g'bGo5\PH&h@;n'M]nh8W7A3)ILXN.;BN&_#J)/WG3AK3]JuD?gmY(`B,@7+QK(Fo('E$USW\XC^..Xe9K1n'Q@J?FHdD,Ht=;L~>endstream
|
||||
endobj
|
||||
22 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1095
|
||||
/Count 14 /Kids [ 6 0 R 7 0 R 8 0 R 9 0 R 10 0 R 11 0 R 12 0 R 13 0 R 14 0 R 15 0 R
|
||||
16 0 R 17 0 R 18 0 R 19 0 R ] /Type /Pages
|
||||
>>
|
||||
stream
|
||||
Gat=+9p=$c&A@7.oP#h['-YK',gU<V^/Dc5!a`BU&K,0"K-LWU.;JYN[-W1&`3H(X<@T<(??\WWYFc\/]NFbe>6$c]iRo^cN'fW2-A[3E*P>'95=TH0M2P%r49?rGdBS^N?ZXt/jk\#R-r(qOOsE.u0Sq3B(?SC_,Z2(.!D+P:>3t74PMq!Vb0(?kPMrn5!CJb^d\]`fga(GrgW&s]YUs&td`"D'p(1a,"O[NGT6d^PGjPL9(>0B8!h2A+/_l`!/:M4!XtrSD1l5q2"Qal<b1f[%N0F@1\t=uofN0R^X0]ZokG@IA,:#c$*DlfKdSImfp)'pNfO8Y1_g(H]>?82/j=g:Ac#)G1a*q>]HK[L=QU<Mhi0[aZqn/jWpfJ4<pc:<YDC_[0_RcpH"rs#RZ[K:D,Fg%B_dQ?07$;VQ&OlMk_WNt*TCM=IEsI:=*JbMcc**TtG%H]mIHIhh0faVO)G4BN$25dUNkjC]5ts'(=8(S1>N&Ttl$b&H!b3N\\iL`@M'=Kcmh;B@="t93Q&*+[o0f8>Y17hoXAqS27B&J@!KCPuYG*1G'"ul_4^sd+D7pkp)Q2'Ye!ns=oPpTtr1gV[H48O_a/.Dmr9.pLj7Cuo46"a8@u?k8ko=7ChpYn*atLVr\ed+_hoY#+S=-$DklEFM57i$;fkuB"&W+kUKL)Nh6aq5YWeoXg%tjjjl3$*?X9K?tElIibld^"U;^'dJ/2B/7WY"M5`D;g:k4T-;=4O7n=7FNM<a#CEf!Xnjl?Qk2npHG.<N(+N!*LHOfMK"C^qZ7W0j-*3iL?gP):[O5Gin.sZu0LS?_%+:1\8f/dX(tXGC(OP<WUZdc!`_sr>^RM&#Cr_qg[dWd@.R-6agq<en:NumMA!Q,sOrtBaRGI#LX<<^&>URJpHC[gN0g0Q<38Xcr$(lW6Pu66p(uX^T;$Z3C*3=TEc+,qb1%<A?t!2!ThITh%d]n[f2"r<a+ghqr2QMCb4Ok0I0B'FDGQG?oY8G&0VaI'0qV4$gaNpa]nWT#sqdRL;Y%&GA)$9Fn8c.Bi\ih)Hpn!`W`,IJX_-R:Z5#fLK34J7G]ZrBC7Nf?sb!aoG]-"Mqn~>endstream
|
||||
endobj
|
||||
23 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1281
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 2106
|
||||
>>
|
||||
stream
|
||||
Gatm;hf%7-&:Vr4EU]/n`/7)_^C1N>M`G!GYK[uhHeAcY;\!Z4E[f[EKDk=%dW4F$(8M@nJB6[iGose^G=N6anKIUEZ3#88JX]jFKYeu<_AicD0oRG\hlfT4)+9K$:l=__@8TF4g(jSmB]t(9BukZ':/#/PCZtSZZIA^o0Ok7&f^V;[NBdkBhr(6k5rTaL@RM.oE2"g7Npd)1H3(!W:KGjBleM]`UX<0<3.a5>I<tYbkj-uq@'Y=))`.5LF/T2m+cM'Yoi\n.gV4h"a$#fg_ud8A4Tj6.ETDF#3.uN"70`[GH+45FL]/[8&fSh&hXa&\0_qsh"oO>oJH^=?lW9#:$_?'(NAh_KNGmd?`J]_GL$GrjW6lbfABm&0>l,@G\+1Uh&Ii]Unrf=p<s@Z#fQ&S><+J<U0G]JX`p)o1Q<L;627d/(Isp=S2QNh(m=*MHcNI=iNZ]$TXne$p_Gj8\(Od&ZJJUdMZMK#e^Po79BEa)#.MZ-c7'n@8#BK:d79n^p#CuQsSPcqpD7><"[p7-#=63D>V,/sfWcXZhs'.k$;+W3*;2P7-53?^jFe<?X0(%-iSj\m]&h!0*'6;Yq&)o[h6NS5!?r:dUN#pgeV'q$mH.&-m*bqs(m32c+ircZl&`Z'#cuP9:.'/'<2U=8AdtL?8k@?rZHJ;].HC0HpB"[1Y'noq$gP'^gW"[OfR<)9\0>fdh_O%Yj;`o[oSZd`*a/Oc?2TVpZS[eEgTF#a6Q2=QTogUQ0MU't?Eb!X%f,L)K!D84^GZMu+bTtB,G`m,mOpb74Ash:_)'f_:=k\ODQNnIr6YOiBNlRa9QP%7[_Oh0\maQIY_8c7n;Zs9-kE31Ynr$$bdYc[nYc>9BX\Z2Dj_?ERR@FYd6X7qU>EGt!pK5Qr"oJclljbgf8NlhbHGtMAYJmSeXDb^/1rf5SBp1G3GW&nuRpZM3M8]JdVMdLO+PV0cdYBSUUO>kA\pY_h'lks_d:ms_=qY.t1]=*i,/s+K,18k=M/3!"(_<Zjr>G&=q'2Ju(<XOGg3\#%S-3gFi;ZrVbW4"uF#Tk(c_XUI'>LP&jf93.<ao@@gZm3_Ll_LdYf<ae['j=2UhC%Cp'c)F>1"IpgcHfO*#Q?c$hJ-i@il$b3EK=3Zm`*I.gCK&ls:WN&tWZ5Sh08j\Lb5]*+@eR/nI,9Wt2Ge7X(K>K,dA?!'biN`^89I&q(Q$a:\E%m[K'n&jN`YoZ,#t)]i>O7Rb0+?&ki#')_RK[h%t44u]q[]TMXen+^-;%fQKX\G?_HAVh'~>endstream
|
||||
Gb!;dD0+Dj&H9tYf]LB):/EOW]3dU56^lkRde:QNDJo#6_$_t7MomA\q=V4[NGTf"Uq()`#t':qmE;iJc`Z26d4[HI_\p7Z!PCPR^hjpIJ@j$Z_$B073aXtmp?fZgJ2s=b6oM9jd6F;DSI@WQq2l\;#d&W2JI?A:=VsUOfQ8_OGQ8(ZoV06S"hk_)0!LFaIct^@GF3='UtTCOmmil1/,MYM?Guca3\n$hOYGM*/#R-]Nls!A"We(acoq:$jZT-V1$6A(.9$#J:cQ*;i52o)3-l+UG`A\mUO!E&#n1-R"YHFNB/._PK6<k00UMB5M-A7R0hsJ)]HuVpTt$9FgQcKe_c[Or%\^WRif6gtAfWi"8mEr=ksNC*bL]NnGl+1E2kPL8G3TU.43[7XY0T"A5'$cH5qS)fW8(B'X&k%Hf&O,9.B?OO7[hjU)g3bf,Gk-LJ+Z=8;V#un3YY]9_pESJGFOc50kh75)ZQAs[R270+Dgpm#L!N,05Q$FUM<l4XBs;gf,nbblP6I_Ai7^PmCO.r0otpf2ibGmp39!UYpq7%>NYq.'@Pk*nt<q,X86M+0@_li*8?$p9XLlD>,<m^A`C-RH+a1d06"f:c<eU)MeoP5+Mi^!F$(PEA6qMc*t#"t.;*kU"GmIBMbm-T2q7Neq,Y2fCWA2k=727qQ8-gjWG?Y5![fO[OT"9VSM2IY[+-)48r2H@mM@U+[:XO8WeaPC]6do<HsQGra<sW8,)$]@aC8!l1<XkkUMR/`aG%)2PqV^?]st9@%52nok*GO%#/<jPR)K=[hT(6jE^3]V='!*SIOj%rLGpDQL>/Es]V2f0>L0'V'iH&jUi!HSFm9FjNUW!Q[!6(15(jf`IT.(EOU[iL&BK,KE0&%%][c,Y0V-?(,T.0#[he6bp`8<+ZNB3XqIM,abk1lGVIG90LMQ1I1G#2le%PQd\\p=;q@I8\(g#(,V]s;U"C/!<EeR*_)G]PDA<GpVR^;i6),[N[;^%#<Q<954#4D[g&?b5M_DoR%p!+8MJT7HH"k6RsL;Kee<ZCbX2JYSSFaBJW`3+%n"cSG#Z+Q]O]WHQU"18>2;$Ns*==^](-$71\&"nbJJOJ$W6F@%'=9n8E9T_qKUPW%c>R#T[b@Hce0s`=:mOG*aqFYo)&1C7HO;fWk@&oAVS01Yh0[=)R0hISN'G]Co($bj_`J#EAh9n;U^4Ai(.L/d!8NF2C7"RH=L=3`Zk"1H/$@4rW:pWf=,Su[dS*%#giMRgeK"nCO^$m,+]+f!iG#\]IGZe'<.eDY]MF(N?HfdpqE*.Wm'QQ[]:'2jp&rKou1+TLr2E"-Z>I]oK1]V@g=&K_I6]Ju0hB^$?)DmUh7bP(XZQd`6]QeT17,78DL`DUO8If7$OEi"JLC"]J`"A+3\S)D3b<;>TNl<Oe;=i72Dp-V+'PVIMT&t,]PaFaLY/r%i!A2UF$'[fCZuB.\k!HmMM@-\B6Of&9[G8cKL.L!u[^4)?OZl'"ABG;fM;"'%aE'u@HU)AUPE#*q=>p3ImXqYcm'%ZPTnop1Q6W@WUNU]Q4Y#-&RqqFT.YT/,@GH*Slb;:CYgZ.3:s6[uV/';n^;PADiiFZb$t$ET(%-8mlS.1Sp+,@)e#KEj[d&O;-!AY8?KlLV`b9TNabC.:2PAicP7aY[+t^OtF>@YAL-Hd%Q*)K$nlTAT)l$#+[tQ[rWD7An!:0Z5oQC3n,0Pe_FWF4U?($GD0"SuN/\ZRTnU(k3c#igRTj6i.+t-6D3:kub%2p),#&))V\8^Y,IJg@"G%gZR^&"H&:]G5QHr#RTPCf]N2cB<<.\V2UqL'=#:T-ao'jka\FA!M3V-5-CTIpZ7l/-M@HJ][8-l*.30_X62?,qS\_J\2FBc(,mGjMMWNl>I&7H8)kddteVEbPpfr&"QtF>;410:Gb(HGC284]#l%X(gT,a#&D9^6:E$\8)pDWXYP`*Pc$uZ+S1V.:Nt:C=]u.+bmuJ07%S)r:Oco)B34U=`50,#:O1E:a71t::J4_;\nLgT`6nFG1TXO'$W7:?T[&.].)l[cV0:0GjI<^-FQV1^D)/]YZO,HWGu5$12(4K!t=jY`=:82R)ZU_2,ge!FT)Fe%^cT~>endstream
|
||||
endobj
|
||||
24 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1224
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1774
|
||||
>>
|
||||
stream
|
||||
Gatm:?$"IU&:O#N=C.B1UoM.GkCj3RTTGiY4?W;UFjsB)D!,!I0YP7#Y2mMYD0&Ea(j4h-d`Q4K3P,V#MM$W/]E!2G_V#.uN'hn#9G.Zr*+nHW5::9^;o_:>c68>WM,c)\$s,0DF[mlO$Xg4M4o<$G$%EfN8PDPSKJ='Y"[p=-0F@CZ7UNI<e<!A^]PL:/9]"F%KU8nsfs3(dGAtZL"KrqRj+1rpi5jIEfr^</:2MYE1bS,g?[L_gEBF8nMdt]*5'UUiqKL=@4Oj,fg6U;4h#9C/\_A#-KkYi]6fdImIc>=r#YYQ4EEeCoa#r-amrNpl[]QU4W>fUm):":46mrrDHYQhVpZm<!4@U^f[W2in<E0Ik`TZP$DZ(6BZsl1k#8s+0m%10lqrh<c>hRO]4Isf25:3L=f3*"H(j73_L<hWUlfsfg=(=5Z5)/B/R0T0hL/R,5Z/$62G5CSGgmpg[MBI+'/;"]ND+<Va)&O_P')^Cn&tC*5bc_ZtCE=Yl8?Gi"8AZ$sFc(""+\ZV;k86Sn&J:ioV?GMSnPDGRdXn2KYbXk'YO*C!b[]?s,H7G6(GeSuds#0Wo?@75]XV(>+/`I1^A0AT-]h9n*D/iB1;dY6o`8@o"'oh=ILBonY0!-'K1i;5Q.ZjS@oon99_m]=eRVJoWFbPs,Z1.,jAbAG$[c\,;;H99I:P`;@'6?5#Ep5Z7^a&,+:/4h3)eNIN2BH';)RKs%L#dK$`J:5/>($<;Q6nc@Wmu-*d-epX-!(aJYoHi#-uLn5`204Ok4d2JAJ7a*FQL1:p:'d<<`e7/odao*5`4\/T#rh<<ZHI%8-dbgT7]$ojTU(OeDW8-HD8^;;A9<cQ6#W8c\7Og7g;Of=ZY<dZ+$\bHn;gG)&o*p\I*nLEcS5];*>+$rrtuPTO`sJgK7L1N,=]LMqVW]3jBI>AK"#_90ZbBT9J;Ja(/Xml7i5<82!n\$]MFr"^Q)hu4/_N7rsSaJF0,[ga:2a(Pa]*d(*QM;fJQ!&!_!TObc<8o0eb*-:)2<8i=^Agr)_neAjG\e46%U:uMj7&/UD,b4,%F`ula+8mTSI2W&LZg%c1W.S79=V_;1;$6i%A3.nc?^Fc1ORd@[/odq7IeT-'A_6?)BA^VZ6Oc4hZto5#@SYS+dFSt18XJN,5W.H27M<jC'YHMrUV:csmglaT\*e/1Y89FLYsk`JO.30'[$0CQPq=f=4e-K^+7nrR4o~>endstream
|
||||
Gb"/'D/\/e&H;*)EU,!]=BUc42m<fegS!BNF[`tRfWl$n7*Dk^d\UK`l*'!,HArXu:)alqYf*aYL:fT4pY9i1:pBGYReO;l31IgLEse/JHjS:G%a6Ta`I.5b6C>f@`s#oWQ5q_'Trl'pV%Wm48%aq;'EZH*Ja\+&:_En>!"@3L54q3]=?`0M+MMLaJHI0jXqu>Xo/?+U6e;ff4YJo[ho$>pn3Z+ld:&F8$]X*Tg3fjEWpL@U]"SRD!iE`IH2e4Xb*87_9$/.QX;$^s'jNNV_p_]VSF:_U[p2(Lq&8CV["Ep,a0g_=48sAt(VH!e6q*Z?5GBtJ&[6hK[tnL/`FDVU^<K4,=q7:16)HN<LX5:Yb5t0qI<)K115Q>p&CYi'Zir@?2d7mW'C]h98u\s^0T;]X`s]"8%$p^1mEomh1+l\LK_@MTf4r/dcAa&Wf/=)MVO,g,Ns9;si_g]AcI^]VD5Ii/Yi_c[Ql7LgjGqFtXu%WJ<?K/$J5U;q$C=]%K_OrnR8!D;_kZ`F#i?5HYCb\NM=4#8_4&9!=.l@j*p9!RYi'(-M$-"T]UH7L3%Y?h.,I?@-gOZf;/gFaK'X?AH2#NrHNpYV`gQ!01RN.*BYm3.na\);I5'.qDA\aK#dn@0T`TA_3`B45-7E#M\[W\I0l_TU<j-BmT/_Cu&,&Ye`-K:A/:Y/B[!Ue([q7F+V#:bI:opYIWpN+8'S",DqN4Q%nUnV.=ksrggPW72K0D>sO.nY_a4^J0:KA,R_YUmHE!J^^3,1]Wie,1&,\3-bh,A*[fG7RZ-6]jt)a`GuY=k[$jc.B[f5'Ak<jdB1nJ09O[esF4Z>BbIds;`Y'^u`uN,*;=R:Ia%Hr6$\M;e<^0X>V0WAB1Y;7+`%-ls[9-\T8T@QU1Y5<&%tRqa;n?L`8])`sUPFU@gE4*?j-T]`N6a<l]`E9*eLF7hQBrI5nHm+au4=/@808"OWYE2=iZ/n><0S)TN,<_u=nkm^OaV@h1FO(D1].*FOHl!C+P).)9q,-$ad45;1k]ssD,<G<^VW3@=^!nj6;gWAW'cLA/i49++SS8k'EIQG<S1\?+9DK`jAW>iFcen(LL&;ilq]7LD8$n)r@(5lullL_jUHiQ<Gor"I:/N@^:M>5("G3F)g:7h^&%Seh,Z:=RJ:),,,',mD.L=[F&NPdD+/IbEo'\MH%TUFU$m,N7Q.$3Ub\^O6k<u#Q\=#ja)>\<LYYHB"7&qsJ+9hlU_mH`WI!V4JjN`nlYg$h+.Du*%@.\]HS1F0\B9(K'lF@'=$6!h=2$;?Q!WXq>lL<IrJ&Bc@LZe1q!8tP9$dc34&DQ9,V%43Ts-*u!pHadP!DGrDBYHsZK7ic\mAZ=Z:L33(X6=WiTl3%5l&:R'Nln2@]3*JkETA\,iO'uAHdhd`'4Stpsl4Bd!o*pfnZ9f_$U)]k<8k<O@K'0_f##e=?q9ht,$L]6:Ib84GR\Ldi$g1^]5%8*_"Hq:Kd7:?D6<?o$Q*!u5(W(V%lWmQVG+lI%6PS.c"1q6Q;X7`!HZ+c9X1jmq&O(9=q"UF8\uek[R$Bbg<peiBh:,V8GAM/#'$=Y*9npYHZa*Js8.V]ko4XcK'am4:gQ)"[E/s).EU\I6X8Z%oU8u^--B:CccbH6$j5L>\c/'Q7eiuCG)(=M[9#1EQCiX@\T4Une"M_a)(!gssi:K)qFmi*=E3+;mddse9q<_WZD?#jrkN3`G9DmT4Lf;Va^%0$Q.J/+KC5mU^hTnI[&qMi,'?,(0H/:Bk5#RdG#NRiHSc~>endstream
|
||||
endobj
|
||||
25 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1075
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 2111
|
||||
>>
|
||||
stream
|
||||
Gau`R_/A9k&A@rkVO,0UU0NkU,cd758N5I5K5A+r>G126.utG!P,M2t]Zo&P8D.n3N?S0u(n`/banPH"Ajuh]rBqK\)W2fp[oWWaKR<ee0a7@^]ZV[`'<ti2bZL*#8cLTDAi!$5-?PBk1^5:<WaYu[PF8.$>WHN8[Q$kVS:EG+;9J\C*5^\E*U8-]/Ds,e%(HV5D/j9=#>F;,@_4_*@@CQ\h8?^`J%EAlE;ps>9??#c/\f"h2Pru9V=J/(NCV)Sr]&j[3j96DJHBR/aTKXME@Mg\+EfG/5j,5$)S8b2fR<?+V,oqd58@.F%@[=QidKcZgVX]9*ig?J#d)"]&=&7C@:@bNR#]"09.M+n7+#-U]#V3-bDK>h"tnN1Z]:$.NFstEM+WdW(anQ3I\).S_;tb7/$_R"<NUUHNjDUB"knGlL84e!D8umYT@OI)j541^gYfGQCN)+;GT,>pDW_]P%9T_D2J2c$9%0"5rj8mq%&2KF(gF1]Bp$CEQLGc]rWGs;k_b$TVQ%^MqtPH*7\jbeWp_Sk6c'JJSfH4=&gB9+$@(LM&![G\LeYYd>=4J@D!:l7,!:rj-)n4)NBq[X_4/$(RhD;DV2\jO),"V./T#d]%Gc0?VA0@?\TV4PV9"3eOcHFjZ[Ma62&1`OUc/gTWEZIDRIKE>UdH#B9o1?KOJL[;+[J'@e\Q:8Lp_G1DjGI3C[L%5.^fo<BaS[';Jfu\00d$jku54BFG[6mB6N>374GcAna)Wl;8W(toCRqYr./_h*AM9JGsppsS-/F:YbN+m/#pE/2ga%sM2eo+K:EPi>-FElWPOrZqPm(e,M.sBl\LaSU.?9QLYCKHI\&_0K.HNs$JcGCf13iE<@778GR$:cgUd!9KC\G5lW$_R6bi,:be7Ql"p6AOM#>`jqO@5I=o)[,9O;YWI3gmR3M%8Y]gATT7mm3(q2fk$gW^boIf0$<Q_-`2,I3,F8QWg)Cql7@JAh1Q9Sk<oUWLG'O#(/uV[7A4DA'L&Q""":oZ3WG%J=9),J7^Yn&Q-DIoH$%n$aBg^S[Sth\X7a[FHsVVl;Xi87/TVaZnfX@.F~>endstream
|
||||
Gb"/'>Bed\&:WeD9_1Z!;TJ>KEcQK[VEN%=e'"%o+.>A!,JZU2W%@,?BE.jhN,;5oJRm6:gTuu\&[q>rS!e1a6bp\h.:2$Ki'e0"?5"FkoS,UnbCeXjGh$SXCKXEjKUr^?)qf,L!NY7L#H1KmJ0.lZa6=.km*LVV&%m^#;:LH<_>D*2KV0.jT<nl+@:4kQ#?F7j+:=G&GHJZ#E,!YhK:m;YrXrRKi,u,o7#*I/IlJ<P6-;pPZau`>'0l,_QU:T:]2+3$+@du@a&6sQ;_&WE2&n\Q#gX#iT:I_iVbB7.h?ihGQj"ClHG47lXqr]cqM&R%3`*2TkWKq4JqDaEj9)\ibn;u^1o.no%:aD3ZA;49!E)n3c_r`9[?+>1nSu2DC!-n%)85\[Dg@I^DO_6f2@(kgZbtor<*^0Hl7q0dP7ZItVQ.W[bBE@Ue`;1W]Vn:rO5O"/0>'_m>>aEnHTmi\?Rp$IF"eTKe6'okkI[.3N*G=CiCi;n1\o=3%m#Ejg/_1!7DidZX5aa=!8"VFf5[P%At3QH1hElr>L.R-Z`RL]+$2P\(iJNE]/XY3PiGi2CVs#4_$L3l0kE%6R!Nqhqc$*+ACu-MNJ*<o(G`**0g\-c^O'T=T9u'$V?Sh1O)Ds7]iQo-ZJSG[L(M(8`FG3F>@2UC#3.N"';.tFMl-d"ZaGo,7!0c&CI5GVp'?]n>#_GaD-!s4nkY7<rL;$W5Z9`._@aK`ja=N8XMX@h\$aob'TJ[A?C?=G.ZAg^?;jSS[MHYb&(_1-E%NhD_lN6aJn0LLG#Ei61PIEj3_4qL<\@OuQle1'ZAY>*pTL5/jXq:[\j$6T.T*A"n7B>sPa*YX8JnT5kn;/e,U/5UC@b[l3E_a)psm5jieg=M@2/-.VP&02&m_"V,uk/+J=!ghUme9$o`M#R_&-=*f5&C6M9m[igj&T3eM*5uL1E17R(r!CUMdfsGG4H<P'tg`_#MV4EQS![Uan/N(tMSGR4t5&9JXk#K&W`;%;.eqTJSA$kU*/JOJod)`5XpiJl[b[Oi?oEoSg*E_("J+];cYnHeF,"oR$uFLK,8P#PK/pABp]H^lE._BRI"-[s2$pIQ'_"VqfUl(c'&ubgm/nn(AZEZZD[$+%_b8[i2S`cs:+a:+[F<kG[t!-#%kF1/5aQ"_s65.c)VegNf5e$s5GZn=0Uoh4*]u9?,SekXE<;g.AY00CI.1Rpi>O]#p=48$"6UVYT="?h3J6$iL1)S5PoOhhs7`*kO=U%B'e>5c`u,P_j7PY@ku!!'L_?64+k@af%nKFY7MMO8BcpA?&L16rA:GAisX`Y=R5u7aWAL[p`A:Taf'0_Kon0j2W+7CbP;Gc$5jpO\A6c%<1>mldN=U#JY$M7QQ2V\YW`oR6bPiAP.)s^/>f]1>%(;jgOp2l?++M'q3"hPa#sB""43N/sDJ<2u42!b\L5U,G'u#_]jB1SFQ:q9gk.BXKrW\jC1B.:6sAMb1u/LpD8ec$snrgaY-+&,Vh;\WMo+n)@'s9r[c<eGr;*aN^]gO&h[+Vc;,?'L+]3e8MnY7f->H"QusD;s!GRCBbJ?>(V0tu:\uP[Hf-o,UYsFQoQTL@I3TBZ:!L=-c8%"_j;.-8=:-VCbG.h-M6M-<31"2Xj547W>mhh'/BtcQQ]a-S^3hfO"Kc^Q%7A8op3$,DYZr8#k_)s;gfi<j-rlAN1p*ep3-t>!pZa@&Gu<gB'!,tYH&1D!#HPHJVCkV2a?3)N?lks8fgI1$eM2oQmJ7mYbk8b[fQ=0&/n1AB!AW\UcDbErmIMeO\)F(XGl5&]e%ai0]D1&`j("/$3Z/t@.N@:!aVqjm:Nb@':br2S;c6Q#j(o[S1*72NN@\S,@ujpQj_TQi(\r!$I#&7IELXW=;C1bNa4!7n/;`F!oGAUR$T$DR,8O:(hU,#.VXLINc;f"[.VhNF"clPd:/"N-8l\4T$u6cs6dXbhX-b!-q')[bW#Pnhbi6`BrH(WA3JCbEd0P"YS"7[L,h"tXebu$YXZY>G3Pq$,fH?Z-mq-E"jJ%]mJ\7oqo'(2dDImgJA_.ruj$"A[DANcd7`gb3CkI11B86!YRo1cK;J_HUkrlDLgo!_<^iE3X>5nSHcKP?~>endstream
|
||||
endobj
|
||||
26 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1269
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1900
|
||||
>>
|
||||
stream
|
||||
Gau`S?#SIU'Re<2\9j*;FGrbIqUeHGY0Pb<kdo:M2BXZ3F=k\%8<9L/V8%JGP,pM_NghrG+=+1:7Im$k%hGj("SD3OJ)11<R`!5r#;0Du!$8BNjtiCMO8_?&_jbYg_H7(7U5Yp(%;?_LBc\@_8n$QV:]8e,;[GSUMZqpH9:3r,2[IHR*^eJ02@`^@<i&h521dXB]'*MAcX=KPF6TPt?l4]TJU[R>\WH?`=,.'o6R_KADQC0t,s&P(]10.2G'e=pk0H3#hs%ZV?l1T>ZbusY2pTAZIiJL(..)"-.U@R*9h344_gOl`4g:,B41#B\,@"XBP]F]_$+cl+\I]&]839nkKP0D%K07(TaEYl'4s&]ONq(0[nA1P&>'IXn6W9*[FSR2I2]"!gSR8ZQr2-XfV*k)](T7jSQBJ),OF&^;aV]LQAn@t$<1k:SitJIuI18j"K$nV>o_%a(!rXGac4$"hW;AC4%"b2o8H5/b&r2>%.?d&bm3Nq^`qWUN^G+=;!<2#:Ab6Y0-P81i1f$GVqia=$c!#0W'(_S6<e3q)j0=R:JX;K=j0ug^pkp\r[m"_W?4H'2MlQR"kkb/Rfb9Slm8^PD88:RpIJWNVA+*+,n)QEZ2+aP6L9c<&/9\["Y)N=B_]f7)((mHkBaU"Xr]#n-DKY@s;FIYXFUP,UT>*h([2R-?*&abO'-<BHBn')7NNo/Ag8h0j\lu3JEn+WGOH1ea)?#D?HpgO[`ZO2mhr/';*X7t2FYCK2UK+=I'e'/`;kc1i]mquVU&hm&qa%2V-uE6)fY.?l+GLK[I`bR99k?5<mtupB(<'.`%sf'"(1^;*S&@TD&daNX(eG2g'3R__LFnR/2bh;s+6/Gn/51X<V=MF]3A'M<HECs`"LT[!cBtFqZgo!1gfrDbS#DmjT$H2a:&k"aeSP*P#+E07MC`=)P4$$`72h-T)eB_=l?I=fh(4TC;mTnWG;(@idt$7haHr9tn&W42>WCF<alMesR0kDBYPbZMeNF]:N7#r:XcGheMSj;"&CL6,nM.L`%dh^>_l"TG+OB'9S`%^NH)j+Npf*B<%2XG$nsr'1R%d8V&rLY#e9RF@nV8)Wgi9Firat[Q9$PT^W\,aso(#QCJ+`Ni3f@k0?Vl_[A516aj_$>nI=lY!/ZsJN9350;DW)O`_djcT_<;4WU.ULVY_W]iAjCbP%IB$aKId>*,#o4,Z?)!CV'#X=reCkqU"VJnG.C^bRQfL#^R`&l2fqp(q9kYA+8heS8h3Fsb7BX4"`0r(C&~>endstream
|
||||
Gb!;d=``=U&:W67f]l&MUbG&c,cFD69kq:sS&@n#Ub@1j.%#V16R?G.a5k!Z_-8;S1iZ\l,?Z/_?@9?m"r(FGq",e]B+m6aB#"hB>QEf;_rN*`9a6(XLg_54[t'itR]Z\02>&&e_&rs*-FR^"$j:^/E&_gQL_-]h"6ge\3KQkCGW9(r*1K!@!tib_KtTcj'&,*:1aeT+]Bf*SIR:*u'"cR%eL]V!%!SquW.q@p$"]E4_'FW[ldPS]i->sVbb$7S#k.=`qXY]P%E!ap0AoZ5b:m)AoDqW$0R9T#FI7*,'$K@].as_>99up6CDabT!Yp't4&"M*(MbY3;5r]F2A$_dk^Di/<]YC%Hds_UVA=JsN.,5ITX5q5LPZF@jDC5SGt6j$>:)2aP$=%Q<-'EVohGV]hA$/7/0oV+i<9qD$9a9;,8KAs^$pE;!I?\)Mea23HYRFC\5&2$P3G=0\Vpj-BPF?LTn8\ciH:;Q6b)i!OLS2O'^i***8S^*;Sk3>n]DTPR*-JD"@)$h3^k6?Q[A:a97/j#Z?ek64_5#]S&OMC0@sM<4T#\#>.J46pa0cng.`#[4>)>qhUDe<3hS@D5Rs(!]8u<9`k9]dFu2BqNjDYUP7`^-_&?IG%/6Vr-g3@3Tji.^=seQ,>c/:n81AeMaV6o@+U#OG<(qfkma(`5efCkW;Lsc]e\1&Wo@&WX,kl>iBm]28\=2NYMM"&-)ta+\DIk^!Ch:mmRD5%j/na!mg)T<>7fc>r8'AWhYg^ID$p4Zl%f/n"4PO>tgKdWc$3'>7J:uhB?5UgEOSp;W<OOFRDUtFN\4!t>ng9[l.7)/+&oJ#GW's\m/ohEcNJkgTRW64gVSu93).Ac?2KfVUGF8`JHPg/&5n".Q?&/^?EQZS%=UPI>:efRp2=65p.&Tga7FZ\^6*nR-'8(@,Y\M`o_C`raRQ88Z.Q0.&1b6YIr=KMVEJ3O<VCaUXb46/87;E!BFfjk3CYF::_0f(d=o),7$P%%d1J1&8/NTSJM/+f_`hsS\[T17kFDq5pb5`KTGeC]tWi95:-+fnInrl&ViC_#['DT54&Da9p>@d4/TL?BMdnoj\ph2mkNP=C=(_s"d+JhYVLb+<pENC@IOf(M[k\5U_aq%gc$mkG-BXjZD[tnl^7@Q.1np(1@dj0rf(rbXn]*un2h;["75=r"q+SWOl0q=L6#C9&$[_Pl"("]2tU4R"sUN+ECajuWdm5S"Q3KA<dG\9S^@F=DVKNc;5m3>Y#X:lN^j7t+&:fc+8,<LBo$Nr1<b8e,FdQ\R7Qpj[^a.4i70V+D2:5pC?/N:'C;Qgc?;ZCDBUgB`H1YU!_B*?n>"^(,t,lUt(Ga;%lM?U=h.^NsH-Z9G'5keAYjs]hdLH0ODpW;g^J>W'@r__]WKPaIFoD2jj$OoYaF-]lMU(;Ct%fW0Ei>UkgL!b_"-EMobZLuKX`p0J9j,]mNcI0Jp:nFEh=oSJ4:t?5(LB6VR56;fES#aEWa5gu\FZL"3*$]Vr38WqOq"a1=n_qZdalM[3^:@qu;]e<,ONVO9X)-l!jSq/ZgtK[7olWZF2!R,sCS`*(f2'WYV#:n#b'-IgZ]B+oIFsl`Y7[D3D:$be(ado"5DCGUbOeMA@<4io3W(SOr!I+O*QSWU72,@>n&EH!D'SfX9h9hriH2'hcO8]+1Rn(s(<l&Y]K6VC[U//t,#tQWQZK-<j,IZK>$-j9Y$er+1NaFLFAgF=EP6TUq^/7El5s8G?gs\OaqGZG"4""V9_Q`r_<ij-h4am0gRN_^MbB%RH7J>h653_((ZoHedhDY=r1jB6=s\h7GAMN3oT3>:Z)(Z1p[Kp&Hd3]u/g6>*oL`C5O;Bjqk]f?5)qU.*OihWd<\b^Sb(7]QEH-j&A&hO*pYleirrD6kU5A~>endstream
|
||||
endobj
|
||||
27 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1812
|
||||
>>
|
||||
stream
|
||||
Gb!SlgN)%,&:N/3D"XT7;MY<=&p1&3EU%)oe8CGSge9MQTdX#p7?IpJfo;L!HPa=fZ=GCYdknANZuB0<]q&GjJqZEGru95`SdqFnS-!7U\,seZLVYE%)g'q\#]lES*?_epCnCauD=[ckm_n%n`:]No6!,0?*X=;G&],@"E1c;j&%%"j`uPN*F"L1,+G)YWE7ag<`+9@<k/;7FIs$6t:De=?ED(BZZhQst\:U#=eP^6Z/F%Hi$tdl`mFCYQn0/an1n5g_";dJli?X%K`]Q4AJR`sMULZ"M,8a\'i3>;8-'UJ,EGY%p$U'bh1*>bR(A'X)X#L*W-0,M=E=JB&]0nUo8*f3BPtr3"jF4=R5HriLeU@P-.(3s^9+/-2gu.N`B9g]rZb9#sGtS_'+Dj^j8d2?C=r1:sBqQ)>rou61?Hk9k`%mK0f>aJOP3E#.a7Z(rE_!='qf$c[K+E%6&IlaCp%;:ecIu4Y(G^U^WA1bZ"PFtnA\=o0+s+iV(!BH7;$lLg0(-^d70Go(/+:ut]?M7$d2:D2[AN]@VTZ8PlX6/11kgTO.No3uRDNP(.abRkUnj=H'0(;dJsi1TP8GZ#+0@hSZNA6[<Shu5PrF@39!:E[J_ILDBFF%/KO6&l'ZkU43W,>0ST`$@Bp4kr<1HO.'ng7ZM&[#Qk=p-884c@9=^";qgo5(r;a+e[j5=?r%eYYFE8(@<e=s[8XBRoI-o%gX6(0.E_/UQ/*U\1VA(P3fLC;:ACkc\.GDX9jY<=)02.<C(UWasAF./#ea*b`Ea+d2G`A#IOeHkFP'\.Sf3g=kU[&0rpR+7]A,)_=J#HP[EmVfIHrXCrQ:0sO9:W:'gr7lE1&L@Ie4R<`R;<Hl>6`B>3mdAW>Ko8oFq!7nl;Jl)D4Pgmn<e*/saTG'iXlAkHd!Y]gMF-Z@5eX\)QK<*G3ZXa'4GGg5WUY-?kS=g^G(i59dfRQu)oCcG3.H'o?6CXGU>^X?m9j2k-5V9!@-/-(*f'&.q$\st.Kbr&QtS&EfalhG3$'e$Td>Y*1d['l&]b(Rj:60H:R'VLi0Kb8(&mTiD4>c.A'OF<AKQ*Nb:pD!RoJhSoYC%_Bi]`;d%Jm)_L912PJ,/u4#r%b,gda0C#&rc<aB:80#KYsHh9fG,u5Yo1-tMJE,t[=r3-QA=9quDkM]Uh]Ybts-$57mAYs&pm?35RdSNZ5e3BuT0/2Y>NCVQZ*iEj:ITMN#ahssmiY=,3_`P8TD;Y=$h5'6XA[Ji[q@=L^r<iSM-@2#O5t=4Q@QGB5,?Yb(+(eF9r_-bhW7qbKfg:XLf^*;:&#Meh9f8"3;FoVfa+3CuNq[;$9p;u3mqM[k1YAJ-+jUl7F^2;ff6T&&lbTc,PVkE*E"SkZH+If=SHc&`G9UsK+*jJ);FTks3g"0!Y\(2P!\_0"PFp.]81eH#BNL"8.aor)2iFkfQg1e>2)]E&>SmjEA..W[qK)[pnbdANUE*+*hBn.ZnR0$m2f8O.F'2uIh?7!c6]CA3UDYOH)N^'2;:%4,5m[[SK=pBX`CDkr=g>]18,N-Ggk6AqO*PED<M9Qbjq?X`26$69,`Lh]0@\KZ2+@KoP(0JTk2I&e"(UPRn^<b_j::jMq9BfJe(]I:`rS@KF3As@2Da+b?>FWNU@J/mc\q3(SK9Fr_kf:uha31U;q"[!`@m$*l.SiJ+^V`7r]`_NC7XSgp"Pb06&Nd$FN'._C3+/1H.`QQ1,K;_M]I!r42L(<<pHY@>`OKAcW_/S^Kb+5pQgO09-*lcDcrr@?&u=^J$=(<n@!ng`qfLsAbrKsKq&iYE'`Z*b&^e1~>endstream
|
||||
endobj
|
||||
28 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1790
|
||||
>>
|
||||
stream
|
||||
Gb!Sk>Ar7S'RnZ;3:N,1Zns4o''5f(g*K&6os1=[qVi;pVJX;XPY/71G2%N(&TtK%--_Me`F:3R..ZE/Icldn`=FbSK+5Wf$&m.I0H2>H@%;2']RmJHouSDdCO9:dE?o[S)i3qs5EIM"(kbOeht@pYl4N9#i0"[$I0hh"o/u/$WaYG=@R*&BHBJAm9XrM6g@#U)[de$+K^8Jiq^_JQ+eDKb8idZmr#uu\@$OV!Wl#-S_@nWV_!oV'5;1q`ZIE$]8s0HDjJ`Vi3D=;EK4c!>WcpKrY&nskP=q9*.LtZmE^>P$\@3"F8nZ8r4B2j;+)2\5$JZ-441&IVinBZ2/h5)UP\>K'0ZnbZ:"5,uW='ABBN&@JSG-H%ER-/[gWW)%QaGDt:,P4S$0B\&cH(<+?o<#LnHn6iCS9rQcA:LY4Jr6ngaO$s&i;BMeNQA:,G(-jf<b^Vm9,!/>@A_'BOn7=\(\4h#1gpPYuH*CQ]KEPpa0T%O]>A&SE:LBB!r)+H%^Ln2a/1?i(V11E=-Ir6^FWY]S*cW&8sK`S\j"J1;5aO)DioLEs4L9Oj7C)l1AFKL0oE25kLs3khd-;m;Tdl$Mr2dorg^63.bZ"F]?G&Q#AGa1Jgpi?I!!E#ZglCYX?t'qQ#?dV:)og6R12A_.YbGQ,ju*#$3jWUJ:njC(MY[.pSpq_a9'>Se#^'5^9(9T&$Oo(W:GYfi>9k^Z2<6Pt`>:/t68nCOC96cQ%^bNbt-8MesHp@1pI%8N/,k%X0DVC=IEQ19Q'"fBmf@AkKm9#1(rcA[9"(>cIB5^?R!OStcBqK7jnlQYR'+QReVTK;A0B!<7*VN<gsO)YqlOUL<)<)'V#h:5^qPG4eRr0RR#ZLX&YX240"ckB=7N=@`h)9%2i>X\ld6;22=)ZZI.hd6WN[Js?hs``kI)&CKjYf'1oPNWD2t;rhOj0Lm-4IKDtQ!fIbfG*`ep,h0i+L(T,H/SZPEAdV"D*Z@LaAnVQAgTu>_,OXY\\:CRKGd=9X%%]Z%S1dfL0Klsr2I%C'KK77#N3/.RB+pXTr;.TGY:qP-9pqYs_n]^SJ9etZd0(-V0WaVD%`eOVJV#%HP6@uRK*qJb?\EEjou:q!CiIG\*(eE@g*Ln$'`D%^=4R0o345"LS^qdi\#EP&3G"f6/#:(=?qdlgXSX`kkhOiU/3Y20C)YrYM0&?8>dFa?q4_gl_dZK%Fu;<NUbWs.O?9U3jN6XXY:eI3dN<,+qQ0-rYZG89;\aG46^8/7W%<!lh.-5e9lcdFRrsg0K0X)&i6[]j,a8.>H+!K,bPjcEITO.1aRkVk-,CTjSZ,m4,TFf^HD%9IQPp7b/3hSC?!mEeeGg&<doqhPnR\]3ZhN6g\\Dqd^T.f%XR=a%'0M1>Q0Ebl2PN7<.r)g(m$jGuf80uqU;#(7I!fJKC?!T5I;XA5kM^T*e9jC1fRLp>n81Rk_.[*k_0r%MmE$qZh&=*%*iqDm-9D!X'-5J5E[L6ke39llf'$fVb+bep(A"i&Hns<30Fm\N_bTNrm`P+@YYdhNB%jK30ZE/sRHl)-(Y@U__:q&gE2?J81c*C#HKYP7Vc_ZtXWoV:Hk7g9_:*Th*e;+Vr3C']aZ!=V3=k81O(I<''onDOpMN,W<SJ;Ks&ug)eZIYW>Wb]!]YW[FgKh)T-S)\I9l:(uTTV?)N4KnHj:(LTj^fM1bo!Kp'ZO-Pr_s'jSpGR.$G.QTTtH>6maJ;I@+iiC-/PVUhc;4aFM-t$U\86,f::aE!&#i@6]P>!($3,fR-]^UlL<d>f"[cBjkK~>endstream
|
||||
endobj
|
||||
29 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1685
|
||||
>>
|
||||
stream
|
||||
Gb!;cbBDVu&Dcq.VHGW62,*KC:cV\2Z$kugNLNm]2r;mq,h&JY"bc6RD>q3N5!V7^b&Q7-eC$'?J=*mWF"oJHi8BAks-">9i=P]Y-r:_7A"Z$U@<`:&6gM'IgsBV]!6!oX(V)dT:]H!9=?-L-#pVC'^`>m(o>0USE#s"<E?/PRJJ9eeAPjR$F;Xb'E#OBlgfX$-cumaD:P(9Zf%2kU\:tf^YX+$ulRs0o-YTh8A(C1-6N\+>E!H%5Mr2h<[$ZY)\LraJ4t.qDCB^'-bM_:eNl8'@MReg%@<_ml=5(KR;*T"ji;%3>kd`+"q+/NFcnFo7c!t-S7QqrQXd.7MTEPb5iA$AZ>D,$o$BZNRXf9kc=i`%3"!!A0B).D9oU<&/o!tM3G!dS\+`Vmb/W]DpRD^jj'JW%M'3;!S=?n:0kbg.1_m"U2+>>$RWk6A(8f6_adnXQ"l$OeCdt,X1`aEZ7GJ!*g-J#S)Bh<g>ORJh:&650A#]E\I'XWZa/p0OG'i&fg<AE7cLFP@^-f4,l4)`-jCt`iJ.qG.N.Rsh#L)U/g<"0laMXfqO'!]feI#]"gU=(6@M,9g:+YW5)1k8KG1nVS@O=t3I3;@LoImG.%6p(&[iX+Jke*mNR^[,o3)0)#WXZBb38$N\2rVd'^*UiL"_;,mkkReXON-?,?D1!Tad=^Bqp)\K-P_`Ci[m,QZpAuEMfFt*#LqA`NR)SS0eGWW;S>C3SargJrKb<j'cJ?W[[8'Y?2M*mR9YBdP'JQ9?doAb*(dKq.bMWlJIS_DfL6pp?Y(`C%/%J3Kn>Fp4G0_DWF'[Xtp3OV;cj'$cR(AZHF<Tl"F)AIQEGPOCMJ]Q1K&$b5iB/2[PNR'CL&/DbYT0T0>?,(/Y/$=ThA(r1:oL`%S;fq>dW(]]%&FYZTi..b`Mtc)2\P.-:GqJO6sbeXdUakJZ3'Q)OC#:&P1C@srOS$BX"e,3VG!:Pdp//B?(03C924TtWM\F7DHLjP(XfJLi#+#Rp*C5(l`N!i8K$7id\A(\PZ-UXdpR$iK=VcL.[d@tCNIU$FQ(jK>fD1$^ndEF\j"[5nK;1tL\g0Q3(VOCcLfBIXf/MfEkWPOSZf4ooV8BGBZ(9[!rJs%CKcNl@1Ae7"Tn-g0.p"[cB!auj,\VQHp^C&;aQLBKupEXdpf3478h@upZ?IpRe&`r(/!X@2F)`DG2iJ9HbtX.kj^0>gh^E`hJ?Wn0cPR.78%"j32ofW-p\5%hjp@Cgb"*5IMglG%\ruD+jqpTR9g7pibRW/?1hP66G>#[XYo>9=Bdi9lHH_a0Sd9)ao56q_=kkX&#:R]FsKo\CcV?j&D:r^*fIJS:9-Fjk?uca\VJ`2Xu@TZ>.nVVGB#1=X&+<M1_gB<.-*o2GUHl3a(g7VL*2l(&fJU$X/^&8W.iGGiKkL*h\K?A7d6_;c3Z>!Kh`t.WnY"X6/26,_*f&`OHO&uY&l&cLk=l"(\V+Mp`2;Bdh%TIflJ90nT:C,4G3.Xjho[$f+h*YV!Yojd-F5@Q:]Q)NJlfE`]C-KalU^*Y3a(+XFIH=/dZpW[WOf<5@:f*rHnSD)[-%TS7PcA12V6mk"'mY(>V]IX4oV+oUM38^\$7c;AOIa_HBpq@%FbJ?c_bsp\Ds`J@F.O^HcCTk<RZ!2fCSUVD>iQ.*,>\p@(68I]g6^&(]Ngoaenjpnn~>endstream
|
||||
endobj
|
||||
30 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1845
|
||||
>>
|
||||
stream
|
||||
Gau`T>BA7_'Roe[36_$2Tjb8d8Lo!5"&6Y/!=H@+J=/]hf8^JH16Ou$Abb^WX1KA+1+f;A&kT.[F8=,;$n-R,rnh&a4;u,b.0IRu49m3iK^fqMN!GsZK\P:E((d1<E&eJ2Qlej7K*X#tfIh@c.-_B*8<A]@V-F0DcT)JV+OMmX4((;nRlX.C;9Z>2IH.s_2Wr.b'$I`>p%,#-b)#3n]9EfE/:N]umU2kh2,te+AX6iBGR;8(0AesI-h0O$rcoK=n7S&#s#bo?k70V%$HN"L%c`gL%UaYbj1C%3Ml=!2Z%R517*frnY@`Vm'DfUN"H`qh7H>2X=Ac>K.@T=\.,/?irdZ]F>eFpV"k3aN!Fe[2L$L?B#L[T!GjDbV+;Ha=S#+gC2PH9pm1iXgnH\`U?k./Z(HJI@bpBM,(0&3UB>p`OJpISl2%SXGDj5"MV@>96nF?gk&LPGO>1W7lUJ5gq&'bEj0:>UEntT+iDXOiqW7!2"7RP1cE>uE'&_dqPc&Rf,\'EC#kaieajn]n?+["=:K']\+:@E#mNgc(C`/uP41V\hF/;PP?B!]V+4+ukZ!5A)qGL-DS(P2]LIs.)"!VdP0^\"&'n4kt=_66"+V'8mCSB6ds_C"F!;.Uf%R8.'n/Z1X$-c7(UbOcAD31:$5r>l<?hfDQE'[5g'K(rm/,1i_Lj.oYM=(t9`UorLT1fK96(jn>4PU"F\O_C<%I@(EfDlHUOqnMhRaW-dPY**':5<dJ'(a$Uj?OWX3G<Y^Ka)%.kMaG%ibne@8EVe1KkgG@!s#(@Y`E1ZQH/@WgT&Y=q>Jo3^B4iU4:ERJ@@t8)Qn\M^ZY%,XL!A]6TpF?Z:l?72Eh=X*pR>!]OrV"$8e0<,Fj???"$Htr8@CP^B/1N3-26o/_.dc)BBEcf)\6=N8n[Bq_/F>k8*:H,a!FiZ/8u;=W#rKgK7O,>P8.p!GE7AcaKJ8+1X0$q2Ji$,PBOQ!8me-oK/3:rG%KA$LWp>YSgK_k"?!$SmD/p>25@JgjQ$6<Z6keP@DmFoPRs;IP(>.X-?D:@Xf@)2"RPFkgH"Q8e@6!rXbHuXo&K;otoiWqA@HAf6@qK!4@+5d:U[S>34VtO)s4\+*2%:ZDL/o7&Y!VWT%8ikT<(g&kQo:ahW8!D[Kf6k__s<WCOA6M?M'9Ee`n,dFd?5@?%ueDUNe:K,YID@W?%!bgL:pI>$+`:GF@)u\4gkCsX33RXK>>!=QM4/Dfu$p^7irhg$+bBG[P5V6L$>cZf7cc]AZ(c/FC+D+g3I[7@DuW[IdPDbfRk+4o$CjbY`kE^-UEun>N;QO-oeP;/8>*pEe,\ebn*kb:Xs`E'M9g`O&Iu98!<pF.4<>Z[L+H#Yo$E@`N.9@)i:m2ERP,6Qpkf$VHek2@2<+l^l+pHo.j"h/]4-lW04<gpf:735#A_D8&afKEqB9T,Y<@m<B+J_YIg\f7o+k"66d<l-76B4k7F&Z]V`Ns*C+UjHU(TDILo>jPsqdAUj@#9fJH.dK'3s^qOmmPm\[f*)\D:gjjge;Dap47c^##B17(tjWM9&j/(EB5K\oXj"Om\u`G#[_j*979*.&7Lft&lLXj;0Kn4e>_o2l6+E,g0+KA#HX:Y!P=Z!+NZDABPuD;-;+AmVj86Z(I4nW,:3=R+`WTcuR5;$2?U^K^LqNchi:a&][Z#!#Vq^$]l:[fbqUc%F(F22(*B\94kY4OZ80/Z/Vm"\An/ESc'Ff@X;4B[\Toi1NGb1P6g%M6NBCMf>,@is\s[I%gLt5fqdaR/,</+'.)*=,D-h"f[!So=X\7:P)Si0D0JK,sb6$;(9*gnNH7.Y#&omiAK,ANn2k#i#cFG&B=~>endstream
|
||||
endobj
|
||||
31 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 869
|
||||
>>
|
||||
stream
|
||||
GauI39lo#B&;KZOMB,GKdjgY7>BXpZe$S@Mg89"6kiAJ*`Ae]kb(<=dI:\lY",.m,'C^MVTm-7a?+gq7pSRUr3X3)bi;AH6AWR=NEl'!1JPSl#DhkQY#p'*:,L;DgOP$aC@'YfE+=(C>@LA5F80g1aLls0D,@Kr0&6+0G(n>^s&.s44i]n\+KMf7%hBsIV/i4qA(ri'.kP7PHH8,`hfsrr/a,.?VcoKTRe`XlGJI!A96gre(]5.291G%"Kecku[#1K9"Hc?29\;!YH@A,&^hE^W;a]T@O--?=N"?mXfU,Q3>8`.UccjuQ+8j_;G\TLp-8hGuh&d9>#eT]bS^"lN7IIQMcY[nUdk9KJkk/a..['KCU=*^BEZ%ZfGg"nk,@P,QBP!1/mV%IR`K'(`0:=mIgQ,Us<Rj6.Q!a-4TThV+%UfsTSZ/s9`DK<DA"'ifk&`?HL7:+^'9bN&+T&@4EQ?fA$;8"1';,!=T7]7G2@*sqhWbPg`L3ZYhXb&+9>Hr**EX:?-]EN552k^]Bk4`J"rfW_QAHj63eI\\gGLEZ=#ORHB_BO@r(n(:VZ[f1[>0XD^gWqZ(T1b)%IL?\^j,DL"h2=U4P=!uS2WHFR!H]">8iW,/An\aYS=5^`oR:H$9/d+Z43e:%rtKNCaj(U22g;l&Ui!Y3A0os03V7cs6W_W#@fj1s"uD>i2YV^?eoUh`%J18/dRkpiRAP.BE1]qqPG#5ad.q\FM7YPQpL("!kD'#3DWY`,EL[0\56-lfL\Vf0bVUEX<97:@7e,&<kH_0)H=G^VZIic=P1"m/qrplXcOYR#&+b\gjZhI!^l<0djq:;NN:RA#a<'c66,8QUX#kN@*Y=8/VT1sb+37/EB)~>endstream
|
||||
endobj
|
||||
32 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1595
|
||||
>>
|
||||
stream
|
||||
GauHK92jk?&AII3FDb]K)Wpu@Pll]$ASX5-Wgm=[4Xe`d$Y5)b@^elXs#mK^NPUq5WWc>04J%"Lh*#->0VJ2Mc$Qf!31[t73<R90ILSs`$1mo\b<5P]+C&t4'bFfQE#aZIocFm++9SHsG2+gVe.?C@8BZgsc2pKrA!hha_tBLL!AU#].tLg"[+.t5"jrj8Bh=Q?DHjjHcdqMEU-%hjc1W6Ei==Fi)RKiC-rWUOHj-k6IfK!@hW>2Q7a!niiK(#.dB\?Sc4-:K^mY5^e,7K-#;EoDq4$*RL/KHXTiRZ'9&KM$^Pe"h;"QJI,ZtD3DJ6T!0_T6<msO/S[Rd/n5T"'-@uQ/g2V*#0!XpR;$J-<"!bk=IhdJ)GUntKWH>,nOH7Z&K>d=7!-lCO"i.MH7)HFZnC6OIO=0@3o2[pf:/#[4],n1\Geo(CZf?3=2<YWog1F[bjI-p"HB\&5AYRHt0WaBVgO3T&]VJ%E`?!1uSbn7u6f:XNU.;kWN*?@G0SYL8r=E^!QlWZD_n>fo(H":kObHlo+*q$&/KB),&V)Kio77`.l-DNCK9/oZ;`J6,T(VYEL8#3769OdtPdK"K:=dAIiI/<d$Ln):p$/J_>ZO=rQ#hj&)j7ji;\=-DhQ23k(nuVCbFU6rS[EOQ0K2HP%-'Be8kl\^4'1,0AKI*#;hMM8%G&odr9TB-@mP<;c3\aVlYk%GFUd[&.N/2M+LQK1TO`4DVcKJtuKX&JSj*jB_S!nPISZtt=jkFV%7<&p#@hD<VUTbPDOb.PIVIC-r#X_f0@saUg;G00))`rpTNd^5MI@&i@KdmLLO5U2T_pVWU,u7G]-OXUKn:!=,;a`.`npH#oU::[X%s@*V!m[nj7bTJ:8ULqX<@$7,jQpo>m#/o_PA:Zg<)J?FU+cE3r(`NB[cQS1%%7hb<>J`Orp8te5-0-ZJsOaP@8)t3<H5%9e-s'RcG_r9.'aD,Z;HDaDNf2T,B$<Y_^lE52W"C5R*e;^/&.(qR?l(tYfZ4ONLuh,:Z6Mp3;,ie7spPG%P2\Inp@"__sKKFgr_dg\4Pf-3"hY,njWJn)"O,hDAp8DMA2r<#],9\25FhCqetN4aH%I^Yt-:";t!?jC8<k(/Y@bo+l/iGO_u;(PH\ulC^.pcak+o=_C=)lfk>RpXqI8Z(Lc@F<:tc*%9rkCIF+T,N1&_D?sI&'T`'@&i_sNRgtZ%GHY7&+s"(,l.IkgtVFao:39nC_?ec9=kM`$9>JN#g:fB^f*lkf>?eqP"Qck/inpUbOpK<7:M^0p'7NT,:]X*?13m66hdIub3n"TIqY<-R<pUAdcb+0l799!_*8>7t5S"KR\G_cPGmVfd$:?8tsl-:7(EtRPq,CIIhg$'bW!K,j7Z!lrEl)WS9,@c.Gho[^EHG!h*$545&(j^7[%6cH'`^:_HiD(aP#lAq1=PN[)OdOa;0#ghMW3>ZrW(R!U)T$8MI6HZ)XeuMQN'3PffM"g71H)E<)%M!Gp9Cn1Z`:!\@3BBqca(.t'_ck'QTi":(ReEab]bXqNWW@n:X\=dp(185Lo2H-JOLDVbog9d3;2#9:HZ>G`H-8CV4,#Nk:QiBrWd8e-R&~>endstream
|
||||
endobj
|
||||
33 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1889
|
||||
>>
|
||||
stream
|
||||
Gb!Sl?!#c?&:Mm.(jO\-5>WY/[VT:D:eD+"^=oC=Z`!/BE>6IOfVr]>h>[6kfoBl>+G&pRH^4dS/(Vq0FD("M$n/hlof&<@]H4qj[gX+/i>@q)!euK72sbt[&ajWf>Tf&&SU^eK*:j7nmUb=&`!^h*^o*@j;Ln6Snbp6.Nq9&W'"!8\o,[uX4Xtj\`+Q79HOKEcic1!]"`Z[Y\37UCk8SXHnJZKTZ[SZ(I"F56Z;qu3.!)3m_^Y5=:Hfl9INGO6RcJ`$T1Z5[8I9%"9@u7T2sOSCq+U$c0YDqpF5rp'<!\O]hig!Y*i^EVNHAhCSVD-IKtpg2ap6_A\J^GefHg3Imo"_kJ,_-F0Mq7tf2lm1UT1HSeN*<sEs4o6E='B0oDY9C\r=NXroF?AV)Z-'n)@`_hqQc;3/#6o.`V5uNno(D%C6YND:kC-KQEi[.)YVU=9F?%M&Z4)%`0V%4QMI7f"5BNdmK91mc&Hke"2Z,k*mAaHbu[m@QS*lM'j^Mm#Ll4B;1t<F*M8,IYVMP`l6`5j+2?1T5gI5Uch2CmoMm+cCr6Ye>'.8'Q5O[AkIufr>>2S]ddjBX5<bUDZp9oAlI\J!RNijJ-;B^cX%&BZe6&b<<eRGN)bQ'&G>r$$mD<nhf84CMq5G53r(^+$"]]@V)e+;_o"XI%&Z]6TJDlWJslktX(gK!:*^YU!?0%pA0gG`a^D93_d1Fihe=.;#jd@UL:skiYTpM47U'4q9GU\B=#^\jcd]KcV4Uc.[:$!Fn'0OS."<6Q8HcrGB<#(*2<U!Q90>`@O7L2t.h?T\NKmOIV!`Hg3(,ft5L,V%NG_@ba'kbNBR[ZTTX<!en]1U"3?G+rX[dXPgMenuP<94O37[i+pATcrY#fl9"T<rn].^VO30,4U<!fL`AZ3dP\\dIF7d5PH`CJ,W,Kps-`@@F5AJ3VC3C3[:@1pXn&`m2ekBaMGYrZHP_!?UJ/dd?'43>Vh$YSQ^#[Bt)6MU(Bli3kg=K[?6[>L'_iV!Dg/ii-aH7]jnPcY4ZWLB#Z>#b&MJ0ns"S(sRTdOe'9Di#pUAid\';$g)`SL(75\hjI*.lFJ_EMV`/Gr*3B0+TFhe1K/J2:U&/72+,8`tQd_6o*('?2Aj/4D!%XeA`eM*jQ(<LuG)AZ&H%7Zo(<W?VaAAa,*nu%DCXZgA<j[PN1W[Gis1YdF)e^.r0uI*spSn'64_>F204@>Jo>opBFhl4+lMKa">-ZQa*qDVuKMO<LQ<IM2WNnQp<W4=:-P=^/=;aUlu\IL\Pk))AXa))lquOWRL\6n#3uHbUXsO$1iFlFE^pmrF(9rq\/Zt8T_L4J&6X14TpMIH)3TmASko?Nl*r$Y-4!]fY,^%Y(&&tVg?pT29KO9EVA`ogpRI-ZEhJEX)I-R[gA#J:4GGBKtr1?=5#:7RhX29P]u,.(i^GbRIt]HcK<;jp26kY([l:?9\c(a]T?WIVkYQ!jtet(UU+U1mR!Z%%Ba/1Tbuke:@p`oGP*DnB^Y1@>BIBJ.^5P`P8&MiAuQYQlS+8@T44jecL+p/'<_0$90QH_nj/Qg=d'V2PpmA1H+&7__k"V>q4gPfo8f8[V:*a0>0]rNI"C\C&(bj\OFXnplY=!"#\0H:<m-25*bl;27uWbg)lr(DKXSm6lg'D8]IS%$c%A[U50b[p9'5L_Hn)?^RUT3Y@A!0)e20kIQR5u.W_^NBL"QU4AF86T%tePiPDaGBBmc17ARYpJ)HUSMA@)e7WKSkk=ilV>Y0on]Ua=:#PpZJqC"gn:EJ(EViim'A<&dcE&]SPp0b%mI.t`4`\c,fhjZ7_-Jm+Xo0"tX<EL^LQrXE)aQOE&-@W3rqJ#1CDknY])<*Y^QlE:b7pclY/n;0e:e!U"2euGD;%nbqICB~>endstream
|
||||
endobj
|
||||
34 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1766
|
||||
>>
|
||||
stream
|
||||
Gb!;dgN)%,&:N/3D"D*^D.!DJ8PjiV,ehc'4gib;ktFT#'Eq@@-r;'9GNq$bh?A-9D;D:Ma,M[3-pbXXY@eA2_87!Gn)4]5>osPP.8U6I0i1V)oIo-uhtc%Nb[hi>JCq`EI0RX!ocI^A7tK\5f4R8N@<k7c*4VY0#[[SLFe2)da<Z^OFXRgI[629V#jSq:?!2(ZQSI9a'?>7oqs,d2KN?DHDP\AR=oP0MS3\[#)Q>VB(3M_EqD7@7G5:ABcI,8Gi?V,2pnPo@3%87NQj7QUiE4sX,b<-F-1nC7s%74V'$@aX/E(o!KjMh_SWC(L&TeaUYmSj?/L_dgNO9Ui<P!H6,Jp]F\mKfPQ<q9)]PEl<>jlu`WZ>Xp-+#&2[b:$:e@n#G<&K,C3kU[*pj*;GJ*%Bg*lf`_@X1K&od\G!b,]hcP;Qr695d=&oq+\"4Y!bua.jmiVj1/eRam*X2]]e6eT1:q2Hi=nn.O/08?&9/qPQ+t,i$E7I?I3ia9!PG1.Fj'N?HNgDTc;$+"\=WcX:!hkn#_+PEXlgp>IZmN&U%V,dqL!/U]5BF/e!D;7`'o)Qq["PYddX\Z.TU=NWH4mLH2YD,er\`1^/Wem;&hX;+M!$GVZXLQR6DS^!r[?;G$1j:EgTg7c`K5`I[>0#/5uBAmm7]du:3C'lHS_2CO1!Ya'cG.i]Q9Os^CDdI7bO',7khf>p6m(3TsPCc&:1ZSl0fS*FL/RhFb3/&4g;H5?Q+\9jjO=_0"HH+,$+#]gO,=EJ^p35dM:ma1-#"OS&:[p0Ur!AN+XsN/J!js%X`B4.h*7oKn]Q<eb]=P_;b50D5G_!B\H;NX))oe(P>/LP.Dh;GpeMIP15u)mDjn*_saI,DolPL?C[A`O<j_:;tC2:u@6&n@#KB#/>3o'=!]$uZb*A/nVE&lEe.O6.lo%G=_SeH:90oAqfgGUp`RPBT-SD-jJVo[K6UdfuK"@XoW,TTK>+^.*794?ClY7R1b=P@.7Ffj4JX]^)]4-P]`LAFoZ0+P_<(6!Lg^KU1$M9dSk!U[05gt6SM_aEWp*aeV54u8A2'';Iq@,YQre^]cu=f`hB(XunPgr/YrdB68)(P3OPj+Rhu3)qZYdST*%TR.=t$],SY$[gb_a74sq>_@&Tcf4.\gCoPek>sgnm@ack'S0m2(\%-mJ,]FLKB_:a2NEma>cTg<pU4pjoTGJK0tCjR%ROH@C5`5.CgYC?B/K?@MZNc:>XU^l,%['kqK_tlqPfg1h8On)769I,;_i,9?q4lW4M4P$%8*&;!\<5.GM9Nn$h#Bh$M*170&GqIC>306"hk9i58M'TBWm!%P:TA5#H3/HO'DU-J1ENn,7:#o(e'<b9=<S%Pi-0`,5>j0"$^#7)GA8"@`2qmVUVc(r^V]#;PD)rM%Ku]NN!V]C7`J.$AJjBZEu`-*0fZ,YUcgnG541.qboj5pfeUN4l+QLjiO/LLRedjYY45!V(StA`&c>eT=d_XF/]G8VMi<iqgbilO9Dp)rV#SIB9o%oe,(]!qrlU`%("YKluA,4"uP4:H;,i1i%Ut=cS*Uphk-`(fNHIg.Ab:/r]aNaT#U].DaFl3:1q/TUbZT/dHZ/$7UAkRp:,fepYZiJbSK`Uc1H3]'8#QAWMVgmr$C@Wl6Xh@n(bTVdT8sUK9sorfKNk4&8f'0J=@8?2k7A<W]MgD^@uBD!]lIc][1m`kXMHFc-nY7=oK)YFJVHb(luP->SGkO74Per%Hl,rPTs+&_hCSS@.j@13r]5ti_,I~>endstream
|
||||
endobj
|
||||
35 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1886
|
||||
>>
|
||||
stream
|
||||
Gb!;d>?BQ=&:Vs/R.:ACTNLcUmcA8YZou)R?*`:AV@UNUM23`pD'^ahZi>GD19hj5;P7[UQ3;$bdAOP>du5`#pn@+o<WG6&5lZWAAM?(G)NXq'YMn0-pLfPkLrDXc`(rK[AO'/Nr]iL3.0q.2V(AI)GVMeL!.ole,Y8YW3%p;+%&JK\a#sbTNk@=XJ0Zt1P3Bo5T1"XsdK'ZL.(qhE9#&<EQ]gQ)4&iQc+rEr!/#+"^59M!Vit)CuCqorArC_C/a.g^'>3GCe.7H-L0Ou_h?XCUC=GU5.7(EDPEu7$J$ZnXd+<k,)`N,Z87AXXlOuGYHHn6!;l??(]Tc7q6(8I4[cjS5!pt0YKCGT3<4;S:SKOHk_4mUWs2?]nP[Kh@`["$#[QnGc#6Q3uq.X%*L.1%FtBP/oq^MCXL.eqqB-;LjEc4%ADC36KK'Sb?U@qO8?^OL6C5n$@b:*Sk99QW;_O*"FqLH?pZ9T;JI%<pCgLJE(Z+5G$CYN5KnoF)5>>4;k7>*n_ZN'rNrN[gDhPDesj`SXs",%A`3nKQrt;.t+JX?[JHNPOr[&iG,X4,_Y#5LjLT_81ff\\M$@2C*d?P/E+gALZ+RE/OCNr7-)XCA8_&L-W34#K_l"GOkDK>U^gg3#>t&`q5Yh6Bi3Y`2UQq?oI6VpZJt]0G8nma(GH/NV?K5d;W_7VK6>3.m8X(@Z@`kqmXqAXgjqQDSCR*T8nIY,O)`:PuSjQI5mTq7Mg$B$SKs]2"A6UHgn]s5=l"[*@0^u\k*\>#=dKNY=O@u(KJG>JV@&JlcW4P^*)p7a<^37?$J0/A-U(7^W^8#G2YHM!ADti.&4sYgsuag`*:CUZh83Qa>"**a-\rMURsXg0sk`Pak-Mu=?H/6B;4+uESit-ZTTDM!m06U.6Ub#Odds!elhm0<0\&q6BSgA>(Ji75bHS.SkFO]]X=7MiX,WlE!,e,iOMdZPZ\11V-$9.nR[.Tdbt-&cn+o_Sh&H6Vg!Qd\_A\;LXL^S!:(d6GG3sMd4qr,EH:cc_qOB6Pj69qM'D3l,=4P^7T_c2f/dDXn^t`oPHYV=;^crX*7omW1R@ce`3U-3Tr'li;D.IumRXXJaa22K`M,3YIHmJoZ&h@>i561t@ccp/)@`,IKPLP/H^)H?dWt2e?s^HGL3/ch2L)@,=7]X3g=r\fl+&:uI[3A>5jC]"OlVBK4-<90as`/JmIEVLfN#9Vr\CaE]6PJN6od,L-5mHk'R3dOb<6g:cWA4]fI/%3O<i&del]GOO=H9$=d^?957P)u&Oj)<K+B&Z4*Z=k2^=&3$(Z]",%+V_k+r+ao"k4uAFnj^rJZ$`k5M\ieFuQ$1Zi6"9/0*FgRpOE9I">gRC2D"PZ!M"a2ZWfp4k66[0p3:>A3155SmKsB!W8rlS\IHoAUH%?j3.i!o!n9Tj)d'ACe+0m4O=0As_>A%Sl;A*,>>Z$%k`pHNMj+h?_X,P9@?emo]FsIVN/&lVl@?Hu3SE-uuj0,sTX5*)t2*/G3%E^2I"4bq1$/@P)[0r^6RoMgj3]5m^p@L1OXJd7D2\_6^`J4i$(O(95`CUg=o;s&A?k/dZ"qc7%7n92n,jfba*/n)C0P>eKg"3M+39@$9pFAi2*3`+Ge46GBg$Bc8oB\9g*Nq:*seeS5S%7d@OPc#"=O<L..Z0$^VB7bAF2@dd4Uq2Tc.Q)fkZZ#.som2-+8XP]UDQ]P+S35'C"&4R13Lb@;j$!>*PWck+p'c.*d8Rm>WDqe;S3W%52&[I6>R/H7.&nKb2FP,rpn"NHqWITiZVXF37.1InBesu0?#O1)7?l1hkp8tetn$NuoP*tU`TOC9?`uGq591Nmh[rOK6BH_GB5/m6\B;?QZa0:oGr)KA74&gE'd/+W(Da(f~>endstream
|
||||
endobj
|
||||
36 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1827
|
||||
>>
|
||||
stream
|
||||
GauHK?$"IU&:O#Nf^cf\#fbbFqSKU)5:@<TK^t9B`SNRHCamGK1A'2UQ(>E[S$XVQBKL&YQF5lqm@ITd@+)MarJiX`P<QW>[D9)A56B"c>j-Zh&,h,f#DVX#Ja7mGKVm5)_<<oU$WM-h_"/#MBD3q_c+jSe(Ym@m_QXi.:%&7:'nAUf]f`O7#^eE6>qeUgo0`Q7qi9Xi2MH;`chDd1hd>@N28#O>0@:BUqM-u(("SOIZ`E+)VW@t&oJ>]Yrc3Dfk;'k9)G?L8O$[83/mr)A!?>I^H^nRqB;f-%IffS83^@IZfC]S/oRlg25@H0WZ!tsI="N<^&WbKq?V/8f2SQlC(-&`7HDX@+e)OIO'3r5Y'l&nM::2F;[:.Ushu0SgkVrd:85\M>n9li(n/V:lVJ?/i6a58U$p*/.B3i_-S16VE3]f1&c8cACJe0.8F_HTN/59!']T?OFR!9!?1+sd4#Z=D.@F3+@KdcMs/3o6RN#1[=&5k-XK,6V"2,1u.I8>LO\A7jpB#0+6]11)Lak;s9,Hts(5?S"/&VsotB:'mCpi1u$CTdb`P+8-^8U5qRfuYWIV9E>'M;j^:WI4>_E%c#4?Op7YXQ/*UD;h6cSTQc`$@!(,/3gS0+*UI^c6MQQSmd*2NQr-sL#O<@JgdrKW\3Ci9Tb/a0W!FjI'qWLL=SZL6B"a7M"#lc"VZL5XTJ5[;LDM1TlIpYVB_H`Z-p"s7OdmF`L_T47"K*kU.nP,i<5p-6>-Z%#5U)*\.gLM&8.lIJJF\glFP/`:1hNq,1Y]TDg2=BI'R\g++h?gl>8QZB/(c(FDU+S@TGVg)i&j3EgCX$<M/Ro<J!S<o',!<T9^\L)K3gc),i(R3pmt9QGT@q,&\0`9/=AO[/M#"Xg9KSXB8'.L-n%?%QRr0^bl[h66p'r_(IikRpB\PI+U&4n*+Yh6mDB?$Q/IT7DT4hkG6V=9+braPl#[`_jlQaFW,5E;.YP;/VWUDF6"cGYRA$L$`o0Ks2br;`0^&,;>c/=j/T1j)3n2Y.KX)b'c`ZG>^LfnnP#udY]!;t4oY:;,!(lf^^&0(hK1C%8+7TnJ5>.[Qka78I:t+im619+O5M8K6H5D@^+n,Lq;K6#n,:BPNFn*Z,Vc?#0."1(]2I`g<DOS4FbA1:G*(L%SG``YekFqu8^]:Y7\14[C60)K$ciL@D<*bA=G%E/aX:#X[<"*Nq7>WUM?u!_68Ze]CR-d1V-J+V\P:8N'dGk[$`ZQ#7d6`k47r:qW[X#A<(NaJja"iQX:'%b/Zc(0mHu1;\O8uV+Fn%&oV>K'A8]/*J/6Wkot3ag40O@]Q\/d`H96^[Q<q9-IOBO(/74m$g$<q[<j?n6c%YRg1`;1<VCf`nnqToN9Z/=.k-nmj+V!k_WN!=^+YNOX&"]lFg+aUD;NGehs,_W*)GA,<<J%;SRMoXPh(U@e?gT%fBC2&0QUHrK=cPs."sYZIT=1%8&X<`d8euWmm.5f=Ch:?KC8I;/X(QW8l0;<G"0A4oKhG8kWMQ:FU2EG@22U0fF;H*jT&DYNX4q6^%c-SS$hcGU)U)!U#iRPhf$tJ<GM$Z<mIfJI7C>=.OH3,ffJ_M4NUk-N:6^"7TU&SY,p$W@U"tR\@u+-?Rl1DX&,=CTf!a<?RapF::CD^/>h`?KLK(*G'A[LnDj))A6*M*"@i:kLKiSlQM-b@[!Ypda9j2)6e]C!o57G@druJjSX=*RcVcs68Gn.kL\QX[Vk/hYcf701V5G\0HCqo3hZutcI;GuD$[]p9JD4pcKCLrskT3(0_DC]uMd2f?p_Z[$.5rY7BIJ#dOda3H$)\2iPM/^TG~>endstream
|
||||
endobj
|
||||
xref
|
||||
0 27
|
||||
0 37
|
||||
0000000000 65535 f
|
||||
0000000061 00000 n
|
||||
0000000142 00000 n
|
||||
0000000249 00000 n
|
||||
0000000361 00000 n
|
||||
0000000476 00000 n
|
||||
0000000559 00000 n
|
||||
0000000664 00000 n
|
||||
0000000869 00000 n
|
||||
0000000946 00000 n
|
||||
0000001151 00000 n
|
||||
0000001357 00000 n
|
||||
0000001563 00000 n
|
||||
0000001769 00000 n
|
||||
0000001975 00000 n
|
||||
0000002181 00000 n
|
||||
0000002387 00000 n
|
||||
0000002457 00000 n
|
||||
0000002738 00000 n
|
||||
0000002846 00000 n
|
||||
0000004139 00000 n
|
||||
0000005004 00000 n
|
||||
0000006271 00000 n
|
||||
0000007458 00000 n
|
||||
0000008831 00000 n
|
||||
0000010147 00000 n
|
||||
0000011314 00000 n
|
||||
0000000122 00000 n
|
||||
0000000229 00000 n
|
||||
0000000341 00000 n
|
||||
0000000424 00000 n
|
||||
0000000529 00000 n
|
||||
0000000734 00000 n
|
||||
0000000939 00000 n
|
||||
0000001144 00000 n
|
||||
0000001349 00000 n
|
||||
0000001555 00000 n
|
||||
0000001761 00000 n
|
||||
0000001967 00000 n
|
||||
0000002173 00000 n
|
||||
0000002379 00000 n
|
||||
0000002585 00000 n
|
||||
0000002791 00000 n
|
||||
0000002997 00000 n
|
||||
0000003203 00000 n
|
||||
0000003409 00000 n
|
||||
0000003479 00000 n
|
||||
0000003768 00000 n
|
||||
0000003920 00000 n
|
||||
0000006118 00000 n
|
||||
0000007984 00000 n
|
||||
0000010187 00000 n
|
||||
0000012179 00000 n
|
||||
0000014083 00000 n
|
||||
0000015965 00000 n
|
||||
0000017742 00000 n
|
||||
0000019679 00000 n
|
||||
0000020639 00000 n
|
||||
0000022326 00000 n
|
||||
0000024307 00000 n
|
||||
0000026165 00000 n
|
||||
0000028143 00000 n
|
||||
trailer
|
||||
<<
|
||||
/ID
|
||||
[<feffbf100a2b13f97aa0ee56386d0d22><feffbf100a2b13f97aa0ee56386d0d22>]
|
||||
[<c31704bc72723f0d2d5a465f1e9345bc><c31704bc72723f0d2d5a465f1e9345bc>]
|
||||
% ReportLab generated PDF document -- digest (opensource)
|
||||
|
||||
/Info 17 0 R
|
||||
/Root 16 0 R
|
||||
/Size 27
|
||||
/Info 21 0 R
|
||||
/Root 20 0 R
|
||||
/Size 37
|
||||
>>
|
||||
startxref
|
||||
12675
|
||||
30062
|
||||
%%EOF
|
||||
|
||||
449
Les04-TypeScript-Fundamentals/Les04-Lesstof.md
Normal file
449
Les04-TypeScript-Fundamentals/Les04-Lesstof.md
Normal file
@@ -0,0 +1,449 @@
|
||||
# Les 4 — Lesstof
|
||||
## TypeScript Fundamentals
|
||||
|
||||
**Vak:** Technical Foundations
|
||||
**Vorige les:** Les 3 — Cursor Basics
|
||||
**Volgende les:** Les 5 — Next.js Basics
|
||||
|
||||
---
|
||||
|
||||
## Inhoud
|
||||
|
||||
1. [Waarom TypeScript](#1-waarom-typescript)
|
||||
2. [Setup — TS in een project](#2-setup--ts-in-een-project)
|
||||
3. [Basic types](#3-basic-types)
|
||||
4. [Object types + interfaces](#4-object-types--interfaces)
|
||||
5. [Arrays + tuples](#5-arrays--tuples)
|
||||
6. [Union + literal types](#6-union--literal-types)
|
||||
7. [Functies typeren](#7-functies-typeren)
|
||||
8. [Generics — herbruikbare types](#8-generics--herbruikbare-types)
|
||||
9. [Type vs interface](#9-type-vs-interface)
|
||||
10. [Type narrowing](#10-type-narrowing)
|
||||
11. [Veelvoorkomende fouten](#11-veelvoorkomende-fouten)
|
||||
|
||||
---
|
||||
|
||||
## 1. Waarom TypeScript
|
||||
|
||||
JavaScript heeft geen type-checks. Code als `user.naem` (typo) draait, crasht pas in productie.
|
||||
|
||||
**TypeScript** = JavaScript + types. De compiler vangt veel fouten vóór runtime.
|
||||
|
||||
### Voorbeelden van wat TS vangt
|
||||
|
||||
```typescript
|
||||
const user = { name: "Tim", age: 30 };
|
||||
console.log(user.naem); // ❌ Property 'naem' does not exist on type ...
|
||||
|
||||
function greet(name: string) { return `Hi ${name}`; }
|
||||
greet(42); // ❌ Argument of type 'number' is not assignable to parameter of type 'string'
|
||||
|
||||
const ids: number[] = [1, 2, 3];
|
||||
ids.push("four"); // ❌ Type 'string' is not assignable to type 'number'
|
||||
```
|
||||
|
||||
### Waarom in deze leerlijn
|
||||
|
||||
- Industrie-standaard sinds 2020
|
||||
- Next.js + React + Supabase werken alle met TS
|
||||
- AI-tools (Cursor, OpenCode) geven betere suggesties met types
|
||||
- Zelf-documenterende code
|
||||
|
||||
Hobby projects mag JS. Productie = TS.
|
||||
|
||||
---
|
||||
|
||||
## 2. Setup — TS in een project
|
||||
|
||||
### Nieuw project
|
||||
|
||||
```bash
|
||||
pnpm create next-app # vraagt "TypeScript? Yes"
|
||||
```
|
||||
|
||||
`tsconfig.json` wordt automatisch gemaakt.
|
||||
|
||||
### Bestaand JS project
|
||||
|
||||
```bash
|
||||
pnpm add -D typescript @types/node
|
||||
npx tsc --init
|
||||
```
|
||||
|
||||
Rename `.js` → `.ts` (of `.jsx` → `.tsx`).
|
||||
|
||||
### Belangrijke tsconfig opties
|
||||
|
||||
```json
|
||||
{
|
||||
"compilerOptions": {
|
||||
"strict": true, // Aanrader — vangt veel fouten
|
||||
"noImplicitAny": true, // Geen any zonder expliciet maken
|
||||
"strictNullChecks": true, // null en undefined apart behandelen
|
||||
"target": "ES2022",
|
||||
"module": "ESNext",
|
||||
"moduleResolution": "Bundler"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
`strict: true` is **de** belangrijkste — zet 'm aan.
|
||||
|
||||
---
|
||||
|
||||
## 3. Basic types
|
||||
|
||||
### Primitives
|
||||
|
||||
```typescript
|
||||
const name: string = "Tim";
|
||||
const age: number = 30;
|
||||
const isAdmin: boolean = true;
|
||||
const nothing: null = null;
|
||||
const notSet: undefined = undefined;
|
||||
```
|
||||
|
||||
### Inferentie
|
||||
|
||||
Vaak hoef je type niet te zetten:
|
||||
|
||||
```typescript
|
||||
const name = "Tim"; // TS weet: type is string
|
||||
let count = 0; // count is number
|
||||
```
|
||||
|
||||
**Regel:** alleen type expliciet maken als TS het niet kan afleiden, of als signature documenteren.
|
||||
|
||||
### `any` — vermijd
|
||||
|
||||
```typescript
|
||||
let data: any = ...; // ❌ Alles mag, types check niet
|
||||
```
|
||||
|
||||
`any` zet TS effectief uit voor die variabele. Gebruik alleen als laatste redmiddel.
|
||||
|
||||
Alternatief: `unknown` — moet je expliciet checken voor je hem gebruikt.
|
||||
|
||||
---
|
||||
|
||||
## 4. Object types + interfaces
|
||||
|
||||
### Inline object type
|
||||
|
||||
```typescript
|
||||
const user: { name: string; age: number } = { name: "Tim", age: 30 };
|
||||
```
|
||||
|
||||
### Interface — herbruikbaar
|
||||
|
||||
```typescript
|
||||
interface User {
|
||||
name: string;
|
||||
age: number;
|
||||
email?: string; // optional
|
||||
readonly id: number; // alleen lezen
|
||||
}
|
||||
|
||||
const tim: User = { id: 1, name: "Tim", age: 30 };
|
||||
tim.id = 2; // ❌ Cannot assign to 'id' because it is a read-only property
|
||||
```
|
||||
|
||||
### Nested objects
|
||||
|
||||
```typescript
|
||||
interface Post {
|
||||
title: string;
|
||||
author: {
|
||||
name: string;
|
||||
email: string;
|
||||
};
|
||||
tags: string[];
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 5. Arrays + tuples
|
||||
|
||||
### Array
|
||||
|
||||
```typescript
|
||||
const numbers: number[] = [1, 2, 3];
|
||||
const names: string[] = ["Tim", "Lisa"];
|
||||
|
||||
// Alternatieve syntax:
|
||||
const items: Array<string> = ["a", "b"];
|
||||
```
|
||||
|
||||
### Tuple — vaste lengte, vaste types
|
||||
|
||||
```typescript
|
||||
const point: [number, number] = [10, 20];
|
||||
const userRecord: [string, number, boolean] = ["Tim", 30, true];
|
||||
|
||||
// Useful voor React state:
|
||||
const [count, setCount] = useState(0); // [number, (n: number) => void]
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 6. Union + literal types
|
||||
|
||||
### Union — meerdere mogelijke types
|
||||
|
||||
```typescript
|
||||
let id: string | number = "abc-123";
|
||||
id = 42; // ook OK
|
||||
|
||||
function format(value: string | number) {
|
||||
if (typeof value === "string") return value.toUpperCase();
|
||||
return value.toFixed(2);
|
||||
}
|
||||
```
|
||||
|
||||
### Literal types — vaste waarden
|
||||
|
||||
```typescript
|
||||
type Status = "pending" | "active" | "archived";
|
||||
let s: Status = "active";
|
||||
s = "deleted"; // ❌ Type '"deleted"' is not assignable to type 'Status'
|
||||
```
|
||||
|
||||
Heel handig voor finite states.
|
||||
|
||||
### Discriminated unions
|
||||
|
||||
```typescript
|
||||
type Result =
|
||||
| { ok: true; data: User }
|
||||
| { ok: false; error: string };
|
||||
|
||||
function handle(r: Result) {
|
||||
if (r.ok) {
|
||||
console.log(r.data.name); // TS weet: data bestaat hier
|
||||
} else {
|
||||
console.log(r.error); // TS weet: error bestaat hier
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 7. Functies typeren
|
||||
|
||||
### Parameters + return type
|
||||
|
||||
```typescript
|
||||
function greet(name: string): string {
|
||||
return `Hi ${name}`;
|
||||
}
|
||||
```
|
||||
|
||||
### Arrow function
|
||||
|
||||
```typescript
|
||||
const greet = (name: string): string => `Hi ${name}`;
|
||||
```
|
||||
|
||||
### Optional + default parameters
|
||||
|
||||
```typescript
|
||||
function log(msg: string, level: string = "info") { ... }
|
||||
function find(id: number, includeDeleted?: boolean) { ... }
|
||||
```
|
||||
|
||||
### Function type as variable
|
||||
|
||||
```typescript
|
||||
type Handler = (event: string) => void;
|
||||
const onClick: Handler = (e) => console.log(e);
|
||||
```
|
||||
|
||||
### Void vs undefined
|
||||
|
||||
- `void` = function returnt niets relevants (mag ook iets returnen, wordt genegeerd)
|
||||
- `undefined` = explicit returnt undefined
|
||||
|
||||
Voor handlers: `void`. Voor functies die niets returnen: `void` of laat weg.
|
||||
|
||||
---
|
||||
|
||||
## 8. Generics — herbruikbare types
|
||||
|
||||
Generics = types met een "parameter" — flexibel maar nog steeds type-safe.
|
||||
|
||||
### Voorbeeld
|
||||
|
||||
```typescript
|
||||
function first<T>(arr: T[]): T | undefined {
|
||||
return arr[0];
|
||||
}
|
||||
|
||||
const num = first([1, 2, 3]); // type: number | undefined
|
||||
const str = first(["a", "b"]); // type: string | undefined
|
||||
```
|
||||
|
||||
`<T>` is een type-parameter — TS infereert per call.
|
||||
|
||||
### Use cases
|
||||
|
||||
**Array helpers**:
|
||||
```typescript
|
||||
function map<T, U>(arr: T[], fn: (item: T) => U): U[] { ... }
|
||||
```
|
||||
|
||||
**API responses**:
|
||||
```typescript
|
||||
interface ApiResponse<T> {
|
||||
ok: boolean;
|
||||
data: T;
|
||||
error?: string;
|
||||
}
|
||||
|
||||
const res: ApiResponse<User> = await fetch(...);
|
||||
```
|
||||
|
||||
**React components**:
|
||||
```typescript
|
||||
function List<T>({ items, render }: { items: T[]; render: (i: T) => ReactNode }) { ... }
|
||||
```
|
||||
|
||||
In het begin verwarrend, na een week tweede natuur.
|
||||
|
||||
---
|
||||
|
||||
## 9. Type vs interface
|
||||
|
||||
Twee manieren om custom types te maken — wat is verschil?
|
||||
|
||||
```typescript
|
||||
type User = { name: string; age: number };
|
||||
interface User { name: string; age: number; }
|
||||
```
|
||||
|
||||
90% van de tijd: **uitwisselbaar**.
|
||||
|
||||
### Verschillen
|
||||
|
||||
| | Type | Interface |
|
||||
|---|------|-----------|
|
||||
| Unions | ✓ | ✗ |
|
||||
| Intersection | `A & B` | `extends` |
|
||||
| Declaration merging | ✗ | ✓ |
|
||||
| Style | "modern" | "classic OOP" |
|
||||
|
||||
### Aanrader
|
||||
|
||||
- **Interface** voor objecten + classes (extends-pattern)
|
||||
- **Type** voor unions, primitive aliases, complex types
|
||||
- In team: kies één conventie, blijf consistent
|
||||
|
||||
---
|
||||
|
||||
## 10. Type narrowing
|
||||
|
||||
TS volgt je control-flow — types worden "smaller" binnen if-blocks.
|
||||
|
||||
### typeof guard
|
||||
|
||||
```typescript
|
||||
function fmt(v: string | number) {
|
||||
if (typeof v === "string") {
|
||||
v.toUpperCase(); // OK
|
||||
} else {
|
||||
v.toFixed(2); // OK — v is number hier
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### in guard
|
||||
|
||||
```typescript
|
||||
type Cat = { meow: () => void };
|
||||
type Dog = { bark: () => void };
|
||||
|
||||
function speak(animal: Cat | Dog) {
|
||||
if ("bark" in animal) animal.bark();
|
||||
else animal.meow();
|
||||
}
|
||||
```
|
||||
|
||||
### Null check
|
||||
|
||||
```typescript
|
||||
const user: User | null = getUser();
|
||||
if (user) {
|
||||
user.name; // OK — user is User hier
|
||||
}
|
||||
```
|
||||
|
||||
### Type predicates
|
||||
|
||||
```typescript
|
||||
function isString(v: unknown): v is string {
|
||||
return typeof v === "string";
|
||||
}
|
||||
|
||||
if (isString(input)) {
|
||||
input.toUpperCase(); // TS weet: input is string
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 11. Veelvoorkomende fouten
|
||||
|
||||
### `any` overal
|
||||
|
||||
```typescript
|
||||
// ❌
|
||||
function process(data: any) { ... }
|
||||
|
||||
// ✓
|
||||
function process(data: unknown) { ... }
|
||||
function process(data: { id: number; name: string }) { ... }
|
||||
```
|
||||
|
||||
### Missing return type
|
||||
|
||||
```typescript
|
||||
// ❌ Return type onduidelijk
|
||||
function fetchUser(id) { ... }
|
||||
|
||||
// ✓
|
||||
function fetchUser(id: number): Promise<User> { ... }
|
||||
```
|
||||
|
||||
### Optional chaining vergeten
|
||||
|
||||
```typescript
|
||||
const name = user.profile.name; // ❌ profile kan undefined zijn
|
||||
const name = user.profile?.name; // ✓
|
||||
```
|
||||
|
||||
### Non-null assertion misbruik
|
||||
|
||||
```typescript
|
||||
const el = document.getElementById("foo")!; // ⚠ "Ik beloof: niet null"
|
||||
// Als 't wel null is → runtime crash
|
||||
```
|
||||
|
||||
Vermijd `!`. Liever: check expliciet.
|
||||
|
||||
### `as any` om type-error te "fixen"
|
||||
|
||||
```typescript
|
||||
const data = response as any; // ❌ Verbergt fout, vangt 'm niet
|
||||
```
|
||||
|
||||
Liever: fix het type, of gebruik `unknown` + check.
|
||||
|
||||
---
|
||||
|
||||
## Bronnen
|
||||
|
||||
- **TypeScript Handbook:** https://www.typescriptlang.org/docs/handbook/intro.html
|
||||
- **TS Playground:** https://www.typescriptlang.org/play
|
||||
- **Total TypeScript (Matt Pocock):** https://www.totaltypescript.com
|
||||
- **Type Challenges:** https://github.com/type-challenges/type-challenges
|
||||
- **React TypeScript Cheatsheet:** https://react-typescript-cheatsheet.netlify.app
|
||||
244
Les04-TypeScript-Fundamentals/Les04-Lesstof.pdf
Normal file
244
Les04-TypeScript-Fundamentals/Les04-Lesstof.pdf
Normal file
@@ -0,0 +1,244 @@
|
||||
%PDF-1.4
|
||||
%<25><><EFBFBD><EFBFBD> ReportLab Generated PDF document (opensource)
|
||||
1 0 obj
|
||||
<<
|
||||
/F1 2 0 R /F2 3 0 R /F3 4 0 R /F4 6 0 R /F5 7 0 R
|
||||
>>
|
||||
endobj
|
||||
2 0 obj
|
||||
<<
|
||||
/BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font
|
||||
>>
|
||||
endobj
|
||||
3 0 obj
|
||||
<<
|
||||
/BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding /Name /F2 /Subtype /Type1 /Type /Font
|
||||
>>
|
||||
endobj
|
||||
4 0 obj
|
||||
<<
|
||||
/BaseFont /Courier /Encoding /WinAnsiEncoding /Name /F3 /Subtype /Type1 /Type /Font
|
||||
>>
|
||||
endobj
|
||||
5 0 obj
|
||||
<<
|
||||
/Contents 19 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 18 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
6 0 obj
|
||||
<<
|
||||
/BaseFont /ZapfDingbats /Name /F4 /Subtype /Type1 /Type /Font
|
||||
>>
|
||||
endobj
|
||||
7 0 obj
|
||||
<<
|
||||
/BaseFont /Symbol /Name /F5 /Subtype /Type1 /Type /Font
|
||||
>>
|
||||
endobj
|
||||
8 0 obj
|
||||
<<
|
||||
/Contents 20 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 18 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
9 0 obj
|
||||
<<
|
||||
/Contents 21 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 18 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
10 0 obj
|
||||
<<
|
||||
/Contents 22 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 18 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
11 0 obj
|
||||
<<
|
||||
/Contents 23 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 18 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
12 0 obj
|
||||
<<
|
||||
/Contents 24 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 18 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
13 0 obj
|
||||
<<
|
||||
/Contents 25 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 18 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
14 0 obj
|
||||
<<
|
||||
/Contents 26 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 18 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
15 0 obj
|
||||
<<
|
||||
/Contents 27 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 18 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
16 0 obj
|
||||
<<
|
||||
/PageMode /UseNone /Pages 18 0 R /Type /Catalog
|
||||
>>
|
||||
endobj
|
||||
17 0 obj
|
||||
<<
|
||||
/Author (NOVI Hogeschool Utrecht) /CreationDate (D:20260607080655+00'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260607080655+00'00') /Producer (ReportLab PDF Library - \(opensource\))
|
||||
/Subject (\(unspecified\)) /Title (Lesstof) /Trapped /False
|
||||
>>
|
||||
endobj
|
||||
18 0 obj
|
||||
<<
|
||||
/Count 9 /Kids [ 5 0 R 8 0 R 9 0 R 10 0 R 11 0 R 12 0 R 13 0 R 14 0 R 15 0 R ] /Type /Pages
|
||||
>>
|
||||
endobj
|
||||
19 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1701
|
||||
>>
|
||||
stream
|
||||
Gatn'>F3es&BE],.H[/7/@62(fTP$2q>dlql/=nl#5Z^6K@d.LAfWtS::>QINblaZY*]doFs>&'q2PA0*l3Bd(TW$5$\0$,G]q>^EL9FN"XJW?)u+:0IJ*r5>Ql8^TrEi-O@Zm2?tWdUTd2DQ&Hb`Bd40Z31ST#fJ`CfD0a6.DoVol]-qT[6J7o]j/bbhQ6un;l#:,Nhg3p^.:HS:p,$XN_c/ot)i<n.&F]Lpr-js#\P6G4)IJ<7hr*IT@REUR5K+F5)ah340c4rHk%DS@>ablq":LN`"-;WG%"/CFsL`k6Vd5RpRX('d"q(nV=GmnLsi&sPK@mT\:/L_N6;(+-h-c>7AHu@mH.VrQd+i=g&iDdCV6*-mu]`0N+n[]6i#suOk\S(do8VCObFOh:eRT80Uh+6N7VDGF3X;dkH2;2u7GSJuTn9;LYrSp@EESfKg6R>EA/s)X!0LRK)NR>6U3u;R.-p;,(MGR#7h6Z^O?.EfCNB$Y"6c\&Cd,#].2u@K9B.P;OA"*'u!T>2[0JbTnjh;Yh5J+ouUe;.2(2n8(+C33(V?@^.cp^Q,[#lsDNGr):D[X=_#HY'5ihY+\7%CgddHKZ7dbH*+>ukpXb4"AEaf@BO^R>aJ9Y("N))5CCATB25\)=S_lfej@\jC0kGuq@2cVkCdGm"GBn*O#(8ofBm#e!4fb'3M5Ie\33l(M/j$HE1.[EZ-s:U'3HBbG&t?+:_OBp"`P2a]1DZOgHGCq2%1:,1>t%`OQf\``m9i@hL)amT[LAdlLY!)EQ&U]7gc^P[CgiC."Kao5/Mhq>K&D&D8J8n/Y*aL5FeLi1'./+B`D3;?V=]7pL'@A5+!Z.-S6&VF1&2?lAfTPW9WGRe1<&9T(Q.laIsBU<S[i.9O&2E6_j"W'_W"O_"eY\b?j(th(&>r1Nd@m;H%'8:ASUZW1:fe#2:dVM?OG1s%p%c6F3FZqHZpICe>8eqs0@*d4H$f=-II%-a`F,5sR4pJB2@0Tqa;ssSTG9#@H!I_NYp\*kWk!.G7IYG[N4ad.fW"[fmk_ju^&YOcY^('_S<3'T*b/k*g3>dstdMAHK;DWC/F=VaR.fD3uERo&@:SZ*kTSkPgnkA[:qk-,G7k4Eu2p`Q4Bt3(FE5<C$i(UY)GOCD.3qs9t[PE"E-OjhK(\MmflMLPHBl8A3mViRn5EkuT[IG&'N2"Q8g<boH6.Bj:G+.qV`CZ(u4L[:uaRL:*LfoVUL+fu1_U;f%.Go&V7VMTQ,ta044h!adT:Jq1Wn>-iP<2V&:YSa]*Ba^SR:;s^5b;2<?CBSNf2L1aG])l=?)8'U0j]UGe(+H!?01t$'dHKL1'K0H&V+rgQ$^us]'Kfi,E?LqIpMa_l6PM'l4]q&3fEIcbcr9*O(geY]*d7gG(V.S01.^rG<-E,UG:H5.-s=+W-dK;Z)X7gA^"M":\r>s!T9_S&rus2(!<;R0W.4Gi-S[:7UWD3r-Git1`ps]r!pUSh-p;=f5^[0%!,pU(!KoM<XU1@S)g7gn?Tj6``[Nc&=Y2iW\g%&Z!$GL4`7IM6?2l*mVNrAePD:Z\=?X)N*XH6Id_aIb3<nKoQ2i*7<e6U[M-ZSMnd%-rPtf#&\N]_;Cn,JAh:%DHrbf^:b+"th[1gfNs3/<X)p''5ffWa=<iXX^W.!:W7A'*H[K8jd%PgL9Us"1>e)c(p2n=gnGWZ4="A"~>endstream
|
||||
endobj
|
||||
20 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 2062
|
||||
>>
|
||||
stream
|
||||
Gau`Tq/>"G'`Qp<`Ig)lmZoOhFLE$poNF$b^#En]joJt&g/0%kRRFPTMuN0lPcVb_m'O`04,@F)qVLrfhaK;npgs-u-j=iTL&InX(l.>WQpVj\5)1N7dD$pC4mkBa&.q_NEZh'[+"3F"%B`46OG=5GlBB#-^^1haJhR1bn+f0=ThqugDT%)#*q]U?8AJI`n?0DWLrVN5G)5I0iT9f8quTME,i4D!dVSmo$tlf0;B;cV#\C1-_DHtgMjM1!_R"'Xb31+o')9uk.QT:<j4oEB6[5]hW[,bfE=\qE0`B9((k=YRJ1>gC3p:WbQ6ofm+Ksi]ee7`Xi&+]B7I^)0()iEV(QB-*,Jki:4Z#rYD9Qh@1I?HJ6lZ^\*BCjkR'mr,7SZ59Mu?IbIudE]qSSGgSJ.!o0udHB"Kk3L*:o$Q=?.mN`kl=ca.OA;W;]:B@`/e/_.22Od9]j1U-4nIIrnpsn+YQ.\'aDM<;VgV2Trf6<'XR_.j`$S,6eMkP)qKf5q$JX48!ngR4\qJV(1C.p]+Kpl9:0)EB;q[\\rh\iT#RV4eMsH6ODA\&82*N7$/a!c6a<nBW9G5]a(dV%lMZ3;eMZ`7'FT`d@\4T_YTn8J/o$'"7o3OTJH]84@\%m#'5nW+G=QCk_6rpJq.'[2pZO3dKm[(4Vj<C9T0UMKi2M@Be32O,1arj4Z$049N>d$k?/5NI]uU4rpp+RDW]of`"RSr$Wu@Kr%i22:b8YHBsbaOZ,2O(dUQ;D5ht!_Q=[_Yni0KS1<=$X*"B&l2nr4%B/=*BLbC^u2Of_:XP!G-n>UY=hM6j6?[nhlrP`r2mt1=]M`8%FMhDomYKE'^AA$!`@f2XkRL[l]hE5Qhgm5/!0^S?F('N2&JBQR;*)*%9\G`<`Vq:PZEkb7MA1>G8k3BX37&_Ae:\>W[+c.h<]4gf-"K`cTGlVmeX_%")Cpi^:Lp5leF!8/HGCs%b_T@c4rf&0,,;*I,)p!Wnmfma>%XtA>Q!H#M<uS($BVIMOZ(@;t.Ao+^%6t&?Vcth?PB;/Fc4)cciHogEA7Y1U<9<[QQ3uKJi_4'J$2Ppe.SPm]W64A\WS5Pl,ZP?bpC)3\--R]sWhR^p?$Mbfr@"-c9VG,G0/O['S>;gZQIq"\)"YAigkK=L8bkHtrNfK';^I@8Go"pZ)AUbC"VL$J7Gd?'Er.+L`A#D]ReUOKnaQeD7<Y[TK-ljVpuR=aH9/76X=;B6dj&n.nf8#aUr7K5d#tnfK'RLlDSI6![iTYob8\m"^_%@4]P/Fb7lDeGFHMh,[p[Cm+dk"+b:d=)]t:sk<1)U$KjVTK'n"ZH@WTg4Q@TfO%(]KeoW)HJW=%CT[dR%NFk=n&T_dh4:E_3P1^Z'ObrqKX!8kTH6HZ.@/esSg;,kKEq%<U&j`k"_(3nH6dD+<.5SH5FBG4$kR"L5EZ)q0I92+/EgM!r[2h?0U0uoTS10H)$N#O7jDQ/k5jq]Zud,$pf0D!nQQpW0#9T8]"q_%V++rnr-qS)8$&lR=m6P"?&_O0Mmc@m9g25t68N`^MnIWS?@NR/`*p9O,=_q/)Rg;W0$%XX8+RTI*Wr)DSBlh,k7-!YP@%d9an[hnA_C^UI8#2Q"l$3kZZ0YC8+_ZO2Z]a=k#N@U-r)K7?p?LE-+VQQLq"Z9@IB+s(=>U04FIh@/6Fa!3h@Eerr)#-bA3g"_k`2@5Tg-c'HDVM#T6nl2>]DMR'iQXb]QkQWpXuM@GNt+od0JMfarTQp9;P1,!5PiioG(fQs[$PpUiGB*MW)(;l,X6+*?:J5;4L[>-!>n=0R`C77?KUtBTcDsF/HBQV3Ima,h).V*h_[cuG%'cj46H^F$TV9Wdpg!ZV_[aBW<@0eD3Wm.D=*jkQDV"+1f**Z2@'*<Z;;80ZYeTq^4>sG[SkY$4W>@<<1[q?2a"Gb.efZ0P"-lL3\/f-U,\-.!$tYoC_:G?#FWcPi#^n]CSFG08R+=WW[/Qd/<r*UprO+c4o'?sp'3];5`-"pU)F$Do@jI'4Dl#\]MW7+<7WWPejIpurFEPYCTZ%#[^2rA.J^K><FGG@KA0/C~>endstream
|
||||
endobj
|
||||
21 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1537
|
||||
>>
|
||||
stream
|
||||
Gb"/&968iG&AIa;m,V&%otYea"QemaR5V0[1/6K$3V<rNJg<r6R$*]_[$1OH"lHW980)o;9-oPu/f3F5!rFS#$n-R-o/FblSh8mk3<R90YlZ8/KZ+>oIM)K!&?^7'6Qe]o&T])"n/j(1JV-c2(%[fDV@h4<"K<9d3nD)d>njOL8dh\t!<Wr`)JKLGZVYB/@(d\?F#5I?W)S.oIHR6rm_qS:hP$G+&&D(pF[6J865%GX."k#!Z_(R<\Ubi\[B5Td;.T03?.rgf_f)&8E.%iGffPZ<mqheW/@Md-l4$EPV:$34M@MpZfW(s0<=AB?XA`as9E9O]*UF@Pn(`eR,!)M4G91*eCf$37Pr61'q-3op5%)7>?b(no<L7Dtc_2uc[P?:%>GF-0[";&mHeIt`eud2U>F4St=4Oa%rD-Y8=#h,XaFX*+rTB=LWC$(R;$EfhT^^&33f%);fGi/+A*2#gbQNK0VFhN#5J4>QC$1_T;qnC]Faq&B>7S)Q_Z8NFIT<7j>,QT-fYsp<&pM@M-&f-3@EoBn)nF;j!(fM%M"2DR5XnVoQU-o@;H(>L'Fgj9KM!.W-+_]"JjC0kSk:hUTR&a@L#=-Hi*(4pK*R#3TuMj=?mO0HnsYSHFL7;9FEAkILV_S[r><d=9nH*d'F4YTO2P[Zg`->@\tf)^UgasX`YF.=$)J37+^n9YWWm*V3sSOl[t\h[aWf!%>TN!JO!6rc7&21QArRXFTAS?80a'W?+9[N(k>R&@\mFNuS&6fn)/C5/GcI>8ijbi!i(`5\l4&L-h8qE?n\YZtIQRUUD6[:2h9rH(B9rl\bcabVW_hn&V]X*Y)n3,LF`hHFi"A,U4-mXVLAJd<QHe)%@s5(*ljC20.2q,BXDV/)YfPAGbtm)\3"mk@nl1p,`&%nUPfcl9``0k\.a+bh)Em:1T$"sg5ik9u7kd!XqTMo&QMO/6J\hDRQ`t]Dn#]CHk!8I*CO(@m*AU<>UtE9tE@GA*+%1"#LtK$4'I>"_-s^S8lK[NPY3oZ`g1Kp]f<NFQCL%mIrSq1L-9bdXZU:G..NeNl"\fd$Yb7@`B%*T!(P%L#=/aQT1\DeNV.GeUF!R/dg)1^;A82P8EV+]qgkW@U06(XJ4P_VcRhlY_</E8(1Vosl_Zl/Xm"B^bTgiYQgiEgXJPA,%_]%gF4u7cXVtncjAe'&,R-K?dX#A;9[$-9$1Y9b;=dm/aAn?[!\@uW<01[uZfeloWMBa>+rOMpnp(lJ55S2hC+pmUNAJ;^@<j5A8\1<FLQDoR";l0b'>"dcYHX#pe?-aqFNQddDGIaQh>C!cdfbq..^;W>(5<J$-Fb\sE2PQ[^)"tCrAFF]EGjc[Vf[(ru0[/pk">i3#EAXBKRuP[$h1f%('*_Lg0Z;'t[HUqOK>M-QF@kEPm2"$GbEd&hojqfJP&m()meaQBP=IML))aEMN8C(5T.qO'`;VDYs'7'gYO[*Qb;oKCd%+Ma[+QP+9_IkD)ulX\/LZ!/fqC2!\"l6ua!XWKYUpqU[VVmcCJ9",K-9q.pRh(@~>endstream
|
||||
endobj
|
||||
22 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1499
|
||||
>>
|
||||
stream
|
||||
Gb"/&hc&;g&:X@\Z,93W]aF_B-(-USd%j>k_k_!moEBIN5<dm&R6u8i-D6?2=4l_Ehnb4S8'WB:\bNeS;j;AHik+XT"hC!5=r>mK!F0@<rD7,U#hliVR?Y><o^Z.ZAl`9h!9W`599^S-M&BP/s$2$oCsPWt7VBLt8g8Ncn#L"f6qEk5b[Z,ZQl.U0/bLr/862P&k^cP"<aj[XB*ep>NtY[aANNbm2((#&>%*UPb.0(9%S:$eTq&j"G?0LLP/%jJ"%X3-(ii/f^C#Y$h8]]WkNr/!dX!Ja"IST6gefcqnI^JlM'/LUO3fESc5Y2tJjb&<6a>_@1SnP.+jk((h.4!](o07Th8s4oMc[ZVOAIq'8)>nJE$-W)Su7IOkjn9tfL>eE:0O)H&F6dG:<<kf4NAKSL_OU&)$]KMa"f")!3CPPPR]&VM'?Z@EO`p#p$LJC227'$qeh$ubuE>Phhd_q-0D#jOJAmq01U%g9gn]i(TZMAU249Oc;W`*Xb+A/*VlQ0-AXk9dHQ<7qmJhS%O3Be7VZX;b)ggaqe5<3Apdq2>,%0q!KG7;HW"BUGt=B=?T'-o#)&f"<lI$^52[p.bX3GG/-M[)bsb5>\/3%tM&QV)>S'c`SF^oo[a;-HiL8+gZ[Nr-lR<,#Tgp"5_ft<=#<%kOmV+cf/&HT&hh=;WO)FQS/!#Xa(3plWDi9c26'K?#36(<!isk)\Uh04Z9$tFG>mi=`\GjHP!?HcZ\0*h^Y[DG]!#aE+#[qS`eo<Ga?XH_3n$AWj7^I81QB:MSH<8]I^aV\EcjU&8BZ&!@f[:PkF`m?/-jXjg]Zq`Nfu[$1aXhS=MrcG%hUkXa.Y0GDHEsUsNJ!#^JEEfFl1J`-hB,5Fi(b\=#10:cD:1:j4^O:cC]G0KT"*bTaEk,_HB90<jRtLsR_&EN.,&W^=25`2q`_;=8:AGY:%<V0c^3n><UB4j\@')JHd?i+qV/GqnojF*)g+#][B-`6p>ulco#p\U+AkrIfM.9PZJN4cSc+%BkgtgC]#8Z8C/JHj+Dqbj5G1/9E`Bs!/J]SSr\.J%35V$W%?Kqh$,Q`p2Nd6L^pT%kZL,I0BM)=-*?X=-%f`%UaDJopO??NKHr1Cg))6p%%-Alu'kr/,9=dVWo7eZpd?:O4`Ktg31)NQr[g7'B7p5pXk5p1Xs7r\.h`q:gN80r4_oEhDULoc7UgA\no,qidXs`Dg_%el]L(1b#7l.r)EA`4_'t:JLcBO(lq\mgt>8GkH:-^iA3jWNYqYc>lPPLQ3F_\4ZI>h2/,)%:lHU=ki3P8#K?7d9o9RE[)Yn3G.82F_rjm4nhKS9qJkW>r]A?A'DD5OK<(^piIa"E6g>V'+3hO[Ufc_r!gRo3rAVIm>j9QUlsuTWm(Di.m66RYgNb/K-Tghg'aBcF:,`cL8Ob+.nL+2ej&&&"WVom236Ld]$JTKRg/=C+Tra6=%mm=H6:[IUC)pGZ>L%&!@8Y6cQ<sQ:[u<TA-Q*<uCB~>endstream
|
||||
endobj
|
||||
23 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1601
|
||||
>>
|
||||
stream
|
||||
Gb!ksD/\/e&H8h>E<lceBeb@G&sXRA\ogK""\Z<cqrA8fCtd8\9;s0a)q+ZY*@[J@o;2^@dK6`a9;6\BO2pFo4#<Q)B't#O!;LgB]0cd]_e96J&db<XpiR9u$4%/f,S^laWJEQr=P+FSo,n8QOtc#Q"&1#7,7.7(U33PgUKnS=#YG3*<riC9Kf%3jLh8-di>m826I'Rb8Q6PH\*[8rC$T)!_Nf?/B(J;BSAA6qnu+kfb#G0E["-!]a+(dT_d[M`a]VJOE)N$7E`U)Fo*F3cK=C!kAAs6OG@:&%N*b0@3hS7X\:lWj"?eM?<>VtGjF&dZo)r"ti"(e))Bn/l[mCZ?(+P0'%g\p]%P^*Fg4\.6-bss>Y&HLX73JA($*>;m!i`.VCkmE96UE)Y\g)MaB+jtoL1-E80F-^['FCTMYQe`b[Vh9&^lKU;qiCu?6s=e`VC`X%f9uiLFXG!2n*A-1h+`5X$-iUm,PuA=HZpk\G'p,SY8GYIYaEA!nITYH6K,fL]J<DQ3o,Fg0%51XT-7Po:/)$"Ya(_RIUl]"mGEEmCUc&F;JOGs>WP;HanK4f(Q.2lNdlE2=@GWg(ngE:ZR!Oa7,"as>NV,1/TR3njW^\EK?GNERQDH*n%eVV9++$0_0LY?O<S<BotM:Iam1).huJDV^ht<#C$K8t2ntKd34V:cr/t#k4;dPZKSUk:XEmr@h*N$Ws-W%q^jBM@=,V+JX!u'$VD)_h-;!%-DWV7_"@M\7U!5ZZ8<-/lUU2pjP(='<eO]QmWG2N:8Q&;X^>[8KhC+6;;#VI`>U`@VkXnq88e]A;jV=rXeKjU7+0c1I%pn4DKXP9q?0d1Z^-QU_B^h]jl=FO,I:;]GAMblJ.mYIeRc_&KSDjFR:[K*#[`P;ul[Z/=T>4rL2Dp;$f=#D2g$T@3k!fUOCA_*4"u*@[g\)K=OB.GZ2'c1ecL^*R1JemJ]!1"8]%s8)`J%s*/bm\?*Y=5]#YgZD*',o'K<k]U4GV+S-t/G(W#n]08Sos*Y8%qUmcr+rmb>+;Pj&7M0ZF<_3@<%OhZL])'#dIjHaPWJ#ZYWG*\2fT:tVbfW&$B3XiK`>=-(rDD*;3dck_SKCV?rU):p-o6J8C3:K&jO)@dgT&RuEH&WKjljYL./EP;[#\MX1;:$Q7":+@gV2a&kIOgm`_#r>5[$?8aB(8\4;2grig@&d>Pa349J"6/XWPtZq_'N])Dhd=5Z>)uYi01g0?DqXM>ck9`<_C.0,Z=7]+D"pPm/.<;*YZY]4!NqB\pKV+be=`7o)U?cd]&WZk(P!GY(tC!W-?ku$BAsnPYHE*;V^JuuX#'"6b**_TJ_53i8`\_7>Ur%tdD&[#GqS`7cMdLr:"#",$ltJ75HthN^SE=;aF]EScUtS5P7lQ#D,LP@f+"<oUu)QWd0m+lK4OkoCQ3`0R?skDn\>K\Sa49W53qm_p&=CYj'`9Z>[,.9O'f5sB,JrP?(O^C2jc2"?laqSTIStrV>B=R'cSD5#_Tj:Nf(&P-f/'6il*\dn#<di(@-ZGfKF2CgZsTEfEsja_1S@$ACS:_V56=(Tt^e+N\;qHnGhB]R$q/e>E]GemV]96K)Yg0a^6V~>endstream
|
||||
endobj
|
||||
24 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1607
|
||||
>>
|
||||
stream
|
||||
Gb"/&9lo&I&A@[:m-#^-<#>U,!0lMcd\^nEPA-5[m#0s-76r[JMGuma8LEhSn+$j\*3)or)<Xmj@u;DuG-Q;hG0,9oLK4AL'u3TY35&_83(t+'4Q=3<%K%u$rc/8\>^ARF=&Cp75Q\Fm"1*)In-'C)%i?]EM38p)M@lZd"WZ,caWq]4Me<M%+pF7S"/;/9Pk\_$9*FEkg*=<C_8Gr*J#[TD+JSB9h5n?sL,2r<.?!J;KJHp20Nl6]\)4ABiH;TYH$#Ba$!\377s>,13LB7+&mjgLSRcMQ:13W?9V.LR3hW'@\-4%"6/Ulg0=""UnhsamBaCF8n.$\q+pd&8,m%*F_T4fl;&0EGO1j+Q0#Q^W4:1b%4Fi^W8Qgi"N[9^`BXr(DAE,<Kor.5;W-1qsfJ1\u!VLkA6+(3S0IA&s[c"HZ[.U(4M+SS\`F)(`eTjit@!$07Ep2)B"E1BFm<ZC6mE`kaF"/5rTDH&n03ec4^/C[D7W]+k+9?+[!69MQ>cQ(bYt:]7c;I3=j`J#TQXe)E';s"c,j"j2[r;h03*g'Ikm;_A64!M<:Q*drHegE^Lsu0A(sg6aDH8Q17M)IpZC1#[3miYQs#>`N;Gi3`YF0k188?8!fu`MqI!FIA#Rl1Hf]bhm?rb.FGRZ<07uL/Y%:Kb@To$ZiU3E-kGCsnp]>"#(LS(*SeR?-$ds7YsnoQo\ihf/f>\):Y$b4OBq:Y:sNNtAo+A72Ziop>c(VBr'B-:,EPrC[GG)3'1ngm'JbL:7^%G^-N8`q"59$d8&dn7CDnW%lu4`3WIiMRDO[oKS:O+iKM*q-:ZHT\GcX3*Gm1+DrYkq_6SVO4da-"%0\ZD3.#]_S!B%*QPj^pdMci`TF;0tQ#)["(!a7?2SjCgi49;"2=JAD)<C*gG,q3e@m1R2<*WWEs=Vk0oO-Y%)jN0Ke5,SR%EFL.Hf!,K&QYL1ifHhX+6*T6H.*h`99Ngi\o#\?"(/+%,'t]8tg4,u?1n:KQ^5O0q.(q>cSo!Gk\t0J).7?BW2-n"[ZsQhf`$HRF&9fEoUi6!-<M]c=6OTEtIQln`XGf<*Pn2D_[rhp4XUs%:,N%t![=hMsr]m(J?g]8X,ZcYIU+dKO<T_I+CQ&9"one?1A9r@so."BJrE+O-3#]NWYQC>BDG\Bm`6fAes/H_`]7Au9^V?PT\GQW#G)r;.;t!-=Z'?Z_3Li"G9(.;[BAr+;,b^lFXJgYUSWD+Ee*N,EJqER>O&nN<ZC_k,69`Uh30kqFr+%$R18km:\Sn#[AAkPq^?^*LGU\uYsf7KrkODWpJ=U@7nG\5H<W%s50r)*uQK\bg%,F=),LJ\>r(NQQZELGs#PHiu(indGLn:TH<d)rg:g^U@@_G,Jh^&.V/`QjmdlekFQ;pRCDC&^&iBq.^Luo1Cbf+gA7LX2a32m/7aS@!sU,?SWc3PN3"C5Z-pYo-g0>au*AIO-*?.GHC3cEP/Kn]eh)6KE@b'0(XieBRGJM7_c]%\\+t:pr^o#G)IrPgQ<bj(*g:56Z/kam2B/;4gFSM^5T53p%-92Xua]]Jd"%CpkDu9'b8`ar`,pf=#[V/^6#YY)gV#J&u@*c@l!A&49=VPP/'`e~>endstream
|
||||
endobj
|
||||
25 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1925
|
||||
>>
|
||||
stream
|
||||
Gb!#[lYkN9&HAoJiXfLMdj9rD8JL9f/Q-]D1'DIG])=DQK<3F[&j9-LN`uY^hfklfG5Xs8+Ic`D:3Xb=nUC5*@,m`Fh^AYQ21hT%$C&A?$Ig@SN6^CkOnIBON&0AaJ2kDh!X9ohoF$PEQ%?s^%p2(_fKKn]$a--jLd1r-3T$_u'G@:h/.0>Y[P(l.JpL\kDr_qU)8i:Vic-$@b1H=nD-fJPD&o'JI8Cf%d!AWm<lZLEom@9>.1G(GrH&6nj>0q.Q[,1<7odXo;Se_T+&:,>[ChbrINsc!(gXuAR9lPaeE$b@_#7i@kHZX=5-:'^$YOGpK&9Mr(OE=5^fbLiG61+AkG%,k6>[W[FAI7cgoT=ATg&kTO<-Z%\\;F][\Y:9.r6fiO]qd+@_9)+Vhg'TZ<A/8\%@YfNN/<,&am4?1s.8=X^PrrBITm[]1FPGHm*fsm7s)*XVFu^B2!n9Xf]!Y\!uf(A6i@cNqBqEm\<\c!Y_aq&TpM6%P/_'UPo<CbOKO[F'`j`A2+N<#q%\%HWf4d=Xeh@]n!`fVqri\!HDBgQr*pH?OpRs5pXA7Ge9X3'@6$V'"eKM3/#Zh+W$^3pnF(:7?JB>LJXupc=T.+*JaD"A!QEZG$]nNY#2'A2fgiXXY<(c.>24l>k6dm;ALqD3J<;E<\Tdg\f;4d+liO]SQJ-%)D$:(05on8j-%o&U8(X\%CSH9_WjoOK>DmP7LGkP75JJO9!ao,@to1]>ZuRCqOZ#)5b7oU(*1sr+_DT]0c`2V*T"UCs(gQOV1fog[p'_Sl[!$)oqQ%YcQX+e)4\aD6?%nhG7Z9mQ3S6ffnD!8IL%e;_=71`a#/8Nj$AWgnNK'b!TnL]j;/HsO`1OB:iO0"SiffUkGaA@)_Gi7X,E2lap)Jr>Y5/5M0U(YA[)LKD:eks<gPRoKp:2^n/#ra68bAOj8fkTEoPf(Z"Q9&HF@87>&TaN^oJIu/kf,QeIDW^UTZThDG+YAh/3l\ZRo>L.&W'O+-;4[/C@O\V\%+X,c76]NY7S*G)[#+Kj99<i_mB(Mf>3!I"5o@Foi`^n)<Ll,d9FMWDqm!;TaFAU=AjOVTsdJU(Q/:[('s%G,NRPep:d:pC"i'T-*:@Nf!]E_`a9%$%d,N2q^<aBIrVN8H$cZQ!^;2Mq[4I:j8nnKZ:IC6.]+s_#=XX_[I*t._`J26<uX@1,G<<C(Zf/9I=1MXO`XAT\^9n1QKfh_lMAu!+X%BWBiEDlr/n06tRCiD-L>dmG>G/H?U'5Fr0b*QpI0I]ac%,'C^,q,g\\:DIhj4$i+V:?<;N0?KQ.UCBD105s<Al`];(PmeUgVEqCI^Jqdd.e*-YDG*n=C2JmEPHF>0Lg4m-mMUpuqCQk]c_iG\$b]<ZFX`YBIdAbl%3,mROm85gs]j?Qq+=4Uom5A6B;s8EB>t^^'cgY\)95@T(7:G$.i!eH&)Qq[I9#;c/X[XcJ/D@ENQ;iIn\+A1joh$9K#$aA]dm'e7abK;"NNG27;XApkCi>*hC1_QY=iM&dIJ^0#TbGD;pq=ODKN!h^.=pG3m[17a@$6'7^K\X/7>(EC!ug#BnA41T[@*!iokZ)PKHN403[RL;p.X9^JFB(QOh:qNu:FVToe3MM_Xit[Vj`&^9_?.#&9r^J+Q8j#]LD:a*pgp<MiHA)ZCo=TU$EeV$AT'I1HnUPK/\:N/g9rLlJ)t.^P:&qVmc3;HrO*![WT"itWguQib\1-Do<q3;F0Sr/=_L\*h'D\J>9t0Ni$+KrJK8Ph#3eZg$+0OX$rQT;6fe!]NYrmP.&mn?jTu8)_C#>;`&^V4^.,,Q-!DOGI)1H[8_1o=c=>HDSo#5VVhdiBs0<P8aETI:W8MX4`-+.qrOXGq5,[XLQ8i<t,o&9`0ZWF"IG$W'.9]@Tj69IE$,^FK;Xu:f<r<qIIdnB~>endstream
|
||||
endobj
|
||||
26 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1275
|
||||
>>
|
||||
stream
|
||||
Gb"/&;3T]l&:XAWfXWBNK<SlhP.@8BD:4ncRRrqSQR<j6(]c8/VRGHH8aa>pP&8k`H9TYtda#58@(]%fY'.Qu-"CoE)k6;0#Op1^-8ubqJb]X,724mfi9.ZBLP#jWSGIauiHbM*'R9HXq:\EVB8?^:^`ZmB"K+Kg7R@4ZLml@Ek)`5<4``;"c<MtM+G"qffJiCb`!B5C.In>acKEgL#p!?&=<3q>Zhc((2$2BfZD\g50(ugdo,Wcr^NohlI`^0HLc/D%^hoL_BN)d"&.Uq=KGX2-PADoD1!G-&q(qE2"%ntX947Z3oT^tb10[a$^P1u5%7,(9hPpuB#`R8AEK;7$]2W?J-Q#nk4hmSkaT\[b:2Y069Tb!'_PmCFQcf@)&E_.L^DB$hlm'`%iu)8A#>>lP?E4.n_DnQYM"o+6^s8XD=%0O*`1b&u'3g[&4@:`DH.O7/0p,s_=;@?P*]?jGjs*?p#7WXnX>5EE"P0<?g7-$sL^VW+gMOd^elUqBD(pgXZ*DmOgXWYq,A6$R#4$J5Pf\miJLQ2/7*W\GXTB1J9Gj^NH+n<8R'JcK;&O!qXEN]7FIYZpk&IteYE0fK+(`/'_jAQjCZ&<F-l%=N3.P,9XssA_B!W@[<KL;\:d.C`a[cR=E("8\]3"'C*YrcN>)]Xn14_C!4q'eYMENS,P^AK`+o>Mk*`Dn`il(Lar(/LW,GP.:QZ6;Fl3MB,B*^Ec?\u)i-]1L,D_r%h4M&)g_=rAPo`_hQH)bQ<oWa"E]')bQrsSP4$W]n.SqeW9i!\m^FuKRV%%-tna"1Q6rUg0$)R(%2g44S[oBefIY$`?L8)%s>]aVB.;4,A80U\@EIFY%`GDS,TRYGm[K>.K,i!N;S<'QKD_fUo)&iD897aO_U"Mu;7;MqT,SgrLHLEqFa,GT+jE'6EN5#r?sET&[5\7o1giA-rkDU*#4361\7)hGD1iS#5$>\e=`0Xp`JSV>fEI[$Zt$&:k0;n,ibAqsB?S&&9og@,B*SM8sj?K:]/k)A)A&k^'4]KY#tZrq<_-G'1ND%PT)O0H9D.c9F#C$fuPN2*VA76g#Cp@S4]"f21Em8g[Oa2L,]$8cD>6b6!u]6#d!<X5W#bW5$_REP/_Vf;1)3FLS[opj#_)BL*HG.hn,5Eq)r@$R1+(XKkfGAnp@3N\%C$2bb88ed?1Js9du%`#(_c%$%k`_Q`^XJ!f_1GR5I,E*5IQSLR5=h`.(10po8lg.HjZsVQiD5<^^T%$k+K^%Y1O<%mR->/pdq%K0hZJb~>endstream
|
||||
endobj
|
||||
27 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1820
|
||||
>>
|
||||
stream
|
||||
Gb!l_>BALX'S,*:'rQ=+l*`pAD_g.l[,#>_R9n=-p5+Pc7Y$,RW%F0E48nVpA:/q2#UDKGB/VFuQ@5nsTB'Jd'L/\o+&;p/pRlTGJ8sc^J[r^QhJ7AhCOL%3mdn6eJ2i-A+U8W@p(+H+97c7>5NEsi5m&;4(L4e4&>9)aE^@JBa<V09[2>"@Vh&f<#j1s"^F&C\T5ujV'$p<iX7E*:_R^Nr^[r#l>^TBdhSI@-C9<Lh..[KNH;eLlIJ<OS?KmTrj0@/aHnq+K`s2C1#Oq'srg)_&eMEU66LP>/O0!mYV62I*"@$!gqHE$ldDL[$PA$2Z#f7kkmkKH[#+q6"q&Ub;THRp]72TU0O6NX)M_s2\ZnS,*HT3(`[,hM.,.7)Gg2[A)K$@,_J"KQ(#0S6c\gMCG@j*'<%m7U'<K0!aE(&VOV*+CmRq`K!&QI;NUb,%;+dOb07N$&Z`@]e'PN#1$CFS./e,5//j&T#Ip9U.ScB/3;;6Q4?Z6GS]/0lBOg]p%hXt'W.k,Zs^@Wje&m]()-Q/bqf?E8]NXVVPpFW=G\*R7Z$'!5Q-knm'fh]>04l9_:!qhOY]#U/\II9fkL>`\YT+KW0!2`WdeS;S=qEV>?Fj4%;g[`1((';[A3Y45K3D(<:f1?a=Y:JYQq'N?oS?-#a+W"Jr0CM,e*go5;1onk?PVlRkg-%]TCTkBo@]AsYd>%I%qP3:DD-I"YO?nQ)4`V`mE4<BYSOoB0gK@$cqe6D(g*Z^#_2:',gDlPt!7kE!Z8^2<>65sLCZ$"ATYCO)@cY`I(9J'p8QmW!(->/O5l"mAF-qui'Pfp/c:'S=NZ&J147/hD'YD%!CN!dW)@2DZo4\]tm]=mq$Xu(HheM,dD`cj6)@$Eu?NY5p64I=_l)Q@V/dWKP0E'j<^6]$hVeFV<JPcde!o)i#\km$6DN<e!iKsEnATr^atUPq+>mMX04HB#>T9sL5++#(ap+h6qNP>i/Vp(ZF#e<V"\&h2Um#'-(Z3IlUB1U[*<[*c(l9#kfUgA:YU?<r&)jl!7A:XhL$+j/3u!a5`u1n,kVRmD#_EEEM?$g^Xg;\3JsjYkKUHn(C)\9tt`V>^5fnp&N"*t5P@kT<!u*>Sn#'0*t>71XCs:*`k!QH?u28>+(;BatX_>bIQTN?rl3Km1L>T6pPa8$]Z\$%`n);*M^.O)Q(9QfQaU!3i3r//hE$bn+31ZOsQ/bA<W;%A<E*EDQHt3D^$i$+s$;VouZ]IE6X7o%P]i@S@Ef!?)n[mGZmbr=\5#&blER>!-piO]eP;0G4kMaZ$1/DK^g4/j=**^Au.]?`"Wd@Eo^niH:HT6tamg3_PI+A,F&6L0@mW9]u*)^c!BmB.!3fSkE20ea6b_b/>[*Ob'3tS&]Ih.K'-`>(Cl3&ffN+C52IPU8i8c-Q(kf@&rWKkTPmqYt821V<m<H&d,m#:tYj\NmhYtM=.O[c9bB6htdgs,uVM?Vg-V,MjW8F1Tf/m8&"hBM:8W0WLF]9O<(L6'[X\'SF-?h[5)pB*Z(N/qL&8_!d@DlYLYhI[j)<U6s\;)m:1!YrMJQIsPS8(4O?CSX50seOIl!.Iu&6f3]+cp.N&tP"C\-:ubE@K^8PfYa"Rq]I]B`[(^'6okf<4;MFbXXWaUWZN3nZd'%SBOfO9Djg[^\B<`qo5fK2FpL6d;QdVN.DW_lZe"uh"Ht7kpA&/f$c58i:R#s;;&Ma..C[cV5[E=R;\+7PaM"=e-=\W2W_H7\U(tA+nq@b>G^A4N+0+u*A>Df1AP$EZT0n2'me;-"m2Nl,"e:\).&J>2S8,Cqr.^[IfUNkR5+~>endstream
|
||||
endobj
|
||||
xref
|
||||
0 28
|
||||
0000000000 65535 f
|
||||
0000000061 00000 n
|
||||
0000000132 00000 n
|
||||
0000000239 00000 n
|
||||
0000000351 00000 n
|
||||
0000000456 00000 n
|
||||
0000000661 00000 n
|
||||
0000000744 00000 n
|
||||
0000000821 00000 n
|
||||
0000001026 00000 n
|
||||
0000001231 00000 n
|
||||
0000001437 00000 n
|
||||
0000001643 00000 n
|
||||
0000001849 00000 n
|
||||
0000002055 00000 n
|
||||
0000002261 00000 n
|
||||
0000002467 00000 n
|
||||
0000002537 00000 n
|
||||
0000002822 00000 n
|
||||
0000002936 00000 n
|
||||
0000004729 00000 n
|
||||
0000006883 00000 n
|
||||
0000008512 00000 n
|
||||
0000010103 00000 n
|
||||
0000011796 00000 n
|
||||
0000013495 00000 n
|
||||
0000015512 00000 n
|
||||
0000016879 00000 n
|
||||
trailer
|
||||
<<
|
||||
/ID
|
||||
[<4d415ea91cae7983bc552f3a1da04e2d><4d415ea91cae7983bc552f3a1da04e2d>]
|
||||
% ReportLab generated PDF document -- digest (opensource)
|
||||
|
||||
/Info 17 0 R
|
||||
/Root 16 0 R
|
||||
/Size 28
|
||||
>>
|
||||
startxref
|
||||
18791
|
||||
%%EOF
|
||||
BIN
Les04-TypeScript-Fundamentals/Les04-Slides.pdf
Normal file
BIN
Les04-TypeScript-Fundamentals/Les04-Slides.pdf
Normal file
Binary file not shown.
BIN
Les04-TypeScript-Fundamentals/Les04-Slides.pptx
Normal file
BIN
Les04-TypeScript-Fundamentals/Les04-Slides.pptx
Normal file
Binary file not shown.
75
Les05-NextJS-Basics/Les05-Huiswerk.md
Normal file
75
Les05-NextJS-Basics/Les05-Huiswerk.md
Normal file
@@ -0,0 +1,75 @@
|
||||
# Les 5 — Huiswerk
|
||||
## QuickPoll uitbreiden + Next.js verkennen
|
||||
|
||||
**Deadline:** Voor volgende les
|
||||
**Inleveren:** GitHub repo link via Teams
|
||||
|
||||
---
|
||||
|
||||
## Opdracht 1 — Push naar GitHub
|
||||
|
||||
Als je dat nog niet hebt gedaan:
|
||||
|
||||
```bash
|
||||
cd quickpoll
|
||||
git init
|
||||
git add .
|
||||
git commit -m "QuickPoll Part 1 — Les 5"
|
||||
# Maak nieuwe repo op github.com/new (public)
|
||||
git branch -M main
|
||||
git remote add origin https://github.com/JOUW-USER/quickpoll.git
|
||||
git push -u origin main
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Opdracht 2 — Voeg 3 polls toe + statistiek
|
||||
|
||||
Pas `lib/data.ts` aan: voeg minstens **3 polls** toe met diverse opties. Op de homepage: toon het totale aantal stemmen per poll (sum van votes).
|
||||
|
||||
---
|
||||
|
||||
## Opdracht 3 — Detail-pagina aanvulling
|
||||
|
||||
Voeg op de poll-detailpagina toe:
|
||||
- Aantal totaal stemmen (boven de buttons)
|
||||
- Percentage per optie (bv. "45%") naast votes-aantal
|
||||
- Een "Terug naar overzicht" link naar homepage
|
||||
|
||||
---
|
||||
|
||||
## Opdracht 4 — Eigen polish (vrij)
|
||||
|
||||
Kies minstens **één**:
|
||||
- Mooie skeleton in `app/loading.tsx`
|
||||
- Custom 404 in `app/not-found.tsx`
|
||||
- Hover-animatie op poll-items
|
||||
- Mobile-vriendelijke styling (responsive grid)
|
||||
|
||||
---
|
||||
|
||||
## Opdracht 5 — Reflectie (200 woorden)
|
||||
|
||||
Schrijf een korte reflectie:
|
||||
- Wat snap je nog niet over Server vs Client Components?
|
||||
- Welke onderdelen voelden makkelijk? Welke lastig?
|
||||
- Wat zou je willen leren over Next.js dat we nog niet hebben gedaan?
|
||||
|
||||
Plak in een `REFLECTIE.md` in je repo.
|
||||
|
||||
---
|
||||
|
||||
## Inleveren
|
||||
|
||||
GitHub repo URL via Teams. Aan het eind moet je `pnpm dev` runnen en alles werken — geen broken pages.
|
||||
|
||||
---
|
||||
|
||||
## Tips
|
||||
|
||||
- **Commit per opdracht** — kleinere commits = makkelijker review
|
||||
- **Test mobile** — Chrome DevTools → toggle device toolbar
|
||||
- **Vraag hulp** in Teams als je vastloopt
|
||||
- **Tijdsindicatie:** ~1,5 uur
|
||||
|
||||
Volgende les bouwen we Server Actions in — Part 2 van QuickPoll.
|
||||
105
Les05-NextJS-Basics/Les05-Huiswerk.pdf
Normal file
105
Les05-NextJS-Basics/Les05-Huiswerk.pdf
Normal file
@@ -0,0 +1,105 @@
|
||||
%PDF-1.4
|
||||
%<25><><EFBFBD><EFBFBD> ReportLab Generated PDF document (opensource)
|
||||
1 0 obj
|
||||
<<
|
||||
/F1 2 0 R /F2 3 0 R /F3 4 0 R /F4 6 0 R
|
||||
>>
|
||||
endobj
|
||||
2 0 obj
|
||||
<<
|
||||
/BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font
|
||||
>>
|
||||
endobj
|
||||
3 0 obj
|
||||
<<
|
||||
/BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding /Name /F2 /Subtype /Type1 /Type /Font
|
||||
>>
|
||||
endobj
|
||||
4 0 obj
|
||||
<<
|
||||
/BaseFont /Courier /Encoding /WinAnsiEncoding /Name /F3 /Subtype /Type1 /Type /Font
|
||||
>>
|
||||
endobj
|
||||
5 0 obj
|
||||
<<
|
||||
/Contents 11 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 10 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
6 0 obj
|
||||
<<
|
||||
/BaseFont /Symbol /Name /F4 /Subtype /Type1 /Type /Font
|
||||
>>
|
||||
endobj
|
||||
7 0 obj
|
||||
<<
|
||||
/Contents 12 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 10 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
8 0 obj
|
||||
<<
|
||||
/PageMode /UseNone /Pages 10 0 R /Type /Catalog
|
||||
>>
|
||||
endobj
|
||||
9 0 obj
|
||||
<<
|
||||
/Author (NOVI Hogeschool Utrecht) /CreationDate (D:20260607080655+00'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260607080655+00'00') /Producer (ReportLab PDF Library - \(opensource\))
|
||||
/Subject (\(unspecified\)) /Title (Huiswerk) /Trapped /False
|
||||
>>
|
||||
endobj
|
||||
10 0 obj
|
||||
<<
|
||||
/Count 2 /Kids [ 5 0 R 7 0 R ] /Type /Pages
|
||||
>>
|
||||
endobj
|
||||
11 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1876
|
||||
>>
|
||||
stream
|
||||
GauHK=``=U&:WfGfQ!fFE]SekO9Cr[[(.Q`SO@I)oKl-*`0c>(6_<PGmt(d88X?HfBe><XK%T*fm-_>n5k2bWhaIV9q\1B\)))QLDnoW;_XmrCRQ>X&iBEU2#=Ksi!Y-Iejq%$JPChs25MuPE73tgZ"]mFQ<1nc:S<Q]6Y2S+kLB3N$Q-'9)R--""5[G"oF#<7schE'?q:7cAg^AqqHA?Ar?W;bA=:<8d'eZ3(P9*C2)#\`&o+'Vh.pX^W=Vep,1=qG,#rBjQ]QaZ7oiB,d7d$*lr=7:h`kXj=lSINn.X./lXeOf]kI6G:lYmT8+g?NP:DgrDL!Nu<I)1UI4Fs1j).1ES\\rKaf*%@*N&Ldre2L/-_=j/PrOi^La5/Ks#k^;lAG\6V#g!.Pg)(3d?.PBK=ZD&SZ-sVt/%!ntHXdG=U)Pid[eng;=iHVHede9$@7kNjfK!PuW,k@81k$Kh/l8C+C5AER65B/mO.?OC/o/\6)!pt9@^dkpf1(*sru/LHjq3Y/`HkoEi>rB21qJQ"T-j(UYL/)CC',--\&C)C>qBY9"W&</77q,fkO&R\JCc&aQc?Y:?ZuWRG6Dn`D*S0JN!$$O;\^m%YHp3C.OsVlNg;_SZlW&-2!kD2@CX,hZKG/uiQe.iisn-H6#.RQm9,uB"echHFMIY>FpcG<j0XYMX/'W\URUcHq2WokY6%B:KD&R+Cfg?F]1s7r_AHTl<OrU^-qfJn`\8(iP9Bd#j[E03NoF=:HROn2bQI%#(B,jkl#`mJf&n0#&ce-oIZs_Yb$KjK$2hTuV`i3]EBOhX8mrJ'-#UK6'm@J<#C_,SMt_A-.nGb2Ju7&&e\ILr$F)=-$L]%Ofq@XU3f"-%?KuJI8#^B8g4s2A2d)HaFqAh1[rcpcn'W'!44i_jn=-A(>KsE+D)+BL\$1iYR-H@cT%6%G`ed)94;pLeqKBcuBk/S,^<N^)ADk_#?Yu*SBK2WlHsIJ&8Ad-"+[#1qla]+6r)h4^"anpP,nF^uJi(n%XS'5ZQ!T2RH9BZYH%C(T<)CmMN$93K:>'CrOd\AfSh1A)auoq`Ce0On^XVj&Te;VJ("M^))(I`mK^s>B$;!A3fP-V?&Y\&l4g6H8WkXB2*/Bas4JoeIg=nBqWd5)\pU-:TdIdIIFLt2486PVr:neG6X^e[;9@jPNI?pYI'(/G_fO11nGX1W60H:/;?IWGbW.ZRYb0qP:pTBG7J/&BW9-C-D4;/ffK0q#maH?ZZirh".)HrWt2;_c2f'7RW*at#U?f5E2hO6:'mWDIaf`ogQ\sa;>2G*R)bXS(:*_2.Aj_;[8-P+&(ZL6$00O:bgr"5)G8l#h9bV8WL@"iZmA>QHHPiWJeh68NT:%<Td)7]G?lK_g;Y?tUaT%K5OX2g6036E(2)q-"N<G,pif8#9K.@g-mG;QIIp\^pH1u95B9r:u7^d'KEbV]5%7>V[I;+CEUnb0h*^\;Qb4B"Uf@1SLDF_F?6FOUjlo*Mk;OHd]bCRC-;P_0Gn;-K2F4li+KaapBVQ=0;h7`\,S`jA-]"bE]`+FC5s6uTr-IZF:\bRE9/An;hF/c[+QNV=8.SKp6"*+<SLR*8!a^c"m6Y>Q1C96*MGn9kl2FE[;d=eP,9T6B(c3U`<G%&8'[C#1o`f!^HuJQIoEc&bt]?MtFteS1?"_)?9P05ELM0CWq@1RXftn_Iebs6PSK%ArRb!r;>=3Fbr.FV8&URWkq_:A?K2oJ/usaKjK4So+"T6(:qeM*q;<ceNY/%Hd6]*p43o!NpRZcj4cjlOp4ud(nEL\8],g04pP_\15XuR`8(PSV$c(,(:0_=*T*/;k7!jAno9Ubl<^-*\Wtm[pJFTchVJkN!9F<NAiElS::OV3dk3~>endstream
|
||||
endobj
|
||||
12 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1429
|
||||
>>
|
||||
stream
|
||||
Gb!;d968iG&AJ$ClqtmS0EFAfR81bES_=`)YoUipkQ6Sp"UP<6&sCZaqV/WT*i<Ji[[N4l>EhejJUMpXqs?]a4FGQ=F&2l7R_mI!$C!i&$T&t,U_e!=*rL"C=N'2A"QCf#hdo'a^AEO45L9s2,jMZfKuAm@&dJsnPU&gZ!J^L2R)Vr/\:&]hJ]*Ze-NT<^L/AT>g[C>^0iT0T0T*H2q\SrPcFbcd(=o1Io*^92$G(1k-.NN^8&I<>["-H"cSt$+Ao^`ZL;kY:C+D"U>3I[V_sobb-Dj+t;H.QW*C9PQ.;0"s,"eT^Mq<ZS9k6C#eT`_.P35_a?nD[d#iSZL`"mO8/0[[L"UP(E#e0GQ&35_?mh)?"#1g_ko=<'pmed@Q2OqopBIJk'oalG?BdH9_2erV72ouG2-EZMAS6jo_CN@@7g'Ltg<=YQ1;UeN6?!F"<BTtAt2CgjP5G[_L(CufU3^<'iCDF[A,qZI9k4'FX4#np-(Wj8DT:gl9^^X?&c=P;;mEmoMBr"Nr881Cl](SPZUG5Y34VgXlUI"/kErH[o?C"+(n4`,;f_YJ?9+p`XkAtjHCJT.M-FG]7";o?'Y%hGWDp:[_O#Y=qkB$>lf?0A\_WeZ$1G]cr+kO$X(5$Eq=-;cE>#Ec[H1m2Wr@>WHR_Db\&6VHc9IMn>@g:[P'kSkW9dT)QkZU^bjH[rtnBTQ:re["4r#c?;<Eg8m8[)CfT5eI&kKI^]X2MdWWn1[N#;]ki9^&DDAr(YJZh?`Wb@$.uHj]unHYb/^YhL`\GlfoK/[eXI_2\I"=mV!h2f>>?]S)CID0"!$=E$,$?UX#T9ku^cR"Q5M9S#cjGP/T"bo,Dl_J1i.=."@B;dsKp_DHptO2jts]n?,!`G7!q#Mjgm7,e:GQ^PAYcD5L;.T,/;'B;mJ]-X3j10cYO-,<@Lqm[sh)<^k1q`DnG8>9.]m+Jj#'d(&Jjbe/dCL*RH^GnAJcVI,pD,*$-ccB+.Buo<s'#Zt*!k+Tu!^C!Cpeh#Pf*[:=K_l(!H*jDk9st`2#^3sUHT(+I(r4bh$^aNrWSg3>i0\;=VZe5d#)0lT"D\\.;O7Pt@X8R>C8.uo!ABJT;hLRUnOpd^\VjG%1?1Ir3[MhWrs<-'P:lD(,ha+?5P/"bIP_J4/9_U,/"1*j>N;b)J_AVBckM2@J;5`sOleh&?Ds?\NYU[_Ah4@Z*B!b8a,7C;&lU5kY@]uTMFB"0MhU*OX6gao$nG6^G>:m&r44q%"WKA*0\Y0oGQQIW\Iu':j?VW^U\_WL@6J[-cu(>YEu7YO\W)%WW^2B<*Oe_IBe!UbqkDg,^.BM==cJ@h#CJBS[[mDerY34[E^-QcHQrp92+$&uMr,A:]7U)C%doh.%%.nNp0pKQ`^(B$""k4ET1:AhISZ+%Y9n9D^;M8D-7?^I56MZr3W~>endstream
|
||||
endobj
|
||||
xref
|
||||
0 13
|
||||
0000000000 65535 f
|
||||
0000000061 00000 n
|
||||
0000000122 00000 n
|
||||
0000000229 00000 n
|
||||
0000000341 00000 n
|
||||
0000000446 00000 n
|
||||
0000000651 00000 n
|
||||
0000000728 00000 n
|
||||
0000000933 00000 n
|
||||
0000001002 00000 n
|
||||
0000001287 00000 n
|
||||
0000001353 00000 n
|
||||
0000003321 00000 n
|
||||
trailer
|
||||
<<
|
||||
/ID
|
||||
[<9039fd2d998a3bef32f6fb1a7e765539><9039fd2d998a3bef32f6fb1a7e765539>]
|
||||
% ReportLab generated PDF document -- digest (opensource)
|
||||
|
||||
/Info 9 0 R
|
||||
/Root 8 0 R
|
||||
/Size 13
|
||||
>>
|
||||
startxref
|
||||
4842
|
||||
%%EOF
|
||||
168
Les05-NextJS-Basics/Les05-Lesopdracht.md
Normal file
168
Les05-NextJS-Basics/Les05-Lesopdracht.md
Normal file
@@ -0,0 +1,168 @@
|
||||
# Les 5 — Lesopdracht
|
||||
## QuickPoll Part 1 — bouw de basis
|
||||
|
||||
**Duur:** ~120 minuten klassikaal bouwen
|
||||
|
||||
---
|
||||
|
||||
## Doel
|
||||
|
||||
Aan het einde heb je een werkende **QuickPoll Part 1**: lijst van polls op homepage, click → detail-page, voting met lokale state (data verdwijnt bij refresh — dat lossen we Les 7 op).
|
||||
|
||||
---
|
||||
|
||||
## Stap 1 — Setup
|
||||
|
||||
```bash
|
||||
pnpm create next-app@latest quickpoll \
|
||||
--typescript --tailwind --app --no-src-dir --import-alias "@/*"
|
||||
cd quickpoll
|
||||
pnpm dev
|
||||
```
|
||||
|
||||
Check: localhost:3000 toont Next.js welcome.
|
||||
|
||||
---
|
||||
|
||||
## Stap 2 — In-memory data
|
||||
|
||||
`lib/data.ts`:
|
||||
|
||||
```typescript
|
||||
export const polls = [
|
||||
{
|
||||
id: "1",
|
||||
title: "Beste taal?",
|
||||
options: [
|
||||
{ id: "a", text: "TypeScript", votes: 0 },
|
||||
{ id: "b", text: "Python", votes: 0 },
|
||||
{ id: "c", text: "Go", votes: 0 },
|
||||
],
|
||||
},
|
||||
];
|
||||
|
||||
export function getPoll(id: string) {
|
||||
return polls.find(p => p.id === id);
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Stap 3 — Homepage
|
||||
|
||||
`app/page.tsx`:
|
||||
|
||||
```tsx
|
||||
import { polls } from "@/lib/data";
|
||||
import Link from "next/link";
|
||||
|
||||
export default function Home() {
|
||||
return (
|
||||
<main className="max-w-2xl mx-auto p-8">
|
||||
<h1 className="text-3xl font-bold mb-6">QuickPoll</h1>
|
||||
<ul className="space-y-2">
|
||||
{polls.map(p => (
|
||||
<li key={p.id}>
|
||||
<Link href={`/poll/${p.id}`} className="text-blue-600 hover:underline">
|
||||
{p.title}
|
||||
</Link>
|
||||
</li>
|
||||
))}
|
||||
</ul>
|
||||
</main>
|
||||
);
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Stap 4 — Detail-page
|
||||
|
||||
`app/poll/[id]/page.tsx`:
|
||||
|
||||
```tsx
|
||||
import { getPoll } from "@/lib/data";
|
||||
import { notFound } from "next/navigation";
|
||||
import { VoteForm } from "@/components/VoteForm";
|
||||
|
||||
export default async function PollPage({
|
||||
params,
|
||||
}: { params: Promise<{ id: string }> }) {
|
||||
const { id } = await params;
|
||||
const poll = getPoll(id);
|
||||
if (!poll) notFound();
|
||||
return (
|
||||
<main className="max-w-md mx-auto p-8">
|
||||
<h1 className="text-2xl font-bold mb-4">{poll.title}</h1>
|
||||
<VoteForm poll={poll} />
|
||||
</main>
|
||||
);
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Stap 5 — VoteForm (Client Component)
|
||||
|
||||
`components/VoteForm.tsx`:
|
||||
|
||||
```tsx
|
||||
"use client";
|
||||
import { useState } from "react";
|
||||
|
||||
export function VoteForm({ poll }) {
|
||||
const [votes, setVotes] = useState(poll.options);
|
||||
const [voted, setVoted] = useState(false);
|
||||
|
||||
function vote(optionId: string) {
|
||||
setVotes(prev => prev.map(o =>
|
||||
o.id === optionId ? { ...o, votes: o.votes + 1 } : o
|
||||
));
|
||||
setVoted(true);
|
||||
}
|
||||
|
||||
return (
|
||||
<div className="space-y-2">
|
||||
{votes.map(o => (
|
||||
<button
|
||||
key={o.id}
|
||||
onClick={() => vote(o.id)}
|
||||
disabled={voted}
|
||||
className="w-full text-left p-3 border rounded hover:bg-gray-50 disabled:opacity-50"
|
||||
>
|
||||
<span>{o.text}</span>
|
||||
<span className="ml-auto float-right text-sm text-gray-500">
|
||||
{o.votes}
|
||||
</span>
|
||||
</button>
|
||||
))}
|
||||
{voted && <p className="text-green-600 text-sm">Bedankt voor je stem!</p>}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Eisen
|
||||
|
||||
- [ ] Next.js project draait lokaal
|
||||
- [ ] Homepage toont lijst polls
|
||||
- [ ] Klik op poll → detail-pagina
|
||||
- [ ] Voting werkt lokaal (visuele update)
|
||||
- [ ] not-found.tsx voor onbekende poll IDs
|
||||
- [ ] Tailwind styling — leesbaar
|
||||
|
||||
---
|
||||
|
||||
## Bonus
|
||||
|
||||
- Voeg een 2e poll toe in `lib/data.ts`
|
||||
- Maak een `app/loading.tsx` met een mooi skeleton
|
||||
- Voeg basic styling polish toe (hover effects, transitions)
|
||||
|
||||
---
|
||||
|
||||
## Klaar?
|
||||
|
||||
Volgende les: Server Actions + form handling + voorbereiding op Supabase. Daarna Les 7 = echte database.
|
||||
@@ -2,7 +2,7 @@
|
||||
%<25><><EFBFBD><EFBFBD> ReportLab Generated PDF document (opensource)
|
||||
1 0 obj
|
||||
<<
|
||||
/F1 2 0 R /F2 3 0 R /F3 4 0 R /F4 7 0 R
|
||||
/F1 2 0 R /F2 3 0 R /F3 4 0 R /F4 5 0 R
|
||||
>>
|
||||
endobj
|
||||
2 0 obj
|
||||
@@ -17,22 +17,17 @@ endobj
|
||||
endobj
|
||||
4 0 obj
|
||||
<<
|
||||
/BaseFont /Helvetica-Oblique /Encoding /WinAnsiEncoding /Name /F3 /Subtype /Type1 /Type /Font
|
||||
/BaseFont /Symbol /Name /F3 /Subtype /Type1 /Type /Font
|
||||
>>
|
||||
endobj
|
||||
5 0 obj
|
||||
<<
|
||||
/Contents 21 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 20 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
/BaseFont /Courier /Encoding /WinAnsiEncoding /Name /F4 /Subtype /Type1 /Type /Font
|
||||
>>
|
||||
endobj
|
||||
6 0 obj
|
||||
<<
|
||||
/Contents 22 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 20 0 R /Resources <<
|
||||
/Contents 14 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 13 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
@@ -42,12 +37,17 @@ endobj
|
||||
endobj
|
||||
7 0 obj
|
||||
<<
|
||||
/BaseFont /Courier /Encoding /WinAnsiEncoding /Name /F4 /Subtype /Type1 /Type /Font
|
||||
/Contents 15 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 13 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
8 0 obj
|
||||
<<
|
||||
/Contents 23 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 20 0 R /Resources <<
|
||||
/Contents 16 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 13 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
@@ -57,7 +57,7 @@ endobj
|
||||
endobj
|
||||
9 0 obj
|
||||
<<
|
||||
/Contents 24 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 20 0 R /Resources <<
|
||||
/Contents 17 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 13 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
@@ -67,7 +67,7 @@ endobj
|
||||
endobj
|
||||
10 0 obj
|
||||
<<
|
||||
/Contents 25 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 20 0 R /Resources <<
|
||||
/Contents 18 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 13 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
@@ -77,220 +77,86 @@ endobj
|
||||
endobj
|
||||
11 0 obj
|
||||
<<
|
||||
/Contents 26 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 20 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
/PageMode /UseNone /Pages 13 0 R /Type /Catalog
|
||||
>>
|
||||
endobj
|
||||
12 0 obj
|
||||
<<
|
||||
/Contents 27 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 20 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
/Author (NOVI Hogeschool Utrecht) /CreationDate (D:20260607080655+00'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260607080655+00'00') /Producer (ReportLab PDF Library - \(opensource\))
|
||||
/Subject (\(unspecified\)) /Title (Lesopdracht) /Trapped /False
|
||||
>>
|
||||
endobj
|
||||
13 0 obj
|
||||
<<
|
||||
/Contents 28 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 20 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
/Count 5 /Kids [ 6 0 R 7 0 R 8 0 R 9 0 R 10 0 R ] /Type /Pages
|
||||
>>
|
||||
endobj
|
||||
14 0 obj
|
||||
<<
|
||||
/Contents 29 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 20 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1580
|
||||
>>
|
||||
stream
|
||||
Gatm;968iG&AIa;m,[5<.Mr[/!.@J.e?*@=Bj@]!q*J#a7>i@(P-UQMIsVuZ!0h$IXqOAo$/jgt#JY\C!Q@"`Y3?k_f/XhC112*af>']c_Yc4f2@o3W_Bi8l"@QoQ@LaY!p'(+`:d?:_N-WW4;an&#+k2Ha*GaSX:+<'52K8UI?pKsP8r#YgMklYck67!<U[!q/;T??3#Q(kc0.(_D%aF?)#_it.E6=l3OAH^l#j,n^qXWgY1\d`X0ho51b8gM!CQgAT\E$o2LGS^9mS."gVLApE>F<13$7;ES6qJXj[12uc1hF(n'*n.e\]K^3fEC7TUH"u=5+!Z#,:\]V7fURA#85@bK2>!b>UeaDL^C!-hO2;dC;KjP65m?;@tN&U@eQn\P=-f7K0s-"m\QF/\!%#[gNbJ$F$%mH;6MM[.%6:YFc[]Zln5Rr=9eP.$.G=NoUR3e6q7oMdJ/"$F+KE>l)F,V&ZTQ@^$e')Ums3L@srP/kI]KB*fYJW5O>ucMb(dRB&9eSn;,&N*Fi"#GL-6J;q)t-H6BKfO<5/4@SS^*\,_40;QA`=^(BtUSM5=N!P5kX]"0#U7#jj_RC*'HcSo"<qHE#A-:H[a<2\cVgcWBh^fAfnc*J:>^rk4Bb`JfSbO.o!-ZBmKme.J+1lHN(F'$H&o+ZlGO.\H1B=iO6Z`FZqU'!qf%?J4LX-5-1VcLc-,jYA$Z.V&/*(s.kV+D/pjec-*D,qFs6"S+HqC3:FDX(i_4R^6^iHMpo:dt,;IpMimr5KGlT%pusK3('@o0N(Th-i"pds/U%fb$0#Y^'s,lQ+u2JP\=WrPnWan$r2?<<*JD#\Dd=58G?N2unc2@Ka>j`6[:%+43YZi98X%;tohSiAcF=)00,U'q<bgYf`0,a]8_re#'>u%Yil1`&LWHi!or7<72(83G!$;,98YQ;1SD%m8I`ik=l:N3mkG@CXINsfOJ@dO;+oU/XXb&E+uK5eptTp4ICHFnT'HE)!&@K\/XHAaKsWuKmQ4j:oo5RJn;JN<H;SuJMbF-,H08Wkp;DO%bu".bA3SXq5hIN@rcZu[TRSPCU?;Z=%R;&Bp7,`jUmfI"R]!tGfXc\(9XrICbF>IBpO/ci-d`91nCDM8Us,`0Ahp/`1(Q/ClphN!IW6hi(#58d3dDrAhHchWLgRp:e_'mX;etm`Q!eWke;Bg\hPK&NRpoMC8Vs(_1LBnI`mcrKSEH#GP!:>R8Kb(MTI9:c7%,L;q6lW4h+sROL)ai+I$6o!WLMnEgqA/l?1bl7=-,T[rj\!^%"=Ba^ohi#U/UQ8;Z1F&&tRkN(>lFg$,.ZW\pT[YnSb55OC#$WqSNV0H9Frf%>(pbKIpRnI\XV,U5;;+TZ2]p3VM2I@XB??!nF1@'8Kb7)s(?cC-eb/[?92ft&YKe=1)B")m$<^O,RZ/ri`HrZUNJV$h5'e&S=1;<RSggcmaln<c7?rpL'bEG<i9(7#S'M.PAI-\>5'D-:=cJ&+[>gBR7/:U/'T+G749)AVUH#4mp:JY/+A][,NB@^\2\ZMnb-:\"QSnXkWHj)>)/+04aRG'.WOOLEgmd6"?Op^\EhD3F~>endstream
|
||||
endobj
|
||||
15 0 obj
|
||||
<<
|
||||
/Contents 30 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 20 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1461
|
||||
>>
|
||||
stream
|
||||
Gau`S@;jmY&H/b=EA7+&.;G<I.$Da<Cb+5@"bJ?q]mZj^<0:m!M_&SJS2glGhfk;q8P[^4)2^"(Cl,ZKpNSg6k:iS(@c_74#'`:bnL4R[@CcFcLk+_-]U_*53J:&.KEoHGeFbg5hmIrq0:`5.8Yj[\#+@$9PlRKqdG!3f0i'6q+?-NLi@lBH;PaO.brhueK7'"VcEX`!Ss96Qr0j7doR%iuG"Arc,8`nSH;b9Q.gT^XnmK%`iJ6=iGRs8kV:gO&1l^Jg+ueJ\J/RMWIX)HBbdE;VbiD8Jr=c%]Ck3(pn0mg3TajB7bU1TsH-cP^#KnM%J9O7B@MebeP1S2Gi=_b=(VB,I7[Yp77Ep&,C>0p;HV1f'lTVBjTiBS!AhA1ZVDb\bC<f'W.]DX8k^?.g1i(=e"C',DW;YsXMAP!<B*HR0YC[YsbmHeF2mL8V_T[1W[U?JE'fr]J'B;g)[E`]7dp@dSasguF^8`D"T*k)2RDg*;<-/Vp[lrjdR$,DZOb,_PZcge0J1s\U"_;<eDdWX=+$]E&5`5-j8cXCrSnO2F/sN<0!M]BE%+sKL:R\MI@XaMA6q(oGo<m6c#)XOZJ*P#2ReTL`V:2N%E2Uai4(O4F7GHh3bDLKtGR9)W'mMaPaipY:O0Si=Y1(61/qpo$:=LL^HK$+?AIEp8;lnF.3O$5UK<[Yj"5'i3rAB!5,gO/_:Sul3?M#L6T*V,JY7pd%4[gna/&O#hHobAS7(Q"FfWPOj/l=7a\i\T'D%bPiLSZHFEP?'QgQbKq8',dpe2P#[28EsF]qsKugH;I,'=*FWq.uG7j9.4Nc!`Aq@)lnM4Zh>H>K"-[ATU'ZQn"Bkd/`/&9u)tle7!q1A#kYdd:,]]iMFF$58?HgDC+--d^@2KV)][n3!0l2QGGkTEZ/'eDRG<u>E&(JSM+CgAD,V$+iS%pQ7@m'N#Ni4fB,a?/^YmDGN7UJ'(5XP`Z[2/)!r.Fg1D5P)TR<'1lhN/CE33dg4I_\ephKUS0J<;Q.\[no's;n:#c^!H+JaHcf7!r*7'6])"]oqpd&/.!-T,(=#Ea)MM4mK<A+b!Wh@(N=rE^Imbp-IQ!nPG_)C^0KUqqlY[8(S%($V#g$i.I$1M[M6j\NdYh=C0en-[>#J8C@,JK(E]c..0,)'j/#:Ij)<s2j70!#ffOc-/r1atn\Bfq1Dj[]kV5&R.bb%fq:nV[")\SoMjAfGs;CpG0?URMkaAUNC#9=(WTFWG##V"V7gTgb<DiWu^2c/dGJnm*?$LL+5\P`rW"c!k_jASe?*J#Epngc]?<A\9lF8L^ahCQfiYPI\eTE_Tm_*jP(?)l3DBF8&@`DYT:[#(#RlZg0M.Nd<GkS9pke4.72_nElV<IYPks\>Ru1WE2+R_<K(QBADCrPr\-*C]?d!RO^0?RXjkdb+`q<2l6kTGk>jmCmC\?nSaB>cMcp>IdtYu%F.0kn8]E~>endstream
|
||||
endobj
|
||||
16 0 obj
|
||||
<<
|
||||
/Contents 31 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 20 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1117
|
||||
>>
|
||||
stream
|
||||
GasJRD3(GM&BE]".AhC0Sf2)X5I'$M[CnK`8Z02&RbfROGR6s?GY#Z]9=;od58slim:lqU"QT=&h_Tm4"L($[qjeE$^TJ_^&Khe=>9F>/=FZ"]fA=7`U4Q"W!JLl9&Hrl&mK<.-.tJ'R+rV%i=<]%/0L_($OTK:bUa-T<'XmHm!_<YL'a(6;(J=VO5"(!#l^AtL7.epAf;G.O#`2lYQ._]DAnR3S;$/[d#SSgNX:+M^IK&d<rht!SPO,>"LVHQS-@5hLV%S7Q!5G@;e%@`;oaS#&Jb;+f?ijmZ,9AUc%K2YPeR;DB!VE=7=fER75lS,f]MJauV/_A)+dh!IH\c&B#ofVtg4e77aKmTiPhY^6$BId3Km+BW4f5G>*/B7g#_X(]dh-_jPB^T7-q-fYg7j<VAp$QqT,jG"d7kMn$mQNFhW,_D;Q7cJ4MpUO/+N*W-FYpdf%tj\c1j*bp0Lrrmc[OiX;F?Bc!mLFWgG%`64kMC!6#d0CaHT]A]:@C%6VN\231b/_\on*<P[VW+O?X2NAc+Qe*BGAi=Vmt[lM%^Q'GKPa)Ws9bOf=s;Lcr7g142D99fSK8A.jqV)%;8Wf)_XUp:NSZntKrGrj+aXK=V*IUa.k2Z0jZOIfVZRrk]l\H1Oa=!k.7QAJfR\B*?4:LjEM`\Xs#;5B*b^d6S`BRZJVTaF4dF?7^V2@?#./Nh_uA5.CE%,'bY)H1;1%aGT(Nc/<##a#BcHkDN@A`Md>\U<4crh_L#]:"R'k(j;gY!<4n8b\R?MZ%?)hop&6crTidhZ2=F@fH\RZ"po";XD_=lq8:<B"-h2;lAb[QPT8&Q&#ue?cC:ti3(F0#t_:hk*%FGqaI2SbAYR5"3"uRO/@NH;CrsHVK.N`'J`K:G>G)8A)E+h4lroM9!`oFEm&r9ZGj_f><+I,aj]ieYU;5u(e5d7C?fJW;]P&9jddQ^iIiA;+f-FI/oZB/Z(cE:F:G7ZRSS'UD<lJU2\:QD(8:%'Y>/Jg%hmgdck@^KMfmm/Q#3gD)l7D4p]!#F!5*)R6NCWrI@f-j"l<U0ReZ#;p$8o.30A@F]<-)$H?<@L_+k$*rE8U)Iq;DCVE)%jgV5);M1>Ch#'f#+T.Ll^~>endstream
|
||||
endobj
|
||||
17 0 obj
|
||||
<<
|
||||
/Contents 32 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 20 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1872
|
||||
>>
|
||||
stream
|
||||
Gb!#\gN)%,&:N/3D#KHXdg-"?&--"ZSYh5kSu-3X<V$jrJJKD_(.k_Uji$3L^NW8,(X''d[khnRNHkWOT"SNO-jCAMXST\j!FF&[HHLbXR'2#H,%1Bc?I),kNX1tV#oADmWT.t@Sl>VS[N6aQ8g6Fd1!il3XTSpSLt8.%Nq8KE$8M^ak9C1!8ZK,tU7!O>]JJFgP&iH3Lb#=25C^^LQh3BaGO1E'rC&C[_0/S]W/`!b\]TVO%-)QHHoQa;G&?g3-Yjt%]u\Fg;ZR9O(&W"TYKWi"Chg7CQs[Z,H"ioV.U5SN8#Y18DbY,u+S/g1?i>,7p`Ol*mkK\/MW>4(mSs`Mit5^aGnM@O*pZ@`&K5(K$$YpR#Ot>5<CaO3(QF*Fji$RfRfZ0[TW3K32e//Kp7>Z^GY3i#WkIR>#pl8KB<iT.0kfu+98^t_1h&jeh0VgW0\Y2`NbCp0_Ma^q1V`U[4'dk1NN,l+5BXuDVZON2A1>p<U?L^_,9CK&K&bg"1gHmD@%/*;7\ND2KC?OGlZSlJ`5C&=?5TRu/)V=brbmKt(q>,sAn*gAN5$@PP)<'f.h3)KEm%jqg7nC@=^5g-AJ*W!51m`Bg+6QhY9C;N"?26+\/m=S*5[tF]+2'P8RB3Q916p05]2Gl1]IPhX]LF##u,5>R`lS'6Z+oC3/Y#Rpd'f[gr<^s;/V,>R7DoE6h/%-j18Q,^("(6?nngT3"(`h0=!97%u6'i/s3<smdQkY&V_SfQS:LPnjm4S7<lHbJC>!*6FUV.Q@o:_Ai",1_=q&0KFn$T,+Th7OQlt_7A(U8lN%q3=0:C$ji-1dE4Lm>NnX4_=H&/S4.I6B1nbCp9\p2:FsJMt%jmH\>j%V8OI7Q+=TXNO!&QTuNX*@>&74AMp@J3Q+.LqLT)))9\XN#?TgVaM"SG/9;qG"b\kEWt@9O<\4*M2;)4b](_Bo@@PpEN1`N>O.)fmmK/dl86^eBW#=4s'\P96Q=\X?_V``W$"^i!!li8S\]dcK,;eNT`Nbl..S"LBR;K=h>q?-W(gp%%^"ZJ&b0/'O>h&t)`#l,8-oRft-kb\iW["RsN>RdB6c4]uFse\n:9M'Ir3%?%7f&mX%8:7oHi2)'cu>1%cXa&l*Y$"g!oHZM<O/dIIdp2fKda0@tr#9o0TrjK&8MQC/YZ>beLU5DPaf>jHRFJt9aD"h9c,qS4b>8bL"8cZmHW:0EcruG_uG&3j0^V'WEoa2P'lXCr+Z`H*plsg-6"a4\:V"[r-!7.7QES:rm/r7Lm'1lmOgOk]V-Ld3nJSW/8E+*^\0_%*Be+@1dZ@e.miOgsp4N6/5e7Gj_Qa1cnBs>oAa)^t"YbGZ]Tlqh1j];\+mC!*<eFbsOW6@m"do2LnQ2'LlS&+lBR%*.PUV=iNJ28a5c6TM52p)T%dRq+@p0FG]YJK7[@jtTI2.k*R_3DNt,RP?simue7qKi`4]++`Ord]2p7cYa`9jfWuZ2f7cnA>;O]CGj`?HX7kYs+S&SZPDopVt3"p"'BTCD1e?]KgI<b/=,Xhb\)PR;\Xu8,N!Y'Q-a#eO$jQ1d-!T3,hseT'QJC?j],W->E.]pHUDPrH,m>Ccsfr./m$a_e50MRd*>PEuF+E',fH"5q1S"+7PKCVt77$ok6Q'>>/(oXrp14V=+.;3B%n08u&PBZW@[fp(MVGJ)6FP=IGf!,f%+[.OrnNr@eg$PFq`$G/s1N4U1;&_'C=i$%D>t_GIQt"9.\Bo$Sl>q]k"qSZ&p:e>"ses.VdI!nK%GeR!E-r5"gZTKiOlX2Vpo#a;,GM;=\A'V8*?62F^$s/T%GUq8kgrha^[h`j>"V^R0"/DY?7mWIGB`29Kq`R]d*Dm2UbI_k<922qM9<-?RM~>endstream
|
||||
endobj
|
||||
18 0 obj
|
||||
<<
|
||||
/PageMode /UseNone /Pages 20 0 R /Type /Catalog
|
||||
>>
|
||||
endobj
|
||||
19 0 obj
|
||||
<<
|
||||
/Author (\(anonymous\)) /CreationDate (D:20260311071405+01'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260311071405+01'00') /Producer (ReportLab PDF Library - \(opensource\))
|
||||
/Subject (\(unspecified\)) /Title (\(anonymous\)) /Trapped /False
|
||||
>>
|
||||
endobj
|
||||
20 0 obj
|
||||
<<
|
||||
/Count 12 /Kids [ 5 0 R 6 0 R 8 0 R 9 0 R 10 0 R 11 0 R 12 0 R 13 0 R 14 0 R 15 0 R
|
||||
16 0 R 17 0 R ] /Type /Pages
|
||||
>>
|
||||
endobj
|
||||
21 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1904
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 596
|
||||
>>
|
||||
stream
|
||||
Gat=,a`?-*&A@ZcqVi4V:nsGp@+-E5/+Q`$(6`<2--cMo7heL1!^P2b+lAk4llZ<P:2(s"Dn=i!hfLfqJDqBgJ%G`sRg#=sA\^8VmXYZg@.=Q+(6ccF/!5QT1kTj'3@?l<Cg8m/la'MngE.e2=9^^,+InofB0^9N$]L7M-Q&#s/C"Z+"A"(G[hK!fKEN-i6kdd0^g[Jr:GN+P!q(6']=j2Os!93SY]p=a>o_;,l_S3\`rD_Z$>LJe!;1F@C:Hu4ZR]d/U>5jG$mA)HB20HDT'KpYKKs-g/\bq/P;[MECPV.pRonIM:7a9qm(-T4rGhC;.G%l3RBuN3,gsrQot>S_K"seU#Qsh(,BjJY?<G-&\?ZC((AA\$/^%n3"h;g2-.Jskarm3'8EE=CX8M!j>c@YsPu%=TocgE+\LK?9BE]jbd%%3G&+K6,KTd3->b15;fUBp)baWGl,6K"nAh6o1>O9]*,*?jEC-ian&_Nm^XVQ)Jk$7Pc8S^ie9IO-EF?>B,/Yr_bWWc##K`dcn-#8lsFY[&\Y`Z.X=ig*A4S)8q-%b@rMT(R,fU&!g;9cpsP!DWAb@S!N[PCEq8.+*W(uiE/gj5Hl$tkZ61'lA7]Gl/0_\L6bCfA@\!sbM&51]_=$[<]4n2]3617>s`-@;/r06$0&1<eYhBgijc95!bjp-XDKc[U2?PqNYC,%n=\`K+-Hh8G5XSAN/5r.Bc-]:@2="f`;d2kY8`$XtjV[&0'[f6!dr5C7@7%%,Gn!O$U\<'kAZTR@Yd>?DrVOqooPV@?k2IDdMmJ&\=&N-aR2D^:Z&5F-4\WG#^$<EbsMKI`IlV"@kOBd5JK_q;'1s"6+OAD0@OnfBbJ7q#Er7Q1]nZPna(6N=l\#%!*X$fTjiQg(uGn1/#[4"gd#5*tbh-OP$'U8M@0Z9<H%-TMgFKRX8/hVMK(L7\eV,O\:SH0-As<(?eO@-"J_4fTio+7$:99:id52n"SRTcZ9FfK4=]U_DZM#GZ'8nJ%hs!(ar^NY!W/A\Z&lcCfSLgP9i(-7]4<\P(@aCr7Rm:#:0p]Xe%?l8'+^1"MN'XcnA*i8t'@d$)[-\*]o_%f/]nfh@3e*tpa_<4=E$=uat?)a;$+&028R\IMgAb"s*jSssEJ5WcGh$eU%>3)XmmD%_ga<<Cl$r2EA7XFm9S3Np_QbCEZZJTnQ>.ftZr%p#s60.MQ@eItFZXH%+1+Ob:;/'X-G;qs2dZPpR#6_/EZ-2KTe@I0ae,A[oeT)4UTS.tYV@Vo=!*9I4"=EE%BK;,hWgUn%Q>cbOHT\lXY5Ne6Z;4i%#<X)iu]t<QS'YPG'oZ2CRFPJP9Tt5(AVlV@lEW=EF">MT_XG5`9duW"37@9+'YE856>4/G"W5#5m6]IME8>gQ_=,!-eC_pGD(^JuQ=FtsNQ<toL&6<g9_R]5XR1EtO@#N)uf5_iM@o_NkS\;L5'Ah1-\)h^fr3/`k^_r&@l1ZoAV5(TegttX$5]]A'gs0neN*(p`*sFECf(,Q*1G^ogNH$E!NcLh>Nml"XPdl&#]RY3--k%Ksc?!%LIsJ*0a%2Ij`^j6d.)cIi'%We!HS[nFFM<gAJYAhc<dG\EV&."t7sL:QobItTX9P%U06BZcPj?=kBSFTf&Jc\Z$h""2PQWB&%jPVlY*O(_HgpO$@u+*X2KOOMJbk$EQ5?]:E0V]2HF:;D13ac*_LX;jS-C;<F2Nn#C[DVXN2*AJ\^Nd.*3\QDDcC([:F(*>OZYEMWQs*5ELLl927^/P2mM_pG3jsQg#6<s'L[_-BF+*&HsVNI=1f`.MF2g>49eO,,"'LZ?W?`.2X7X]9!#=\&AbSN>!N4FeM2&)`>e/W%'!Ym"eiKq>Xq<aEe83ha2%AmQOiRL>0GEDLnaJ&D1;JWh$RQ\0;i'+p]~>endstream
|
||||
endobj
|
||||
22 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 395
|
||||
>>
|
||||
stream
|
||||
GarVJb>,r/&A7ljjp75+I`LS?&PlER6H"^R<Ojd2"Sr\EO)9j+<n/\)G%Po!Zcg0OnFW?SJ:<L$3t<l>:VdcGW!Bi7aZ&0]B`s\j#ZODoX/ueAM2ed3OZ&#KJuT[<3jcF'akC7Y,:k\XP!$XY&L%_ki;Wp!W>3_T?+\j]UL'\_*D)3a`X0\lnn.:0>E<4E2#&!8(@Cm=R8fJm?0PU;h)*utQnR1\rg`37.==cTXg:\^:rfrN,.rMCj7%@jW5_UgbHUiLgu'aa`H]<o;J:60ZN:BN.D7XmBIkZ*Tqu4JL*Bod9TN'kCn":kpIuBHL07=fL?`/DZN0KBTAsES79O@Gf/E+;kUVU8MofU8q1fLrSmU=rn^,PYAhrhd$kC`@+SN5OndASRMY[~>endstream
|
||||
endobj
|
||||
23 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1962
|
||||
>>
|
||||
stream
|
||||
Gat=,gN)%,&:N_CCo<I7`Jl<s!cNPP`+bZ$P=b+CD-lc7PE81h,&*.E@t/oN_2B^=ZK$n,OMG<A#D[Xn3&(8Mo5Cu?31n(_D[tQRkmY)+"\_.sql+^RnReU6fFuSN^^Gk@?/J(.b8,Zli2c6)^2Q*bTb@d?U$#Hg#uk,5_XhTq`An,O%KbDZ*0LT"eaqSiK-8g,"[lBMn3YlBbR[:SSb'B4EZTt^=n=#cWc#.\#&S2^WRYh9c*4<-[bWL?&0J&e/\'q/ZUgFjY\#9($iTRjL,qGP0[tAkcqoMh/U&Uah8]53%AW7RgIi6.8(um)<L_u*9U@Fr+gn@<S-P&pn/s"%&'@>fa`%%q1I-8*8+%$=o7\'uAEKfQ0`"F.=\2mJ%?F']2sO.=TMu+m^+N<[.ep)o<;*VN6K^uV<NsJ'RAL>CU1P2$>+'u,fj(YU>ZE\0<3XHoXBqd0p2Ga4Zi):&erXF@Su+ug75f`i6*-nVcn><#.TgPn$9+G%=f*s$LT3^P\.65pAD!SK5)HH,H@\#kVh^l))&EJ:Q9mE'_ms9hTG?D:^"VS1Uo\0keeg"C"S=_WRlfEu6@=+'%g5?(VnEMP^Dj[-W#u%OaRRR"6<-,-L1E*5;iWa<PuO%:l0TgS<^iUWVp3i"gLWi)MK`#(X1OX/oe+=DqR`\<<BD5%6IEi6&lig._@O2`WrGqWfY8a=H`$OlG:Ljq[E<ZZPtKs,TF^bIRr%!-o?P3"4_NH)*<59=q1<]Rj1Lpi0<2$3)irH1P3F/DX0W+BCuF9/EU+R7hrBhm\3))T<&)\?1+>L)`Udu-W>B($4dH]`B!XsSCUL)O*,l;"53h>N`rBP#3C$MF,Lj6H&:ZkS8r2l;04>OCcs<6gahrFMjY9mJ3GoMZJ6#XBZpWV\`$_E-8g]6C99l%ga6qI0-`i(D/"%nAUr*arfr(o[6JH#[<15f$Jous^FjfL&9RoJtX#$g^=Aa<N.`$CYefM?X15C.`E*T;F:#BPKSru%Qmo1\U4gA;V)?!H'j6E=7jZ#PTJ(Rc3DhT:Bd\1B6?",u@cJN=^.n-6)4FVf0g:rYi;H2jBkVP(5WPLJgK(VP;2GJ)/Z)m">,&Jl:A>a4NcLh:$/Q9G35j>M+5EO3u5[U.#ZD^B%L_R=3Ofjm-:=[&-l5-]`[_Acr%Jg4'q&Be!*2=_00U>-_4s@5P"<1]j^8YEEG/?;EQsbkE_nk!XqF/nnd1>]DF\gAiHMQZK8l<+/YNK5F[!$USg?:<DHBSgLqD6K5/+8E/lt3P+1>cc%hmhgUBkr$\.4'A[^Int+!![fNFtfWX!M=6@?mkX?K7tWO^<6QC?5ng?'X!FOo`]/ERe7HiQ5hWtq6#NlNF=p&PMiASG[=a-UK/L*?\"nPi9VH%Bt*86:_QD;\j6_ml:;(t64XGR+-`TKaZ>I:MJoUuVQ#2?hOs%Fl7Jbf.>XC\P2=^iIe)dN41S-j]o.Q]Bh<M]i4[kH-Ui?WX\GG>(BUAMaB3!,rtLJu$=Enl:*?lL@0mmC#g3M(&*THZ5@B]%C!-fkl)G%"l=seg*4d0!P>lk4F(M`m[e6IKHsI;"fuEmnB*X;JDV_A1cCbN:X&ZH1@Jd6$duMqS[d'.=htF(QBuKkMOD)i-O]o(mYRbI8-iH1CXSl]>/lnip>%9FcqghM."QWmc/(KCIW6OXMKP6LLDPYd)?h&P$<u%"&ndREok78C!)b^cb3I:j*=5(C'2H^,jRF[Aq[MnjQ7tZDrL!1W.73gu;^MDn+hVX?BZ92J'\2qRq':HV=C2Tn'G(J;*WWRZeG<$pHDNmcRJVcJT^.@qaj[EIW3k@fUc/oY,U^[Z6krd:r`RJp._P9_9;!"]pg8Os<a"+B!j$;rE^/GA@GO`+1PJ%,g&2nM\_[4'/s)r7OYaP=e%&t)8cr&RS\>&k`l#-tBT>1;J!WV5%nt8*`-8-\AJ:pK)'3P8:b;i*W~>endstream
|
||||
endobj
|
||||
24 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1741
|
||||
>>
|
||||
stream
|
||||
Gatm;D/\/e&H8h>E<oCV/LjqgWOH9fcu(Gh+m>*7BYX>#/CCa9>')/R:,;1Nmmp*Wjd3IZ$3QT=8)?E':/UNM8*tf7!-g__iC=7)L[bd$,7MRnn6t\=41*ZY`afe[5(j4e1l)2qjq&;`5/%ZeO'"Yu,_!U,L+8_9@<cVIYV7=gJ2@c>/n,HI^>Z<;gX%C+i],et).ZLO#SRhr?Bgh`/M3\BTeo?6P89.H?(J9]K!MfmiAA\<MRSl5D3\ZBiksSY$a+al._<fk40pm0(\:!eXm==DAmH49\8`P;>MgSW#TD[^"UtAO^Ulu+"Pj8hdYG,!FigP\\:^bcXa0RX`j[XNA#.m"$UO-CR)Xsh_,5XuFSu$&K!Yp5LY,uRIUnOB9-RldTN9`">qUmVI?H*TFT'hoG>s!@)8_R+,WsuMq"MB;4MY>KL5fr;O.Lp^fq0a%n-=_#&1D>83@H=6X;-?J$6IV&DE5qOi.)LCmtBUVXA`uX-#S"j)CC*:Fo,C1T`D5BYMk&53h)JFPm4d8c*Xa`0Ete;EEK),=f%Fr75uE?cl+*DM>s5&OXjc:]>#AP8hM(\)hDm0c/gF1]]?:Ll^A2Uc?n7Q0tQ6*Pc'-nl1k!Jlc-Z^UJ96B,Fboe7u&ZA[pI6(YC8Qk,m`1blCr]4hmgP-'c8b:R9V:fV:/C0=ma4TJP=?>W-6AGniWr"Xp9-cp^N\@\Mg-YAE==%5+q':kl.kr,,!3(Y6RA5,W*M_f[ltNR$QDFe#cHPaoR>tWH,/sWRP*(cJ(_HT4-&G=l%Vp+ClXN]$t!#`QbF,m]NAt(H)L%ma107%)fm=_m:ao')`6'?TG^?^dK_,6.tr,A8kt9W%YBHNs'<e.@t:'m+@YfA+'TeK$!?M2T?=e=aEnjI`!4d>5#Z$C<Eg$6)RXt98[ALkFu3BQ(991fU\/oK/7P[#jeO.jV+8T/ZkCjD<2#rTQu>oAmc=\LHHe4ZZAmWM<P7dq#1IIk7u&8h7&1cUW<sbeg)C_$9&'m132%`U5KDu!G<gS1r>7,d:?"YUmnAiU[Ses,LhJ?g][-Xo'8FTfP=H3gGFuI,UiFeXie7SQ#;KA<2l@tZ[](9O*W5.6bBrb(R?7>Fa`meUFn^+9;b3QC^HR;Op]-5/s]CLc;i``m9hCc37^c7gZk$T3j%tjM/mYe]D[8=]]_&_>J:ntr;S]Y4s>rli%Ro!Yq@bd16LS+X3^N\+)<CpFHRn'pD?T3+H438QZ>"CCb@NpUcf_e,\U*DVOoPsle>&Mol6$e)@!HlSH5EJ%Di7?TbkZVe!(bV2NNU1VFtbIh(>d"bp8=TZJs"ZD-/EfKtEqC]"bKj!lp+N8tTAGo6S&qT&t(\er,G]Zk^=\lZ:T+57XZh:'LmJE)\9M6>q4P7JbY,KmRjbRh!!6$2:rFQT^6*a[\9qC"]75+'mGF4RE_mK(g"SY84N]d-ZCu?.HNV4h4Lof/R)Dp;@]+]"SDlGq4&ScrdF<Scpol(/AJ(pS`8uEi#(R]:nE$XS;Z#kB_8;F%^e?Z>Wo&N-[<BR/2ZH"`Xh;0Zf@NhX;&@>ZEf1>uC78F)3/fEiUj.NIJ-9Z08XHHIs'0\*2`44?Lu^^[dfPp"\=nVb4+-XpFsIiE<;n08B2gMT"Zjs31/Z[,H>GrA?BCo=<n(+)ZbZ,kPOg$l_fhjWA_<TR6X>*V:RG4Sq9X54#HA>9gY2mOm%;ir/Q;1OP>ha0,k")re9=p&j'c"O;LEhU&)~>endstream
|
||||
endobj
|
||||
25 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1879
|
||||
>>
|
||||
stream
|
||||
Gatm<lYkN9&HD15iXi2APLd*Ie0A0UFBseWbIV:Cg3rIGaq?;,Q7,7tdM>.KpDp5gc,?e"K`TYMh&UuhpES!2)#,i9GE`4-5(W5S'2/c\F"eWo^uPi/:'NWZZX)hl`-*^?gqY'[odF\s&BAuHr(/H_F/TBjYQ>&@Pf\Fd*8Hhj*7lL$ig9`aG'r;[QCMqWUDZ"IkPP7imm&_n4)R;G_sd`<[i=p4&t!8B5VLBggJtqmIKX5a45$9,erLY`BuX=Z1dLqW[F#lD2KBMj)Cu*a1W2_2n>$CP4GT])F,Ad@LZ9Cu3(I[5I$2D:h;nB9Y[E?m_<W:XX"[uFYUZr[!`<pV:LWf#->-6#oemoe(@b*`O?V;Xn'Z[aAtPDJD7%*F`f4=c&?)@KnfYiMN5jgk23p-5;16hcgT$cQJ2i+ldl>P7kAN710E?NX(,UnK3#^3V6[d)[L4:mZZuA<7!Fm+63=:8DG5.)_\#b6!7D=pMMKZ^t22(3JOo%o=MF!K'\E!d;&Z<bCPe\StA^(CsBuqQ8==<"jp*WPHQ%#/3Vl09"92pZ;RR\Q5&;IhKfEsJb0.WT7-DJJcju9;i3M3(0[\":CSFQe4&ILu;K5A']<l<bt1A-9KrasM#W2&`;md?``rV[lRO;CU+-O+S,phpCSTrt_ql_03lr\OrZM]b.ejInsWSJYsp>Dc0."_2-!Y1m`hI5E4H%Z*X4mkA"HG[%CgL%3^(q6h\D9N_t%4dBE#cM73D9/`;qko!<cO-l6_oj&M@(V.gk,RTDg*N,_kMaGMcalch4>1+fO;.*V6]i&P?o&h!KBpmH[Y]UE$GE<&'WC_@X.X9M)aKY3O:`^s1?O0\H_\ZKp3g=/tY)Q#69i(F:?KX+FDA2ZCC/i?+2D55t>H+6Z/?U4P5qoD*r0b"Y[WV@GWSJ]bdeZa^&\:A?HM[5!cT/`8SM=Zu(g93KaU)[XiHgG1;&$[",*jekLQ4aXmC?gL9X^qbH0pFhM=e4b_ZUY;IdSZ_De`=0[,C\Bmt`fAD#,A-Hld<e6RZ!&AJI=m=YJ>dG1[.C#:DYQVq-G2h6kI/ar-!hWQ)7u:>-E8B87M[56Qrs6Q6[3\\tP9`K9Z8bHLZr0?s?oPV6HBZMDJqa0G:"pnp48ehmC"n_7ZQlo!V.nI]3t\m]E&CUMWP]3m8KrJ,8AlU]NJ$&b%+_dRId-F#XDO!%-Fp;e<#["@b>9Eeurno-I'H12Y'C(kFliGCPK)dfnS(VSS1RJj;EU-`dm/?Gj1@EpK#Am#`1>%bt@o-+oC)_?o9a"/9[an2u0);erue]?98Q%XA</0(eWEg<nlD&=Y4/DYS'CrL4!m5gVB?c4?c[-;kP`Md6k3\.N27!$eI`d6N!-0%bDj(sY&gV(U,qV@seOtuqrU)cA:.b'sM.$D"-C*snZM-0!#dkI43SX/U+;V'0E0#i#WRm_WT,i]r0,>WJA51B@lU:l`dn4N/g?d'!#'o?0+i\cjB6YGGMRFId<SZNi$R@\RMD<3ORiA-T$CG'rh@gS=/#\P"W<HDPBZ9fU2eMD#BcZ!Ff]^AV(X7'34@WG$fL,s,G<,Ijof#a^c;7FZ/_BMt\B<\-`L';ra"$UtHGl6Jf=EIFG#rN!M8j1;LMHCU+)p4Djc4P4<`[6FO,Lln$%I3g+ZET=ADYHSDs2;2ar**U047Q.$Bg&tJ?S#=/5/T9oNm!F!;nglen/CZe'piF8[&A9I;BYI1Q7eMK43+Xai^Eo2>uo=J&\e33QtCl3;BB9ZgP*gI0$G/rAa"aX\lPHsbY<(po`$]Ya$_V0+:^_/&M7bUJ9gTAm\8$NLnXg^OoIdRiM2!r_f_M>9DNsRC=P9C]`/XO(RPrbU+"a3[uJ4G__rA0&+g<D\G~>endstream
|
||||
endobj
|
||||
26 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1670
|
||||
>>
|
||||
stream
|
||||
Gau`SCN%rc'`G1AEEf)d'6H&[Oa;6hL3Dl-?-t^8Yl^Eh6'3!gM(C]NS?s1-hfhXT/6Qt_[MT2nECbtRLZb7MF2`[hLRI&I$K1^g`\/2`)eS9K38lQ<$SQ,CQ,W#9?(X*ZD1`dH_Ls:URmjjUgA!&#D3#&/,d7B21%L$`=WFoQ/FL);#b7ZOikQq5C[2`'d;#6bchID*QpYDl"#h>DV-]hh2KKoa!FnCqD)BS<T5"mPB/%n[OBV<cm0qf?UYE[1$h<3)ZiO6Xkujh*>$C+0aG^&U9au5i%rS=eM-j2:o*ooR-:Al%[XuoIfs<+e0LsjTg%5D2W(e]gnERt$A9KD#$#>g'7khQ*fs-Q[H<2;<S+t2<F<^-XG=B,mF^M/[5]-!J_XU8/J[pi>D_im6BH42,plgXoZsrrG')si72/Z;-4f!:2&L\P=\9kL7ZsCH3!ht5@76hRt,>kI\;=hmG0R=sP&V_S_AI7\,ba$?/3m>BIdeB[uN4.)[W4*p?0H]NfKP>2b0BPc$._-%I6=unA+CuMBDYD"UZ>c'Cd8CIK@:C0^7b*XjWuSq'4:\eH)8m05<>s%C$c<_7W&u[AJ9@67.p:#b*%%5fR!%[&8@PXBiJ;[Ub'J(T(O0g8StZ(&)3kc0akFmrk#]q&0g*h'gO\\T>od#$9L$rDR!#LRoLAeE2DI?q\^PAh3`oq*R)0o"_@f$Q6Y8KD=Zj2+#oq8,k_-`?6uHSqb`m]2`#ir[@g\5J_O-)hDN1E8o:U5TP;QW,G=j2<=WU2(Z`^+kJY[cg/hSm3Gu4WT5<%$)<[p=t16!CCW5[udrE9[G5;_b6jl>bb=d5Bm:PGX.>(505kF4"P'+$TQ^FT\5]QPgSo2rF&Dk3fSL!6.*9&krZL8`Wi\inlE?X^Pl5jn@]%7,VirQ8m=lVm1NeZ@`>/n^gG%P*7S0(>`1Aj7C0')-\7XPjcglOtN43XerN`8(hJnK8KIB/W=ad8aRC8o^>(:X&O.0N:egKdB5QRNG66j*'sBH&J-p6<AT"^2SMPBe<^$@(aI(D*qnK;*3^CIq.MUI:`A1\MOOus*5*-fhAmVI_4,$3I6GEK+&9Qb)4X**E>4\rpGb\/t1``^!TWh;0Wa$rD45759?]>#s*0U9c@jMIjfTANM4$rFM40hKe0.3pAE**4NI?CNt12Yh=TJQ@FgdL6f;*NZuE;RnRr<*4eH3?b"\HFZ#IhrX2GV<\#DdBr>K*J'43>T$@4A9n)W[&K.PS%+A"0mQ-Dg2_%[s#7oD+g<BfYA4e=Qk<AUD<lV/qk[E;sH4mqY+l,1fb%$[6UIjjI;%W.\3o:s3tFWC+7,2ms4grOT1Oel;ka&BdCO71sh5U_S7b2E;&:*-8GII2A1Y$3'=qji*4Vlc&Rh,[)!40=V&g\AX%e6d&C,kOCI-E;]H?RoYj)%m(nXJbZ&Gcpoe%AiHIE)?9re93P5fEY:4q_fe?@?0Mu:I!?InV@(i02!0g:'U_J?\ML,Zs/9OA\"Cka/Os5FK(.<i_W6/>nFWKho8FL/6=b62CQ/]\Q'SY$.C6BXR1(H'3XubkUFuS<S#mUeC9FVY>V`U2'e\8eNOP)":O9g:n1oTY&;2BE'heg[siII.gln%38Gk-V64C[9B<_Z^Rr;W[?1/1U/X99%8k(f\/fBnr<lX@a0b~>endstream
|
||||
endobj
|
||||
27 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1595
|
||||
>>
|
||||
stream
|
||||
Gat=+lYkN9&HAoJib"j^'/VNp;_J[#OKRu6+ipE5dK.NT0JXY!OX45+qH/jZI7NR2.>m:H&/(C$o'U_j'*F+&1]P?=^q2%S4u-M(9]s2Ni@mEG%o[7\Z0J.NPHeoXi!,]*a)ga=7C_g?plj@=`uP@0YQKnJZ<Jia3*ofmgi\J6+H8^H$_M[HX`q9F90+;hn,&S3LX9cODEp<V]g1JWBc\K"@mL)(2fDrlC4nGYjL&./<[Fi@cj_qF&JeQ+%o:Xm>kQNE1mbVSk5/g.rLg%-FJoF'VK7T$R1AJhm;UBk.d#2+$nnN6kK)s-bm&sda7(N0PaoPbg#Wog-'rs4]n>R`k&U!^$[eH=bR_&gT&"U]Aq0c/:23/'_:R=/+#sHn'2RpKbd276<\+*+7]SA+o?lICm%;[l<68"7@2"oMi'%Oi_3j24]+qPES,IIK'a8\4U+4!H#c/FZ2,AB'_tW_/#mLYd6o't21)=-;"N6hGHO4+#a[B'c,#]V(_q95`'c>k4j-&`t!Rd6jdc;5_I@EK"/8o&'O4CL=p^iP-9\*AX[0MW?9H]"VCnsSt$m8Q3h=dNpHARZkfuNW8Aq+[Jb'+<VQ/8htOHo],$O+]f<P:aNWD%cqM8aI[93,E<G#p@!7mb-WX%'Fe!K0Lb8n;DA4*I.a&*qNP]%[?_Us-4c1:]#JY2CXtI@ojAaa=^X,"^_VKYb<@>i-R^gVm@WRN`!6Y]4!7*G,riAHA*PMluSD@FNfV-]J!`q"j.n#d]rZ#5EA@kB"jGV?Ij$L1uf$K6LFdFh#hlVHdOZ^-cXjppRLA?U`IU;]18Dj_8`u]\`O.Vbq[mDAhPKiaPU>9#T+Nb%q,VhMVoH&nrXu5M\#ab$<^B^7<T;q9Ia_3Sd\Ai4Na[1&:K=I:(*<hK*=*pNlFt[p:p&8g=bIpH%@?o.m-JSiBjf=jeIab&?R/bZ>W_Z?#rQg[L/`H6omKc+7=CfVV*%GEuTH[Ygi!T`uP.j-uCnaH]Rjh?CbFm;h('\;kmAoscf``kM&]"Q0DE]Nk+2?T6ARm&AT=,2^2b:oM%^:';`'h(W.26C876_`3DTG)K&V7BD1+\&\WEc(d]#CO24@TStkgPjcUPDO^61lFMm5&Oj-jLDBeh<\7Da.3MHJ5;1>XGGDBZ11mW>GjTP+*qO])D8!NC\(K5r\;>>u$'cP`<`ho:U^QQ](Og>Oh(5dR`3#;_Kg[#^g$!c?J,G9Bodd1jRc1Wf6oD<t9WKmaR:0M)TD'M6?HHa/dte-XY%H$[:CmC<P[hDhhU:?_(M28F898`=Cg@=OeERbmY:&DNM0A@:Jskifa/e70"4llDlkDN`4jp\^;%I2L,g=MtB?%X^,1/2C&g<qgc#0iZCQ@GG10b+_+`FY1]%<jEba)*Mi^m&joNs*V_BOosi3/=:6E/LG1lBaY`/?HRP;/o@2)$gB/]5C:%":tcPbekefEn!,A;Kh7<^`W;J#$lN!"NW1qOq1l#8<bkYC#5U@@kWUjk*=t%hQSqq@Pm-[;3!:3>;ed8X@o#Nfd)]GFe^u3C2+S'=]Hbn6T1pnl+ZBm-5FJdT`,pM_qPlk5pi6JChXBepg>&C2a~>endstream
|
||||
endobj
|
||||
28 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1594
|
||||
>>
|
||||
stream
|
||||
Gb!ks>Ar7S'RnZ;3%.V=$"fX%86rND6^ouLLFc)!,6^!oJWUgSN@[(FSYdA&hfhUsHr4--!VS>U0[8?4+$Y3:4Cg_IA*u:D!PB>fi.M-k0Y@T:Lk+G5]GZ%)*ihd8&b,tK+c$;116acC,9dISr["(i68BZ<Ns45c-XQ3IS2Tt,&.g:qNC&AbLkGf<4X-\%4!S/J7B="M`+pkh9L;@hfZn?f6:PG(iYYj7TjNjqS[C%_CK8Khg0*/s=4ZTX=lLSg*).AkF^\L:/oU#\+!NB3_j*:JE#lem(QbSm%bhrjYYWEqpi$GNpVW?\+CTr1_0M/Sn6-crAh[;M1fjo9r!:2-CZFEJ%>[!#=;9L!Gd'DoD?'"T[V-[(LWCYYS-Xr,3^UH9hP*[JC-E``&`hlrFSs_j+_kI%pDY4sKHX2?+qAe5jL"<h?,o84[hQ+>Z(H'Q!uQKenMlA'MiYHQS3ZPN#)`u2lP)[s!3L<].,F=$=hXR@][J/H(UJCLleL"gNR])/;iR(mMoC(D<+Z-t@+/[qoLVp*@+79`;OkA)1-0+$TGD=HeG345L;:!KBrm8GUGA5#;GVBm-Mto[!H&nMGEF8J\F%'()DX3R%''hSem@h/#A%:DBEK>rTnUdAg5AB(i`gi99ja7.[`TtXcqGa3>%G\^UlJ6Oqf<Gb>VG]eV#"ah&:],U?2qMo_?dfnX_d&@RdEkj*<?jq=Jc:6<3"V\59qSI#`05iUX1s%fOhW>g[HQD=I*9AIQ&;kes4I&iXsR:.ImeXbSDe#4@MA6H=<$n7ibu_@8;\kNi6\dlO58.Q\D$sHp?=4.n^HKh&S6Ypo[S2Z?8e6X3$^ERWB*7)](4karh%=/-EP(!dBiZ]=ilrmhSA)--Gr.RGA:G0dG-:b\_Xj3/d.\CESQl)8oV]1lMPAA7f+-nk3hcA]7`S,.ff!\^E+(Br[(5Wa_LTD)<W.=tItK9YYg1;tp5dI=@f*%%,lFe^>/XWnNNGbWk<-b'*S9qVH=!>o1'9?f>_VBQZZiV>Au..G]Z#eIN^VCU<fVC6mX-;6O\rIsKPl#0kjCa%.G^NBRa1K`gpXUOBAe6Na1@e$Y=5KCAPM=kJshF`%RnFn7"r\o5:F<uQ!J0^:.:W8kf]P,35!\]`T44^Wh[bh#l1l"7=\NZtr")Db9mlq9:b(0P-G>"?g_C5jMlkK71&-3dEDE!X#K*+M9I73qRo/nKBo=`p+26d\0cA#261KWu'nXqE$B>JtB5f1$n>8WB,GN4\YJ-KakobWWo^>Ki-h&bJrZ[Ri&K9L_XLFZBZ=FLsI#n-sD\QVNc.,MQh1k`7a?'J\,MgjB@(^lo1>31##/Do8.U,;V0_8>Zo+m9a)%D3DEsV5*+0D+-CHou6r/Z;,EcNq%,qX`E5tnTEYcmc3,WHDNBS39o+.Id$fu\ilYMjJFH^T,$EZPoWFiNL:jt#$I(eCg&C6O\[F.SeS9,_d>7uD3L$_Mg[a>2#:fm=uBKk2pll:^hP3rV[[L8BLFPM3!(:c=G\"iM@FAP$#)5QP,.O-CS,RDH3*RB/s^3lj.:5X0mE?GjZ@]k9JdfMU8T$WX!^KGL(1eF!HC0!ir~>endstream
|
||||
endobj
|
||||
29 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1885
|
||||
>>
|
||||
stream
|
||||
GatU4gN)%,&:N/3Cc%OiSOO;bOVFeEm5RkiUm&enXmm&H%$?W>M^2sKoHbFUHPa=dOEG=oRLt5-mb(n(/64fFpsI9'56c?sLAj[`F9BN]cqW&DnJCtAgpub7oh*t9#I\&km@(%m%5$Ad;,,(hn>C"<6dsILFUcqj);2*TFA1I*G>-al/ITTULp5p<6e`/.k"r+uF`ln-cDkf7he>0\Wt%"(k_d'ufMGXT?$BRfV%!\&W`E7aK!JFJW)G3^8$nO<D5GJF+?j&42;mahN2!pFo?Qt;qF,eYdaE8OLKV46<h7re38XE?k:EYL5)qq>)P:;e%3E(iXr4,Z=Vd&@TTF456^Vh]9o2YA@!i@B2aZ0+D38cGe^5C=6t5JpD7/tZqdQsne,W!(m!gk./I`U*F-JfYq`]p:QI(<Jr<BXOo1',K<ZDmH(t5m:i\\#crb`a8"rLSJ;dh*#V^=*3jX6OKnfd'*jtN\Q@S1\O7E>QdUC$d[iE$dk)QE4W[Vcl(.8?I'?,iu\WLQI%=pF/LNV.[o;F1*u_a?D;QmAUSDAJr1$47J6cRqG7:SLHk[J6>(+dp\JX@Nn9PgTu;7H3p#k3tOH9n5WNcWCC\'G_9(fo1BX>WqFSc,Q,cK3`B&*4MKRlSLehrB%)ih0>V'p'5[XS;lGN/O=F9&GQu\[)0kY8X"eZ/DFFYrDMbFM#Kb>@/&l[3WNb*!5HTO1V[Ja?A?6tP.ueb_Mee(TGtefKOj;mKV^+l7L&r)*.8:#l<<1fi#T(=`u\W(,Q67@Y<g9AVHG^7N`QQ&+X)5s/JW>YN_4@%d=*OhEQ$0PW4J[,[Yq8i%36+cV(QkT5$2^-<K0T8.@sF[hj+HqQ'7FD:\pi1,)r-oc0s)RVj)%DA3l[[X_K0da(XpF,W?,-FLj#'59I@c-$[Q0`T\$&3!/HI3Q]7B%A_BYUo#3W.DMkmB5g`Ea(p'C,d\]<aX!Usl*=04j@2?XH2a)IoQ5BMd$keJ,Y`@VaEnMiEbRAtR8Q7Z"elHPd7bIM0VknRB1RZYQcB,Z%0s"^8+uoGl-%!:,<FoJ&#n0_D+TX:NG-Yd1tg=1C8Un"\jotIcSG(@1H%)9"kS]DF9Co4&C39sO3-k28Z;)`Se=%5X)lg^Z@qs])MCQ7Q0uc"idtf7;L^!--\Q*rg212(m%$!-AhRXtp<TP$pER0\Nuc'`Qs6$'H!%2_1UA'I/6jtlX'PthWPtmu-IR'=+F2M>Y]*&T#jI9F1FGa*;8E\nIBBCg6B[;TPcJb/6pgn@r@dlqc[kdI&K[(=oH-h1`h%j[s&d//0gWnqQdHf1;*!H%o6$*VOAOdjV;.\ib"\M(@6_`lQhOi[\M+G`qtK<j)`drcUdTU:buq8:#F?6.j6kZ->NV1.!Qdi9'XSLunO=^uhY8Orh$rTo9eja%EA@@"3D6q=@I2K*@DS-YlL1d3YA2@h0U[XD-Z9)TFn\*.ZBhueU&&EjA5,;^hQ;+_<*JRp&QIFm,?sVYpWI&CU]EZ2!tdX5V&9#8B;:/*S18F7]3QiS0lXif1Yt0IrOY8DWS^X!<`!Mt@62nfNXjB*n1W%E8CS&>rSmO8KTr<mW!]fbW5GhMKf^hOkZc[OfjQNqSjiGjcDiu.pdbDDPYLFhMbmOX!D0:(L.7)i=\I[TlhD;%XHli\Mb^Q%>\p1T)<I4Pat;s`L7fm8P+/^c$BnB*"H,Gh<`*ZFjBb[oMNUb7H-"'GbDN=BVN6NZ'K$guqA6QpR"Wih5'C]!U3'dZNJ&BmiJcR@<sP;a%'[t,25;Y>l@2^3i`U's%8]dT[5A1g'8bC/)RVCAco97+D:D_6<429m(@c=Z(JIcY#eh&KGS[3eZKUVnok4'<Ai08FN7EQIA/=0uERum3k<EoHKgb~>endstream
|
||||
endobj
|
||||
30 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 564
|
||||
>>
|
||||
stream
|
||||
Gar>CbAQ&g&A7<ZV?$b.7a$l-.8`+6B[@M\)`L*0l,Ae:ZD*[1bK0-ba[gEuJ,gD_R+^:='dOk9m\0m!jLD]t:`B-Fap<Xt)W1,L0iCq]U.(ScNE!m6=VilQZfh'^<ZT3QI7"jM(f<-?53cMmeA<JfYa/E<)KqWA'C@S&PqR,';WliW2^hF]%B*?($a"fu9Ol>(hZf`4c-0mMUDY=?=lDG`JXf@[,K$klG5/[;(S+L6H+/pWZo&^hQ>'o/[Y[\K_,0^*15n!7q3de)Y['^blI]hU`R6fF+`sgF2"mSFD]/2un'kCXkCUWWWa9%jf?RU!e,q>+oL'h>)+lHom\m';59bT%_nWu_6@J2i&9[42@mr@R_n4;]h'\6@luo2u_\qa:WbW^:_N!IQE,<PeaPKi[CtOt/p3jC^pd892mR!t%M$6uLfDHH9*r7S`lh=[Ra!Vjo]qnKJe\(4*cXXIdZPlsX6OGco+cKlu*J@j@/aI'r#LoR,ruX$T6LrT-0@8^I%^;:%*NPpKl'hnWZqg/WpY?@-mn5\U]=snh2_S)[q.;TSc`'US[f~>endstream
|
||||
endobj
|
||||
31 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1710
|
||||
>>
|
||||
stream
|
||||
Gb"/'>Ar4d'Roe[39"B.<+5:Kj'/osBm\ZA7C`]40;T0`-8<:035-Z7<WDrf);B[/#YC6#'bY-(gqNBNX.`q[L[+>B!q:@9K9$_F%AQRhN%c*>^k\%lD9umk(D+WnD=Bk]W9_(*boeS,D#?k@gLi,B'&"MH1\/)=)@X)$#4jt:\gXm-`^)k;cW2jG[q[oLILlXO0nZI1*dAju/^"[ThH&c;&lKX&YWg<URT8[see1)\1Ph%QZF.X)S7ZUjRi7(n='I8dk+SSAQa&4s?Qh)fK:6Q?:_0G&o175)L[p`mS9*NKn508LE:i<Rpb51ki'^$jOj9$H6_;I@IY1R%_FIb*ZQg;m_<@.Flf()q"?$R"&1U'&47B`Gq.mmrZSc"!2SQBQBZ"$m]s"Z0ml='d;+Bf/Vh!)AKd_[e*(;k5]S&jUL]Tu-`B<*n)3odi"?uF)_FpK<G@%IN"-37[1$\MEUWpJs?(4Y+H@,=iKD#.b<t.[!6+,$R;c';!@?"2`f*a\G8DmZ[J/!MOf:8&1pf8>B\E#@tAI<1,k6J9'_-S\VNs^hQK5$`jkm%l9\r"iqoM4nQPRu9lCiMmdMde"m`8YN7K$7WBJPR(.LT*s?Umo.I505=[":]GAOYq?M;(@a-jSc0;$f4Rc!).ga4;V)VH)mMsM</d"e&/V&ke8!a8a*06a)Gsa%6]YF:PV*s:hQj96u'>a:4VkTd3VE0@Bd81/6b85ZmpY'M8l;KROuIUBDDSG%&9r')>mdX2.tpGr_`8p:?/9$:8<KWl0T,2/h4/?b585'ldb#[oL"fCSV;hP=nI?le7@F.kL$;J>?47cX'"MjNpO2M#>VHI)S?%mp+/IP8!6RB_:&tppd1$'!kUO9^60ba`obnfj.joDS*cDDiRlq0dA)M#o$s3Oio`M2OIY'Z./A;8oY8@N,%]UXKiXH2]gEk5$^a#qFIuu8B@(c)2!,J-mCDGQkDJUd?lO?C286d$`^f'aT:<qc)]qb4%Xk=N`)ZcnPbbl2QmdQ\I!$9^[C7@U%i;#b(20kON4q$)js#e,[2;=V^(omk!-SKJ0!bVJT\M"XHIkos_.n.;@Eo6ehH`*)K(%\kpD7mWY-O31eC4fW92V;'Z@AhjhU'P!ekg<&Lpq6uV`%YgLJlA3f)?Z^`s,0,H.sr;.643(iO\,bnH`#4&$b'_H^Z>:ZO(,Bpj^oplWsDBZdXDZ[?nPL3VF8.0&u^jDn1XQ(Oa7hXnUMh@I*aTLFgqlTn;"3(kc,M<TMUpP\#KH#!"qr>l"+[+0obU&]^Sl0j=!krb;B2<`Z]@_nD:[;T/\X?7(a@?JT("5nXQ%0,_iE&n+"^q*pU!iM!]m_rYS=mpqU'<4BXBE*2U$$)sGO8%_pM^tOCRL"8GT)TUA%Rt@o/cDlI,n^V9]cb>O/7B\4hJJ'_$`XZ<<<TYjT*$b@(fC@7nb)`86<g,q9,mk/5iJ'"Z`!:F'RT3pY&sN;h*^u."h?dNJqY.$I8jkC>n/=_m_b_%e`D@aVY`I0<^4FnCL_$5Sr_&nF59#XJ>^P)B(e.u-rH$$%W]hVT=-Y2\D's@I\3u+D6>QDCKR4V';,*t$-slAn=BXTU2p&(/0fFB2h@>Ces#bG8Ygus<0H,7<J@-"'[Yq=pY(Zq'-bQ^=eA[.S9E,0kZJl0oc@$-<Q'a1H51Bo0o^)2,n<]Yd1q&X.n@WWj.,=q.`d]erCE<~>endstream
|
||||
endobj
|
||||
32 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 2067
|
||||
>>
|
||||
stream
|
||||
Gat=,=``=U&:WfGfXd9'P8Q^f$"!%AHKD@E2g/rdm7c=@MLm*W,U&A5SR_6J]AN^Q[Ugd+ND2#@HXO,RYY,07J#rJgB)o\A@If9VZXLEF`X.Fb$+ud3f+r.6H3&"JgBK=lKXngT@M[pRBB(MID4eEK88*buFVIJ![lB7V(ABrN\i</&73WkgB58"OBg'at*s=l"F,2D8GTlT+og:=cNqnWeN.iDlD8+KC1<.NDlKX2TC5ePmg1d=QZ.MDCE&MR(CE@d9_e#sO`H-urro$JMd,@$1'fqBY:$?Q/N?.Rp[o#?6@/oH:P;@H-qVq;C:X<Ep"k2X<i;H$j%Vuc^+OnefORK`7Ir3Sj>Pl@_%f=sljW^g3oX0>K(IFoV;AO&9M0pp`+h&p7krd(S,!R'Woq5aF-B*`:4icoXcS;XUs4SZ*kYXR["Q:N3gP8N;/JPF,q[[KO.XKPOE&G]%V9FL#2fg%lCBkBl%.p9Hhl>8fUKS]86*21>7bo2kc*L'8J@O.lYl!,6iTbj9`lr_Ym8@k\qPiU<KN$Hg3L.R]-sAhthk?8;e7&=ORoG^8cpBt'1f-=&0)$8aHeVF`S0fF]H]W);"Z$1AHIrrHFPK>^XTU&_!P&4/\k#^R[U*GXD4[e!#tT(J,):5:gk]E5gmJ(8AfI/5a(#-+"tucS_I0?8mVoY!2YLbR7c[F2_b0.^PUai=3s1/_>YAq.,0EMK9$!i\7#<+Vm>;Lu;5]P?"dDTEUsWj@m[D93oPZ/gU>%(6NK"O1AWFD%)3R"-JKLQuL0EUJ]=^SVCUPG0p$*;a5)2hW\%<H4B[^MIcP,tk,Kd]^jV]#X\D)^\Bb'H.DH+$hOl^]qY!fo,<T5JEac]no1.P&R<K8I]mUCXK7"K]F0$M9DP`On*#;0l339>[gj-R)^-kI!1cA%I^-50Bo@C3?VU6puJ4(4T`W>G^LA#Km]6DegT$)`YtXL?mCE(&KKMDgqqZq2S`RAT*,T4IriUih)uM?f.-'Xo/P;97`.c3h)oL&/;8D&ShQ'_Oa)+-LZbmWU%RDs9A:&kj47F-%\Z(9)O9FuY(>OKLE:iV?bIZ$mY8S/*5iP#(RTL_%Crkc=Ifra"J7L0'=deX;2ZOW0bP+0R7qEbk+"XB1?(RDO6gU4!4d%+F(OhNT%<o\J>9H(?^=7JBqU[Of(ZHQ8hb#2[*X##[#T0A7HLWLCZ5?gjKX_@W8j=L-MOeU0`kr:`;<+7<SUbd!Jf;4)@D2uISEb`387P9o'31<]/e4tXgU1#!4cek##i3ZRH$f*a\GT6f\6\iQg6MY!]AAhIr#'<S^8mCK$/:l87lGCm!gp>RIDB!-nL`H7flYleCf(7KdPmjiVVTmjWc2ZpXHE+VYYT;XPQ069A8A:k3-2BU<;7]2h_#n0OOkAi6rlf0l?\_R31nH9<7C!a45BA3PT/AHS`GONFGU5T?L_*K\\B$DX4_afCJi=ZTYGCGcn:thU:gf`%583=9heZr7KD%7qW<5qeHP,13-'VQPMrdW#rHURScmf@]WH9V9ch3/e'-PVo6SNRf.3uX3-^Ia+,>TN#B3#o0l8kG4+;MiUFqOZR@=psp&q=O8"(($r#=@;Q6cj'I>FSr(Pi,G4`*F7,R0ul3MC[9)9/?t.6]"#Y1)Co*&DD^_2Gh_Pei@DP+*g:<Jm@c2PA#q&cMO4UReq>AH\9b$L1UcZX`Z%KQl&;Z<3JALP1T]N<kE&nDYj]661(lX^mCEM.\dm*T2cZ;]\gk^ISD&CDd.0<codUE^g@mdF?sCoi*TmGULN\AtIZ8V)4LZ.;qep&CDf)RlWg\1%W4IuWN)b/A#eWm7ept_fJ]/XoBem^aj&,tVUnCs!'ZNJ@)@,$oY)b:qJVt_0QJ0[o9..@Z-Mi"?5]POQF4t?W,TFVF)Z_H<(3MbJ;4=4nbTsQkh]hEfE.XJ%6r)ZaC_*esg*RQp(7dgn[G1i7Kb-mt0<a]"YmGDP7@9N^++uH:TWs(1:$LV7*+3u.^c(9p:2';l8Ja94kad&+n$bm$5!qSc9AEWoGC"6;7rg'$GU6oWGS]8kLi@!Rc@PX1q[\;G~>endstream
|
||||
GasbV>Ap#c&;B$;($BS#<":h#&ZMd.V,=!WBqs$;m0`r9WE?ejFJ]!6)VEm4-!LO(,ik@LhjbRAd(a]#AddO<K$.@*b)d=1S8]bJplYcp"2Z<^>_#4'N+)u(8&GF1"tbKR11i7p%MdBKK54)dN]!3M;i3%aKAo"d+A.A\EtD'"eFG"P,*FZfRM-iUI$h\2dfWoMjI4A(:</:g#eFngWu>sj;P=5V"_J;&TC;:"QDVhTCE*3<S]RlQF2eosmr2c;VQieScB.rjE]t2i&`k2^,3!?Eo\O\5RCdPkoHPsR2MKcqH1W^1TrEh[/OJm]pXeAK4`rL)+WT[\[Sti>HXit4s,:Lo3WpNY05oN5EZFF^:6jNXgguEm&X7&,=pi_=ThY9hT<0R4P'1u&Y5d8+D2G*+lE3Hl%Hb">Y)Iu^$Bt/=#P9Wc]=P1_gWe')QlZdj,hr+73/P-Z"6,dN;X828qsBPN]>di\;bQ#:1j,Ec)YR?5Ye?JQHlKHM1p/9%Ri=2]]>BbOK2:+PBFQRj=LUP\[eXV$"]j3c(ZS2[&-$g0Va&ASqec[W4K`$X^RS-qLgeQQL45Gdr=jG%%t];<\b@]~>endstream
|
||||
endobj
|
||||
xref
|
||||
0 33
|
||||
0 19
|
||||
0000000000 65535 f
|
||||
0000000061 00000 n
|
||||
0000000122 00000 n
|
||||
0000000229 00000 n
|
||||
0000000341 00000 n
|
||||
0000000456 00000 n
|
||||
0000000661 00000 n
|
||||
0000000866 00000 n
|
||||
0000000971 00000 n
|
||||
0000001176 00000 n
|
||||
0000001381 00000 n
|
||||
0000001587 00000 n
|
||||
0000001793 00000 n
|
||||
0000001999 00000 n
|
||||
0000002205 00000 n
|
||||
0000002411 00000 n
|
||||
0000002617 00000 n
|
||||
0000002823 00000 n
|
||||
0000003029 00000 n
|
||||
0000003099 00000 n
|
||||
0000003380 00000 n
|
||||
0000003518 00000 n
|
||||
0000005514 00000 n
|
||||
0000006000 00000 n
|
||||
0000008054 00000 n
|
||||
0000009887 00000 n
|
||||
0000011858 00000 n
|
||||
0000013620 00000 n
|
||||
0000015307 00000 n
|
||||
0000016993 00000 n
|
||||
0000018970 00000 n
|
||||
0000019625 00000 n
|
||||
0000021427 00000 n
|
||||
0000000418 00000 n
|
||||
0000000523 00000 n
|
||||
0000000728 00000 n
|
||||
0000000933 00000 n
|
||||
0000001138 00000 n
|
||||
0000001343 00000 n
|
||||
0000001549 00000 n
|
||||
0000001619 00000 n
|
||||
0000001908 00000 n
|
||||
0000001993 00000 n
|
||||
0000003665 00000 n
|
||||
0000005218 00000 n
|
||||
0000006427 00000 n
|
||||
0000008391 00000 n
|
||||
trailer
|
||||
<<
|
||||
/ID
|
||||
[<4a95945443b3266c457c35d632c7f433><4a95945443b3266c457c35d632c7f433>]
|
||||
[<72c3ab2d07f22178abbf649f639f9ed7><72c3ab2d07f22178abbf649f639f9ed7>]
|
||||
% ReportLab generated PDF document -- digest (opensource)
|
||||
|
||||
/Info 19 0 R
|
||||
/Root 18 0 R
|
||||
/Size 33
|
||||
/Info 12 0 R
|
||||
/Root 11 0 R
|
||||
/Size 19
|
||||
>>
|
||||
startxref
|
||||
23586
|
||||
9078
|
||||
%%EOF
|
||||
|
||||
441
Les05-NextJS-Basics/Les05-Lesstof.md
Normal file
441
Les05-NextJS-Basics/Les05-Lesstof.md
Normal file
@@ -0,0 +1,441 @@
|
||||
# Les 5 — Lesstof
|
||||
## Next.js Basics — het React framework
|
||||
|
||||
**Vak:** Technical Foundations
|
||||
**Vorige les:** Les 4 — TypeScript Fundamentals
|
||||
**Volgende les:** Les 6 — Next.js QuickPoll deel 2
|
||||
|
||||
---
|
||||
|
||||
## Inhoud
|
||||
|
||||
1. [Waarom Next.js](#1-waarom-nextjs)
|
||||
2. [App Router vs Pages Router](#2-app-router-vs-pages-router)
|
||||
3. [Setup — eerste project](#3-setup--eerste-project)
|
||||
4. [Folder-structuur](#4-folder-structuur)
|
||||
5. [Pages + Layouts](#5-pages--layouts)
|
||||
6. [Server Components vs Client Components](#6-server-components-vs-client-components)
|
||||
7. [Routing — dynamic + nested](#7-routing--dynamic--nested)
|
||||
8. [Data fetching basics](#8-data-fetching-basics)
|
||||
9. [Styling met Tailwind](#9-styling-met-tailwind)
|
||||
10. [Loading + Error states](#10-loading--error-states)
|
||||
11. [QuickPoll — het project van deze les](#11-quickpoll--het-project-van-deze-les)
|
||||
|
||||
---
|
||||
|
||||
## 1. Waarom Next.js
|
||||
|
||||
React alleen is een UI-library — niet meer. Voor een echte website heb je nodig:
|
||||
- Routing (welke URL → welke pagina)
|
||||
- Server-side rendering (SEO + snelle first paint)
|
||||
- API endpoints
|
||||
- Image optimization, fonts, caching
|
||||
- Deployment
|
||||
|
||||
**Next.js** voegt dit allemaal toe bovenop React. Standaard framework van Vercel.
|
||||
|
||||
### Waarom Next.js voor deze leerlijn
|
||||
|
||||
- Industrie-standaard sinds 2022
|
||||
- Werkt naadloos met Vercel deploy (Les 15)
|
||||
- Server Components + Client Components — modern paradigm
|
||||
- TypeScript first-class
|
||||
- AI tools (Cursor, v0) zijn geoptimaliseerd voor Next.js
|
||||
|
||||
Andere keuzes (Remix, Astro, SvelteKit) bestaan, maar Next.js is de breedst gebruikte.
|
||||
|
||||
---
|
||||
|
||||
## 2. App Router vs Pages Router
|
||||
|
||||
Next.js heeft twee router-systemen — historisch gegroeid:
|
||||
|
||||
### Pages Router (legacy, sinds 2016)
|
||||
|
||||
- `pages/` folder
|
||||
- File = route. `pages/about.tsx` → `/about`
|
||||
- `_app.tsx`, `_document.tsx`, `getServerSideProps`, ...
|
||||
|
||||
### App Router (sinds Next.js 13, default sinds 14)
|
||||
|
||||
- `app/` folder
|
||||
- File = route. `app/about/page.tsx` → `/about`
|
||||
- Server Components by default
|
||||
- Layouts, nested routing, loading states als file
|
||||
- React Server Components paradigm
|
||||
|
||||
**In deze leerlijn: App Router.** Alle nieuwe projecten = App Router.
|
||||
|
||||
---
|
||||
|
||||
## 3. Setup — eerste project
|
||||
|
||||
### Create
|
||||
|
||||
```bash
|
||||
pnpm create next-app@latest quickpoll \
|
||||
--typescript --tailwind --app --no-src-dir --import-alias "@/*"
|
||||
cd quickpoll
|
||||
pnpm dev
|
||||
```
|
||||
|
||||
Open `localhost:3000` → werkt.
|
||||
|
||||
### Wat krijg je out-of-the-box
|
||||
|
||||
- TypeScript geconfigureerd
|
||||
- Tailwind CSS v4
|
||||
- ESLint
|
||||
- Hot reloading
|
||||
- File-based routing
|
||||
- Optimized fonts (Geist)
|
||||
|
||||
---
|
||||
|
||||
## 4. Folder-structuur
|
||||
|
||||
```
|
||||
quickpoll/
|
||||
├── app/
|
||||
│ ├── layout.tsx # Root layout — wraps every page
|
||||
│ ├── page.tsx # Homepage (/)
|
||||
│ ├── globals.css # Tailwind imports
|
||||
│ ├── about/
|
||||
│ │ └── page.tsx # /about
|
||||
│ └── poll/
|
||||
│ └── [id]/
|
||||
│ └── page.tsx # /poll/123 (dynamic)
|
||||
├── components/ # Herbruikbare components
|
||||
├── lib/ # Utility code
|
||||
├── public/ # Static files
|
||||
├── next.config.ts
|
||||
├── tsconfig.json
|
||||
└── package.json
|
||||
```
|
||||
|
||||
### File-conventies
|
||||
|
||||
| Filename | Wat |
|
||||
|----------|-----|
|
||||
| `page.tsx` | De pagina-component voor deze route |
|
||||
| `layout.tsx` | Wraps children met persistent UI |
|
||||
| `loading.tsx` | Loading state |
|
||||
| `error.tsx` | Error boundary |
|
||||
| `not-found.tsx` | 404 voor deze route |
|
||||
| `route.ts` | API endpoint |
|
||||
|
||||
---
|
||||
|
||||
## 5. Pages + Layouts
|
||||
|
||||
### Page
|
||||
|
||||
```tsx
|
||||
// app/about/page.tsx
|
||||
export default function AboutPage() {
|
||||
return <h1>About us</h1>;
|
||||
}
|
||||
```
|
||||
|
||||
### Layout
|
||||
|
||||
```tsx
|
||||
// app/layout.tsx
|
||||
export default function RootLayout({ children }: { children: React.ReactNode }) {
|
||||
return (
|
||||
<html lang="nl">
|
||||
<body>
|
||||
<nav>...</nav>
|
||||
{children}
|
||||
<footer>...</footer>
|
||||
</body>
|
||||
</html>
|
||||
);
|
||||
}
|
||||
```
|
||||
|
||||
Layouts zijn **persistent** — niet ge-remount tussen pagina-navigaties. State blijft.
|
||||
|
||||
### Nested layouts
|
||||
|
||||
```
|
||||
app/
|
||||
├── layout.tsx # Root — alle pagina's
|
||||
├── (marketing)/
|
||||
│ ├── layout.tsx # Layout voor marketing pages
|
||||
│ ├── page.tsx
|
||||
│ └── about/page.tsx
|
||||
└── dashboard/
|
||||
├── layout.tsx # Layout voor dashboard
|
||||
└── page.tsx
|
||||
```
|
||||
|
||||
`(marketing)` = "route group" — geen URL-segment, alleen voor file-organisatie.
|
||||
|
||||
---
|
||||
|
||||
## 6. Server Components vs Client Components
|
||||
|
||||
App Router's grootste paradigm-shift.
|
||||
|
||||
### Server Component (default)
|
||||
|
||||
```tsx
|
||||
// app/page.tsx — runt op de server
|
||||
export default async function Home() {
|
||||
const data = await fetch("https://api.example.com/posts").then(r => r.json());
|
||||
return <ul>{data.map(p => <li key={p.id}>{p.title}</li>)}</ul>;
|
||||
}
|
||||
```
|
||||
|
||||
- Draait alleen op server
|
||||
- Geen `useState`, geen `useEffect`, geen browser-APIs
|
||||
- Mag `async` zijn — `await` data fetching direct
|
||||
- Geen JavaScript naar client (kleinere bundle)
|
||||
|
||||
### Client Component
|
||||
|
||||
```tsx
|
||||
// components/Counter.tsx
|
||||
"use client";
|
||||
import { useState } from "react";
|
||||
|
||||
export function Counter() {
|
||||
const [count, setCount] = useState(0);
|
||||
return <button onClick={() => setCount(count + 1)}>{count}</button>;
|
||||
}
|
||||
```
|
||||
|
||||
- `"use client"` directive bovenaan
|
||||
- Gewoon React — hooks, events, state
|
||||
- Wordt JavaScript naar browser
|
||||
|
||||
### Wanneer welke
|
||||
|
||||
| | Server | Client |
|
||||
|---|--------|--------|
|
||||
| Data fetching | ✓ | (kan, niet ideaal) |
|
||||
| Hooks (useState, etc.) | ✗ | ✓ |
|
||||
| Event handlers (onClick) | ✗ | ✓ |
|
||||
| Browser APIs (localStorage) | ✗ | ✓ |
|
||||
| SEO content | ✓ | (werkt, minder ideaal) |
|
||||
|
||||
**Vuistregel:** Server by default. `"use client"` alleen als nodig.
|
||||
|
||||
---
|
||||
|
||||
## 7. Routing — dynamic + nested
|
||||
|
||||
### Static route
|
||||
|
||||
```
|
||||
app/about/page.tsx → /about
|
||||
```
|
||||
|
||||
### Dynamic route
|
||||
|
||||
```
|
||||
app/poll/[id]/page.tsx → /poll/abc-123
|
||||
```
|
||||
|
||||
In de component:
|
||||
```tsx
|
||||
export default async function Poll({ params }: { params: Promise<{ id: string }> }) {
|
||||
const { id } = await params;
|
||||
return <div>Poll {id}</div>;
|
||||
}
|
||||
```
|
||||
|
||||
Vanaf Next.js 16: `params` is een Promise (was object).
|
||||
|
||||
### Catch-all routes
|
||||
|
||||
```
|
||||
app/docs/[...slug]/page.tsx → /docs/a/b/c
|
||||
```
|
||||
|
||||
`params.slug` = `["a", "b", "c"]`.
|
||||
|
||||
### Link tussen pages
|
||||
|
||||
```tsx
|
||||
import Link from "next/link";
|
||||
|
||||
<Link href="/about">About</Link>
|
||||
<Link href={`/poll/${id}`}>Bekijk poll</Link>
|
||||
```
|
||||
|
||||
`Link` = client-side navigatie (geen full page reload).
|
||||
|
||||
---
|
||||
|
||||
## 8. Data fetching basics
|
||||
|
||||
### In Server Component
|
||||
|
||||
```tsx
|
||||
async function getPolls() {
|
||||
const res = await fetch("https://api.example.com/polls", {
|
||||
next: { revalidate: 60 }, // cache 60 sec
|
||||
});
|
||||
return res.json();
|
||||
}
|
||||
|
||||
export default async function Home() {
|
||||
const polls = await getPolls();
|
||||
return <PollList polls={polls} />;
|
||||
}
|
||||
```
|
||||
|
||||
### Cache opties
|
||||
|
||||
```tsx
|
||||
fetch(url, { cache: "force-cache" }) // permanent (default)
|
||||
fetch(url, { next: { revalidate: 60 } }) // ISR — herval na 60s
|
||||
fetch(url, { cache: "no-store" }) // nooit cachen (live)
|
||||
```
|
||||
|
||||
### In Client Component
|
||||
|
||||
```tsx
|
||||
"use client";
|
||||
import { useEffect, useState } from "react";
|
||||
|
||||
export function Live() {
|
||||
const [data, setData] = useState(null);
|
||||
useEffect(() => {
|
||||
fetch("/api/data").then(r => r.json()).then(setData);
|
||||
}, []);
|
||||
return data ? <p>{data.value}</p> : <p>Loading...</p>;
|
||||
}
|
||||
```
|
||||
|
||||
Voor interactiviteit. Of via TanStack Query (komt later).
|
||||
|
||||
---
|
||||
|
||||
## 9. Styling met Tailwind
|
||||
|
||||
Tailwind = utility-first CSS framework. Class per CSS-property.
|
||||
|
||||
### Basics
|
||||
|
||||
```tsx
|
||||
<div className="flex items-center gap-4 p-4 bg-white rounded-lg shadow">
|
||||
<h2 className="text-2xl font-bold text-gray-900">Hello</h2>
|
||||
<p className="text-sm text-gray-500">World</p>
|
||||
</div>
|
||||
```
|
||||
|
||||
### Responsive
|
||||
|
||||
```tsx
|
||||
<div className="text-sm md:text-base lg:text-lg">
|
||||
```
|
||||
|
||||
- Default = mobile
|
||||
- `md:` = tablet+ (768px+)
|
||||
- `lg:` = desktop+ (1024px+)
|
||||
|
||||
### Hover, focus, dark
|
||||
|
||||
```tsx
|
||||
<button className="bg-blue-500 hover:bg-blue-600 focus:ring-2 dark:bg-blue-700">
|
||||
```
|
||||
|
||||
### Wanneer custom CSS
|
||||
|
||||
99% niet nodig. Bij echt aparte animations, complexe selectors → CSS module.
|
||||
|
||||
---
|
||||
|
||||
## 10. Loading + Error states
|
||||
|
||||
### loading.tsx
|
||||
|
||||
```tsx
|
||||
// app/poll/[id]/loading.tsx
|
||||
export default function Loading() {
|
||||
return <div className="animate-pulse">Loading poll...</div>;
|
||||
}
|
||||
```
|
||||
|
||||
Toont automatisch wanneer page-component nog `await` is.
|
||||
|
||||
### error.tsx
|
||||
|
||||
```tsx
|
||||
"use client";
|
||||
export default function Error({ error, reset }: {
|
||||
error: Error;
|
||||
reset: () => void;
|
||||
}) {
|
||||
return (
|
||||
<div>
|
||||
<h2>Oops: {error.message}</h2>
|
||||
<button onClick={reset}>Probeer opnieuw</button>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
```
|
||||
|
||||
Vangt errors in deze route subtree.
|
||||
|
||||
### not-found.tsx
|
||||
|
||||
```tsx
|
||||
export default function NotFound() {
|
||||
return <h1>404 — Pagina niet gevonden</h1>;
|
||||
}
|
||||
```
|
||||
|
||||
Custom 404 voor deze route. Trigger met `notFound()` helper.
|
||||
|
||||
---
|
||||
|
||||
## 11. QuickPoll — het project van deze les
|
||||
|
||||
We bouwen **QuickPoll** — een mini-app voor snelle peilingen. Stack: Next.js + TypeScript + Tailwind.
|
||||
|
||||
### Wat we deze les bouwen (Part 1)
|
||||
|
||||
- Setup van het project
|
||||
- Homepage met form om nieuwe poll te maken
|
||||
- Hardcoded poll-data in een TS-file (in-memory)
|
||||
- Detail-pagina voor een poll
|
||||
- Voting werkt via button-click (lokaal in state)
|
||||
|
||||
### Volgende les (Les 6 — Part 2)
|
||||
|
||||
- Server actions voor vote submission
|
||||
- Loading + error states
|
||||
- Polish van de UI
|
||||
- Setup voor database (komt in Les 7)
|
||||
|
||||
### Architectuur
|
||||
|
||||
```
|
||||
app/
|
||||
├── page.tsx # Homepage — lijst polls + create form
|
||||
├── poll/
|
||||
│ └── [id]/
|
||||
│ └── page.tsx # Detail page met voting
|
||||
├── components/
|
||||
│ ├── PollForm.tsx # Client — create poll form
|
||||
│ └── VoteForm.tsx # Client — stemmen
|
||||
└── lib/
|
||||
└── data.ts # In-memory poll store
|
||||
```
|
||||
|
||||
In Les 7 vervangen we `lib/data.ts` door echte Supabase queries — en QuickPoll wordt productie-ready.
|
||||
|
||||
---
|
||||
|
||||
## Bronnen
|
||||
|
||||
- **Next.js docs:** https://nextjs.org/docs
|
||||
- **App Router intro:** https://nextjs.org/docs/app/getting-started
|
||||
- **Server Components:** https://nextjs.org/docs/app/getting-started/server-and-client-components
|
||||
- **Tailwind v4 docs:** https://tailwindcss.com/docs
|
||||
- **Next.js Learn (interactief):** https://nextjs.org/learn
|
||||
- **shadcn/ui (component library):** https://ui.shadcn.com
|
||||
263
Les05-NextJS-Basics/Les05-Lesstof.pdf
Normal file
263
Les05-NextJS-Basics/Les05-Lesstof.pdf
Normal file
@@ -0,0 +1,263 @@
|
||||
%PDF-1.4
|
||||
%<25><><EFBFBD><EFBFBD> ReportLab Generated PDF document (opensource)
|
||||
1 0 obj
|
||||
<<
|
||||
/F1 2 0 R /F2 3 0 R /F3 4 0 R /F4 6 0 R /F5 8 0 R
|
||||
>>
|
||||
endobj
|
||||
2 0 obj
|
||||
<<
|
||||
/BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font
|
||||
>>
|
||||
endobj
|
||||
3 0 obj
|
||||
<<
|
||||
/BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding /Name /F2 /Subtype /Type1 /Type /Font
|
||||
>>
|
||||
endobj
|
||||
4 0 obj
|
||||
<<
|
||||
/BaseFont /Symbol /Name /F3 /Subtype /Type1 /Type /Font
|
||||
>>
|
||||
endobj
|
||||
5 0 obj
|
||||
<<
|
||||
/Contents 20 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 19 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
6 0 obj
|
||||
<<
|
||||
/BaseFont /Courier /Encoding /WinAnsiEncoding /Name /F4 /Subtype /Type1 /Type /Font
|
||||
>>
|
||||
endobj
|
||||
7 0 obj
|
||||
<<
|
||||
/Contents 21 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 19 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
8 0 obj
|
||||
<<
|
||||
/BaseFont /ZapfDingbats /Name /F5 /Subtype /Type1 /Type /Font
|
||||
>>
|
||||
endobj
|
||||
9 0 obj
|
||||
<<
|
||||
/Contents 22 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 19 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
10 0 obj
|
||||
<<
|
||||
/Contents 23 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 19 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
11 0 obj
|
||||
<<
|
||||
/Contents 24 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 19 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
12 0 obj
|
||||
<<
|
||||
/Contents 25 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 19 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
13 0 obj
|
||||
<<
|
||||
/Contents 26 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 19 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
14 0 obj
|
||||
<<
|
||||
/Contents 27 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 19 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
15 0 obj
|
||||
<<
|
||||
/Contents 28 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 19 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
16 0 obj
|
||||
<<
|
||||
/Contents 29 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 19 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
17 0 obj
|
||||
<<
|
||||
/PageMode /UseNone /Pages 19 0 R /Type /Catalog
|
||||
>>
|
||||
endobj
|
||||
18 0 obj
|
||||
<<
|
||||
/Author (NOVI Hogeschool Utrecht) /CreationDate (D:20260607080655+00'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260607080655+00'00') /Producer (ReportLab PDF Library - \(opensource\))
|
||||
/Subject (\(unspecified\)) /Title (Lesstof) /Trapped /False
|
||||
>>
|
||||
endobj
|
||||
19 0 obj
|
||||
<<
|
||||
/Count 10 /Kids [ 5 0 R 7 0 R 9 0 R 10 0 R 11 0 R 12 0 R 13 0 R 14 0 R 15 0 R 16 0 R ] /Type /Pages
|
||||
>>
|
||||
endobj
|
||||
20 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1889
|
||||
>>
|
||||
stream
|
||||
GauHLh/f>L&:`lHfU9J75,:OIK]q0=V9M]2GF/*-%o",OQ5pSH"E;fE?f)U8J=W&PS6O`X)sqBaJ#hDU8doN`Zhcae!PFo<RpuY]_e]@tV(TteiT&.n[3ujHG<MUZ[%2^L%35=u@VM[s#q>ut0T`_=V=0!d)3lt=^i>t71EQr-MjG1]l3l@5/l9YP+iU5P%MbM/C6s65"M=7EqkQ,'TVA\$bqpLVL)d8qeOjshC,=31@((Z^5<aKWJ`!f1.\j$q9AjScW9C75$dO0FHNG;=SP$1m'e`s<%C;C)5u4F0,XN(A[a7rQQ;t@I69^1J3":H3"FNKGDBoMEQmE_ArP3L$o7QJ="O:4SY4!7#g5t5[5e/I'V<;V;*SrpeLog<$0o+JSa7S/)9MicB!OU8l$Og+;X<!/!*]^JDAaP<08[CKiO_(:*$%=i2c&WpbLpO68>ZAkAj:5Y^(`6!g+qhS/3:,EdOcD*lfXXdpBm[/'c@^kP<S!1Dm-R/u]cF@>Bm-E@Vm1#G*q^A6X97T_m]caJA!9acD;tQ>1$T<22))7ZP8h3^`I):3_]A6o7,.Ef:$@1A!k4$GmD,pk!NYO;1FP,R!G>TN:,;K<7B]@/(RB&?)X1>'Jhn-2'eG5]V=(\Lk(ah+_L5]c0LP[FD.\.3DAd=D]-_HdJYq,.ft8nGS,"s%dS)qpk-J>S0X<MFmEnBo>mZS+Kf?ba);VbO^d-<X(b;(mbFW,[9&h<ni&Fr=o<=+Y[+q\jA&Fl@iVg>9fB&&jN"s*[@S[/UAGe:YB?=&JEs7C=K4#;lSI`S*m$Di7h0dM2"A=&<!Ipp8bDt^CE'4^j/r=ke'=]'8la.(]2oW,\E:CTE!"r>Bk6*.-Z1u-1*eB9X!cPPf19#gCGb%KSDX#,_kDgd31*E9!gPE['.H4oW7J[Y(04!V]fgDpfUE[u637brI.]pSK.<2sm]IV>[c=SZ^;U[5K>cHe@`HpT#2o)O82rMB-jPmo`_dE_Vj_iJ#DV_1/'36LF<OSLf26*cl*;bUgkNIeXS!EA'cd&FeN7#<s\ouQmoMdt([Jp"Y%#\p*c'&$REV'V`p[o@pEU:9LGd1=3[Nb8b#l+aZ4]TfqpbpIW/6c2UJ@e^'Jf(`S=ek((b]?\3cfD5S\Y_=3_pH@gTK?YVMi#g,<OL+HZ7Aq>Q%HZiY#SG8j:3UrR1M_0%;?ZdHP"Ql(sq\=d)T9Ea0dJ!@NAJ7FhPpM=mV(W_rM&Rl&C89-c.]kr!H3:#7T0EF1ioH8Rf\o0cm2OM(ojF(8l4RggSpNcW5=WipKe2%"=heppW2\TaM9@btFdS=D)\SoC`@n?#l<Ak)]#Qe68a8<h(d:9$\U-E"tk["0'-?SngRcFm24.65hU&L,t.g0XXT75X)T?I0ckb(937p2#b\p&>K8!JmD2D2ABUKK4#3g_h&J.Vj=RYl64P/=*QouKlM,TVtK<Z=MJSX5mjS0aro?S<&/'Hks6Yj4jCjS7f*NV(.D7h=bW+rXb][a6c<8&dtj\,,!HFn0hp7f]Nnas*l=D[([f-SHfa^=X'If;O^$)$,<$de\_3ecEY?VgOsf(jpDCiZT\T:[h@?"YG0BB]*B'[sh-^0V"Mf]G;ZA<"R_+M48X)gj/j]Mb4X!CE=bObHEH`=r^K9(Z;#$>bZtUS0gSj%:?'[5E?E$T-<fgqbGe*iFgE$k,Xpt)VB-.YUlf4lfon*#=?6^KA>ZORAk[qRi\l["5K!/gbS)^3K@g;\GcIoFqJ=2kX=0TT1/,qhh9Y:rm*=40)4:W2(:g=k3S:CHiorCb$`Z?[?Co@qbS.9blh0mRuO*BmFdH;0.R!FEgp1LSq/p@4!,a3bKXKXR:/?e&5r4Tg'Gn#Z?6+r"$XBUHC2&*-A!EuJT%f~>endstream
|
||||
endobj
|
||||
21 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1827
|
||||
>>
|
||||
stream
|
||||
Gb!;dD0+Dj&H9tYfXXdl%hqU$h`B5Sk0iR#juV+\E:"HR3fYeJ'4JGW+JHRLei).j"<*FuOoko)=k\;t7F*Sq5k3+!ms#3/`t/a<0jkuU@pjlo(qtbiLV<.>_EI;p(Pi`$-fdNZVgO&`oJ1AKie9L*&5\u%^&Sa!&d2VC*7t!Mo>*s7^[*Zt^.8,e!"#%Y"l@7FLNo>aC-c+N$eNu`nHC5OOEaE?#daN'0V#tF7Q"'a5q$f&(PYjJpufP]'DP3rA.bGLXl*Q%A:/9'`46CK-h(0^V:)n2049#*_j@3ON_n[<BS,F)'`),OL"53eaN%tWAeFNmJ5>CF%9U?^8`3KtT#\mYH<aZN`ILuDi(X>Tld;^)MB*l)!2^l2LkkHo8n8[dK+[_R)[O%m*Ca;R!nOB'qQiUK].*WZb`uL.AS*kXHs5"[nWc$eh-+`5.]GkGAoo/(;!#)2(Ib1&7<8HM/LM<se3]sqS48VBX!O;#\]f.*T4J^@!iIs!Osi'lN(l-o=5$or4NcT?1pL"jX-XakR)g<7K[k'Es4n_4;>DiCI.nA,kUA&764:/O7/i:@UbjR7aL8s"'$CaKr=[9iO-a"OY.[a!,YMa'25qQ0:"5%W9+'UAo;ua0oZlLMf':u4[]e+a>0*Ed;-FbiQ$/RIQiQ6&Jl,)r^td=q*JQVkiu-S9g<7iAC$*jZZ(C)=6^B.YG;rVP??O:<17d\uRLJc.6qKG-m]`208#/S"0>!!t>b8q^bq4lQ;qOC;U8$:OdrT/J/=73R-jK"qG\.;"qCnhB([qN`$78[62P!;e/WdT-R`i9AIAas?qV<p;0>7kD8&D*mrK&>HcZ5I\pYcB,7/,XS9>-U?V\Tl:8L0NKlN:1E"sp&KmQENc;C7)dK?h[l]sR>?28Sr6EJ3M@Y]$/L75Noj+nh?9=%s70c/]"fEi`o"AoV2&Mm<RRHgCPj@&<c*PeC>7En.^b@gi!&8hcOe6*Vi>`%I_>alb+]81)<a$iN%>>,KEBT0j:k%50lC[!&!l\Y/"/MAQ5gHn]IDY;X@"YV)S3MX+41o(Ft6gt"sVV1T7:\u;l7ac83()X?-r)S=8$GH$bp]$<tN9+tB%=;i6OiDX3DlO=@U#FmZeh"B6q/tZr.W+A1DVVa0g^.!<rRrA-B[XLkk4=cp$]1nng>PA5tBd,b[SStn*I3<'aEOQ\l#J9M572[+H*?EWtZ/Rk-oW^<5URAD\$=VpH"N!NP56?+fmX3>+_&TujI69r6r_)LN1qVK"LF&'F&VL!7qu3q@C(EJ6o!50)n"U%UVs$L&D59k*6qO^V+-aeF/_L92\[:":7+`uM0peJ3-.p\tlI5qpA%D7sg/b*5I^ee$o??AC]6Q%"Wm_$5NW"'sE!'aPS6\_-NP:LZ`Q%QC`gWIC.!J#k#en!MkM0bu4LD#1#l<3!o"'0;,;HH(d!lOjKl.^KK8STlOdNe*d)hgCoG:L?7Tnq0BRae6PfLI#!J58,a$Z6fK^[M_`Qae8M1Cm"gS*alfcsHm^H3(0k/=rVQ;;nj\Y9_E)@K-XrT\41(@JNjU]s+@Jtgs<e\eF1kWG`E0\YfLZ'GWs%CF*c>i/`6?H0\M??Il,^/nTjJ?\T.-,HkrkQIm7bd[np-(a-%ea[^Pj\pu9-m8UsgAr(c2l\,C$f>T2I$ncH?o5In8:)Z1EJX(&?Aeq'%.#1)7=AEl2c6TXYg(!WP`FXh*Y]qB,cSVL'Nr5E?Bmt`r:]:Bj_qbREK!M8Z<ujRP8<9JAZO_.kX<_**4%S,=`+@Ld%>Kp\(:Kg3O6SL.98Kie@@3u.u.%!n5=a9T)5Y=&+oi'OE0FQ~>endstream
|
||||
endobj
|
||||
22 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1745
|
||||
>>
|
||||
stream
|
||||
GauHL>BcQ-%"@rScoHMo]>kRsQlD+BD:<)m:2b-]&"@tiGjLN"Dulk2J,O*d%+mE\c>FXaE=A#E:DtBjL4Y16lMa7GJD[8DE_:m<R*L8'_I7a#YG\/!,Jk^)>QF<%k6DDdi7f?p(S_[t,Via."mmb5'aLljd5oXi:erO?+?)!(0qpptoT\K'1_ip3TCdOU)+/(4KTs<UIa(YmH3'-c4/?#md25L&g8W)lc\Y/G&hmV.ptbh^cJWQJ0L^)SAI3`:Et_iGE64K!QY5g1gmKElRJ]'=Dd`FY!d'BAWR1mK[Z-lJU+!?nA`Q4gLslq5Ne*6._2SW?C0Jbm6jo&cjDBE](!td_D4`rK(@^D7`lK`p[Qta[#tqeQj-p5-(s(:i,b%TPCGWND^2ME_&o$>MWU:>fh!GI"-%kB"=Ha(2I1;PK(&.^gki#k$FQkZsUe:<CoI1B:C>-LUlJ5s?DB#5)YKTG"a/]gg-Hab^]NF@:jKi/\%>l7RXVU4V\&(-#(8it`j5L..p]JeIGs#_CXFm$gI;p=+jT@^AqKP32=9nZk2Cl%%-!<3ce&;El0^j7hZrdRDEZ-<-35WPV+NIA8i6N"kH'1,T=(T%'J"SUh/1h7>*5=4J;-lHd$1QsbE)W\]on^qjYkWPKK]8!,j's7%=L`h".__FgBpQt:4t4X%*L5r5hA_o<JBsJgOsNAl7g"U=[e["<fM4NFekDIHlN&P,>cF_r2qO3)f:GuY0/]k:&s%C>HUVj`U/B\70igVN(JMEl(f>j&2(R\q7gg]o0PIV^WV/t?U-r_O\a?fE]G<$7VPRK=]U!?8hg3cN)i_!jDBuKj9tTEs\D6V1Y5;L;aT<(t]#=9i6sr\oli4PVUYAe7,U`HoL.4a++p)$tWS#3.VePGGIpt*dE4$T>/\0&W*n,Ol!U;`OO@d<9/.&+'^-hkj$pJ6)ql1Uc!;%iR<s@M%Q/BJ/>aPQc!Z0>rNPD'u-.CsnftYdt`a6^&E3`IXp/0pb9%.8QHBD`>@8`2c-lT*[duTir/2)n^Z:pHIa^`7H]Y_&u8lD[FVnE$_G/#XaT#$9TBYYce&1YXrnohOU"?tDErpnL`#+icsms+QP!$eTE^>RZ<T#0]*XP.7(-$2GJbf9s8G+XN43#[+UAO&6,RN5Y-UC86ceDPRkdc$7p`T1+r3ki97EVnGs4j66#/'"mAK39Ji<>WAXn[XUB\@b<5Z[l#u"d-OI#:$G'=%OD!Jj4mG1+_Gkju?0I3:6SG\&7QOkgXu58[Y`H6]kq>O4`KGK0dYS7^snQFPo0\57\64(u<p4h*K[XmEqSppAXBoJK+=1]/r^1G\`Rj%LX[38I,0e@j0?c\fDS738nb8Ja/ZHa`+siL'73t#i420gh>[/B#o!8T3td+6+_NJ;Zh3r?8&dccXpCg3Gdq2TGs-N`+bPHlWMQ?bd\o!k<U?l-1!Oqh:%qQ!PE0A*,hkB&7-sfb1J`pVr=GNG]9!\3R#\Xj*$YMb[!ka-JBni#d[S,i[2t73_j:t8RZ=*=IHh;I@`n-I+AP$Bn]W*gE-Gu/"BZJ:gek?ogZGX1H'NMjc;*$Mnc^[JE'-\$hO6ZgJqGuVcc$J>L>snY>r*Q+1iNCH9.2Fg=hptKO90f"-_#2g%KuWXWr>TmgW;JCp6)=%&PlUh0H6E&d"]^N/3"&9gr0m:Q,1?^d\;&SGE96SFu?sWK4BAY@Xn&+RFMri%`^[%D3hW"P=FX)k=N&hCY`]qA8&&7l^~>endstream
|
||||
endobj
|
||||
23 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1542
|
||||
>>
|
||||
stream
|
||||
Gb!#\hf%7-&:W5<EC_1O'FQKj'M3F]J?E+\!^X8+m[j?NfX._RQ<Zukg'.<0GLUQ-Y2qQ92`n5hRePY.mc/MM.6.+"jl_"#nC&'uk7f=skn5Bl*2XPAbLCiV&LNn+*Y;C5Y0VXnY'E;K=p]G*#bUo,PTu$J*4V_2.:3*C4"7.^9Z-FT7=e"g8B$-.l3Sb#Z$2%4$sdr6$/n+UYN&P.4J.Ej3Xi@k6SP#rlUA4[/gh/%U^,@+fU'AOobN!N6_2P)Bc=n$,1H-`!Ah_@]RC5QlWYC-)kA"eoEM0GN.W0"(CHKOj:LrMkBW1B/!/Y@0M2E)4b,aNK+3E?F]d('7!T9_baSaa.\RBV__jHiNPilKa\c1dAWgGr:He3Ve"cCP/.;-17m\6]$S4hqXU8hN@UTEHo5NK?[DeuDMV4$/(0?MNm"X5O$fZ+qp.&(<B5Vju,`u&N]S(%>I,ZqbZDRbj[%>c:d#K5JpCLPRVc<,#VZV!$?ZXETJr0#kNO?4`<n#mMXd)mAf=\.n9[5ZnAb%RH2$\Ic17fp.^c`lHWChb9-4juOPMeLX(6]1CM\PuBh$e)C?'c[$=Cn[#CsoD8KjFu<\:E[!R28_h^hX$cMEeF[a)JL0O^Y!/Ft+()[oBWW&ia1EZP!JNq<8#(Ib^"4>RedQ(rpVP[u>Yba"N%*)!*a#\OjI'h>a).'P$]f,Pir]-5%eJ8I[WoU70S$d#Js/[gt(6gC^=cF#m[cRH9[bRaRsV>ZPU0ifknO9>U@#r$kF!Wq8+E%d'f??=Z*Jqj5Ym]n@mVbR7<t?D\)>pZ("Z;FqkmpquJQZU_):9Y"#aapN+f'^HUq+:2Bq-1TC9aR4%&jhC$(&`>]UHlOk.p:)0aXjWW2@1q@e&OK5?k%6gXl65=_YlVXGPJ@"n`h"Hq3?<EQ@UX@Z"]4+FLZo1UNA3G$m/nN5XA$c,X<*2Rm.af-)J?@@R.i\LMj=UGngNUe/OW_>Q\CEZjmZ&fP<eB3Pe(n0N<bM,apXaSof!>5>obP\8/Dj&P>&1/D,NX(c#_YLS+=dCJink+TSR\bi6NSq1gJ)Kc*AJPWp0A/Db6!gl:[*e=?n/7q7(A*.?lQRr=9S]$d1N-"3"l^G<F4='\fJ7Ue\1aO]&HRLJG+D&Z5_P3a^cKZ24l?jSEi7R[e^l%sF*]2,PIj[\<!gd(Q$9H<tSOLgs^HpN_4trd@WT1OC-QJ*S:N_V+J#9)BO;_o_(H5dQ:hPFH2]aTC7pBa/Fu-9ZZ#2gogtiiiqT\b:.EM<"EcoCNhZ=TnQc3XrC6#^mb9S0ssu)p.'@m-EZ`OjW"%NJG8<\G,Y^^8hbS[cSsnmM-^Q\8Vm#?8b<=@Y>YHh7K_GP?`lYm#aMs)M2I1HBqF0:XUd&Osi7`n:7[^HB!=8"R=Hb>Q"E&+G7Xk[Ome0<Nn4f[_ScAZWj!:Rrl>8'3md4[lM*X,J<CQNlOl5TNcVSh:\BhXB+Ge?Z.j$_O0*EH#D'"(>,dpk#npE_Y$L7M@M[%:endYM;_lL:q,b?"DV[nOb!*Xq1V>H~>endstream
|
||||
endobj
|
||||
24 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1994
|
||||
>>
|
||||
stream
|
||||
Gb!;d=``=U&:WfGf^Y/q3Y2<u?lFA=:$`j`2M]iDU$;_R5r*;7<(P)jlg]Jn!^&m,4u.$@M^#h/p:t/3"";gs:!MR/%.II3\jmG_KAI0<93g\oLVo_Vbp(AEJa3>V\F"qX8Ef7ja@B8<Sko9GKbV$;&0A@>E_8;%3A?s>">kX6_XNCNJHW\-E#/eXT$RA3q$up46e*gZHp:l+?eNK-Gp2].ld3lH#Jj5g<_bNNN_=3R"Wm<Ud.u_>QacH2)p'9bc*@KO<4Rr_(%`@Oi5JoF,qiel9k:sG]eek8d0a'MY0YK!5F;\(08i/._\2%*(r`HSY6FD%,?Q2cX>7u>:LW1n(jV$9Rta+]Vg4S:f&<kfSqMAK*l?QMK:iWi1R;,q\+R\m:_S>NfWH7%7sHU!=j:%[lDWI/JZ@i$kr?n>)OrmS:h)dIJl&e?`1eO8]_-2i#%l2'7@$(m-Gc%genY3.S(Yj'3jhX&l0iZ']14K,-=:W,X,L^D=@bbJR1EUh4P+SO=g)]Z`+7;eLlis_pg1+-5"uc&',X7gA:Cd9"):*Q,JFh1K."E0Z<ZA4TpR/66ueJ]0V##&MR+#'D(PRTr[qGo7W]U_3/j,a!)]$tLaeR=I1V_h<\Taf3ph-7:6h7^camC:M2D-_`fifR-l[@X=eU_Dr[q'G1@9:+fKXnVS/#2,p%NZ[h/!)/A^^IX1*DouR]#Y&RN,RJ1WWZlqONHII@eAr0!FuP-R9bg*8j3'.Zl[9]1ICsho-s<g7k]uC1T>>2G:B3^!LXTb;[U&s/srqF29a@^m]:Dcf^*\:>&IZ>.3+OChQW=Lt.li"EsVu#j+fs)sL2Y;9ETG(R.."_!*uVX'Fl-'hKT\W\\TCrT<cmE;8HR<U3fm/7E/Y[+pD]C[I$Gf,M(2kY)A0XFubeGWi=<#GX09LVogEe/J.H4M/O64alkjD6Y6fb^R3<e[k/cXl%*2aa6rT(-RG&ij6"n=%i+q6nHHLqI/YYS;ptgkB/c9`9Iq%Fg'&!o'2dU&B@Wh:DBTkj:EWB`8]VAS0p'e-'EtGBf\dqIs9"n:CH;AmFZ3^A$h,Z%PL#t#J`2dRL[hm=k`I&)c*aR5HPAaUE*PP`nKJQ4W0pB,E@E+/8:10m]#kYi08tm:h)dIU<,[ldZB#l`1DP51L6&8#!rPL6LNE8+K?6Xke>9�:&uK$EZjA)h5l@5)l/<)m)2Z_d'b+`Uf5R@+kP%<8n4\h_,3%.e9D41Q'Q<ie3Y\J%nU\4PfM^$3XGOTsIUQDG#>hoJf4?htf?^6IYgWYAX'V7;_`oDNH7+7bFq9tt31_Cn0:D&cfM2e3rj]H>9Y*+Z/DcFah^pplj#];k8*drr9CQsLA3?nonY,hCZ@-gS$]mMqQ2k1"%WZ-!Q6#Jfq?&+IMm4!/ORTdKfghY8tO#AU4u<\3M/S^?n?/)q`&$,;?SPqn+fR@LIAD6qo_4f<VTV1Ymg$"g=+.<CtOL8l=4),->21*kAY&*V6SZ^MX*>Ccm"%pYH>`FYNe11c4mQCZSnpc-DtpB0\jQrt9W&tS%la'=B'VFNP]-)YG`0:'IoK1U63:\(M[7T\oH)-P8L*dMV`NmlLWf'!>(/'UTo7Ci_<//?)*.7>r3%HjhSjX%_^>of#*f'NkRKo3s_BoUs1lp\75]:$>NjEA7Q>$r=0e9)3qKkA34p7uH$>?rZ?5L>,7+LcKei`3aY[0uU5%in3H80l5*bJd"ioqI+aTGOXpDX0_nDR74kROtN7mBasrn-<KO=QTFVbg2E=NT5,2!F1cY])9:[h_QhRa@@8PZRk%;@kMIU<aPS!g*.SC2MH68.o#jtJ`HDtKSCNSW:/tC^01M4%^j)!ike_.QS6gt:q7RfjOk/a.B=AW>h/RgAEg&*OnViL0Hqqgbm*]oCd5V,)oOGQ[Ec(^&\'uVn=,_YDS0-*jT>RVZ`2BnH,F(q=/d%W&TZi0(.o'S@4l`VQ8K1fn@CHNnf05bm-e?\$^nSiTE~>endstream
|
||||
endobj
|
||||
25 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1360
|
||||
>>
|
||||
stream
|
||||
Gb"/&?#SIU'ReT:\1mX7'FR?-&kRA/J[S_.!'ur[?=2[nV.J@],"o'aV^W&SpQ>=C8%dK,LBZ=B)l?/ik?d"l/e:YVlSg9,K,MJ:51ip>#_i6pLl5O%hn[Qdl`5^fUYPMB3<D9+"lqc-"mNs__./;se0c@m7tSA2$A*s#"]2mmF2B)#0RdLD5b)78>X3mc9X&0q*Q0AVVHr7;k3oIVr"I(5+0isMm:Q1A@!W$V2V"H]0#GQe*qX*lrqO[7C\Wub<#//k,_FqF<!C_j#*a.QHOZ>,;+8T3V.\/iL]/6&?j"ni6>qGFD9s5eAU-$`6#Pd0N$Y\;J7!F%CBR*W[lD4Fo5uU9R=tnn51AJ)g+pl!4I2!TU7NG#@:m'?Q_A99,0L_R/6i]CnRi->QuA"@H;7j*@h((UlCN_RRK>@H_k8`aTCk7o6l&'nLggWKCTtV^/A*kSkt^8-[:J[fqD#4O<l#@=/e_r+\_n8t`(3k<hFN?]HqGf&>*B4PTA+CR/96(i-OStg',5/bYFKI.p4.IjqJ!uB)bPoRq.#"7q9oL6b(A8_[lK<<QF3@YQ/QsrZo!((4dNE.J5k9'>DDmAFr57)k5A)H^R%"Q,`:s#E:ir_q@kW((n;9)*+TWn9e+CB$g$PIBVTd-bHn`5FWJ@j6'0=Q8Z^paF-ntZUWmfKqSZe^EPah^P<R4OK,=A]JoagaC-60!%%!DX_l./MYJK_^eiuh]f0dabgX&SVc'(!9ko.`6P_72o`rV,8EKGrI%(DZ[KD#r?16o0S<ZS-24)gZ9ZS5>6-%r$'A9f*5'3Op82)p6MI[-oRE#ce:8kT[['.(qE0K?:g$]s7VQrdmKH5VP($lL@oJ5VXcdMTQjn?HV2LLiGKF`#Sj!45mKX$a;R;-]=Xl^i,FMdTg))oVpH:GS5Gpo'd)FIrSB*GEU'SD>eV?B*MQD$Vpo.^#NVKD%6l5r-)S5s@7qLF^UAl.YCN<8kO7KB]qrnL\i+42SMNO9tBVQhS6f(IguXflm^q/6Y_B'Sc`_g-[q]7":P\3ghYKhq^g&P2(c+cPV-$X;()+ZLoHLL?:""IGS7L%-oWSqg'1HDo28MnjSl/.Q!8OK(b3?dGcq\lFd/#a]^YSA?Er+=<EsXMY3*I8%RS=+9e7oFJSJL$Tlg:NA"Js-,%iUCRVDCId%lV4W?r80BIoT#:!\b<kW_B+hW:)1\Mf35Q)#d/,K5+8i7CXP\:V^qF5\#L&-B;bK"QGo?aG``/)leTf'[9L0!:^Oe\\)M$f91k7h7jTAYiD_MeHh[s#i]+tik\e+.*#&7!@__H:LY1Dc@Nbei:o;PqssFQ0*[6sl");sC&LiI-,ChJiOs5600CbA.~>endstream
|
||||
endobj
|
||||
26 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1820
|
||||
>>
|
||||
stream
|
||||
Gb!#\gN)%,&:N/3m-%$d=:i7U8@l)fNK[$uj2oP\q@Mb>Tcf0u8Z3oqbBWsR?'#ak.ZU>^SM[pF`!Y.&/9]?BRK:Ad/,r'f^sa`k?8,b&9GbJaikY0fSkj]_pP?d?cZ+Ng5.(J#87:a"jNCj6/gicc!X:j]M!m@^pl+usi.HaL4HFcL$WoOU0d%O8T'l[LREL$XeU!^(b<jYfEB+PQf@U#tg:`%+g,jD_qOfU6_<O`4XgUSFF$1>:.1BOrIX_h\j\cf?9$.;9<4Rfc$>,Uc_&qk09O*EBY!mdBe'B^rU(+Jo3o%b-E3H>7655-:Mb;*\E#E:3GV');0nNU=goB1N"%HN#@i2%*_C,dOL<!Q"0^J6#0V64';'&!VF$-W5XcXnma/=5l,;SfPKK@Uu9Dn1IW+TYbAV@WI.odITNNqY)Cm?g.XX4nrN!*-<K;?PDkPMBRBqpVF[\=g[S4R[-I')!Z]4l/XhPsZ>Oa^BP4aQ'P;!'8SI[q(Q!t.Y-0oKO:q]t[@;k@&mgh%-L2HchbRDDe"2_ms^fjJt+G7Pe.dDJ(54W9Q2!$[gG$F@'h;[BSE=M[>&BJgb$=%]TQPL1d`a$e^9krKD%P3HY^/bP2!g7^--gi[?n!1C>o-ZFjLY/2HULJ"':Vf7+oUCfn&Zk@[eM!/il!M4r`pfkH+Z_QD!?[rGkQYBVTaG&@/RGK[o>f]ToCl\W=&BF<hX&O'<pfuE$97lE=hk&r>K\N)*.MOgWR4FY_7CYo'm%!E8R>O@,e[C<I>F+/,eafN[\[I]4c]0TY+cT^^OH&r(Mg2;toWGj^_e?>Gh=eE!^P>[?gBLXh[TNd_]@SZ5;CL"&oKjd@=\<6K%F3+tP%tejU1<p`b7:BbK#KBnB*^U`A(58RRHkN$iQL/I)q:(1#=bHXbR=oO)$t/EdDja5`j8F[esNec'?$.C$r3J1OEi++jf#?j*U4I#"nGk9Ag0V!)q:]?48Ou5mMc!=1`<'%nbhr`7?8s]j"*HMjKpm/nK6Us-AP.)H$=bG`CrlTgN$n\gJ$TWdFmQt8^(J(`'7Ehk8Bd9Yn$>m9\30tH[cd`bX-dK^&Pj)QlQb#"ME1u362;oqFt&Lf[Zdp/(dJ:Y$a>)\q7&;2Tf]ClXtDFD)Uj$$3="L@f8HOggTA*/LflnE;fCI6:C*@hd.c`">#-n/lUus,)l5qD3ORBN*PtH@Cuu=jp*SHLR#?-pAo%g4N8^74i<bMaF2fkbQc`I8bOoHS%hh$#mbjQI6*qcF/r%&\rO8UP]!6cg:R@NLa]@gfc\o3Emo^ZH0tQ:?["IO)lX>is!>'ga5D.YY:"PjQ6<t[`;OqfT"p2K?H@(,B1kRIQMm.lDZu/P$iQ:oe`RkOL%Ra48%TD,hFj8(S10S1DT5b_'!WYMH3%)e#h(KFPE3GngPs9m&O=+P<'c,HOCP6`".=jWl?\Jo4aVDTT(R9DUCW`_ST"\=j\qgPm3EfnWGWB.0r..0mr<@gBCc5<[-Wedh\Eo.)-nU>:1A?->f8YRdFmV-Q@5-XCRKYqa9#dIB[5-m%+i%=]Mu?F`/k.n&H*.Z4Um</3hVIB%%k?brrq+9mLcW*fbOU.>od8I08<*0a6H79"!c1rA-Rd=N.a+3BOg?U'2TY:`q/s4q$2!&'rK8jJ!#O+^nOM\@3fr[_D5@,*RN\>bMi+$ItM!DZFQ>5P9gpDE%\?kPOF+:n]GV$<7o>&Xd]G/1/l(d17:KY>3=f20VGd;Gq"nEN^kU8O.@;e*3[+4;ku#$Y1EQ<b`fSlaMSU14Mn$kp;*QnR[jB)3dN.\m,\SMfpu;uhERm0J=Z~>endstream
|
||||
endobj
|
||||
27 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1686
|
||||
>>
|
||||
stream
|
||||
Gb"/&>Ar7S'RnZ;3!_4RBks05,Z;bt"7$CJ;"T?ch8?l1=f*4IZKUS:"tfE'G=5$0i];7o'\ONC)mMfqI-8B<I6(h&n\`TNGQmS]!i+oe(l-37Qq'9+]Rjc0kHdOci6q4J\,g_>%O?/^5KK0d#/23(j<9/+8eOZ*]RZ+e#Qs!u-RFt<.p+oQ(_A-p$p5X5o0je9ZZh8a**mp0(F%YCDrV5jn3S>QkV16CMdUc7CQl'&Y"'o3V%8b)$sp^En.K'kV(1JGX],#.bZ0$s_N]*J^V,;ul9_=nXn#thI"]Uog-H8!'*4sQjE8gNW[LKQBL(EDb9VugkQ/?6$?c],[p_itM'$1YifukJAYHp1f\`RMFa4t.-fI7lLTke].@\c>[FF^J=rV@FD#FO2*gQ\hTXuRpm$c*,89]eB$sTAlFTkmFG`6h=:[0VXK>9$8CI;m=fV'6C.A#0?>*D[NS&<l=G>*eAT4T<<cTMP.-W1SaHemG6OG'-D@=RU&31VE5&>rB&]T-%Xm&3mMjfhk'C49V%B2P?F>rF(pnn<Eg-J@5fGgpTYB8;r!?$$o42;rOJPKk5m&i:q^LssP$@OX#1d<"/Q)X7d/9Zh,op4IH)nJM^:cPJFq)o1-Ln>C"5<G;bPYgTj'<Aus**n1#0VXsID?is?:70D;f(C%Cg#()Qr!&H.#=fTW"0HE[rX=kYjO8!42O%K>G*3jR/j>^5[Vc'_a,T5_#mO[747:Kh!n=\ClKJg;Xs5'9XB6#s/*5'W7.XqR/*EU3)Qq-tM)_5@qqZ/(I-iF!Un0cB:X=?l6op'L)*6uu)%=Lk-]\]NLDFNK@fs-`'ad,;3p<?p/Phr@%Rm$C,]8(UtTg,8&;^r"\W73>Bo)AS>HH<e^s2SY(%"EgZ;'fb!Sh(11:-O7I$)2R,QO9H<=[cnr1Ml;XYL]\a<)BMm`MLifBF3p@W;u\3(00*>F[ddho.!c$(7B/Y7us.`G2D-\^:iM!dNr_obq-i'd'1@EQ&b"Z#4N1qjgi[1.&0ZTLBI3sfoP/g/W_kFOKuAYm+@T;R5t:iq%/][-@E!M,,/\G1_Xj2/m3ObNPM^HMIKA_Y1OK#!M^T@pFJ(k:P:5#,;Q#+11WOOlSKX\REY[LmG>8l.'?4=bBX2b0%W-;nKHHl,E"%0CU/)B3#t\RiS/goRNqKPK#%P:="(+3KC)gGiNX<(X0b\nj0$eqp^&+A,J8I&l[D?PNP.@uMQSVE`n^<]B=f5W'<O&)TF)DFV$C@-i(GSYlY*8P[1):nA[Q,%3sFmrL-bGX9$6VbKVZ,3gpfK%`-aKVX'.])7q(Q?O^S1i%Ps%m'NF]bN'&=Y@TFL/';E%Z7UT;4%bhZ?@Cnib@!(GpSiP"W]H"0&FR`4^019fK?nWN@BRY\g@OQr>QaPtL0cbWDZi,rHMZl:IY>,R)Qn_12UgZo)@sudu*=@^67;F@=aH$g,^rXOK(bTnc5=B6&CK_7aL=M(0#5c:14ljF:[@%Nu>G6:g?4cVW$B.*,pY2?ke;fp(6*#&jI\YKu(:57;8ehM%_U[lVYO%&1Mg(*1cA=T/Os]^sZYu^e=6$d#T%.;Ff/OUI?VX,9I0]8Fah!$F*R8Xt];N\6;h>n4Kq5IGn6G`3b*HVfM$5.BpA.ho\ZTls/?2j@X4tj:N/E&eG>cpaQc"N[ZM=u1"m9gDEd/H~>endstream
|
||||
endobj
|
||||
28 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1906
|
||||
>>
|
||||
stream
|
||||
Gb!;d>Ar7S'Roe[35AkU(840RP,PN#d*%"F.(U16gP9>NMT".>,Z9okUtr9T^-h0pg$pB6\dYj'.&*ZXmp,YXS3t-/0=?:n!oVTC-H?h!$e#KVN%gX5K3tOOY9W$2DTI2J*d>9<"VQ+C"4_35_%0'J\If#5KS5*h(oN&YLkCWSKcpo!&odA_7"L#B'64;1;a93VXnOsk\1TDYL`ZcIqYMj.DW!r/B[J!Ik(gfm#&TXjV0\([e.6tp(,14;gZK5pX(J)$k"=b)8QR+(CH-Ck&71sD)f[HM<Jp&J9J9iNe1<9bao[SQ"Q?B-GG;7J\nHbELhE-7+W:X]L_f>&"E"STeL.&q<`4k^F_DJ^H2;;dAn.DEg69$1N^lp)=;WrnmDnc0j,SD)3RleJ+:`J0i<\o7,boh4pX(#2ENQ0WN"a7N%s5\eW1DE_kXSJ!ng5GU</V8.4%j#-Eiim5/A^Cldpm7P?YZqF2]9k12NH"jEVJO]6"K$++hWejJ\rZE\^V)(o18)U0":fmhb$m_8B"$1a>I3RA>1k+iP![[C*D'4n_"TNCNBW#!aRXI#u2u^0L5<*P42pUIpigkM$04Q%5W"+A1HYu$-r<k\*36p,lbP:N(cXJ@J"[jbsB7@"DTm#h:@T@'62c621tGb"ibB[#4]*!'jBZo!L6i%6"!l-Z^Ibb5kGhFZ#h4#/-goET69_F0Gcb;+0krq1N_EH0)'_qIIdTnkpPiYTG=l:i?lT9,F0`_COe.9"?nHDjQ_B?o>X"9e?#b$V+<FJa0O)V(\N7<I`)K,%Q+"u!U"3;,@kFf[kh<Nn!6["?@f9oREU]NZ>BG=99JB=8s/5'S-_dF<6*,2F*K@PBl[@o1RNVE`G&4]V)C8PQJZ4.]n:D(E5hOXZ1[s9h=dqZ4gTL`m`=pb=Mp-^mG"Ui2Z=9J2Pb0uD1^6#3"+C>Naj/T"ONRYS6PB+e\0;&gDP3pStuXNbU.Y]BGbUjku$G=b3<<9hVB-)doGA)a;q+:^d1A+>n*2ZGW:tSCE95!>?-J7SdER](TJqbBa0D*r=5[WJ/TNK=$l=Oe)Lt:k&RTAe;UFb;5m*g;FbH&A&tJ%W704jM[]@Bff50cKd]pnI7Kf;WoQ:4[`c&gde8[Ia<*o`F0&LG17FLL@;Sm.!VO$j>+_'LnjJ)0Y4*FP@Q7_.XlN?B,9*EXEci,;\aaI;@kBT`n`)M?AM!Ub,l1[*aREo]TP#V7`07@K1QY&]]<J4MnGBKS,G:Q*;-d\C'&-BgDSl!K+j\Yro-15N*.?UQo1m9($.NT1Wlc=\-5s?@/!#9[0\OS5H(05uVj#0F,OI4'o4U5lcK!W_s-5(@i=<2$_aCrO@m;RHHW_Zd9Oh,.=B,/r5Dk^Tk;<&8.oY_%KX*!C<i2*YiWTh\.oXU'Al=\_+#0$pJ(%JrrJ7cojt,,1i6%;4O>rpIfl@TZqoS9cO?,S!J`$=W?X7(kV<i!*eL+bQ0r!uPYkIl!qIIjB-@'c;CO<"Lnfat8ZA_N:p(XVMRNgbc^kF<+d2?6Yq$a$HZg;OlTe!>W5kB>gril]&&.uoAG7R.FpHl7T\"B>8_k>>ZYAF?I)mg\"@mPFFHP0>C8d_Q`4_A+d$+u?aJ<*BXI#J*:C6dCrL+&N.DPPc`)Z)mGfGj[JTjt5SG!iI@.#O;$BM\6aT_7pCI#f5%c):FBX?$2T^GV07l)LDr/%&ECf[nlP53i`R[5JESHi#?Am@aoT(1MlHag5\JXLGKo79[X=\h9s6EKW>:dcmKB:@t^t;.V'V[iH>HkUG>d.dbFQ0p_@o!cq4YKX$nn^I-%q17+@;[&k9:SY1?/Djt1=.OF2:id9%7a!JXen:KWXZaK1+3-S;CF<.Yd-2$la4\W!$qY=YGERn\q<&L/4M-I8E)#XPKWlD(~>endstream
|
||||
endobj
|
||||
29 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 654
|
||||
>>
|
||||
stream
|
||||
GauI2?#SI?'Sc)J/'_^0.2X`Cgq3!L>,A0%4)\32nJpOJEkhd?D?#([,AF`fdBZ=uQ>b]okC&tT$/i$YpFXqrD_d.:#S7?r!XM.%Z73H47c-^lE[k/m.$chf.A/M8+0ait6c'F2BhCX"JYZ\h,XG>*&nn3WJdARf(=sc488p+*"!gIT,sSDj&Z7ImAglV#rNgtB-X1pHie+jNZ[[U03'i9qHe"K,9G3IQ[YF=ia057,_3E(W94M`3iiO\r*bLWD\@mZAC9)*u.!l-N$F9!+_1=#p%)kVlQ_IF?S2Z@4jATAc3X:6I'HR@n,@?sN,SSB'qQPskm63iq"PaH;mROL^QQV$G'14daN.JA`UH?'9m)D)X&KtI_4>[ohPRo%\^=TVt0Cp`Qkj[:=`j\YE:M/XPKh?]-DRrTh\]1lG^2Z)/Ut&8UElclgR[_/_H.,0Xo"NQ6`;/2721O/Q$ns>i@b9p>'VCZH"q5Fp\hRB&n,A56j>shCY32"CY(GN+fINQo(!FdOg@[K?<0gVYO%R`,bFjjp3[[.^/=]'NI0](+G)@r>IFmf/ljmOqB]WX%EiWV,%R5rYH/U9]QsK[@KrNhL;\1S&i1CRjANhbh[&HCirKW,KqIXgGlP,"HL&0Ns/f_EKlkYP/"5-\MMu~>endstream
|
||||
endobj
|
||||
xref
|
||||
0 30
|
||||
0000000000 65535 f
|
||||
0000000061 00000 n
|
||||
0000000132 00000 n
|
||||
0000000239 00000 n
|
||||
0000000351 00000 n
|
||||
0000000428 00000 n
|
||||
0000000633 00000 n
|
||||
0000000738 00000 n
|
||||
0000000943 00000 n
|
||||
0000001026 00000 n
|
||||
0000001231 00000 n
|
||||
0000001437 00000 n
|
||||
0000001643 00000 n
|
||||
0000001849 00000 n
|
||||
0000002055 00000 n
|
||||
0000002261 00000 n
|
||||
0000002467 00000 n
|
||||
0000002673 00000 n
|
||||
0000002743 00000 n
|
||||
0000003028 00000 n
|
||||
0000003150 00000 n
|
||||
0000005131 00000 n
|
||||
0000007050 00000 n
|
||||
0000008887 00000 n
|
||||
0000010521 00000 n
|
||||
0000012607 00000 n
|
||||
0000014059 00000 n
|
||||
0000015971 00000 n
|
||||
0000017749 00000 n
|
||||
0000019747 00000 n
|
||||
trailer
|
||||
<<
|
||||
/ID
|
||||
[<2814d2269da3e51bbaeeb9604badd1d5><2814d2269da3e51bbaeeb9604badd1d5>]
|
||||
% ReportLab generated PDF document -- digest (opensource)
|
||||
|
||||
/Info 18 0 R
|
||||
/Root 17 0 R
|
||||
/Size 30
|
||||
>>
|
||||
startxref
|
||||
20492
|
||||
%%EOF
|
||||
BIN
Les05-NextJS-Basics/Les05-Slides.pdf
Normal file
BIN
Les05-NextJS-Basics/Les05-Slides.pdf
Normal file
Binary file not shown.
BIN
Les05-NextJS-Basics/Les05-Slides.pptx
Normal file
BIN
Les05-NextJS-Basics/Les05-Slides.pptx
Normal file
Binary file not shown.
64
Les06-NextJS-QuickPoll-Part2/Les06-Huiswerk.md
Normal file
64
Les06-NextJS-QuickPoll-Part2/Les06-Huiswerk.md
Normal file
@@ -0,0 +1,64 @@
|
||||
# Les 6 — Huiswerk
|
||||
## QuickPoll polish + voorbereiding Supabase
|
||||
|
||||
**Deadline:** Voor Les 7
|
||||
**Inleveren:** GitHub repo via Teams
|
||||
|
||||
---
|
||||
|
||||
## Opdracht 1 — Polish je app
|
||||
|
||||
Kies minstens **drie**:
|
||||
|
||||
- **Better empty states** — als er geen polls zijn, mooie message + CTA
|
||||
- **Dark mode** — toggle button + Tailwind dark classes
|
||||
- **Toast notifications** — `pnpm add sonner` voor vote feedback
|
||||
- **Animatie** — Framer Motion voor vote-count count-up
|
||||
- **Validation** — toon errors inline (geen throw)
|
||||
- **Optimistic UI** — `useOptimistic` voor instant vote-feedback
|
||||
|
||||
Per gekozen item: korte uitleg in REFLECTIE.md wat je hebt gedaan.
|
||||
|
||||
---
|
||||
|
||||
## Opdracht 2 — Maak een Supabase account
|
||||
|
||||
Volgende les koppelen we Supabase. Bereid je alvast voor:
|
||||
|
||||
1. Account op **supabase.com** (mag met GitHub)
|
||||
2. New project — naam `quickpoll`, region `Europe (Frankfurt)`
|
||||
3. Sla password op (lange random string)
|
||||
4. Wacht 1-2 min op provisioning
|
||||
5. Noteer in REFLECTIE.md:
|
||||
- Project URL (eindigt op `.supabase.co`)
|
||||
- Anon key (Settings → API)
|
||||
|
||||
Je hoeft NIETS in te bouwen — alleen account klaar.
|
||||
|
||||
---
|
||||
|
||||
## Opdracht 3 — Reflectie (250 woorden)
|
||||
|
||||
Schrijf in `REFLECTIE.md`:
|
||||
|
||||
- Wat is volgens jou het verschil tussen een Server Action en een traditionele API route?
|
||||
- Hoe vond je werken met `useFormStatus` + `useOptimistic`?
|
||||
- Welke onderdelen voelden nog onnatuurlijk of onduidelijk?
|
||||
- Wat verwacht je dat met Supabase makkelijker wordt?
|
||||
|
||||
---
|
||||
|
||||
## Inleveren
|
||||
|
||||
GitHub repo URL via Teams. Vermeld in je commit-messages welke polish-items je gekozen hebt.
|
||||
|
||||
---
|
||||
|
||||
## Tips
|
||||
|
||||
- **Commits klein houden** — één polish-item per commit
|
||||
- **Loop niet vast op één feature** — als iets niet werkt, kies een ander item
|
||||
- **Vraag hulp** in Teams als nodig
|
||||
- **Tijd:** ~2 uur
|
||||
|
||||
Volgende les: échte database, écht persistent. QuickPoll wordt productie-klaar.
|
||||
105
Les06-NextJS-QuickPoll-Part2/Les06-Huiswerk.pdf
Normal file
105
Les06-NextJS-QuickPoll-Part2/Les06-Huiswerk.pdf
Normal file
@@ -0,0 +1,105 @@
|
||||
%PDF-1.4
|
||||
%<25><><EFBFBD><EFBFBD> ReportLab Generated PDF document (opensource)
|
||||
1 0 obj
|
||||
<<
|
||||
/F1 2 0 R /F2 3 0 R /F3 4 0 R /F4 5 0 R
|
||||
>>
|
||||
endobj
|
||||
2 0 obj
|
||||
<<
|
||||
/BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font
|
||||
>>
|
||||
endobj
|
||||
3 0 obj
|
||||
<<
|
||||
/BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding /Name /F2 /Subtype /Type1 /Type /Font
|
||||
>>
|
||||
endobj
|
||||
4 0 obj
|
||||
<<
|
||||
/BaseFont /Courier /Encoding /WinAnsiEncoding /Name /F3 /Subtype /Type1 /Type /Font
|
||||
>>
|
||||
endobj
|
||||
5 0 obj
|
||||
<<
|
||||
/BaseFont /Symbol /Name /F4 /Subtype /Type1 /Type /Font
|
||||
>>
|
||||
endobj
|
||||
6 0 obj
|
||||
<<
|
||||
/Contents 11 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 10 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
7 0 obj
|
||||
<<
|
||||
/Contents 12 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 10 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
8 0 obj
|
||||
<<
|
||||
/PageMode /UseNone /Pages 10 0 R /Type /Catalog
|
||||
>>
|
||||
endobj
|
||||
9 0 obj
|
||||
<<
|
||||
/Author (NOVI Hogeschool Utrecht) /CreationDate (D:20260607080655+00'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260607080655+00'00') /Producer (ReportLab PDF Library - \(opensource\))
|
||||
/Subject (\(unspecified\)) /Title (Huiswerk) /Trapped /False
|
||||
>>
|
||||
endobj
|
||||
10 0 obj
|
||||
<<
|
||||
/Count 2 /Kids [ 6 0 R 7 0 R ] /Type /Pages
|
||||
>>
|
||||
endobj
|
||||
11 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 2010
|
||||
>>
|
||||
stream
|
||||
Gb!#\gNM%*'Re;/SB&EqZ/dub"^:+`.><N%94&B;:"@m^CHKdmYFd&s'?=gM#qVOHFP2t?cJCUK/JHM$6],58!dHYT2eN7!Kuk>H;_qj&!N2./j%,q'F\E0"_po3WK'!s9&(9,Z#0YS6O*Uq6h9fKJ"OeZclZt0[SEDlMJX"(.b7Od"Z$")E6$%lo]68,,U"P[id\^X0[^SH8o$:>(H(&#aLMiDb1km5G"fehBR$pc$a+?kcj3')7kO;'gGimmV)8c,1jo0Z<\!/pmEXj2d'+\Zkdha]`JB:Hl5f]g;'?t]BB@Z4DKufQBSX3B[fM'3l8B8SKUp)ace&j>u+I_=n##`4$hiWoiU64\B-)iqYGi<@9\(-ZPfsY\Cp=]_#e6EPoBY%ae27L83CPG2=BWMg*Q(seeRQLMIo/I^iM`#_NesbGJk)XV+,K/JSI.^:k`K2%pO)S/Xik!W)lkC\^-t:+`2NEQ`)JIQ<gb*d8BY(6KDMt'3eYm)bk)R=8>Vt*&4*k[:D\r<.fTe0aZNtPB$d@,!76F8'3ht3&%/`%s\;%,+!s=H^ajGrN9PEE&e,T_Ze9/e^@eYIekYMl$FVq<:ISg\J;%\bhAj+D66ofcu^Fk1(^QN"2M$ugr%tDFg,%4E9EHmX%Sar#'5fC!AP6B,lWhs0eF9aYUD:s4ki,PP/O)$r+3PBC%2MJ6(YCkf";\2n'>qI-8>RH<3[5(WZ_sn2*^Kkijl]m71UaXmG2HdFN_,:sTT7q52(NI62+ldBX0anTk+:.EPBsu*S8$T,j2&$-m[-.?qoZM3nj+'M<G<p0Z!0n0lR1`6@?LrQ,o[`oN[VcbeQA)Ha`Pc'jgNJ*]1^!Skn_6RH\L^@'$P@P&YKVHs5&`Ym&8O^On8SQQ&mNOlLD(MSi%,.&bY(E06H3tsaU0=;e[*uFpcK%+Ro:C&B71KiVo9?c<$L9m0UQep%0pp3JPaV-Q8lsSl.F72XeK>0^YM:UTc@aVb?pDTAZGEeWbn)Vl@B%1qE*MW`A0NX%.d1OnbnM67O&LX3KLKfYsBl73i0a!hU+?jj3c/;cioKua62U/]HrRokTk>IZB<[Qm2;ScGb4L@Ga.8R+Nmp5ZX1un]?%htE8Z]H=LB3_qC*KF<tIqP3(,mPfSj<!H9XD-FOl/WSbrselF$=[=b_5YP!La!8fi"5RtViZM`d=\ighb8/k$aFT]Z%nb;)8OOY0,Rmpi"sCJP-]P%?Yl1)G/e1YZ6hj.a,#e9@*9M1>a1A291G*n?gW":G.hW3A5lVTbZN+f]DP^RhBMXZ_M%M+**q$q/6@as,&scVcLM@Xmd?"NdA4ID)?I[1'DtiR]k^YI,_[2_5Z>S/TNcK[/%GVAY1lF[ESY(H!JQ:Z_0@`A[M+&cG#R^Eg@G7$\3&^7Xk[+cD;gZSq!%C0h;NUkk;P4;ei("uTICq-F-iWi5E.q%G\Xj?._rF.$LK/jpcO)7g%0:<tOfhbVNn[4$POb>hc]kL1EK"cUFSoDRK1/OH#61i43t;2`p+Ni#6Y\K@F]RtD'_7Xm2.aMd9?VPm/!DXBl/='[&K8]!i:@`]QR1jE)lg^9G`5,eUbU1":L67fh1f,j4q23*f,A9c9l]m>rBYI(3p4"7WCAC=Cs=\YA=UOM?b,;qn\P#l[LCR)/c_?/PE"oBth0)6-C<'G99HC5O)(A/$XUO"SdFP/\oYOJbM;[mDg`p"\dK-ZV6I4CiG/^f"s:ZbN!13VTT?"pJV]+,](W4nQQ%91F(N^FSW,Xlg+N)89+,+`Xi3(JO5mJr@j#4^UA=S8,_,EBWsEUb;0gthW>5&4'](q?XfE#f/K&j%+0f=O\joW@l#[KI67YS-_D.BJNnIoW?EpMUibdMu%$@b*,f9g3?`R^cZ,r\0nNmsD5TbL`9a5lB5Y>fBf`NqVV((Y#bBYZFWYjQ_*p$\L4W.l<(D*TZ_IW/2e7bMi$iFE4Jb)`?,E/sb/]X2B%X6qF.;?lh(hmNA'*"/R$CX4K<bq@@Q6rfm~>endstream
|
||||
endobj
|
||||
12 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1190
|
||||
>>
|
||||
stream
|
||||
Gb!;b962"3&AI`dqFIos4OQ@^-0<C?2-$gPCZ<$H))D_XH"^6I_,WM^Dr9.80OSid;W[IYE&"*;O&'-W-OpXbnb3!]!;J^3dln!h+<CXZQj<-r>f<1_3_TZ#oR(%ajL@>RXQS:RkXhZT5@?cQoJf66aJ.#`0B+O?H4^G:(PY$TNA1@aiP<=G#pTs_`;Lec?L2l=+9[DlQlcIEh>POp,+Do""j?6\c,H0BOTf)-[J&m3bi+$76X2nNYNprE>cJ+!d8[(b^=F2mdi*s-KQ',*5B)XnW_e1qGR!\.)dpR_(N:.C::T]`ZB=8UFggd[P>#MTJCs@19+\72"Cdd#-it1[N^qI2NpoMc#6Gk7ZqhgP0SoF]]%9r^'3g7(aPdWL3K@j20^K/(JL@:9MWO?F<`8hDEkIC=[UOSA2K'hK4E50A9J#(I!o<b$<6Nr3A-m+Ke%WFNleYq>Y:dQ-K*t_UbMQ>Q\n;8s>+]7HU5cOMp?)T;c[IEbQ\8Z3O3#4Y!./L3(HrW8%s]!59[`%Hk<.`CZ.></Fj@Ies..X^%Eqg9_:$+m2))ufk,=-515EFq#"q5XgnU`X32a)_['Ef8FcoA/J2tLBblG+cCA`H5h[&$$m6Fgn3g*+%$42hMKc,JZ/ul6#:j-R')!ibYgt)k+[*'upD4gcL<Qd^t>)mdn?\;$3D[4s:XQ+PYH%nSO+Z4UAJB\hkeFl_=#q_JH;581mb<V&h=X2%I*a^Mr%BKKmk+S)cC<%E9-)G6IPl%=M*YX0&,[&]a8U^1uA$CDbmd6]V(^Po-?JsS^p)<^g[l4$3+[.;q;BLn[pP6+Oh_r@nL"N$'^2+i^;_&#Yn#g%N'8S@l%"ef7"]<:bDh<#*MF,lA"WESd@T".KIT7kaApPY:/<%!*@&CXMaeni8ZQD`ol`nMEY<^7d[DB%5)U$9N?X#X:1ZCLJQG[33ll2^,g+tRIj[b.f<DC'cfB/H:mgMS8kOqhlShSMkBZYo,NL]@SiC^'V8nhio0f@=qF1l(Zaf'2D/4j`0[[G*HX$lV.a<\0GQ/9Fh>HgZ31[-k3Sd1f3'::\'o`>;k9fjA!,YF?Eah*^o,7BLm/3S>Wj1bXd)Ll!.4RR.4W2&MD6[R-P&TT^@/Ib:_>2a3"ldKUjp7@t)$C3Q%gI@4/)jTRo%>.9R[';RfP:TKB]fUJ4o,jll61t~>endstream
|
||||
endobj
|
||||
xref
|
||||
0 13
|
||||
0000000000 65535 f
|
||||
0000000061 00000 n
|
||||
0000000122 00000 n
|
||||
0000000229 00000 n
|
||||
0000000341 00000 n
|
||||
0000000446 00000 n
|
||||
0000000523 00000 n
|
||||
0000000728 00000 n
|
||||
0000000933 00000 n
|
||||
0000001002 00000 n
|
||||
0000001287 00000 n
|
||||
0000001353 00000 n
|
||||
0000003455 00000 n
|
||||
trailer
|
||||
<<
|
||||
/ID
|
||||
[<ad2895aab17a02b8bbbebc4dd4f08ae8><ad2895aab17a02b8bbbebc4dd4f08ae8>]
|
||||
% ReportLab generated PDF document -- digest (opensource)
|
||||
|
||||
/Info 9 0 R
|
||||
/Root 8 0 R
|
||||
/Size 13
|
||||
>>
|
||||
startxref
|
||||
4737
|
||||
%%EOF
|
||||
197
Les06-NextJS-QuickPoll-Part2/Les06-Lesopdracht.md
Normal file
197
Les06-NextJS-QuickPoll-Part2/Les06-Lesopdracht.md
Normal file
@@ -0,0 +1,197 @@
|
||||
# Les 6 — Lesopdracht
|
||||
## QuickPoll Part 2 — Server Actions + polish
|
||||
|
||||
**Duur:** ~120 minuten klassikaal
|
||||
|
||||
---
|
||||
|
||||
## Doel
|
||||
|
||||
Aan het einde heeft QuickPoll:
|
||||
- Server actions voor vote submission
|
||||
- Een /create pagina voor nieuwe polls
|
||||
- Loading + error states
|
||||
- Optimistic updates
|
||||
|
||||
---
|
||||
|
||||
## Stap 1 — Server Action voor voting
|
||||
|
||||
`app/poll/[id]/actions.ts`:
|
||||
|
||||
```typescript
|
||||
"use server";
|
||||
import { polls } from "@/lib/data";
|
||||
import { revalidatePath } from "next/cache";
|
||||
|
||||
export async function vote(pollId: string, optionId: string) {
|
||||
const poll = polls.find(p => p.id === pollId);
|
||||
if (!poll) throw new Error("Poll niet gevonden");
|
||||
|
||||
const option = poll.options.find(o => o.id === optionId);
|
||||
if (!option) throw new Error("Optie niet gevonden");
|
||||
|
||||
option.votes += 1;
|
||||
revalidatePath(`/poll/${pollId}`);
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Stap 2 — VoteForm met server action
|
||||
|
||||
Refactor `components/VoteForm.tsx` om `vote()` server action te gebruiken in plaats van useState:
|
||||
|
||||
```tsx
|
||||
"use client";
|
||||
import { vote } from "@/app/poll/[id]/actions";
|
||||
import { useFormStatus } from "react-dom";
|
||||
|
||||
function VoteButton({ option }) {
|
||||
const { pending } = useFormStatus();
|
||||
return (
|
||||
<button
|
||||
disabled={pending}
|
||||
className="w-full text-left p-3 border rounded hover:bg-gray-50 disabled:opacity-50"
|
||||
>
|
||||
{option.text} ({option.votes})
|
||||
</button>
|
||||
);
|
||||
}
|
||||
|
||||
export function VoteForm({ poll }) {
|
||||
return (
|
||||
<div className="space-y-2">
|
||||
{poll.options.map(o => (
|
||||
<form
|
||||
key={o.id}
|
||||
action={vote.bind(null, poll.id, o.id)}
|
||||
>
|
||||
<VoteButton option={o} />
|
||||
</form>
|
||||
))}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Stap 3 — /create pagina
|
||||
|
||||
`app/create/page.tsx`:
|
||||
|
||||
```tsx
|
||||
import { createPoll } from "./actions";
|
||||
|
||||
export default function CreatePage() {
|
||||
return (
|
||||
<main className="max-w-md mx-auto p-8">
|
||||
<h1 className="text-2xl font-bold mb-4">Nieuwe poll</h1>
|
||||
<form action={createPoll} className="space-y-4">
|
||||
<input name="title" required placeholder="Vraag" className="w-full border p-2 rounded" />
|
||||
<textarea name="options" required placeholder="Opties, één per regel" rows={4} className="w-full border p-2 rounded" />
|
||||
<button className="bg-blue-600 text-white px-4 py-2 rounded">Aanmaken</button>
|
||||
</form>
|
||||
</main>
|
||||
);
|
||||
}
|
||||
```
|
||||
|
||||
`app/create/actions.ts`:
|
||||
|
||||
```typescript
|
||||
"use server";
|
||||
import { polls } from "@/lib/data";
|
||||
import { redirect } from "next/navigation";
|
||||
import { revalidatePath } from "next/cache";
|
||||
|
||||
export async function createPoll(formData: FormData) {
|
||||
const title = formData.get("title") as string;
|
||||
const optionsText = formData.get("options") as string;
|
||||
const options = optionsText.split("\n").map(t => t.trim()).filter(Boolean);
|
||||
|
||||
if (!title || options.length < 2) {
|
||||
throw new Error("Vul titel + min 2 opties in");
|
||||
}
|
||||
|
||||
const newPoll = {
|
||||
id: String(polls.length + 1),
|
||||
title,
|
||||
options: options.map((text, i) => ({
|
||||
id: String.fromCharCode(97 + i),
|
||||
text,
|
||||
votes: 0,
|
||||
})),
|
||||
};
|
||||
|
||||
polls.push(newPoll);
|
||||
revalidatePath("/");
|
||||
redirect(`/poll/${newPoll.id}`);
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Stap 4 — Loading + Error states
|
||||
|
||||
`app/poll/[id]/loading.tsx`:
|
||||
```tsx
|
||||
export default function Loading() {
|
||||
return (
|
||||
<main className="max-w-md mx-auto p-8 space-y-4">
|
||||
<div className="h-8 bg-gray-200 rounded animate-pulse w-3/4" />
|
||||
<div className="space-y-2">
|
||||
{[1,2,3].map(i => (
|
||||
<div key={i} className="h-12 bg-gray-200 rounded animate-pulse" />
|
||||
))}
|
||||
</div>
|
||||
</main>
|
||||
);
|
||||
}
|
||||
```
|
||||
|
||||
`app/poll/[id]/error.tsx`:
|
||||
```tsx
|
||||
"use client";
|
||||
export default function Error({ error, reset }) {
|
||||
return (
|
||||
<main className="max-w-md mx-auto p-8">
|
||||
<p className="text-red-600">Oeps: {error.message}</p>
|
||||
<button onClick={reset} className="text-blue-600 underline">Probeer opnieuw</button>
|
||||
</main>
|
||||
);
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Stap 5 — Polish
|
||||
|
||||
- Voeg op homepage een "Nieuwe poll maken" knop naar `/create`
|
||||
- Voeg "Terug" link op detail-page
|
||||
- Maak buttons mooier (rounded, transitions, focus rings)
|
||||
|
||||
---
|
||||
|
||||
## Eisen
|
||||
|
||||
- [ ] Voting werkt via Server Action (geen lokaal useState meer)
|
||||
- [ ] /create pagina werkt en redirect na submit
|
||||
- [ ] Loading state zichtbaar bij langzaam internet (DevTools throttling)
|
||||
- [ ] Error state zichtbaar als je expres een error throw't
|
||||
- [ ] Polish: alles voelt netjes af
|
||||
|
||||
---
|
||||
|
||||
## Bonus
|
||||
|
||||
- `useOptimistic` toevoegen aan VoteForm voor instant feedback
|
||||
- Toast notification na vote (gebruik `sonner`)
|
||||
- Animatie op vote-count change
|
||||
|
||||
---
|
||||
|
||||
## Klaar?
|
||||
|
||||
Push naar GitHub. Volgende les: vervang in-memory data door echte Supabase database.
|
||||
@@ -2,7 +2,7 @@
|
||||
%<25><><EFBFBD><EFBFBD> ReportLab Generated PDF document (opensource)
|
||||
1 0 obj
|
||||
<<
|
||||
/F1 2 0 R /F2 3 0 R /F3 6 0 R /F4 22 0 R
|
||||
/F1 2 0 R /F2 3 0 R /F3 4 0 R
|
||||
>>
|
||||
endobj
|
||||
2 0 obj
|
||||
@@ -17,17 +17,12 @@ endobj
|
||||
endobj
|
||||
4 0 obj
|
||||
<<
|
||||
/Contents 27 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 26 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
/BaseFont /Courier /Encoding /WinAnsiEncoding /Name /F3 /Subtype /Type1 /Type /Font
|
||||
>>
|
||||
endobj
|
||||
5 0 obj
|
||||
<<
|
||||
/Contents 28 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 26 0 R /Resources <<
|
||||
/Contents 13 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 12 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
@@ -37,12 +32,17 @@ endobj
|
||||
endobj
|
||||
6 0 obj
|
||||
<<
|
||||
/BaseFont /Courier /Encoding /WinAnsiEncoding /Name /F3 /Subtype /Type1 /Type /Font
|
||||
/Contents 14 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 12 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
7 0 obj
|
||||
<<
|
||||
/Contents 29 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 26 0 R /Resources <<
|
||||
/Contents 15 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 12 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
@@ -52,7 +52,7 @@ endobj
|
||||
endobj
|
||||
8 0 obj
|
||||
<<
|
||||
/Contents 30 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 26 0 R /Resources <<
|
||||
/Contents 16 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 12 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
@@ -62,7 +62,7 @@ endobj
|
||||
endobj
|
||||
9 0 obj
|
||||
<<
|
||||
/Contents 31 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 26 0 R /Resources <<
|
||||
/Contents 17 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 12 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
@@ -72,339 +72,85 @@ endobj
|
||||
endobj
|
||||
10 0 obj
|
||||
<<
|
||||
/Contents 32 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 26 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
/PageMode /UseNone /Pages 12 0 R /Type /Catalog
|
||||
>>
|
||||
endobj
|
||||
11 0 obj
|
||||
<<
|
||||
/Contents 33 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 26 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
/Author (NOVI Hogeschool Utrecht) /CreationDate (D:20260607080655+00'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260607080655+00'00') /Producer (ReportLab PDF Library - \(opensource\))
|
||||
/Subject (\(unspecified\)) /Title (Lesopdracht) /Trapped /False
|
||||
>>
|
||||
endobj
|
||||
12 0 obj
|
||||
<<
|
||||
/Contents 34 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 26 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
/Count 5 /Kids [ 5 0 R 6 0 R 7 0 R 8 0 R 9 0 R ] /Type /Pages
|
||||
>>
|
||||
endobj
|
||||
13 0 obj
|
||||
<<
|
||||
/Contents 35 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 26 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1801
|
||||
>>
|
||||
stream
|
||||
GauHLgN)%,&:N_CCd!2COq%VF(P(b[e$Q[81RTS-e@\bO#t$uoCPl)9Z.$gjhqeN&Ju!OqSYh]B1-o;lcgpG=64>9V=S!E6!IgKRoJm#n@C?=$&J&J,iRuHNi"-rKiV>`D8_oI1$!mK7`J'M,+-7W++Tk:>Ohq2r1*U9XJ`Ad7R".N>ntEsOLk#is!KkS:A?`Ju,m!2mg*;%XKK%MlnOXa-8:i`\%+Dl:(sZM@-u7B+#\Ca>@CCp4YHQfS_(YV<.cXO#Vso%5W-D=YS9"^,cJY\5;JEjB`<2M+"ga!<_8*#4;rYE\(`Rn&b'^ND,&?CbFHL)GY^qpXb[P32i,*.YbD6FP(UJTF`D1sLerD,*P?/)??A+!\5i3I?4-2)`Y60S$Hbl(BW:)OU[N>m5.p*).)IoJ/AY%M:fGWI>S^s2LTtN>;4,Y,:@AN\Oc>UJi.'h-$3VZtgPENP6SKg/ML*dP>n_[d</t-m9*+J)_:e?)gA*78^b;usS)S<\ef^/t3XjQ"Y(Lu(:I,Zq/=V&_$gh.d27or[dA[jsQN]mMM*_7j=f#N<T=OTsRg]`6P;C]PD^)0[6g]<VZ"jlH7CNRBUBK7=]B0$5RHsS2jjm,$'Yono2\FK)Y'j%Dc-ZPF4=a@ABd'D#mJgE1B@*@:8W1EFoU!;sW)]0B.@cg_5](HbBBpKk]o,d3&;G2Yh.;b&$E]A=`>s9;54cCjY->E+][EZ_"B;e7%&k=B5cg,BZD.i'["G,$K627uCb.9]qijRufT\(Ka>J]2MrHW^_ZA!m0h$1^/!9f"G/QqC6oKF`>ZF6bl>Q2odppIL%IGDF[QLt^@p(KR?:>"D>IsZa!f8Tc$=G%ECVY3l6i6<<qW"bf=%m*T+CjeJP3J#<$\h6Z7qd`CY+,12+-Ws`S$ng#-/<e7*9(ur2O+hQtE+@X\h@kI2E3Qqki<UtZRMLFCVtDlJ[g:+I]og@I0fmHbV(,;uB&6.ZAHc,ip9UuA6%g4;^U6O&ZuEJ_mB2j;'4PmA\5Sb(VY>52gpD)C)**JQ4>63!;Gbs5f*P>%ch@4$"/5Yh!:MAZc]J(R\53cHg6fm_!LY76^;_=l^j_9/!tkM.#k'4p0Crk>A/F_@<)FdDZ9kVt1&[/pmY0lTVFlqt<>%[4=mSP_=1V['Yno4HY^6F0s4r>]'sBPr[)(MONKGe<Hn`UkbsfJ96eX3mmOn$j2Og[XnaqlQn`R82A5\[OpOiE2BB.?U5PLX[7Ms)s't6*uD=Z0JoNpFolIK:sk\PC.:A)JQW:0$Yor&^faDT;mYTrfFK."^u@7Np&9!256j".!<P)[8;TW.o7FmtbFjkr&aNR?ULme::RJbH@Wl[(Je^[3a`gr<hGh6<:[\_V%F/N+!L-LFO2I8XR=;DnqEq0r(seZQgHV!49>\n&LrYrD\nF::@NZH1X:o&DQ$hG:CsU8-:%$rXBMCopN8;4?^kHQ?*:CGo*5X(dO5$['rMa8Cgf$1bk_L;to4NH=ctE?:BpB/(t'XK/*gbpOFcg#=_Y>CctN*TS/fZQGT"J58Z:U-<":DmBQY@uXG^dbrX9N\%Fs5Yl@q")LN6JC@G<kA2l&E!1$Vb9iIEnRMstaZ"Mt``9-ur#.>5%F;CBcR1*bOUARi$80h.N\*hGEmt1,JVu[hHT7YMB6kVj7n4[rY$.42>]j_$NAg7PG$-sHNA$(tL5k\keN4@Y4]ci]m.mG;L*&hMi^qea>dfc^(l0M5$'.i4*V$sC>P)i5mIE"!kEC*Z=MOfFGjtObE@)+>c_$7=NZ#g5ers^D!p<pF;LV1~>endstream
|
||||
endobj
|
||||
14 0 obj
|
||||
<<
|
||||
/Contents 36 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 26 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1455
|
||||
>>
|
||||
stream
|
||||
Gatm:D/Z1=&H9tY)!-s&3\UBQ0'W2]T%^+jSZZo!IB!)Ej0_5b!sP2AZM`TA$Q.pB(TpYG/&6JoR:g-()2812%r;0b>C^p=n8B0u%eDP38L2ME^^kMTDiaC<CT2gi6Uf(IKYm[R\a_FO!=;(61,)Z@UErIKLbYS(NcnS^%AedO.us_Y!S'X@0h_`tG\/U"^cAul6j5mOe@ssU*5.F:*BU(MIM!!4YV)jq<CfHEdL,,@R!ehrdsLjEhq0EmbOZEsY=fhleZdt:_ftS.H[B\[]WgKTbl<:j/*C:?.MX7%8:;!E_,bid.\e'Kk@g&i&b#hB0:9^'9#*N'RKpbZ.P^fR-[@t.6K"C1\!X'?'>-?&a_u<$!,qgcb%l?nQWr+r)CetJgCg6j:@db1d:H'P%QL">QHh4#gbh-dc9:.B\(nd[=1^pdGmTHPs&O62-?6aOo#t]gjWDU,\pESK*O-rQDkEHSj8R#.EW'_B=^Y'1f[scG90V)=Opm4)MWtQ:UC;=2`U)+JAitCU'G1D3M9uu+=W!fFqeLO2::)(BS8a2J+`'<@FY!69/bPp5cLA3j=%,BQUjBO[NdG6=?PA7;(#Gb([?*q=QlWWN+.>>UJURcb:(O>ELc/l71[VI2a]%QR'9s7RHD[8/.@/G"m+lq]D7`Ro<Hi[rdmGN<?'PnQ'U"P6*e7&o;p&3@6W\M'&>oh,jQ`5X`Rij96+Bri),([m<E[3\S4qi@lOkLcorT;NKjWnTlMm!Jrq'ES<27Nd&YUX87n.)cY>.ErWcq<D"J)^dm3jC#6jL#kqnauPSP"U<lh)lG7I=jOh6*pPCbaU1?8RRq`AR!hp;oZj![ZRo";#)0/s=(`X!HG-%(#Q(>^_Tb_2TR@RLZU0orcMH0c;^oW*IH*4944hRqP9m']'/P)Zd%'.U&]m2;<<u*(CL8+V\^;!"l,+<IKh7G'<Q)FM1=Glkg9+1puWfMQ),;?EUN%Pkcq9fbN<(fNW6ZS*?f/*iFnh'Q3IcMNcbr?&apW!HH^9LUSM_3S"nB6dGT&`/.uM^gnOZS^si/f+Ph,a>b("i/QV@IuFW/7++nTG,)o^`Xmi`Z.V?^/kcKQ4,nWu(0D]KG2+4oLSbL+9#:nd'ne+,Y:0^R3&WHBs-n8$`:dbEGY6mD\KC+867(:Kj-3o1Um,jd664/+d5p]k4jT"%ULGt"@J4l7'[q_M)@iF%fGYDY@Rm]V#"kK?!IV>:Z[GT3e]>R\U3T0i2/iBWD!qKuQ:\Mg9JS0$f?MD[l>(@kMsCssHn,LLERYl#O5r.5Xt#Fi:Dgc*[EPd\@XJFM8'hrn?R3G4e*=QXN`\p?ZpL75iSo/?@"H!jE,GlfM:rju9^JTn*ram14C4Z2jlO=6i[?9e1\b51^btL<r%GCVBP1=0`]#?\\r104*hUeaCHq@anpDo>c)5G/B`7bjcX%MUT+6_9r<qRl)F=~>endstream
|
||||
endobj
|
||||
15 0 obj
|
||||
<<
|
||||
/Contents 37 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 26 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1871
|
||||
>>
|
||||
stream
|
||||
Gau`TgMRrh&:N/39SG[3PDDkPn#gLa9k#qEOJI]$QYqB$&g_D,\*U86#EJht6gdrtC*lBs>.,_SS28'N_jLT]T_Mpks!e-GBaOJn"3+c[!Tk"2QET5cEqXKB\Bb9/"6,!`M)^U<;*RloB/t3#nKT)0#\cQ@^]cZ-,RgFZ38+N:$_WZeGr0"r!hT[j$RB8S+8Y`u*TD.#Y$L&_IWX2UM_A&g7E"Yh__BhP"N)7]44JfG\:cUjn6hZ8p%lr1Qgf($Q1\ln'Iit6<-#B^+Qbe:V_@#>]Td,-b3B7uJ&(W;E\IN:4\@iW%1Y[2agrnPPo,&.MJ\LaE$c^B?l")'T6HuSSju-8LRA#X@?a2EVJ(3l;lrqS_jhA-iHbX[bRK.^]u+#7F$lr9a/,I65+sS<VCQ)iB/LXZ=QgEhl#aKPOsoD6Z3=kQD)Vn9$nDT@^.Dsr"CX:cR#YQroX1.80pi[4%'b!Lj(ZN"X4_Bf\YL9`amF-S,0a7__N#@pU.$?eN;LD<=6El@/BQ&/C>]:sPn]4*>GN_'_PSe<QkN]*R\\$jq%$i0_1:`h$ksS?L_&im0s$JEIc\!2]9XD@:E.sQF6s=+[:+lnN32j\D@DOcAi&qa@ghdP2#AbXfJ6R6JC&g9SJAq3-B]?LWMo.7,*Sqr9O'6R(>0V3l\3tM"dFpaIV(jA*aueG%]G2q@oLlH?8i7@S\h8FS&IgY,6#QuSY*SjjShb<M9.ueGKetnEf^B#Gi376<#N'n3kZD(Grp.UQXV6WT9R6K*?akmcc*=N3^=KQ?LAcRgQNmW.d*2fO8G`9CFE,7hVj#rFZP"Z$*g$s4^Td!HfW^G;;h`'-/RcnT0F<K*td*66[fl*8tj&\F`A+,bKmq[j:-PhlR*6**`IPK?q8,J>FD3WEE/Xf\2m%hLZ/J*V1TeCEj9POid`m&gVlUmQOBE`d'^UA,n615HJq3dWB9cVY30Fn7@o?#AU\*t.#*>`*q>dDS/0m\'fVL?%LF-#8%TF=&`$j6RHhaWcrn=XL<JI=X6mC9:@A<QVuJ_FUS.G,oW2&PN)A-I#k*5C/Qe_um?ZLT@j4XL4mI$h%BSTB&AAta$TLuqs6nFVnJk9ol*PGL(Ae"aCE+UlhD4jJ<n+2gh@-`&=J7kl*W>oVP6UIaE<=j#SGBmb:s8-%<i10%0YI=tlQ8kMeK4$b3;mNgab@DDNA.*#*:ph!*MQuK^kT+/#/D3sXIY9mA1JA'9W1(jjEci1(\L\%a]ab0Ap9'E6=D.!YT[=V2gfk5nc6ekEc4!17K"ZBNH933!O8J)`H+`&0q<Hkb``bh%#WfR$*<X!25%QFS3i9,[^(alDAXLlW1e+/,i>'9k_=aObW>gn>58deFl,XFkJ+umj-.2/h=6'k'5s[!dmQ3QiuB)$9U)f90q:Nscr$Z^#VL%Y[#n@)rIf2oMVQi"3QDNGWFr.Tj(-A%Z9dmK?(:!&TDKa&.e>6Tklgc_e;[AcdV'="bmjt!jRNXa<)nJSR(qOVWg#8ma,m"_iS'Eq+]7D]8NkS,*k'-"s44D9n4>95*nW=bUj]@!@P(&FN>ca[54sbroeF,.'T"Et1\q5<"r8:D0q_60Wm76:L<8XUL-f7Xj.V-p<(JP#gCm,^N(C/)17dd7:7[u9W6XsM-`Ugu)RXT"i:.HOna;<7*RcqtcHDrEGWolH]I,"DeR^KQh3!/q#"hYPg"0u;Q5AYshSiO91aD\^aJm'XO8$dThjup`Wh2S^otaZ@g#(\/_2r2Uqr-Ft?Hd?&<C#++jj/5!J,\@B*=&<5qmOg2p&u`I\<_'a]1/$`+S9jXY6qO(\fs4Ys2!iW)6:M=U`iZlE;kDbeG9"o=oWB;D$6dPY>&I<Aq'h)<FE*~>endstream
|
||||
endobj
|
||||
16 0 obj
|
||||
<<
|
||||
/Contents 38 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 26 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1885
|
||||
>>
|
||||
stream
|
||||
Gb!<O>BA7Q'S,*4/'d3e;l3DCq9HF>JV=TXYZuo608'SL;%bapASen/FSanhp_#Z^8PNTi5gsF^765X@3XQ#m?aT_M6i^$'0KQ*s)3!`D/RlQk'g*T455,>(QttA?9[>D@#/iHY+%R3](i4se54^4JL.aY\!m@@Wo6_&cY&dn667QCBW(2EKNo>:"&<GP*kM03Y&r/2@D%YNBr,:3=p3D@;5&k?'d*1bkL#EGD44QkZ/RhQ2[:(&ki:WQM0B%UgLb)XX'uGG]'u<ecKJ=:7]S'qW;M6M3kn/k-@/Qs"YT_N%%:Yfm].NZ?aAaofGpDN)?c\Ue[3=TO7WC$!@C9gXMf+obLXGQ&C/Eg(&2ioVW/D5[0W'NV3:9/`ZWssHD_i1&/C,^[[R3b!*+E$)]/elQk6/J1N1s%\@lU<`B$;UOV5U:-:*$7$e6((VTW%Q-lqubghT!T*/'M[L"[/V<-H(\Zep;c1:&AkU>P?3C.UH,t8*;5oA^).3X/f\SBg2&)AIb"@IdBqHbaGt9<2s@Rjua/3bk!g@;T8,tnX5=PPJQ;cDKZg^,EI,gG9*`K#?[`^:Lfb#3`]+E(p;iLWrPm=/n5/RSn5*N,Yn4K^E-\jUDZJO6_8&saj>YkiIMhp)-[!F%f$;5g9IbL5&-J,b=r.5PW)kV(FfA>A;1,ab2\nW!KUg1[2:69QjL8@RNnjDUCM^dM4*nIqt."-B3hrUjdEQ2>\RaMgjGp<m+D5(,+_I4&l-b6A*j!/Z941baf4Z2M(bbcnod)9LqM#`FGI_V8RXd<;EHn-*8TJdcE\r-Cd`5qVKQW/:#_V#[ED<774!)X@^rrVW7J!r7t5`Y[sg!-hfeS7Taf=3Db;gYX:JL+.)gA+7^6;,X+/S%%![qo&f$.rO)jr.,goYg6tb,JcLP'eQOFpR)6qX!M_ROM4>qXO<gcUJA^N*219=7*2I!8O[$oKRFZiW3FoBZrFZj3@_MhOI6Xt6P3;ji=&VO'#]&-LjS)DqSj6&iK9EmFPf#'4/2A7!H]A`Ys9"ktaGJN`SE:1Ts%PF7sRmONmf#(J2L5o^7ceaI'HOMj`%Z!N=nV+J9)'p;,G#2_<CQ1VZnNW]U<i7lfoPX,2Sqad(<'rsb1mG9/T=mtL</;5f&ke?oSW#%$Iiae)C,Sc>3PiX>f0\ep:3VV/V=r:s2QLCNb"ArKhJ8^5>rR<aPhC(1XkNc=g)KmJo&KBI>Z7h>am2uT^"rk_5a/=ij@X#qnq=UB?6^%=2PhI3FR<^%h8T!s8h@3"@&Y?4?l=S.1%\fh'd]N'4[aZDi]aGQS/$+:6I#E#&MY++WPC<7YDIMI0HMhVXff[eS\jX"n1kLPYt4IT+)lk7MP/1Hjt[nlEOjE-#B]BhI/B9%'i]:r+AtfU2(!seKfTF/ni2g:bd1fHX!#_2`<JDn*8N@5h7a!I`/>p!9n2UQAhIpIr9PJR/i+)`Dd2Lq)_)BN[Wk)eY`-$%%SGtUp]M\'`\bMs866]^-&;4=]u8DaW=J(4?r?:P:ou\f!De,3T,&!sRB\!CXnT9qE8J(8%edW6%OBS!^5<!gMheZ57A,cCOQFq^l?dpW'nH8a?gB3qA7Yt[b$_3H"c9/J!^[q]^2b9GN3u2dm(F`uBB!s5<1&5CVFp0Y\1Z[*niqZN72X0Jo1fiVqK[YTeocSh;gEbUI9Gh3eR/&^s0i5WiH3VG4@V7sFRN*6Cq_XI(\kf/h[aDc=N"YIIR"_,Q)lA2/>/W837#/:m8YL<K)tp$lLhs)1@k-5U1GT+/V@t[aIng69J3PM3KFQ0MfY.QQsHdt).SB@Gf(/'2W_d?[jp;<]?@J=)3uco<-&rHnlS40?_Y<snMEs]\[p6cAh&i,YBMp7[^R3,hZ(Ys=do~>endstream
|
||||
endobj
|
||||
17 0 obj
|
||||
<<
|
||||
/Contents 39 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 26 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
18 0 obj
|
||||
<<
|
||||
/Contents 40 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 26 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
19 0 obj
|
||||
<<
|
||||
/Contents 41 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 26 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
20 0 obj
|
||||
<<
|
||||
/Contents 42 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 26 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
21 0 obj
|
||||
<<
|
||||
/Contents 43 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 26 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
22 0 obj
|
||||
<<
|
||||
/BaseFont /ZapfDingbats /Name /F4 /Subtype /Type1 /Type /Font
|
||||
>>
|
||||
endobj
|
||||
23 0 obj
|
||||
<<
|
||||
/Contents 44 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 26 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
24 0 obj
|
||||
<<
|
||||
/PageMode /UseNone /Pages 26 0 R /Type /Catalog
|
||||
>>
|
||||
endobj
|
||||
25 0 obj
|
||||
<<
|
||||
/Author (\(anonymous\)) /CreationDate (D:20260317132407+01'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260317132407+01'00') /Producer (ReportLab PDF Library - \(opensource\))
|
||||
/Subject (\(unspecified\)) /Title (Les 6: QuickPoll \204 Van Scratch tot Werkend) /Trapped /False
|
||||
>>
|
||||
endobj
|
||||
26 0 obj
|
||||
<<
|
||||
/Count 18 /Kids [ 4 0 R 5 0 R 7 0 R 8 0 R 9 0 R 10 0 R 11 0 R 12 0 R 13 0 R 14 0 R
|
||||
15 0 R 16 0 R 17 0 R 18 0 R 19 0 R 20 0 R 21 0 R 23 0 R ] /Type /Pages
|
||||
>>
|
||||
endobj
|
||||
27 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 442
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 550
|
||||
>>
|
||||
stream
|
||||
Gat%^gJ3Ad&;KY!MRc\rf:?>GG\PZ@d\r.pH;,frg&iqG5/1#IV^P7K$!H1npA61$K&d<_Ha3danSiW3J->il:^I;S#^8Jb"F*He-T":>!\9fI6YUgQ0`!;-S>cU[5U^9dC(Nd6B`o#FV"gI-)XsG&Et$-??SVfTTCrseHNlh]ZjQO65Cp.L\cm-aUT]_hrfSiKkMSS@?bi>(A+EJ-S<3k1oCUK&WX:FC&o)kGcq*I:>O\CD^ZjPb49EWFKI&a8<^bYAnDe`sY=TcOaUF'.J@@A-VlNDVd#B,e^ed!km8]6MIK,(RWXR7]$oA<3VD>YU@?rNDLtCrcfG<uqG$1,tX2^m?V;FU"-PU:[ePOiHJ^\rkCCP#8LaRdP<Z4c[j%"@8VWg",AQ_s+DX7Y?;/NTP-VQC#X!0rpc!71(YiDINCTojf!u;$sA!5/,~>endstream
|
||||
endobj
|
||||
28 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 656
|
||||
>>
|
||||
stream
|
||||
Gau1,d;IDe'Sc)R'^#g7#`OgS3t?HRCB8-cKgf8>`bJ5iB]:X=2iX`u,V9d0g8Yme/4GHegZSHsfEZuV_"Kf@!3S)%2aTb1fag?i,\/hfbQa+1ga8k+$<*K^Os#YrN\le<1MO3e'JL[CW=W/];G#&2o)YtMTaWMX:^I/S2^O,j$:K)6Y54\bJ(F+"9:.`LEN9Jg*[#gc<<#R#(P1SiB\a<f%`B[s*rk=5>7bVo2`TIL0GLI!,"'Tg,KY[XN@#$hmVBE;rk??dhbcH[JoTlogp@9$bJO7!,tt&U:$ltAEJ/ls9VW=!%8_gF56fataBk0M"g?k<f(LA8Y$%jFIX7R-&EnmUFQm`1MdP(hs2c'pC$4mu"`5MPj9HA3&H_nZ`*J(X_[J0<TA^`GS;+50).hh+pbE;0IdlHZ*H64p_08]=)hDiK/@kLgJ7oR\\Q_9?jVk$jF+(i(,U(NqX4lOt(CR`r[ETLA[e%/=kL.>&`C_2ujXLE0dFDOYk,XMi<PSiH/:Hd*qFnIM<K+ASgoF(4E<u33S*W+-]Ue0Gr!a(8b#`\^h"pm7aKNe?\[:UG0o@("eiX*3d5G:t0DTFmE6ksRfA9NWWE![CBMtc-)u+?r.poG\?-CuWenoU"jgJ;6JPIdXQ<J.P@IOM%OUTD~>endstream
|
||||
endobj
|
||||
29 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 730
|
||||
>>
|
||||
stream
|
||||
Gatn$d;IYl'Sc(%MK@=q8i=';3!i[R[SE:B:><k7,];DqPsF=Ga3]!*^I(8[>@GYkZ4u!^M>dC&NfP&SCohno-,A7L"s4[9%d=L3Jd=nci?mqDH>FNL@M5t7-4iV)";,5?*DR7[9-/dP30-JKJ0[5h\;YduiL6k("rAn3$P&]0\);YI6%@s\"Zh;iY+"V!_mM7rRVQsSkmZ!u28N@1q^=l-P(IZhi`j8FNFIGq3/lrL$F-9iTl_NdTt"$9%U'f*\R%J:BDpo5X9Q:j;T_8(4\R]6Wo?;`lss+!.Pn'\eADct!@>"8%I<un^'j-S#!Lgh)F3)6ToBn!T-/2YH$sC'aJH39Wk_L!@Bn%_\ZLa`"#>j-+Rq**6C*IA"9-u'rk&3&Ea>HP5;cEkA&!Ym1?Lu6WZC5[BH+1#$,O*]aI3OmjhbF4cl]SBK(Ra];<DobLX6%hFS*?6\c[#p:Q0BO]$8LI3.X&s6Rj`1F#/AkUX?>C9V**$G1cjB\\jV9\`Y3B_B_<"f!VpTX]g&<N^\h$S_tS_><+6Y7BUABpTFc;j7?d>A3b`C":(!#.$?LHJ'0cW,-Ioj'>;g_AP6l&eCq%OgCC/J6t@8Y-KXXm@UK)iPhibTs39YAZ7Eb1etD]^^t9:Td]D[pd'B$8(.O(!WFuALHedA#eh&E/CV\[,nf#^bmWG'poD-'t%a4LF[$Z/XLP%liAZD+u[3#U;dQd@hmhZ3[m.L~>endstream
|
||||
endobj
|
||||
30 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1340
|
||||
>>
|
||||
stream
|
||||
Gatn'?$"^h'Sc)T.o*Y=5XU4u9-8&A[[B$PGES@>B%dX^`>TLC,:"J8LcrTS]k8XDAIjH2Zbq_R`(K3TcMO2S,Q^/Y8H!b<"F)_U_-6to_Jf^4HQ7e/i/cj=k7dEjP"2)dE=bJS&s%`1_;k#t4HSpTKh!eI;KM3_/HtF/Z["Y?BILZk1us7=(Xna]TOJDe$S>FF:18CV;C25H^Ip/*0YDtq:F>p.r9PZdU.*uP8d+ST8Do78a#NiO$LmshiOFH>0@FbkdU77U9=Y'$74G`EV3]e6AKYOglT?gcf3#OqR84SOV[.K]6-"@+$A+^arrSh](*NUmgTq]gf&2?+ebE]1):Xn'"OV-N>oj4Z@da&NLkC4DoXM^1rZX(6#T6#fTO.f$gJqQn82@<)R@G]#OJaOT[@dqVB+W2W'M;XVg&,K@^`m_5piD.`9(M>`K]gifpj?Y)QeU`!9:P]5EYa.qCPC0BC3cW_]BI2(o^7cq'=%$N&[?sh_!&B60"dW"<s)AkXGeVsm.lkLL["ToK(&ESZ8S^3-LeE_krm7JHjQ?NRhF2TaIg8rr,#t6S0=e&_[8\,@YT)K$"krt?mMF%"H,SnI-*%Q=NEP!dm"n=8+*2C=N*?$8?Co!gaJQ3F^?=c.p*P^]TC=5;V3_#9Rj>,$\^CN?'uXSrfV&B0e&9Nme!4EiD*bCRFs=t`oI%o<N/'H2O&bS[6>;B&Jok'Zk#"Y!teQJgmqjAD;m9oMR>,D-P!2E0aP0"T^PX+/VEth.p+<e6<+asV@r(H7?QBLNFc.(OA&EP[?X*]gt(='MC/+YjmXQYEC_+[q[*BlBZq%#N4,5'MgEQ9P:UgRafR?)\fsC@0Ip5/^n")7>eqC<>74Ldk"_PV/!uUcW4RZ5DAt'2@*?><Tt]U,!p8dJW02ih`AKPnC`T@K.=??FCRO1GP*<I5r*:cCmp`Cs?#T\-c)XgtH%O'('Y3m)'Vca0Fpdk2A-ERVPGsNnB])X`2GXUceWTY[E7cbeKUJfDI6PWtP2"?'G(bme9@(M^orQ:_7`jjDD<Bbsg`?-4,I'\:_4])@$DjdICW:CaqrPGj2\s_d,S%S[*YQ#in:C5E\N?FD>H]<\\Uk8ifi64Z9MKB07Y9:GI*g0-LBIlBm[A(S*h5)$_s@/#00ptUSO#"OpFO`cKKEbuUfSP8%>;9m%F<L=.^mIZ\8)+;h9!m:ja<sQMi(5VG9s3PU$(Roj7YX^EIbP2"a'k8J)(d#2T,:"B7a&Mo-OON`%qoe1!nK7:!0OW'SPm6P8T=k5Lc3m%CB"<YOIdGNQ&L<k)Q;Zs)iC@RQKOm$t`hGZFR[jpRZB@ahM)>N10~>endstream
|
||||
endobj
|
||||
31 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 236
|
||||
>>
|
||||
stream
|
||||
Gatmt:CDb>&B4,8.Gh<B2FghSknXs9?%TaYVpmEM2:Ld;GAi_W6jF5X0JNO`mkFs3K8+b+J[N=79-=`l""C3Wp=L4%'D0sW=p>[r0d?!X5B;VLGV$t3J@gt22pr&=06N*5,$=G`bdsl\1;ekg&8i#G2/1f&'tPkdZb/noeK!]YZfodANdpgXSd\u\U6#o?VY?jfgY>gk2Y&sjc57Wh0_HB24(H?h-6p9SE"HqeRs,#~>endstream
|
||||
endobj
|
||||
32 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1445
|
||||
>>
|
||||
stream
|
||||
Gaua?>E@c%'Z]+o;]J5+`Dk+$NcUtlW[dD7&(=C"b9IO5&ehR7gE`X(6@AO]%`:PE@#X/`KbPkm*WL/-ro[_nT(jFN9e1bOVVp;S5T$@+5f=g"]n[-IS#744+%]oh5Y7>.'HtMX4=''GIuB0In16<+!fZ5GpC7<!jO5(]LH#XV_)NV>![kej&IW_AN;hhD"[%Nd\nP1b^5(U8MR>9R[kRa^diTjP8+Cj4K*:?kLr;R>)$:<b#bsZ/F&;'h0bHD)2@^Hkhk_rB>IRQK%e&"aI:X!JGm#oh&"f;F__;?G`hB8ZcY5>hJG"=<o"8)A^-)J2%!]?Dc[,M`_M64km[Xlng,DgAnu/M@VW5HN/V>YQ_)T[fVm(eBf2Q/.CsB)S1mktp1t$eL59<\3V7>,C$'W.]MWM?ng!"0`4)*U<6(lDJ(e0WB9"%cbBiFcKe^P@p?T)s,>7KT=S5\s0QY[)]a&S6crn3O4oqM]k1$:k@ldN"MH-t+Circ?UY?>!`BE_(,k9'o/7/7rfbPBS%nbM>FC8^)Yrd-8NN4Vp+(3EPs=KLde)G^OA+l:L63_nb(F/!bZPZc%ANNENHA(Q"dfu#$F.pNGM].n\B1i)AsUD=pL4FD#))+Y3-\YH;<9u^R"%/FK0Rbd8m/VqW];oe[5X'mp7=>iRe9XV@RP#nJNFEKdPlI%^O`FTYpR3n=\f`olfpAG)qfYj6AG2CW+*I(Bq[Crq9<+$me/5!?O(HZK:+ng?5`1e[T(\$$f_&;l<iIYG(^4LXZAZW6$=(!4nC=m$.`<iE_1n5==l_%G9FN#24f/A2'A!8Ds]tcJ%.N+Nm>>-U"3X4^jbhIAJ_Es@=o;9agk9GgDV5X(A<S*P\%R':!8>AP<4Gc#"Hl6d2P/t/#>d<Pil\EKVi<jGcY>:,SHmLoQfS<G=5c7hqIEi/2e%Lrdp"=cR6<K&N/_'SsAD,!:;(-H(@=>[!Ccl]N8!WQN9[?s@1rH$i`?#NJ<2(00r5?5\Y#1o8)-;DO\<B*CB\]:eRG.<7!oq#[ason'^c1J2[i3MCDt$;*Vm.4.Nr%d@Dh=2:0Yl1hM`g8bJ)'UB(o5kHg#g*qV&^B6qYRIKj1kt?'V9fFk[hR0I(Y#!!H/fd$T[6&](Li"T3hcJgm+cB>"h6SNr=cP%/O50.NMoofmI4u(ulKo?!:gRaha,r4l)!\N.G6]"_-rQM>j8\^(L$m9'Q3**6"%Sc6[ee(m*dt5cZeM,5kT!r,6E:]IPb!(YR(,2M*Ct^YJ[Ie+T4;$3c8@i2r/r;peY0@3fcE4st[k/Pee\0PrugGot^OU?J*kgC6=+p9Q9!E5+L4rctD[2?-l2l;5<@c)T&kAs`>-R"t#$(R`khI\eIoV^0g!Wd#hjbC#nl>VYU+du*fR7;*AnZ1@k/UiG09epd@ebV6[,29j$8>F8^rr&Fu:qu\AKLEl~>endstream
|
||||
endobj
|
||||
33 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 224
|
||||
>>
|
||||
stream
|
||||
Gaua84U]+\&;KrWMK`kWdTlC'iZRIG,%U&;-l"f,i9#O`g8]s.kYR@n,Bq6m:IkbKK=\^6J5nq@+]+#;";tp8[TFns&bJ2"K!Z4tKF_7$YDD@d>>e%Y]98]T_*GG?E4DJB1LJ&DATGZuNR0+R/'+a'b3q@=)/7[eFrWkA(I+,dg`H3es1T2Q7An=d6[e9%b7T2=s6DU#iKMSX#YRCMnG@\Y*jkKjH2~>endstream
|
||||
endobj
|
||||
34 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 929
|
||||
>>
|
||||
stream
|
||||
Gatn%gN)"%&;KY!MCho*e$13%nu7CY1R!!FBp1CD?0R%E,&msu,E!PanEsT:i0#u0Fm<B8gFV&s=9!$%!l5\T5=[M[r<1o:'I\TE!gGbdP0\*/oPStsA][;0d)_7j#cQbeK]<%$B8;7+$NrGJ"^FlC+r50'7UPk.:"m1pKkKV$!@*j;`[V4GF!D(^@eb&,^k^B+36UJSm6Pb%aihj*=+!/b^r7W%AQ7SdL\`8%3MPGKkl6@P)[)+_1f;g0?_mT#8nGD[?298'#":_HQB2o5[o[UMZIjcOo:1>mYbHHtJ-<!*IHL;cEtpB<LGa7S8$4BMI&Cikl[DLIhq^<na-=p!qN:6"^/)5d@L?<AgE\$CC83otCKaWbVR%Ju"r;0Zm`h.LM``L)/7G8-fDQ+"\u!ia9(u[sO9_k6YY/P&0oc&@LZ=]d]fSqAgp&]a$HisP8Z:R<ENAu*>F#fQ#U].ZAC<T@b%Nc=+Q]CT&?Tj4W\cH#2&EGIgp9^`4lN/=](NEN&-`LjUmA>"Q8,JE@lVHp9?ZH?)8'[t(6FPd.#h!.93=*uhQ8DRj3mAV2V`r(o,^=7G33dtPud-2X^qAGjIJuh.SghK(1DEMD+L\5$9:#eD)b),_`]LeZFdo*hr0DLJ`5NU7;KGHU-"WRA`c%#FB1HSAY.T)[d^lWc2s6]\W3@jm1j0BJOr&O`dLrmPdt2XBkN!N/'T&,RhK[<["<IF`*%q\8)7n*,!I'Qh6k%NmW>[=O%k&TUrVq!$o[A/OX!udDblEA>(_<r+PGc]1;UD32'?pUHp1;NgSo/_?5l#lN,1@:;q?'1oaJI524bLAe>=*g/%Et%*R7_@e;V-E(gIqW`3)2H7rip@@iP.J+WE3`[0VWq-PW8`2(1,PXhk#IlUM;2VTQ\V_9r)#1#0pQkpY'WK+rXH!$riS=T~>endstream
|
||||
endobj
|
||||
35 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1261
|
||||
>>
|
||||
stream
|
||||
GauHL?#SIU'Re<2\FkcN,*PQTqXWcWkcb(<\i*37]i9>T/D=-;M^h/n#n6k.>tL'V+S![Y>[\mQBNk0"n=F\S8V,fX[_LuEJ6*&e^J^^5Op+\ME(Jj$0?Mnf1O>G1,KH^%&47:4`sW3mn);:sNrg*ni%PpeT7R`_R,_]+ndM-^q_7g'%>J9+8/$T[-G\\GB,0nb>e[gFi(p<U>fj)`kE((AjCJGO%t$MFK)7nHPYiMm*?("niWobgNIiN#GR"<%8\0&Q+F_YB^Hm[]6_PCu+?*,4Z.\'6Q3)$d<f3_%VZtL1cNso7)JIGm+CRLNS3['=@"TB&7kOF<c/#J$n>C4U\R*nUq]c'`]gXF,FsW0O:I>WO^kmYn*efP`p(L-a`\e_oh1MY[9NoNVVNOQh%c3()I3n/NQF26+//472.WNh;Kt8"6oXt:rOP'liY]kq7p7QkTf>W`=B0%ic'LX>$oXR-3V&!g.bn%t-bZ)$M@:t+RP6$JP,'<q_GfO70UhZ[!N016:mc6J*TmPN[O\\hJW[O4<n&BhChFtFip(D:^&rrO83YMB%>Ltjl/",:am$f*O9-.7#6C,BO\[\+q\_Z$HA[!P27)%cSpu)O#ncO4[+RWDDaQiYC%Z>0aD[:(c6TQrPb3`bq&g+TWel0*DrjXWfn(C?n*H\$1rH.6S"sB9r?V/S9pQT+J3&leXFGN(9R:GT\<YRPpM&BirZ9fW]1QW0/mA4WSj9G!]qUnC\&08'tq,#6i76XGM7464o%kX*N"f)f[?O=8VQf&9'$!thffFYEu1eQ(gG*iO.X@W`3<TTu.jZoRA%W3rKFs*$4C'p^Z2an2.,$!r<^="7Y)n6"Em,d"4$[S\Z=RnHq?squag2f`i/11(Re7<u\r4?W)M]Ho;phb]oWQ<g`Fk6;gl(lBRSk-tZ1='Pch<=^S!2>m14l9iPrU9UU\BRYBT\jpnb!KcDMHbr7;OT&doBa$A:q>@L\K8/F\7TGGm%pDlqH/->gp+q,/f`3Z7oD'LM1sio$"q!@paci6Zc$QBiJT@"f]*@-"?RAr_?P_B=Ii\)K529XjXl9kHlO=,4Q1&n>6mB!V3CH-hM&D)0&m<QRq$]#ZipV9>"LhbO./MZfYC30*[#;'?\p<M$I*)dj.@WhB1r2/K&,3!nRPYKSRbG(Egn$j)gNIC_ker,>u1CpqV>AR]724EpF//]ULPsc0Bp"JXrnS>qRU/G#'BK0T^!99*mQF=n'V#.&'=:AjmoAu^tCqo$N2=~>endstream
|
||||
endobj
|
||||
36 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1051
|
||||
>>
|
||||
stream
|
||||
Gau1-Df=)Y&B<Vr;]HN*3i"+-j8<V"#U,Rg"DEUK2ZsF?EJku[6K2mRVLEa7BiYQke.P6Q)C9CjhjpBdc3+4HOT%2B!1qNQ5:8]EbSNO3a'elb?Hu?\T9*J,9>--Tj!c5[n\QOopcj/nYr&=L"<OBGM[4Q+3b:9F]0*nia_hud\ABO?d(h1uWEEX,?LnAq)-k[&#qptoZ@iV"P_u*Mr%#u5)2<A13Q/b.I1AS8KMO`D#>*("#B/)d*XCG?@&Un"e=P\0kMMpDpb`=O:B6[,YS9^:>`1Q9U>VJm:nVQO?E[=jNO.*%"_SZu8J%\PoC.8QfaY/].(`-N#lt-"q`q_NpNb6_%49U).#Ukb"sZ7dXcJ+Se(@=RR/@O1o=5fJRrK\q[Q]AO#7YuU=Z(?&iHCP^fYF5`.i9_?f"U-FElk_je`a7AGs^>>/VQ*gI"(\P-egGlPaB)rJe_=N]#OSCCN3[ieW)#\nV%TJGQ-D[.l>7NUZn7;@+odhZG3#T8APo6d=(g2!8I)2nGXCB1+Os1"j_n-)fa9V9o&'EDgBm,*?hrZ7*duEZG#%F/8!8n<iRH^[a1O_09:nc^P>>DOmiErC(]c\96bZUE`fDBDCXnBR:YF=f[83>;!nr)S(Z,p>9K_mZ[G?a5.J4K.2hgoDCr)%GA`f"W\^4kNRaO"^ZJE)ag.k8-ursM>8#CKOCQT<Z`u'e;]D+NU$4-O)a?#1fdX9pY?HWOdScE@#,D1ETOcrVYA.&C21ges+a#0shk<4u]J[4UpQar9c#"T@4q@$^1B1s25MHd5^_ri"2+>?D`m:OM"?'@\+VoH*hQnVo,@_29@C&3:=B$V?ge%"m.[.j>V"W-"aWbr/qP>tA&&^@Gm$QQpGB+W0e>CbNOuhnb6X)##($$\0]!o<bB;:?f-eB$C/tlHEpe'/bge;\\Aj'Rtr?K;=3<SE4o*a6le9GHg.2TD?PKUNgTXpZ3p4VDSS^MuY;iAU.GK7WF4oQ7,++$[e0>BU@RoGpN$/'iI:W/dhg.,T+Y91>35q@Qol2POkE:O+6a9-G~>endstream
|
||||
endobj
|
||||
37 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1454
|
||||
>>
|
||||
stream
|
||||
GauI7D/\/e&BE\k;]La)OLnI)WCM<Y0J$MV%.03$`njAkW^q65<_jGZ00tci^8#5>EYc\8`XN,]Ml*T5h>Qf&(BQM/8G>%l!.J1'F[gmX==f$5V@/<+nC-C\o+B[BF@4M%1OfTp5YNQ0$/UGEj,IUE/\J[q9'*b;)$Ocu?SgNbVh#("V1IqE0P>Liie*[=0WmfKK0P.K.`'E1VL[-qW2l)H![?D0pq:))28#u-Z=F<#O0EjTZ$s[DF(h^868Joo*j1sM[tE$r!5&_gI./br/#bVrmG<02DnM.k:V^'==XdGd-R*&9#$eAV)&N`.+NZG;pmPhEK3Vm*Es5C\0a$/?-0Xq>lsSK8q&*EMDOi=u?Zn2C&o1n;f%/HMi4$Cdh_:>uRDV&QB`nYt\o[dX48bLbL;$IWg4B5E2Q0(JZ"Y9m#Jr);Fr-94bLsnkPA_2g!ikY8=m$[4#=Rc5q$>0@.U^[YP_Kg2([B!PG;Vabb::gCSf]Mob12='"2T%qIE41%Q>scr>eb*TR_uf?-e5,g)LXL34Jq*\U/+(9$BMO2QfI&L>\uUi[ZaP1Q>rB%=LKMV\>gOC',gO@GJ]g;7P(".`68V0dWpSF`u(cK)ZrQ-Q!D,nSE2:6/A7u.kV7$'Y'--1J<M-@4$qu>riL!pCY$9'P\m#d9AfJ^OWg'cWIbsLhq)_m.d#0eBkPWDc,F!>Y,a$bEVY9;)<[Nh);nBJ#%[Y3]e2&`ZLXkKidA-&h\kF,\d_6bVST\blU#7)l'L_LB#lWtfH:hsd=_Uuf;&17Df;DL7%?o(EAV?>YITs7B#E%T@?I8!DX0rKaP^oT$u7CD-Q?CoY/!!#4pLm<M`]BhTp5]BL'MJ#)sF?M6W(R+ifZ/*7P)9i(j-F[6XSE=l1U<5?$:XU/U[qf0p^A3$.p*:L5E>f_,bQRX08pL*rA,:/$l5/16%6PX2#XQ*s#a-/[eimScA?ci*t8!4q:EdeE,Tp@(QGbp)a(&*H8Hn69dOKDrWUt=Yki#hj"ML\kD93o\9!lWtROk7g"6*C[boQ^TA/4ifF\_XE^>SUMn.rbO`<fdVVQQ8.<P.NG(0p`pRiC9+H6uJ;4@H\'6(''\)@)GcQbm8[HE)DHaIAlaZ"@i+\hnZgV0/j#Fa3oQLB,T5fV+<@3lo9!`PoUQ+Af("\j"HT\dO\f\E./:Fm9V>5(XR#'&[#u*_;1t8FkJr*Kmc=(a=EOD14fGY<<%puS$AIZ)]H^L=(3),^uo`@Y>$1c#WSS(MF'@$BpX)\9&.Wh7GSR,C^h&LmX](j8*U;;N*Q?RA&Wk.O]02m$ULF4D,0q,+=])!,Bd"3[r-VpRZ6E0^"3MAj5Lq:aAXX7ZQ8Ssh@1Yi5:X]$2ed`^Ua&OU+Ki1uAX2&DEPT1!jXT?%k3Wj2?qoJ;qns$;,YT"^)[O>+W'-dTObAbDaaBPb7UXbNUc!.8^k0)~>endstream
|
||||
endobj
|
||||
38 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1416
|
||||
>>
|
||||
stream
|
||||
Gau`TqeP4]&H4hB`Pc#6;^t5JH<>@V(327YEjXGV>7,KrZF.,`dAs<J*[gm#GP$\u8]^%]j"M=lhUR"Bq<"07AROJP2;e!.i-YT=(CV.9aT@i>3\Yga5>R==4(@#<a#@9^oS,%:0[h(F%/8`<\<1X"KtA#V]\\!Y_1>h`dnIgVpqR&so7>pW0Sb&>THUk!rhTsBn4)nKVSknM'6oumH'X=e_%`6RT>//Jr-J25.82qBjP(U#+8C*gQ*ZD6H(4\]SJlGVPr[*Iq_e$F#GFbXeojRQ6):39;7_E3=&G8!+B"Sl9&ZTN.bc^agN@71:G:Y\"ULT;k2NQko;mN3+FLip]`Zp^*k]I/KAXJQ)VD?L4md%CZFh3a:HZ7;jMo(.^nC]pA$-nC2_^;FUA-<2`4/n0_-@iOL>?YFrpaPrhN3qPWog.B8>Go^*1L6pbTt9-rFs$[r=1$1m+q:J`Z7CE1b]DeZ?XV+PCd&\3<BYU!lhGYlM]jO-]jq_d,EYtfaT9=nPA2=Il1'4F=a#TI]m2,p5$Tt'pg*[F!X-]6d]3=hCo,Qj)I^-*Ft[iNJ.!VT/rZMOaGcg4/AY0[C@;[NN:YLL4,!HS[7s**6k\-'ahm>+rme<U9736S?tMOBYa3&\60)[\];['^Jc^)s1!/M%&5#6`?H:'%j'+!?k\FZVR0<(\&P/$@o2/[)6m;:L)LQCX@1Bf7_I4N`p"m5b9StO"pZH,[#!ui)$-Iq+q@Ro,9XT1EY2rn`[V<_Tp&<3:/0V^iWVP4YJ[r9_7dZ:m/0IYAC:b&+t-sOHPr8.UuV/^=*(k/nl"VT0O2fLJE,*5I(%h!f("D`a6h:7aK0.-N:pOdCUqA0D$Xm&jB7]s+a'=7cmeP^C9?;P3h3@DXWC'J<WU5)iX9kX0AEmi?UA7L_5t`;;@2]:YQbs\Ct"%$d*VLNBQtZ$@4?ik"slTgP;j8>"f>,j0c$DhDPL%17WA$tg:$J9Dm!KMcWT!K+2Q5D(o(["U!lc=G/WP(/aC0r\LG(I=PUa5Z;As.hO"Ul.n$C%LYBtG#)^lK\r1ZmV92=s(mW2aY("n2V]Ca<i`^9PLMtQPr\MNTqrHNroO-/GFc&##&-<mHn,XQupTe/DZqHtkYG2;GkYt\8kIF=-`Qo,VcKI]?B.hbe?r?3j`X)e>krOF(<g;94Z%%'#@1B@\cfA8u`9?N(b66If*NXiLN(&_#a(^5"G<;?[EH7?(XK7&0YWVC<F>p7=gIDdPRmt&/<tY.mq5]O3).@6^E;V8"8Yf=6\rQsW\bHjj:"/G0%V1nu,fdTN3rI.MB,9U6W(%3-l.g_G&\E>AreeBT2`Hpcki.aiC(0C%/7cr1V8Vf*Tj=B$8"XSQ+Dk%Fmp(N3HEE39P,TR[7o1YILhl`"CFG9[aeP%C3;O_?<*"8~>endstream
|
||||
endobj
|
||||
39 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 226
|
||||
>>
|
||||
stream
|
||||
Gatmt57>=^&B4BkMDqsRBs,^qU,WF%EY1(<.8#;G3k5"A]sK75'fq##*$P'gpKe,_Mu%MP!NUaF+]+#7"DOhI2HU3((%dsE?5fh\%Hf6E3CV0^1P>-&L)KGF.`+VQ_8gDU8i"U^ZH@G%)6_oVG!`XY&^JITbKuT($aZeEjVh(,op>OTh.+GgQ3N,t/q6P+1a[M'6[PFH=B!)Po*L#F9.'H2^CX3'8:i#~>endstream
|
||||
endobj
|
||||
40 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1340
|
||||
>>
|
||||
stream
|
||||
Gaua?gMZ%0&;KZF'XPM%llqT]ME3%XJ[S+"!^Y2PHEX?CO=f267]3)]`.m5pmmp&u^tK7*@9OL%+Go1ZEB$>b&ciAiV#?os!5D9:Hp`E\R*:+8PJQ;qXs[jhccC0#k*lheg]0HtR'pW>m"^Y,,MA*2]ec=gkrZVQ5cnWTPPHj(*&&i7Qp\XtBY[G8/7A6E7O<9qE*G_MOtY,>>)5M\%rbT@j//dHGQa3`0_qt^q1udq4NuL=0aT-9hDL.*Gs4Sq]_#K/4%*WhC--"-RrSTo]]2Y!I]6_Dn5r"WnlZU%*2^B3;',<K*Xfp`r4@O3P#iG,FLGcWY1qAFDd]heK<Ic^M>n46L@O0==c(fk.a)hcL!u::&jgC>T,r7"AW]@OKF7s$2diLo'B^XMlgGajL)i!_(O$hr2XFH`G.oL8+X-">W(nY_l[1#mUjZ!rE#=UCXha:+g5lH([E'L2.`a[=T'VTE]-4WjVnld9;_'ecP=M":;,uF@)8@)#dF*7pkV@j.Bgf?[TNi?oHFYlbT^2-S![jc3bSfM6L36phF]rc9T4l6(<A-c*^GFl_iPTbG/4?j#W+CNn2AmRRP@9OLJ.e^uFH!$\qNdsPJ,Q9ZR_K,e83!uod9gK$Pur(E^X"(>_Rk,K;Q9o@J!X>`i2`o$Z8l/\*-,sD("bWsq>ZsC#7:!-$gBXb[QQ,\KqjWZ,l<(4f<P#1mW[n/=(B<)'a-+g9i,8HR3.e+p"Ya$2fnA'"'q4F2o]]I3'&-?D5nioX-]qu=Q?Y?9,!o?&)E4aUu4\/6VS@S:JZf6)S@rCK,ru;@;VG"^VWI.2RZOJWJu'\<3SoP=Sc\LeT2;7ipq5'4)jqYhcBE>$WobHJ'lO>ZD4p[egbQ5XN)NA04CX<*c57k'(p4)[d.^ebBpfjgL7ZRn&[bj`-8DNEaIhTQkjBEm4H.a"78ho;Pl+fY6?KH%0R:r/'*n=K7Z59Qfp*CgHAE+4e]IKbAW]G2-m^?OPu?CR\4eI&nJYTU'9Eo3hoSu)DofI(=QGFYJ<U+>FNbWY1E!+Tl?T$?XMsa"VSLa=c5&sD'7T;52@TL[rpAg-uG^5UI(rX0CSoP`KYEE7@>O9ISp`$oOiT]@-[>rg,$L1YGB\"(4RW;8VoWHTi),/@u5]hkn)0hH*5=jk(PYSNJZFN94hUP7(=[9$I4dDNen"-I@AjB20`mBPH8n>[n6Q!F&?I%aK_\a.:0&78`Gh5=D^hQlR=3,=31*AX6M&k6>^R54\QNoJj%feg,*rAoaK^h\5;(SK.bVp1*85IlrsSB*nEV!#N_.te@2P0euQr[>OA][j-^lk]6k^HZt"`pIfRh8c78~>endstream
|
||||
endobj
|
||||
41 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 345
|
||||
>>
|
||||
stream
|
||||
Gatn`9hWAX(^KPW5K07d3h^D^2LRsU6."'lKcG<9?.RR!c)r!lr9gGQMTCGj66IF)cguLH&=@2hpI,2>$2>#6$6Zc"mW"$tmY1=GdFUs]H4a_.L*R5A0O^d:e@%jJ7;CAJQmF2:2bha<6YWNihn^eGb1nBi6okut!h?0kY0g9j6n(o;]92I^iYCHfZCb./jN#q,rrR5drBpNj+e5$iF8Z#"hJ27OA6N>?m2il*DO7eMUT!e%iA#93dN7NIkk<&jYGE0oL1YNf?L"]Gg\US`1A4p=%`]3!Se'IrNRYar`;!D.YGH_q$B5k+WD;/rS7T]HJ%`AC!7T"+q!j,loa0H1l$<~>endstream
|
||||
endobj
|
||||
42 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1049
|
||||
>>
|
||||
stream
|
||||
Gatm;CN%ZU'`GaQEN/_pU!8RfGL;'H$jd4ONrgCOdR&97L*^j&\D(EVJ*5tAG!dddO;03B'$'/TT4@beK1d#!mo]tdHjmno*4UOh%(OW2(r(XNn\N0Fmp#WC$[<:2&4N+7OiuuRqTSjs'N"j(Lr^)dYXBa#Fee((e0j.j:rakJ#S:kU+[cFjI+%6liXriJVpb^N;MBl[rX%U4%JC%<m_edO>PND-r!%h`gflWf']XcMoH3+e)oXuqV8kP@L>_E;iDQDuONArg.bE&<B_ZbA31!OCBr_'^S%]n>Gd5+hf5O19Z%>VJ=/aD%KD2<VQt^75KL3uIGr:(^+O>+3*/:T.q]!'E[_]ZRj%d@&7tUC%FU4L@A]&OM#)m(dW"ltJJ;0cn#YI^;"RfZhNZkS+8`<>Y;cErn_Sg)ia+M&t_Ka[_P-ii=gEMK!+!hHW2QUecUqBr)o'Ze>iO/Z@ohngJ_A[#YQ8#9$jfh3CmL5[*0TTJn`:U5ZDV;F[q/::^pqX*<_A[d6DV<?:<Mjh?_(I8PViUi@[]%<AJH.@3`c#tNmi)@N@4u^?JSM-+8jd\%02mk3P#i<0EbOGW[hl?)Lb+Y81,Epq^-03p]jW5PKq,<\5>3Fq6>L[dpeA1]X+Dp%]r9?lf4RQ_'-uSp)%Rp<)<tI+RgbkCM,^Okd*WuC(Te,e[_S,ngR?Y`1^l>Hp/3cX543h]ep3+),6N2:?A^p\79eom\NR.S\=7@_lV&GfXb16b]CnRj:p3j+9r.m%T@cfog'#_"pD!9FHVs"9Tl-aUI?r2nSf4^(IV:A:AZE'?WY'Ut%+AcO*&WZ.PJIh>L.bY`S*05Ee&;"J-"UqV%8X3ilG!4/nT`g(PYb_*mY^).nohaE)Wpes=6(3uB*R_XKZ-7Dm:GH,dC+TT40^qiCl3AlSN/#ZMVsJaCIj?bG6NAZV@"5OJVr76dI%`L_Ys3)YS&T]//.t+OdJ%LGIFM/Q&FII!*USnk.]TYRMFP,@)so5I'LKR]KImS'l7s>WI]<B)nFD?'pZK=^N6LU4u'jh++1G.Mu~>endstream
|
||||
endobj
|
||||
43 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1256
|
||||
>>
|
||||
stream
|
||||
Gatm;gN)%,&:O:SD"CQ$P<oCsca967R\Y'RESOa>6gHp$e4P<=Ji!`_n_[tF9!hck%Q!827Ze)<SAh(P,mTK;]_TinJ<r'Z^>Zj2ba-$H(;T8g]Uk[!TC@8>OKahE;$q<eR3-dG`mJ?5,a!mM?p_dtaFU03%Ho]^F[Gi`h)'66S>Hi?4?%s*DM$!R6J'b/3)`q/69$X,>Bh<6/iT`$_X%VA5<'4(dd'(>6$Nfk$Qd`!`Zm-3!Wkc>PNWL<TERYe]p<F9jC<`k=OoO>WmGde/1M%95U^["/\7+l<F?CoK9q&N)q<1=JFl!j6r='WrW"!^!T2*fr0PBVQ";raQ5?jhTFY(fnh/ksT"3SnD\;UDLC%U4rr-@2^Iu8mU1rTB0#7\I8\'ENfu"7HQ-#mkLH]J,jF1j$g*3lRSae^D5h,0Pm4';2'FmZ%PR-DA<0"YKLlsCKYuPthitu)9cp'/>T>A0Bgq`%4]#Mlmh(pHOpKLoeKcQUX10`K6pqr>M,*)NiP=c;cUZ'fpJp#2=l,3eboG'nE?b%&+glGQ*DUFMMLb<'LjKD`!4'h;Gn(*&D`Bi2*(jRn;2YU>e-@RW70MT00Z!\YV&4j[le;m$sY?$J&!QbgCcCXP&bN.si,SZjBY84B(>^rh^#R8$^P[q2bEeWCa(KiP7>1,sIMU2$B`;j*J8QL9W4KutGo@XA--EC]dnjZDIQaMOD_X4(L>u;Fu\ASC2UanK`qk94V%KYTUG?A(JcGm(4B:Gs&*MYCgCaCY?'MHO5X]=Hu>CtpX"6bj'U*T):'9M#Cf1.&aeao=)s*8HuU"r0>>"[hVU=iu+m61_I[+Y<Q!U:%jC'$^TkU-s4?,.j>c6SOn19@Fd1:U-b1Y\$OG*BqZ/,[S-X_%PH;Rsicro3d#!%EgR]Y>Ts86L^ua#]('i2tFsQ?hd)GO;3jrET6(FePu&;fjR/-mc$.f0t_F9a2kuPii;!"1:bD3s7Z6N=V]5/FuXHW(FmHD/f=BPJ-uZBeTD4rZ(U_m>:eOW>g(%q(Os0@`WiC:X>df,51n\.6gD8JB.Ap1K@HXN8,dlKq@2:Du!8W"Ur?q]'#JVHfA(QIi#IU$Y^.M>Z4k<cp(uGg7,Os!*'KD*^h5?44VJ'HG$5=lt][)Z>!qOs*2k_I5AnB-0M/g)t#m.8i1l96d47#aiK9f_mubs#!RF-k*"5m1_k7qg+'dVrFWCrFRA7QUiLBaL`\(>$^]4`;fhAHL%++"oXk-sJWha$BqKG~>endstream
|
||||
endobj
|
||||
44 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1552
|
||||
>>
|
||||
stream
|
||||
Gb!#\gN)%,&:Ml+D"Z.'2i?PLb&ifd:7APmlc*Z\;YL29<t]$V:]XD$gZcIsTpleON1#eUm:aL,OUL-<_n@%WJPRArpmY=bY6N@#_ghnE(]fQ-#R6(RHLTk=#Ab+mAR<USP!)?7k(Te\BH975Kl$?b[(:i3E,0f=!XO2JCL35O5oP@l"DJQ+nFhIILc3[kkROu"LF&CG;HCjnHjalYEqTbC;]%W?qu99\gFu%c(']g'/>g$#9DgW)BIEYF-+(Rfn0/+`!Fu+lV?>QNJ67iZ==ai5A$$#4KsKS;7-Ju#Ot8lR*oKPX!(,A;6PIUUJMLH&m(C@NC6U`melq<%N6p]#&-er9:uFl8/38!-:9n7He!DN(Xt-EjBMh*&$Bu<H<R$c(Wu(7;/Tb`[X%/`D0N<+XS4g$h7`qsS7?aq^^&E/icGK!jkp4d"$^bWc6Z"L8iJ_PYR>7G):s1MR2[HmTh2Apo&lonYItK0-+8??@3>WHs#bT"KpBWFR2`8D1Db_C^^rVlZ#AMU7Dk+e9J=Yg#=VZ(9M_#ktP-PTOHhMK7VM1IY&oIg)8^72?k%?A:Y_M3YM(pHV,k+]Ndtc5lhW%?QId_MEUN=$GUBS5rH!-YkbrQ(!-=BmqpJ4QB*;,^'.F>L'kD.f=mj-_>Mt1,oJr5s8K*M;f;_!*2n<lRVKGAQU$Md"r1W,A:H&F/5p&^:dbs`["ankh9idH=S%`X;L$]uO=5Scdm47AJX8m8>h7+\[Y9c+>Zl8lD^-HVQ"9\k&DO-FtuGVN.N;B3/`&m<[QbV4!;BsX7WZ3f/`c4bOr1OG7?PR@6)%QW-b@go\W)o>@]IT0i"$>r./:+QK66HLl\D*;YeS9A/#OqPFa\5Yh%)D=#RL,c(gRsZiA`nY-D)i;Is->2[8N=q"<jFpGD2[@;#-=Bp,Ee)&Rr61%dC#N%.0_:Ga%@WC_aX5pZ:D^*+*F"rCokS4F:I3AHl=*UL>QEQ*L!/5Tm)W_K<mTA+],#N8,VQ@'lbZmU%0ILi-b1!KgDe_</-)4a1+cJpZ`d0q!9XH\8ooXG&__<&cbT,1Fe4"@5m5fH1`CC6A><BcW*=3LpAFq&8*YPXRbphgLJ"+75Lf0ITC_0fD#G7SWl)#8dJ;J]m.)GaY>jQ2m`KckB.LA8Z5[o&Z"SG&Dqp(U*,REHf-f/1Y=!6QONnZ,D%db$F`(kd/SmRj9llmQ41WT6Wd&P>&L7264nN.>l>lj2NTgkgjM0V@Fedd_BF_spm\]ITpqELNB,0W6\u..L1RaqbfPFV+<SfcEf)bdB\&2]8qW6Yk%km??`mVfKBWO$8UUd`AfX5+uV^tR$b15:u^=UC;2&_<VS;)#SrkD:?\_.37f$XQaocu,W)NTW!D\MnkdSY&2S6k0BR,0la2Klo^nB^^1X&/@**`[Rq*^Otq4FV<%VDhWd>qO.7XK6$9DtGR%WQHS\NJ\?#c!UVhb7\Be6R?7A4VRXa3?J?$TjFWpTl\G#6/D/;$!"g;e\@40oT<FIZ24NKKNPd[]&gI+21l8'D<XG+Zj(s_&0C`WCP&BZ~>endstream
|
||||
Gat%^92F=s'SZ;W'k[hD(u+R2h&m9*TV<4OPSG.$0pu!44A@RUp#"@mB#6Y;U59URo"F4651^3"]PR@T'l]T#m$`KFUb?,-#c)\>S4:7<_A1ZhK#ED`#mX&]r]u`<25DEGi<b.1RM[V!$mWb;#!DNlbqp>oQ]m5VBLT<@+GNI!e3SRX'^*;9&?/X7hnS;04^LJ)RP&!..u8ld[Q`3:)@Jm"e.QJLUMo$3DfOfYf4K*m9Dn,pQd%TSENX;$M^u8WV-gap)!N]L-b[?^W0!7b=Qj&<44j>JXKdu9^!2Jh6>hWBKG4sDFNfT(<.sn]2BB6H;[d`?_]8G.Kh[%&G3jHd/6gI8U;oC.jr;ENYX_J_lQ*iZ`g@@[Qsm1!(tT_\CfgM./h5Tj%Xrton(_X>QZ\("DX6'uQp0l)/%u=G$PEgnH\R"c-tB-+O6<464GLJd8*7"O[E\N:M7e-a[H%'i_;$]u3U1"*01C)kHmX+1Aa\iO6g<<#=Li#Y1."j1<j)#<+3\P61%W+FIo@A://S$5[Vja]J&iZdU;(-Uj3.~>endstream
|
||||
endobj
|
||||
xref
|
||||
0 45
|
||||
0 18
|
||||
0000000000 65535 f
|
||||
0000000061 00000 n
|
||||
0000000123 00000 n
|
||||
0000000230 00000 n
|
||||
0000000342 00000 n
|
||||
0000000547 00000 n
|
||||
0000000752 00000 n
|
||||
0000000857 00000 n
|
||||
0000001062 00000 n
|
||||
0000001267 00000 n
|
||||
0000001472 00000 n
|
||||
0000001678 00000 n
|
||||
0000001884 00000 n
|
||||
0000002090 00000 n
|
||||
0000002296 00000 n
|
||||
0000002502 00000 n
|
||||
0000002708 00000 n
|
||||
0000002914 00000 n
|
||||
0000003120 00000 n
|
||||
0000003326 00000 n
|
||||
0000003532 00000 n
|
||||
0000003738 00000 n
|
||||
0000003944 00000 n
|
||||
0000004028 00000 n
|
||||
0000004234 00000 n
|
||||
0000004304 00000 n
|
||||
0000004617 00000 n
|
||||
0000004796 00000 n
|
||||
0000005329 00000 n
|
||||
0000006076 00000 n
|
||||
0000006897 00000 n
|
||||
0000008329 00000 n
|
||||
0000008656 00000 n
|
||||
0000010193 00000 n
|
||||
0000010508 00000 n
|
||||
0000011528 00000 n
|
||||
0000012881 00000 n
|
||||
0000014024 00000 n
|
||||
0000015570 00000 n
|
||||
0000017078 00000 n
|
||||
0000017395 00000 n
|
||||
0000018827 00000 n
|
||||
0000019263 00000 n
|
||||
0000020404 00000 n
|
||||
0000021752 00000 n
|
||||
0000000112 00000 n
|
||||
0000000219 00000 n
|
||||
0000000331 00000 n
|
||||
0000000436 00000 n
|
||||
0000000641 00000 n
|
||||
0000000846 00000 n
|
||||
0000001051 00000 n
|
||||
0000001256 00000 n
|
||||
0000001461 00000 n
|
||||
0000001531 00000 n
|
||||
0000001820 00000 n
|
||||
0000001904 00000 n
|
||||
0000003797 00000 n
|
||||
0000005344 00000 n
|
||||
0000007307 00000 n
|
||||
0000009284 00000 n
|
||||
trailer
|
||||
<<
|
||||
/ID
|
||||
[<4ba4cdaa716430c5e4593eab67d6901b><4ba4cdaa716430c5e4593eab67d6901b>]
|
||||
[<4025b2061c2075f6dff01e41b90413ba><4025b2061c2075f6dff01e41b90413ba>]
|
||||
% ReportLab generated PDF document -- digest (opensource)
|
||||
|
||||
/Info 25 0 R
|
||||
/Root 24 0 R
|
||||
/Size 45
|
||||
/Info 11 0 R
|
||||
/Root 10 0 R
|
||||
/Size 18
|
||||
>>
|
||||
startxref
|
||||
23396
|
||||
9925
|
||||
%%EOF
|
||||
|
||||
343
Les06-NextJS-QuickPoll-Part2/Les06-Lesstof.md
Normal file
343
Les06-NextJS-QuickPoll-Part2/Les06-Lesstof.md
Normal file
@@ -0,0 +1,343 @@
|
||||
# Les 6 — Lesstof
|
||||
## Next.js QuickPoll Compleet — voltooien
|
||||
|
||||
**Vak:** Technical Foundations
|
||||
**Vorige les:** Les 5 — Next.js Basics
|
||||
**Volgende les:** Les 7 — Supabase Setup
|
||||
|
||||
---
|
||||
|
||||
## Inhoud
|
||||
|
||||
1. [Waar staan we?](#1-waar-staan-we)
|
||||
2. [Server Actions — forms zonder API routes](#2-server-actions--forms-zonder-api-routes)
|
||||
3. [Forms in Next.js](#3-forms-in-nextjs)
|
||||
4. [revalidatePath — UI bijwerken](#4-revalidatepath--ui-bijwerken)
|
||||
5. [Loading + Error states uitwerken](#5-loading--error-states-uitwerken)
|
||||
6. [Middleware basics](#6-middleware-basics)
|
||||
7. [Environment variables](#7-environment-variables)
|
||||
8. [API routes — wanneer ze handig zijn](#8-api-routes--wanneer-ze-handig-zijn)
|
||||
9. [Polish — UX details die ertoe doen](#9-polish--ux-details-die-ertoe-doen)
|
||||
10. [Voorbereiden op Supabase (Les 7)](#10-voorbereiden-op-supabase-les-7)
|
||||
|
||||
---
|
||||
|
||||
## 1. Waar staan we?
|
||||
|
||||
In Les 5 bouwden we QuickPoll Part 1:
|
||||
- Homepage met lijst polls + create form
|
||||
- Detail-pagina met voting
|
||||
- Alles in-memory (`lib/data.ts`)
|
||||
|
||||
Wat nog mist:
|
||||
- Stemmen werkt niet écht — refresh = data weg
|
||||
- Form-handling is matig
|
||||
- Geen loading states
|
||||
- Geen error handling
|
||||
- Data verdwijnt bij server-restart
|
||||
|
||||
Deze les: alles aanscherpen + voorbereiden voor Supabase in Les 7.
|
||||
|
||||
---
|
||||
|
||||
## 2. Server Actions — forms zonder API routes
|
||||
|
||||
Next.js 14+ introduceerde **Server Actions** — async functies die je rechtstreeks vanuit een form aan de server kunt aanroepen. Geen API route nodig.
|
||||
|
||||
### Basis
|
||||
|
||||
```tsx
|
||||
// app/page.tsx
|
||||
async function createPoll(formData: FormData) {
|
||||
"use server";
|
||||
|
||||
const title = formData.get("title") as string;
|
||||
// ... insert in database
|
||||
}
|
||||
|
||||
export default function Page() {
|
||||
return (
|
||||
<form action={createPoll}>
|
||||
<input name="title" required />
|
||||
<button>Create</button>
|
||||
</form>
|
||||
);
|
||||
}
|
||||
```
|
||||
|
||||
`"use server"` markeert deze functie als server-side. Form posts er rechtstreeks naar.
|
||||
|
||||
### Voordelen
|
||||
|
||||
- Minder boilerplate (geen API route)
|
||||
- Progressieve enhancement (werkt zonder JS)
|
||||
- Type-safe — params zijn FormData
|
||||
- Te combineren met `revalidatePath` voor UI updates
|
||||
|
||||
---
|
||||
|
||||
## 3. Forms in Next.js
|
||||
|
||||
### useFormStatus + useFormState
|
||||
|
||||
Voor loading + error states in client components:
|
||||
|
||||
```tsx
|
||||
"use client";
|
||||
import { useFormStatus } from "react-dom";
|
||||
|
||||
function SubmitButton() {
|
||||
const { pending } = useFormStatus();
|
||||
return <button disabled={pending}>{pending ? "Bezig..." : "Vote"}</button>;
|
||||
}
|
||||
|
||||
<form action={voteAction}>
|
||||
<input name="option" />
|
||||
<SubmitButton />
|
||||
</form>
|
||||
```
|
||||
|
||||
### Validation
|
||||
|
||||
Zod is de standaard:
|
||||
|
||||
```typescript
|
||||
import { z } from "zod";
|
||||
|
||||
const schema = z.object({
|
||||
title: z.string().min(3).max(100),
|
||||
options: z.array(z.string()).min(2),
|
||||
});
|
||||
|
||||
async function createPoll(formData: FormData) {
|
||||
"use server";
|
||||
const parsed = schema.safeParse({
|
||||
title: formData.get("title"),
|
||||
options: formData.getAll("options"),
|
||||
});
|
||||
if (!parsed.success) return { error: parsed.error.message };
|
||||
// ... save
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 4. revalidatePath — UI bijwerken
|
||||
|
||||
Na een mutation moet je gecachte data invalideren — anders ziet user oude versie.
|
||||
|
||||
```tsx
|
||||
import { revalidatePath } from "next/cache";
|
||||
|
||||
async function vote(formData: FormData) {
|
||||
"use server";
|
||||
// ... save vote
|
||||
revalidatePath(`/poll/${id}`); // refresh poll page
|
||||
revalidatePath("/"); // refresh homepage
|
||||
}
|
||||
```
|
||||
|
||||
### Alternatieven
|
||||
|
||||
- `revalidateTag("polls")` — invalideer alle fetches met tag "polls"
|
||||
- `redirect("/somewhere")` — redirect after action (impliciet revalidate)
|
||||
|
||||
---
|
||||
|
||||
## 5. Loading + Error states uitwerken
|
||||
|
||||
### Skeleton loaders
|
||||
|
||||
In plaats van "Loading..." → skeleton matching de UI:
|
||||
|
||||
```tsx
|
||||
// app/poll/[id]/loading.tsx
|
||||
export default function Loading() {
|
||||
return (
|
||||
<div className="space-y-4 p-6">
|
||||
<div className="h-8 bg-gray-200 rounded animate-pulse w-1/2" />
|
||||
<div className="h-32 bg-gray-200 rounded animate-pulse" />
|
||||
</div>
|
||||
);
|
||||
}
|
||||
```
|
||||
|
||||
Voelt sneller dan een spinner.
|
||||
|
||||
### Error boundary met retry
|
||||
|
||||
```tsx
|
||||
"use client";
|
||||
export default function Error({ error, reset }: {
|
||||
error: Error & { digest?: string };
|
||||
reset: () => void;
|
||||
}) {
|
||||
return (
|
||||
<div className="p-6 bg-red-50 rounded">
|
||||
<h2 className="text-red-900 font-bold">Iets ging mis</h2>
|
||||
<p className="text-sm">{error.message}</p>
|
||||
<button onClick={reset} className="mt-4 text-blue-600 underline">
|
||||
Probeer opnieuw
|
||||
</button>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 6. Middleware basics
|
||||
|
||||
`middleware.ts` in project-root = runt voor elke request. Voor auth, redirects, headers.
|
||||
|
||||
### Voorbeeld — protect /admin
|
||||
|
||||
```tsx
|
||||
// middleware.ts
|
||||
import { NextResponse, type NextRequest } from "next/server";
|
||||
|
||||
export function middleware(request: NextRequest) {
|
||||
const isAdminPath = request.nextUrl.pathname.startsWith("/admin");
|
||||
const isAuthenticated = request.cookies.has("session");
|
||||
|
||||
if (isAdminPath && !isAuthenticated) {
|
||||
return NextResponse.redirect(new URL("/login", request.url));
|
||||
}
|
||||
}
|
||||
|
||||
export const config = {
|
||||
matcher: "/admin/:path*",
|
||||
};
|
||||
```
|
||||
|
||||
In Les 9 gebruiken we dit voor Supabase Auth.
|
||||
|
||||
---
|
||||
|
||||
## 7. Environment variables
|
||||
|
||||
### `.env.local`
|
||||
|
||||
```
|
||||
DATABASE_URL=postgres://...
|
||||
NEXT_PUBLIC_APP_URL=http://localhost:3000
|
||||
```
|
||||
|
||||
### Server-only vs client-available
|
||||
|
||||
| Prefix | Beschikbaar | Voorbeeld |
|
||||
|--------|-------------|-----------|
|
||||
| (geen prefix) | Alleen server | `DATABASE_URL` |
|
||||
| `NEXT_PUBLIC_` | Server + client | `NEXT_PUBLIC_API_URL` |
|
||||
|
||||
**Belangrijke regel:** secrets (API keys, DB passwords) hebben **NOOIT** `NEXT_PUBLIC_` prefix. Anders staat het in je client JS-bundle.
|
||||
|
||||
### Vercel
|
||||
|
||||
In Vercel dashboard: Settings → Environment Variables. Apart voor Production / Preview / Development.
|
||||
|
||||
---
|
||||
|
||||
## 8. API routes — wanneer ze handig zijn
|
||||
|
||||
App Router heeft ook API routes (`route.ts`). Wanneer wel/niet?
|
||||
|
||||
### Server actions hebben de voorkeur
|
||||
|
||||
Voor forms binnen je app → server actions. Minder boilerplate.
|
||||
|
||||
### API routes voor
|
||||
|
||||
- Webhooks (Stripe events, GitHub events)
|
||||
- Third-party services die HTTP endpoints verwachten
|
||||
- Mobile app calls
|
||||
- Cron jobs
|
||||
|
||||
### Voorbeeld
|
||||
|
||||
```typescript
|
||||
// app/api/health/route.ts
|
||||
export async function GET() {
|
||||
return Response.json({ status: "ok", time: new Date() });
|
||||
}
|
||||
|
||||
// app/api/polls/route.ts
|
||||
export async function POST(request: Request) {
|
||||
const data = await request.json();
|
||||
// ... validate, save
|
||||
return Response.json({ ok: true });
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 9. Polish — UX details die ertoe doen
|
||||
|
||||
### Feedback bij submit
|
||||
|
||||
Geen feedback = user klikt twee keer. Disable button + spinner + success-toast.
|
||||
|
||||
```tsx
|
||||
const { pending } = useFormStatus();
|
||||
<button disabled={pending}>
|
||||
{pending ? "Bezig..." : "Stemmen"}
|
||||
</button>
|
||||
```
|
||||
|
||||
### Optimistic updates
|
||||
|
||||
User klikt → UI update direct → fetch op achtergrond. Voelt instant.
|
||||
|
||||
```tsx
|
||||
import { useOptimistic } from "react";
|
||||
|
||||
const [optimisticVotes, addOptimisticVote] = useOptimistic(
|
||||
votes,
|
||||
(current, newVote) => [...current, newVote]
|
||||
);
|
||||
```
|
||||
|
||||
### Empty states
|
||||
|
||||
Geen polls? Toon een mooie empty state + CTA: "Maak je eerste poll".
|
||||
|
||||
### Toasts
|
||||
|
||||
`react-hot-toast` of `sonner` (komt met shadcn/ui). Goedkope feedback.
|
||||
|
||||
---
|
||||
|
||||
## 10. Voorbereiden op Supabase (Les 7)
|
||||
|
||||
Onze QuickPoll heeft één probleem: data is in-memory. Restart = weg.
|
||||
|
||||
### Wat verandert in Les 7
|
||||
|
||||
- `lib/data.ts` wordt `lib/supabase.ts` (echte client)
|
||||
- In-memory arrays → database tabellen
|
||||
- Server actions roepen `supabase.from("polls").insert(...)` aan
|
||||
|
||||
### Architectuur na Les 7
|
||||
|
||||
```
|
||||
app/
|
||||
├── page.tsx # Server Component — fetch polls van Supabase
|
||||
├── poll/
|
||||
│ └── [id]/
|
||||
│ └── page.tsx # Server Component — fetch by id
|
||||
└── lib/
|
||||
└── supabase.ts # Supabase client
|
||||
```
|
||||
|
||||
De rest van je code (page-structuur, components, server actions) blijft hetzelfde.
|
||||
|
||||
---
|
||||
|
||||
## Bronnen
|
||||
|
||||
- **Next.js Server Actions:** https://nextjs.org/docs/app/getting-started/updating-data
|
||||
- **Next.js Forms guide:** https://nextjs.org/docs/app/guides/forms
|
||||
- **Zod:** https://zod.dev
|
||||
- **Next.js caching:** https://nextjs.org/docs/app/guides/caching
|
||||
- **Loading UI:** https://nextjs.org/docs/app/api-reference/file-conventions/loading
|
||||
- **Error Handling:** https://nextjs.org/docs/app/getting-started/error-handling
|
||||
206
Les06-NextJS-QuickPoll-Part2/Les06-Lesstof.pdf
Normal file
206
Les06-NextJS-QuickPoll-Part2/Les06-Lesstof.pdf
Normal file
@@ -0,0 +1,206 @@
|
||||
%PDF-1.4
|
||||
%<25><><EFBFBD><EFBFBD> ReportLab Generated PDF document (opensource)
|
||||
1 0 obj
|
||||
<<
|
||||
/F1 2 0 R /F2 3 0 R /F3 4 0 R /F4 8 0 R /F5 12 0 R
|
||||
>>
|
||||
endobj
|
||||
2 0 obj
|
||||
<<
|
||||
/BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font
|
||||
>>
|
||||
endobj
|
||||
3 0 obj
|
||||
<<
|
||||
/BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding /Name /F2 /Subtype /Type1 /Type /Font
|
||||
>>
|
||||
endobj
|
||||
4 0 obj
|
||||
<<
|
||||
/BaseFont /Courier /Encoding /WinAnsiEncoding /Name /F3 /Subtype /Type1 /Type /Font
|
||||
>>
|
||||
endobj
|
||||
5 0 obj
|
||||
<<
|
||||
/Contents 17 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 16 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
6 0 obj
|
||||
<<
|
||||
/Contents 18 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 16 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
7 0 obj
|
||||
<<
|
||||
/Contents 19 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 16 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
8 0 obj
|
||||
<<
|
||||
/BaseFont /Symbol /Name /F4 /Subtype /Type1 /Type /Font
|
||||
>>
|
||||
endobj
|
||||
9 0 obj
|
||||
<<
|
||||
/Contents 20 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 16 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
10 0 obj
|
||||
<<
|
||||
/Contents 21 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 16 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
11 0 obj
|
||||
<<
|
||||
/Contents 22 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 16 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
12 0 obj
|
||||
<<
|
||||
/BaseFont /ZapfDingbats /Name /F5 /Subtype /Type1 /Type /Font
|
||||
>>
|
||||
endobj
|
||||
13 0 obj
|
||||
<<
|
||||
/Contents 23 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 16 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
14 0 obj
|
||||
<<
|
||||
/PageMode /UseNone /Pages 16 0 R /Type /Catalog
|
||||
>>
|
||||
endobj
|
||||
15 0 obj
|
||||
<<
|
||||
/Author (NOVI Hogeschool Utrecht) /CreationDate (D:20260607080655+00'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260607080655+00'00') /Producer (ReportLab PDF Library - \(opensource\))
|
||||
/Subject (\(unspecified\)) /Title (Lesstof) /Trapped /False
|
||||
>>
|
||||
endobj
|
||||
16 0 obj
|
||||
<<
|
||||
/Count 7 /Kids [ 5 0 R 6 0 R 7 0 R 9 0 R 10 0 R 11 0 R 13 0 R ] /Type /Pages
|
||||
>>
|
||||
endobj
|
||||
17 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1881
|
||||
>>
|
||||
stream
|
||||
Gb!;eD/\/e&H8h>EPT;a/Z=hs6qRQ9Tl4'9FBc>dm=9I(A=IS+kf&Zp]?@D8;3E4cM&f_VMCf,IQoa*[oB>Vi;.2`[S!Cad0u3)e]KBc@3/fJ@\[Dm@&+FIIh-)]Q>e2!/N_c3rK,lr6$aR=.J1#.Fn:6'cV<pnl>bB]`+8EWkT9N#9VVq$U`P@dk9&Bg,B:eV3KDgf^360CKm0OB[hd>R0S+HbdeCe9!eIO].$W_mp]K32iR3t-7`GkD&n"7qaI6(I*oI<Q[pf(d=H<%bJEs]%qi2p1^-s`e<)2t_,o\9T53-Bq9&;8h^qEa4gO^;'`cGR1f6=:f=+-FC!#Jo`5KYqUDGRcLDQX3>C^=[J&=)ghU_@M4BWA%C7>RTHJm:QGuX80Pu@oL]`AoG:.Ce(c2)K1Q<PuSL!=d`HabE5d0CK>-7NOH[#(<&*Sr*A(/J'9BCS98E%9spDXEsJsk/.AF-&Kf[c*d6tE91Shals/8oVk2dTk<Wt8"D_$Hp?"_p]ih&22qeK5B'dO*B7#U5X9Ib?gg^A.`hoHRG?+Aj:GISXXau2Fle^ii0(q)b%X10IMNl7k;nA>m=h&ShD\ml%#HZDWB<Tq&%QH979p;Q[KmfN0a/,BaS>T3eDpikB.9/L`'^/=2$,NM&)Do_*$/-6O>-trT_2m9r1/m&nen.,Ma02ooM!AVW/[1U9lA!728L]*9T>R-?\!$/k'k$DGb^FoGD;QR;SjZAl#Yri[1(+J\-Mbqp=:TEaKK%(*?fk.Zkj/3hMB/Ge+SfI<VpS`q1Bip+K4#5jdfQgiJW&V6S:nG)$WS_o&)r#M(Ukhtcbh,qO,\OjCg."nBac%H"on?$(Y<6Aq[hdT-E+KreHRXL3(.W934sYBAVI8JZboA4W*:lLi6c:mg2,dRDb-bgS_MQb@#4G)+u]ku3m@9h0e`9>l[;"rDTG1K(q1eT<Hm:*=,P"*moZnbWG%0qS3;*s3+p?5\t&.]WmNA8L5%$eDp?.sYO<HskMo:Tm%$/JZlW^<Takh/^V5A0#'gf8$*;\'IudBS?t>74Ug,-[21Dti3[,8.6-/pG'E\qRW,/:cGVuTaU9)P]1lHFb9<j6Ab4uocl*=-rJ^6noDBNAqJWS<I<5p1gBMo`:-cS:V0hrg"gk!D6Q6b[)e*R@Q;kqkL8T=A!$'b?9.,@'8q*:14>(r).4]LTQEE1io:M2B/f5$Z-W5P?P8Sb_!.mfPj1`#s;TLY]klU([n8AU'<SEXPo0Ap-%V.I8KrPDGK/Hm2P.P!iM0d;kpBoMbkE#bPb4\-EiF2."n/5kdF#Ob7[:c"aJM48'S/anC=*4:tn?k*p`GKEHiBbIJBJ5r!$E"Z0V-AcIjOlk(u\AuuN^B`Pf'%T[!e_'1A8JFenSV!mrRHZ`el0GXhrJkn3;VR<q74LB.m.QT^*2s<lO>0`!n>)rQNPbW#1KB)hb$h.^W2rN)bgNNC"0s=L;<GTUg5M[B.F!Z'gIoM*VAe0@MLeHK:=F$R18SV5JTT;"U#YFF0Rd%43g?^,L*U&d]J_%f)FQbU_TjA/a+Gt1T%H'6Epbgih`A;')n+q<V^H7Tq,[9C#X(iG_ndU(Xpq:EeTj/o*bGS[h8d->O>cP2gDg\?UtZ"J[oD.M8\$WKLXkj.#/1LjT>iiOi6a#T"[r2J0*%IMg[>;>1PLn<Eou/T0D,-M*;HPlD(-31;8",15Z_ZN,Ju]Eh\"@:BB]koXg@Z##[8=)?kTM"c2L"_W6_fqjuaUIa\*T^6bCG.+*A)+#fajQ#5f)LOJHrRF^F]R1qsI\"U@!?s.BWN$5LUX"D'M_MT.+c4!&2:$';.09]9LN-SRIgc2Lr/Gp$:37Opuna:.Q!LH$jW6UXr)Jb:[\Id^Y~>endstream
|
||||
endobj
|
||||
18 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1759
|
||||
>>
|
||||
stream
|
||||
Gb!;dh/h%)&:`#5Z.#Tb#/uaB8`kO@30(W-E-Gk3Gfkp_/#can%^K=H%0-4,r1,_fm4lKu9r<q^C%o*o];FNFLK=H<.tC]"R(T+X),(i3!trEA/c7LII2ij=R0Z,%^@_>Z!Ju3u#A-!=+QS2G/>=7M6)4c/OH`9R8RQd<#V*W'=?IL!+G+r,#!aFC\`@t[qh-b[X90)U*o0$;i0+XW7!O=o@Fed2L-'&n<(GILLdsfE_K5tA^]4+K!e99(?-Ftm4GEO\kkTpd).N_ST"o,iXj_["bqVmF@J\&"(_@.d6kQr],l1OXL!:DkO]/Y]1'MJZi#QS%%P/Z@,"""Kc/W<;H<a*>ftaY)^cDk1k9]o/5-i3U"2l5`%ccUZCM?gM*RCYq)\@cII7cgu,ouK,qR_A>h'E!3eet9oMN_i_KiM.i4*dNdGX"rrT%Cj`d`1>P/lWUa.+^Y6I\8h'8Y"DT._+%VrfgZ"(=&+:.($gE-UslAN4m.(h(8Vs[;IPV^l9Fn6\!LFlJa7k'JH+YL2j3;)R]M\Y4LG=CSR(1DqtkmQ"tNF$4TQ2(j$nA:(?jr3@B9k6O.T-#2e`)gtueX1Kp'(==k(/E)nD#?I!DNB18@)(:dQ_n0QCipZ1rL9O@.FM%3`,"TrQ[!$'lrUW?cH!s;r:dl3Rt(:`T`C<W,/0'=.TY+ak1]A.WEFRul93Ne'4`TM%IM_`1EW;AR%E2fO'T*8h(I9"(jb0%YS$Pk+qZR<]&'m!XW(gN?iF83i;)@]E6$Ed,SOQCJf]SBq5JRQrD['nHNlgA-g.S#_gh-R')\VE3CTT2+SP#.3/*(sIZXW>EHZk:kS_EqLg?o8:EW68VYQAu%2\V'iY=#2l,!`'5+A@lJ<l74CX81;k8l#;Uo&c(j*9q5W$Y;UM/\eQL@hkVJhKTq,0?;Jf2H-NTfa^,1Ta4d'PV<NKT7i.r#p:F+)i-^>1m<_5Z'lIETLd]=TUMV7_;5[ERSP2;Nf9<UGC1<*jmH(l?.6%VY=kS*`o\2K\\^=N?:@g<5NLc9E>kf#i1r!YCnFZcu*`Uumd0;Q[0cef)IIt^6P9HsUoga7Ic`R85,&']"Nq$f!-8sED**U-gWU4ML<%T18AlW6,2-?+R6"#jDJd2a)<%9$oErubW>uHZE[S*h0W),cBiRJLS*SB\3K_"V_d#jCWdMbg:XE0%.l\-fegKP.L.m4gn[LgH2*sNSZ[?*l4dUY$Nmm"c9&d2+<jqPV;3e^SHT7?7ak1bgmKL.sEGM3Wq;G";L/S&UmT/T5,=<G`)kSPWOkQN-g^5t^&kG>S3p>X[2e$DVe]:Y&N'B(auds3ik!Zj>?0XnP5]K%i252]i9osSLL:T)G*dcne(Bt>m6rjLfE%(nY*CSf7?es-nWLXFU&CbgmVcRH)t+B?q/3\P<#c.ut\bEOdV-pfHl#9nP&&c.#0:97Bbm:=r\%h'\eBD[5<+lkkj2sklRW%%WpWS40>4@udk9[Ua4G*a.2_X)MCp\bcL8#I\@@]*KW3,O8mE28leQ,]t?2ZBMsQ#0aE5L9$qq@a94e'Dh.UehG)pQ00%Pj=!Bm-%(0s([YLSV4FpfMdb5H?Gfi32U5jd^JPEgQXQRqHB^eltV<](O$Kl2:fE)JT;cLSW\3B?-J4_kD<m8=@7f"D>;tm`ii<PiECnHW&U:c.2K&eJF?*iR-PcC1TP=pi+P*[fCqPI2NU&FK3_OGhISfe?38XF1n6VhC#T11]jRCDpoAXc$P/3q"a+=6@f~>endstream
|
||||
endobj
|
||||
19 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1681
|
||||
>>
|
||||
stream
|
||||
Gau`S;/b2I&:W67\/BX4MiB&4M57F&6]*KuJ>2@+[h"*5WlVQBb`Z4gcIrF#mlOFU/A%J''LQXT[WF]^GJ#08:Ll`\c2;cd!'D4<k`Pu,0V/<'8-IrhnCopI*tU'7N+*p'U1(oi,b]R9R0P%VJr#(-$l"spaTs*0Lf0'2NoQpG&r_RudsqI]Jk?aY;(NJTHnml2Jo_>@O][G#E;V%IjjHeXfOTbO2BN&h&%7m*M],'<Z<5+#/n"JFO1/3[HSsDtG#MBKG[l`YDCeI@QZ-pJch3i8<(h)"_"\\b:L/J\BI"9e6-+K$(V6bd2/>H`V=V>n+m]4,M&"ei#eik\Q8jRp.]e"_(hJQ>o!H/+R9b(>X=)s]g(Pld8BRg:X_eY<MRn@#;d4`;BLHF`U:*6gd+T?!PR&a$<,7BuP76Jf^mPan;k$'g6)`Va,%*egebP^&_!!CO(=6>B$bU1ph2L79Ap9XH2h>=+mbP6sF;[F)f./.^ZQ_F>91Zo;(V$:1DoE@HYJI6iO=bKYg;,G7Dfe($/!<F8q/L\bXGhi<_"!bV.:1cYY%h(VbZ"`SN(u2+o<]un6(&ut;P2/F08`aCE>*Z,.PmPq-+mPi(V+t&ZF251_oWR:3$'RVZ$;+?:]Rf$XPF;N\t%pE*-4@!T8gbT8KZPT(e;+5)b?akb*6jkm;mkn?DlB_4["/E`)rXMYM`J!4Oa'#S.IH+',\BaX<+H=8'TEPT"#sf;5=p#ES&6Z@nBp_m!+A^\ClHDn8sCBJCIZrm,8F1]C=G<oAbtMON<N)[Ah/[?7o:pb-]N.K50W^"u,>Yi4/(mdqphN:$s%7rUl?k\QPHsE_jn_mQkl+%@J=;mdhk2^P54ENh?9)o@n-W2I5CmeBN%flK@2^HZ;nQr9$9Gi?kI^')=eB<E$tSQtiR:>#*Pr9MbLPL/\a1;tg0(Q6Sc9$5I$t[;dCS0PP6eU[3<)2M9T?BXYTgBstFr*>mVOqURL('T')lqfI,@;WN6`m3P7OaHj&jG_sL#fEZ.^%2E.b.Iu.TWNL/^AgbJ;DIbI;bWW0egWnr)ThfWPD%3e9@mX)SaKhMO83]e&N7,h3T6`c78d!F:5j_rXA($F%@2FD4JbR'*KkT;cd9e%OC&P<\TG<n(jim!keRC6N3`:6pg@PM#2cl%U*j<,^2L!mIXagM%BtCoM9s(>Gh58Gm:1sEgZh8Ke:Gr4,5&Vf;jr0T/^fq&WIHV#r7r'(!`Og(hgX(H+&),PWJH"sXBMOSKT#2Y=$B]Y"Ab\BF%GD*Z"))0oF0[5<nTUcoT6.5Eh%T'=RRSMenV0*<dpK7MlTRH=.4%)B-:X0tX96N1^3)D])VNROd0c1(1@Rb',(c)jCK(\.OM,A"gYZ8PFaj4K2Lk$G:bj*^]n@H'A1pm.\qFO(]l$/6Ba_BgjuQ0*0VSS(9-Gs:P1lS0cO`N@Ri:^9oZ#]tTN\$+ieFIS:&7e#W"bCEq>HS?Z'^3<g-9O1\$;+AJV,8.e*b#V[J0jEp1AO,fNRJKN:(/'@jTp*^K(XO(>`(-9Du\e>jq>q\FBqUmss$GPO6sVq>p7PK$j>gXhu;GRn%JSIK_+:GG?HVeEFr.I(Fc^`9H6?Sf(hkJGT^gDr)/eJE%,,$q:=0gjO<sgf0!qO7=V^<5S$%+o[Pco8A=QVF70+GFoEc"TJOXmQJ/~>endstream
|
||||
endobj
|
||||
20 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1762
|
||||
>>
|
||||
stream
|
||||
Gb!;c;/b2I&:XAW3;?p$\sa6\MPRPR_m[!UJ?EZB[kI=oA;dnHaHA($8V8/cI7Hkp'K_/7(+?WDLi&%Imc3-n4!"PA?aT_q?N^3e!Tu<Db$_LTapEjF)gF4XHl`hGR,gFB:UsfIJ-;JBK7#[M_&#KB/>/Y@8X/;O'dZHU$5fq0P"NeQ/=m;!&1Lk`3"SN,Tu=cnNsNbP1ag!K_>a;"T<e(j,&29lZ[*i5cCjj-)H;b2Qho-caVmWes87*G^Lp2FbZ@r5^^$(hq9$L;0aYUb_+T3MPAI#c,FEk1aYR_*"3Q>7/I6V@oSkI1P:\8GGMt;P6f8u8pZTEq=qVjWI$^VknZc:^Y'*X]^b''3RL&92UJou`aTF9^0Qr"ONm;FK_^qQDRSkSQ;='J<..J`d['=`Z=MZu#]c*3@qOK9JPj=5]M5/G]8[t:NL79_cMW+3+1tZ\a<-^#ibLp(^&1.]Q>+>=[(U2Hp9Xob%q7UUl-/[)p?g3Y#`^DWH$`D(sqJrERIBQ"]ZQWQjl]er:ZP9:3GeH].H&QWT*F*)r3PXJ30%_f<>X:J)I(P(o-OArp'-?U;dC?MFRB1G,:Z+q_7WH"m+5p4kB/pY1#oBh*c)&_3FaC7#>=+j&$.4XGroa7Mj^ig>8a*@!SS3Y99TYRcMapl^\#d%>^!dt7SPEfHCm$J/"^H^0$u92]6AA<,SaYY^o>P$"e5)ai;.#*'1os=p%3NlUqmX?UCK-$bQNdL[\G<5cC.3AtW_JkAirQ4d>fo[SS$?M>Q"q2E6]K4ric8+D8(;G%I*dgL-4/_&Q;Gh.5e-90YQLeJcH8]fK4Y7[g)nFe&uejnZ.jl@XfXSjX(qCe[Tr.km;CX]o>,0<<\+($8[8Re)%i46>*D$.&<ME>-Le!1W:7u`(c`(ZRuLpsbP=5[rc+)^"\eIJmcq*1#s>!rW!Z"DfjqY0J1ncV@UQH8.ljOAC-%e)_=b]jk\e`0GYfq4TQli@DY<)L<<D!uQ"'D9J<MCqJ9_bC`S5@6:PZn9SEo^qR)<MeL+aT;o-LXUBS1Ja[i-ca/]Z$s]G`RBX'rG2,99(;`gHLH]\+WcL<D;ofFXPoHe^!cPNkGT*p^;eDoqU,oGD@<SN(;^B+`#p@.-#HU?U'$4Xj6Xg?CQj>V4Ys0=k5C-gK:'9OjM+WQ%i+6\O0iFUH)7:/d^I7jsBF]#MKVZE(8cZZ-<CX7AT-adZZ1ZXD"`*qT@5\eccHJS&3D_ed4DMDr,e>ZOR6(c3I<pR31`mPQ5,$g+n+^:3N%5oRQXDXit:P?=_pfTXi"'@k+g6(ofm?okk'D8/3R$n*e?DN=TnO89:Z.X?H\b14Q*:#lPhL+(%o_#/S=f94pTe=/Y-h"mECNJ\p>@jq$EoEAK1ERY6/'FCS6#i5-r2PlSHdLDcpgUCqE?+Pf#D.O52R:EuD]fu8+<K_)[?*Q#`d9fQR)PE<IZIFhG=b=.r)QuD!lelnjS2`%M@qi,KQ'O<5L5PZn`H<%rZGu;_>j@dlB@?s2:sfi#[PdbfQ)27Seb]49\d[n!fA>4hKe&/.P-#c5gn&XkT#@W-MQ-pN0$e.<fuZ-dXLFNlY%(5Gq0uJ3)"e35d_!!eTJC1-Hu&U&#lG9);5,_]>f/*DiqXg:r7KGA(d,(F>;u9FMKdG#`Rk^^fdCV%`d*jf3/)aL)Uo4\,Ft??4Pud?-qFJ)g7`J$<mR71Y]pX.?$7f\W5.L`\96gj<FEuRP;S2sc4kJ1Ch)a`d5p.QhdGq,!jbW7~>endstream
|
||||
endobj
|
||||
21 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 2032
|
||||
>>
|
||||
stream
|
||||
Gau`TD,]1Y&H8h>Z/n?m:cRc9dRbXHl'R44A8'tS+oU>e7$c0-5aIq(D"9@Wn(g(==>gAGVUL.%dBU1Xm-_3hHVcEdS*K`e%WF1RmOJX/_-d>o-8l:XiH/IT1^N-c[2gBUB3IJ$i`k[UjO?`9iIq*PVr3sqnQ[#LNtTe14^beGFf>aH^uW;(5[83<SdiW5%eob3r>+@NTkTuUSGV(<973=_k7_0r6^Yh#Q(\=4SZ9)$2DM2k3\ZpgkKVcI1\a,(MCb9oBae(R']CTu+_*.scJYO$M)\cH\IX<3(`Xq+%AbuWciriT.QnSNQD]p58O&S38H;LQ_4MR\8cr]P/B>2Tc_uP[2[D:?cS7QTB+\_j*WtFoR"O]gbRN<LMpU$jZ!i!Vg:1Ihj3NQrRr3;dX(4Pl?DG5)0[*4kW\S4Upku%j=X[o0.thX?oa7^&5K!aP0()uJQtp9qg/_mSCG7J,e6'omCN%e=L;qHa4At'*]">-sn24S#7`gHU_L*).`dt^k3'KZ*q<E-3*f\4F\-o)TH+#fdoi>trPj,<tI$)Pk^;:iZ.DHGI,#'h4#l3Y;.$m+M7@(hMR)j@ZHO6it1EfgdmQGKnj"U,\eIWgbZ;iGiJOY%8BI:nJbbI"/GW"j/!m,Eqeo2_F[X_a,nQfJ>#p;Y1Eeq$XGTJ10+J6IX-l!EWg6IW=!gf*Y/kD951=+fGq/"^:lNV+IhJg6SC[)P]2>qBEbBtY"4:6^GN#P7(1qel:7V4r@7PZMWo_Sqq9SZI4[)CP)OD#A#!$\N.:=JrMcet]QB^HDNMR'J;X\pU@/,<'i)[%?_N$CH@nmNmXGAq\EXs+^\G`qD6f"NeK4PXjtQ2AM.4cbm%^-++9\3tnC>.R/RFpPQ^n*q5u(3(qG]I#k$UuM7sRURmR!lj^8;TF7N^c]]UR?5Hc;Q>)F#^<LsppcXT;u?7#oe9uQI2K#&#K:JbUR7^BTj+<qZq,>tFNtN7%Y1J(</fln\ePP,#oH/mXO:(bj`1rlJkU\=%bX+Q)[j'09jN`iVgpgZ.tL2po*0AE@)q]8q^3nu]*(lm<@$%(Ngti(+JW<YMl[qrD>R$A['7.?q*5(NNnm*55nkDs86.!2_]\s*DV=T[Y1*EcF/g!n3Y$"M:7Dnh\P)86BtL4g)F:d*3bSCfGKtNR>UqV^[f5=4\P\A?H\:0Hn+-*6*`4R+BpMPkaH!l<6HIX!n]g<*KD5>FPOl+fhtQtqX_X6c$e1q#0LNOoQ>)e)<GQTT-GkgAn5B#EUGRfl_^^9mNj'RbJlNB$WZW?nANaW\cY7uVCg].ebu#3aNj'4uq7+Y/'!],U,/dQ(1HN#<=`.^BUO%(6=`o%qqanh_:unQ.`?b;e4/\=<ccl,6fb65:8%569G[P9pQs56@gi/7ni^elMg^lEPCk\";bhNN0m%qVF<8^Wccq&rh/Qg1j]f9&^MM\D<D7QLbq;"+lq"KU#!iO[IO:H^ll.1IL^6)b%C^ZLPk%jn*_/d=7^d85\]Pq$MlK'0:iSleK3,hr=Cq_5)5/hK?q7X,iR-Wc@D=RoN'>p$7')8t>FArbR7DiA/YgI,!NT)(Kb37tg+E+/%51Y1bgMI2E(?4tNiE1i+_l`^(*Q#u5=9McMQca<&e(@?Q7[W+SCLme?I;dF9p[j^Y<\:_M^nu':1]k@$/7dQZ4#lm;3L[pd21Z]DV@m3B*fZHl:?,.6pl,'/\Gb&?FtI5Qic^g@hluq4'2N$A`^)L%V1BU._kkHG.%+[I<:.pn6g!m?R$N6TQp@gT#m:@D_#$MS6hP"O?5@aT/j>(kKO]&3\ui#m:C&cLn>bI;L\XR`=pt8l@-&P\jJYb=3R3BU56H*qOpEW50*5`O1<*Jl96?@[!B9ThYjSEeW[bT\Wd9R,>UU-r3@Z@9i!!it=_G>PoH1);EMEMgqZPc@0&2;nRm\J#jU(.qNM-7Y9c=)XKWM3HZ-Xc,'hd3ia",N`J&H]a\6tKBGm:#L,G>K/^^,EKjg,Cl#lG:6;[#X)'FVI-nS5U/BJBDiK2o-9~>endstream
|
||||
endobj
|
||||
22 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1802
|
||||
>>
|
||||
stream
|
||||
Gb!#\>>s9G'Roe[39)BMP-n>Wh%^C@j8oWD8Kl("cGY!ijTQ%8>")VaV@<L<7i+h(K5[GNM]$%Gm=+60h`6:?JKL?\od9`XHI+gP5Y^HJ!O[an]oR-^COKt1PF:3LJ69[m>SDp/ANu8][j#c.@BSim&-aM6gL(C]KQ%*^\;t^R+d$a:X@7\ZAoM/\&_(6@rNP0'bVW2)9cV1.jo)$(+u@OkXL&J^/:J0>=4#Bp$IuG=5ooAYDZZKe:+oE$K=[AJ5>ita$_9h<UnM^q*+#8Q4#rLuMIj'u]c6/ub7lcuD'mU5`YUp*au%Z6WW5'NY(Odtec>K(&Y(("ZS[SE-4u8HA)srrditI.f0u;?YVV!hj"*ZFP!g(=cKheM8CUV^'P9r`$`]]=X-bT]DC@I7a+^P+!/qoPXO9>j0+ahaGBH3QYd_El9<-I=S?FctU;Wa)d"X/$ITM'K7IWP&!)ksSU#.l^8J"P1S45QqL\HB!0HHCerOnI3#dD7r\QS7Paj&Zj8;>H#0@AZ#Q,tTH1&JjR_M;Id$tM2R<Ieu(9I@4iQFMn)phLdDkARJ<-\"@[5nHZXiY[%r%+B@U4J=PqjicCH7<#"+5<A=[8Pqnmb[g_l?!JRD%&=;e/,cNug'g-P&K0+3C/C6?M-&:QXr3)*OS+IpT\P5mbN?HN!0o*OfttfgetT0;0OiZ=Db@rqNSgaHe=jg"*1B5p1(0;i/=;&ga!hd((/tp"Wc,`i-!Z8GA"s5aC0a#DUSrSpC0Sm[[5[b[^GTcfh(JTK=k*R4c[\;L8ZRh=\\pA)acLNHEB24Kf'.@a@deV_clG\2e>$nVnO08cpSJ:NEaj"*bsCDtYt?itl1`8SX(gY\!))eZ;6SmAn%mfa,f:c>>=FPTfS&oSM;WTG`[XS,\OffNn(^4/4ZuLMTWQ6$IF,eu*^CuhiLQlXY3*I5pZm-"/r&5&7A8sprE;n/Q'Wc!?+l-+`3t@RQU;W@jGkf:l0u@Zl'b/7SXs=>'DZJp;gj2$ahMX%XmH[3ED]3Va*;>9HJ4!=n8>p)6O?m"H"-h+Mr6j/c2l=$63tfJ0L/UJ&#hLOlOcfQ;q\Oc+k^UX!'6OjD3A(/QZN!WdGX7V2Tbd^i<<@eQOC7bG#f2_4uJc4s1/?Y<#DF+@V!+G'8BD36!,s?R:mmTW7H(7asp&o9rf=(bK!Kj#G+/76#ZqjF>+$n('^uH"*Wutn"l!$C9I7AVDq,^3"3eFoW=?3Q80WQ/kEYV[bei"CFo9g+H;"%_Njn5lJpNZ51drp>2="sR>!0OVZ4<"0MZl<D2i_UZARc>$VUTHBt:1JTTWjQUq3PZ8L6*+0Vd4l`9j?l1'PYP6&_"9&7*2%OmZ_E9[7_YhN_VXPiXSMWag9u=$kfZgkf_,gY`gRhoNQbCF$&@?oL*tE\`bSHUBl.ZHS5E@FWIpCh)I,1U"^:*o#-\>@*EV^kZWoZ0gi([+9.KkhkdW?IYl0f@2slQUY'*@HE]LX`/8X)MraW2rC5m\<>PfJVkV#WCX13PT:CH<&2r7@#]HZ2FKe^:@S*EQn)G^E(uA]RLLH[ZU,Iu<CGb+jeBnL8s0cPF]/l<,r'-gUXo+V7'J?R"d==q\]^"_UNZ+b.T$jm-dqU/HNOp<-_p'`S:Z7)W(Q$F_NV89hJd_N+T#=R;_@?[FrGd@3UTWVeF31],a"5GcfWg&#TVb4?c!VTU?*b0[qDI)5(32C(iFI)*m6o@P;rG@JDQ<;7%sAfF$i,_^Oi&o-BR%ZPfe`Yg'X>\hY(8#PCN/91#1\CRA;7V2R\r4!a>U(5_?q)~>endstream
|
||||
endobj
|
||||
23 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1671
|
||||
>>
|
||||
stream
|
||||
Gb!;cgN)%,&:N/3m%c:T-3=Jb"Mr=S+_frU1RVJd-(Sc##E"0[g(_>QP]QZs!Ye4'Z:'C<a-0-$AV7d)c7X:d@W9R2=23cQ^sa_lQP_E-klNP-'W*PBq/l7KKEre'o`9?nog/^.o]utXE[8J6LkR+m^tf"\J-+gLE?9-Ck$/JU!479q_\!(e0K7o(&B?upm*9ke0g^h6ML<F\_t19agmT$'<a04\gjY29ZNJfS[8K/F>jM\Z9\1tIp%lQ@]MM6u`%.Z>G[G1tY=b/o'#9\]GU@;sVK/@`@!W:2LK6]2-tV2D^k.!.01Aa&C9\NE-<d9%JtO@HX[01R^dr<Ci"<nUQQ"p:^j$7NiV1&^/l8Uq\[32R6/iZ5nPhqG=mTibXqQ#%hA)!MLc^qE@+U9+V#KR(N4"K$EjAU)UpTD:D,n/H>K:+OW7RKuj$H=?6eU9U)rIT:$#<C)Z&4]H3h(57J`(_uOrFKe/;-RV;1+#1_'R]%*bE'.l0&>kBY0rsOn[dA/^@A)OU@I1FqK*u9$`2,Bd+h$*8YQ'BH@o*G\-FGK%\+gUDYA)2ROqT%<_j/2EKmMnuI;MRl%j)UTt;/67bh0H9Sc%&ot,:R1S])O@3X_B`Y3'XMnB-0*qOg72b>&IYCR,q$lOC]Ed:(-0_%!$+E5k1(hNX<'gc?8K6C\lhas,h!4E1@g<q#QE'(0#EKCRq9J=ZgbTq?2U]Laa-bmff>'J5V/s\3$.ZMoHV6OOSWn?$PW_mn.<k..Ci&F*J2g2U/:3Q-<+kt)nCd%EPj;CFl9_:hoVH6ZTEd@dT,f%O5H-8$FZn!9a>+q9!4bT^cD:n4Q7hWZ2E(n8*DVkN5V%td,'9aJ2X.KnC-<M#aA&'N*gd"ub/.Dsfbbl3-Up%9U?F3fDbh)PT<S?s0KdbQ.P4(oDDiD,lg1e_XU3M=Lm\<U9gI@M+Z'%jrSE:Snr&VR,`)5-4bWKa#/QUpZtn?NEn;Af/[Y_9+d]c+GD.u&i_d=B%<%r3LFZ6hRZA;^*]1a=+\1([eq/(aLt_fkNA(]!mlYc;_VC]bfT\_:o>089>+a\tZhlO"X[X$;ZgXcIH4X-)E"T:SBI@I:$4/$fN*i/p'N]r8b&c`*6#*j7&5gS1f`p6hf.`Lg[Rn+2"S-5?le5u2Gl7\do)GT<\WWhuD<]V<Pjo*\'SkF6[dCT^4?l)[L#QM3N1r,2;\LZ7i$Upb&e*#B*am4LC%BRf@lt8>U.L)D"5d\;@J'Dk2ZEhmdVh?)f?);<K*,]^AA@?jgEuReH/%T$h)oN[iO/o^Rfg=MD9LSirqK0SdASIobeH%S<FU6PNP_J>oqj4<O3DVRIdm]$]bWB8J9dGe)ZmP_j]@Qr'(HF4ct#)8L7_D7gGAc9g$kc,ql."k`9F_dnjHqjdSB$,Sf$<oh[e$kIWDO[^Cm/3FBp`4l,bi0O72`1<E\J'A&j^Ds)imW?93q#$ca%LV'sMd/go0P+;/=N)fB1&/4Ji4701(dG_38sBeMT89!8V)DTloT&0#tlE#/.p%hq4>5:@FU"/5K_-)Y&KWY1PPgE$lTY*l7JfPtG8UKi7LT^/pKfl/bZLmKS`N"b^[C)@.PSkcXp#VBR<S4/m'8Z_!Tkmt5$38%@!s("kcMTg.DQ%g*;9X<UpE_n*:Pr2^pZ;+(a0_uS<+o<G~>endstream
|
||||
endobj
|
||||
xref
|
||||
0 24
|
||||
0000000000 65535 f
|
||||
0000000061 00000 n
|
||||
0000000133 00000 n
|
||||
0000000240 00000 n
|
||||
0000000352 00000 n
|
||||
0000000457 00000 n
|
||||
0000000662 00000 n
|
||||
0000000867 00000 n
|
||||
0000001072 00000 n
|
||||
0000001149 00000 n
|
||||
0000001354 00000 n
|
||||
0000001560 00000 n
|
||||
0000001766 00000 n
|
||||
0000001850 00000 n
|
||||
0000002056 00000 n
|
||||
0000002126 00000 n
|
||||
0000002411 00000 n
|
||||
0000002510 00000 n
|
||||
0000004483 00000 n
|
||||
0000006334 00000 n
|
||||
0000008107 00000 n
|
||||
0000009961 00000 n
|
||||
0000012085 00000 n
|
||||
0000013979 00000 n
|
||||
trailer
|
||||
<<
|
||||
/ID
|
||||
[<4df18e91edc6fd902063dd6395541b13><4df18e91edc6fd902063dd6395541b13>]
|
||||
% ReportLab generated PDF document -- digest (opensource)
|
||||
|
||||
/Info 15 0 R
|
||||
/Root 14 0 R
|
||||
/Size 24
|
||||
>>
|
||||
startxref
|
||||
15742
|
||||
%%EOF
|
||||
BIN
Les06-NextJS-QuickPoll-Part2/Les06-Slides.pdf
Normal file
BIN
Les06-NextJS-QuickPoll-Part2/Les06-Slides.pdf
Normal file
Binary file not shown.
92
Les07-Supabase/Les07-Huiswerk.md
Normal file
92
Les07-Supabase/Les07-Huiswerk.md
Normal file
@@ -0,0 +1,92 @@
|
||||
# Les 7 — Huiswerk
|
||||
## Supabase verkennen
|
||||
|
||||
**Deadline:** Voor Les 8
|
||||
**Inleveren:** GitHub repo via Teams
|
||||
|
||||
---
|
||||
|
||||
## Opdracht 1 — Pak Supabase Dashboard erbij
|
||||
|
||||
Klik door deze tabs in je Supabase project:
|
||||
- **Table Editor** — visueel polls en options
|
||||
- **SQL Editor** — query historie
|
||||
- **Database → Tables** — schema diagram
|
||||
- **Authentication** — preview (komt in Les 9)
|
||||
- **Settings → API** — keys
|
||||
- **Settings → Database** — connection string
|
||||
|
||||
Maak in `SUPABASE.md` een korte lijst van wat elke tab doet (2 zinnen per tab).
|
||||
|
||||
---
|
||||
|
||||
## Opdracht 2 — Voeg eigen polls toe via SQL
|
||||
|
||||
Niet via Dashboard knopjes — via SQL Editor. Schrijf 3 INSERT statements voor eigen polls (met opties).
|
||||
|
||||
```sql
|
||||
insert into polls (title) values ('Jouw vraag hier');
|
||||
-- Vervolgens 3-4 opties voor die poll
|
||||
```
|
||||
|
||||
Hint: gebruik `returning id` om de nieuwe poll-id te krijgen.
|
||||
|
||||
Plak je SQL in `SUPABASE.md`.
|
||||
|
||||
---
|
||||
|
||||
## Opdracht 3 — Query een aggregate
|
||||
|
||||
Bedenk een query die iets niet-triviaals doet. Voorbeelden:
|
||||
- Totaal aantal opties per poll
|
||||
- Polls van vandaag (`where created_at > now() - interval '1 day'`)
|
||||
- Top 3 polls met meeste opties
|
||||
|
||||
Plak query + screenshot van resultaat in `SUPABASE.md`.
|
||||
|
||||
---
|
||||
|
||||
## Opdracht 4 — Bonus: Type generation
|
||||
|
||||
Genereer TypeScript types vanuit je Supabase schema:
|
||||
|
||||
```bash
|
||||
pnpm add -D supabase
|
||||
pnpm dlx supabase login
|
||||
pnpm dlx supabase link --project-ref <jouw-project-id>
|
||||
pnpm dlx supabase gen types typescript --linked > types/database.ts
|
||||
```
|
||||
|
||||
Gebruik types in je code:
|
||||
|
||||
```typescript
|
||||
import type { Database } from "@/types/database";
|
||||
import { createClient } from "@supabase/supabase-js";
|
||||
|
||||
export const supabase = createClient<Database>(...);
|
||||
```
|
||||
|
||||
Voordeel: autocomplete + type-safe queries.
|
||||
|
||||
---
|
||||
|
||||
## Opdracht 5 — Reflectie (200 woorden)
|
||||
|
||||
In `REFLECTIE.md`:
|
||||
- Wat snap je nu beter over relaties tussen tabellen?
|
||||
- Waar zit het verschil tussen Postgres en wat je eerder kende (Excel, MongoDB, ...)?
|
||||
- Welk onderdeel van Supabase zou je willen uitproberen?
|
||||
|
||||
---
|
||||
|
||||
## Inleveren
|
||||
|
||||
GitHub repo URL via Teams. Werkende app + SUPABASE.md + REFLECTIE.md.
|
||||
|
||||
---
|
||||
|
||||
## Tips
|
||||
|
||||
- **Eerst SQL begrijpen** — Postgres is een vaardigheid die jaren meegaat
|
||||
- **Type generation** scheelt veel bugs later — bonus aanrader
|
||||
- **Tijd:** ~2 uur
|
||||
105
Les07-Supabase/Les07-Huiswerk.pdf
Normal file
105
Les07-Supabase/Les07-Huiswerk.pdf
Normal file
@@ -0,0 +1,105 @@
|
||||
%PDF-1.4
|
||||
%<25><><EFBFBD><EFBFBD> ReportLab Generated PDF document (opensource)
|
||||
1 0 obj
|
||||
<<
|
||||
/F1 2 0 R /F2 3 0 R /F3 4 0 R /F4 5 0 R
|
||||
>>
|
||||
endobj
|
||||
2 0 obj
|
||||
<<
|
||||
/BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font
|
||||
>>
|
||||
endobj
|
||||
3 0 obj
|
||||
<<
|
||||
/BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding /Name /F2 /Subtype /Type1 /Type /Font
|
||||
>>
|
||||
endobj
|
||||
4 0 obj
|
||||
<<
|
||||
/BaseFont /Symbol /Name /F3 /Subtype /Type1 /Type /Font
|
||||
>>
|
||||
endobj
|
||||
5 0 obj
|
||||
<<
|
||||
/BaseFont /Courier /Encoding /WinAnsiEncoding /Name /F4 /Subtype /Type1 /Type /Font
|
||||
>>
|
||||
endobj
|
||||
6 0 obj
|
||||
<<
|
||||
/Contents 11 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 10 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
7 0 obj
|
||||
<<
|
||||
/Contents 12 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 10 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
8 0 obj
|
||||
<<
|
||||
/PageMode /UseNone /Pages 10 0 R /Type /Catalog
|
||||
>>
|
||||
endobj
|
||||
9 0 obj
|
||||
<<
|
||||
/Author (NOVI Hogeschool Utrecht) /CreationDate (D:20260607080655+00'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260607080655+00'00') /Producer (ReportLab PDF Library - \(opensource\))
|
||||
/Subject (\(unspecified\)) /Title (Huiswerk) /Trapped /False
|
||||
>>
|
||||
endobj
|
||||
10 0 obj
|
||||
<<
|
||||
/Count 2 /Kids [ 6 0 R 7 0 R ] /Type /Pages
|
||||
>>
|
||||
endobj
|
||||
11 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1991
|
||||
>>
|
||||
stream
|
||||
GauHL8U&oK%)2%/i)ZcEKdE^P<9KK(Bp4r[S()=N^;q(*/!_JOMt>Y05G32gbI!9#]MKl(%g5(HA3f\(MYHW\i8"CiHsj`L%))hML]rE,E&02>%Dj,<//sBoWTeFGY,VFDR2?Og%WPbA16>HH.4h\K,>u)c33EpH#tPbXIr-k^_P';"5U<ZVl"mF[M8M?R[YX<1meZe&5,leJM,RQ4AsWHF$tldO<$Tr##\CHK@5*Jnk:_m?E#VSP3hF?2#iDpUNMdX&3>ZXW#M3^i_K_c;$Q)"Bi3cV4&Sa=b3.d#fTso</^8PRC9"F[C60&(489dB9efl)?g#\T[#hLu^om?XQ34NjD=Mc\]8g2+p0&b=-:HHdEUrhBK%ZHD0#@f*S[a"HuG0D,,?nO:a(j!l'NO!/,Cig_R7]!1(Trg0*.N9<@bm<jQRU:L,;%,HpC>c6--7(S_43,DrM\qT?NF.I3Rjc]!ZAY7]67'$NMk.K1X@?>KU9QXA)XP]SD5GW\g&K'pL"XCV9X5G$7C^TI9T;*.oW&Du2]kkOUN6M>Mc\$JM-Weg-;8</5SGR]D@sLQ<!o?.gcCBq6bd"3<\T-9=0,&"cEmU#[@]+bOd@P"U-'/Z.QWq+-q@tA^hi40B[YOVBJ\W#TZ,q03*JTU$[KWlom-tB/=3%"jo6f+?kd==[J)-o"mtt(^"M-TUUsR;(c3/sZ*N&_liD-%'TB^:5/_a-HW^nMktYe,#P9PQn+.gLe&*So'u,K4#@23aJ"HPtE2"O`6)]f0E#&Eoqm)1Z-=G_\rH>lJmU8h,'=G9.,t_VJY=3:i_(qJdS)s,)7iZn*;I.-ZX,C1o3O0(cG6gT3W!,A'!Eha)h:ZcSoWFJBLI%_.LUR3G_.+H4;#6r5<X\-I73V)>U8#n4++ro<+!DFP@TWgU%$W^.*QK`9`ehLZ\'o,YE1.)[Ru\<^:(p/eLVV)-rj)#,:R?<,QfhM`gXfam*Q;@EK1\VLdp^]WgKLlKUj2ba$teF5:]'FTK$511&4H#`>([S^r1q?cmYL>=28!G@d<m@YjeoY3H[ZHm&3Gli!`[aQ>1\UN3q,V4Jf?qqiaa:tMHsHkBs(D@M`;,D:_CX(r?Nkd/ffECGHL1!h#3"(HVm#j.es+o+N54Lg4Rq!rZ'Kmf;W$9AS&qa:sClRgih89W-SM6FJRYSKPeDkHf,.c,k:#D4OdF"hs[7Bf81Q[b-S()1@,ZrBQ(r'8CTCk0/2b;id%ES7$G,B]\!>"/bd"%HEHM_6r7#%7$I98i4-A5g[;&/qQZ)%rZEY]a,/ukUs?@7IMp2YSr\#I6(0*uiV;i]jP=:T)\:\Xk?e`-0ue!?PuV&=s)rnbm](b(k5L+O$Aj3I-Q.)]_,Hf=dYm&&b<UcfU7>\4<HshuEVLF86O."3WlKl2jD\flYq+e-A@&BO3-HV@KO<;qn8]<d@l49%9XN&58]tRCZrC-?%\(bK/*U5\;HNEL5bDajD)4#,il)T%86'C4/#pHSTKf"p_%WCqiU1dek3E#b`lljOR4<oeDJm$>L:oT>f>Umh8*pA!,q6,fhhj+FB3f>CS'TO5`Q`q`SqZh@JQOuUla&e*$eqBKG(<DIMXH;%kB*j9Y]G$?Y=pJPNH9b:OB9:f26"!V*Z8`,73dHDkuDmJdoI<&Fm3*4fj^VVXnDMp:&D?09N\t:YeVhKR1d&UBWobI*-(3n[c5XT7&`e#%E[UApTbnLeaNVr/^/?&oNqJ:k:a&54E#h2Le:t_0E0[S='"YNh@!Rp_P9_h`RujIo?sX*UC8,,:kdmrG6LZ%^P\/;H05t5]nM:],rp//lg0h6/5II#5mTC5-_=i.%T/niQdX7(^]u-[)<M#&3[VH.gY%nMLWGkZY^ji?)K?g.RH5':=aVUoktA^9_CoC`Z_WtDU9E,6mS,$bRNS4B[b,0F*[]/V]m%V#dB$/I2Usk^O9edu^"F\I6DQaT;a=Cu;B1`fGi%rU;fHLi)#jV2C.b&~>endstream
|
||||
endobj
|
||||
12 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1795
|
||||
>>
|
||||
stream
|
||||
Gb"/'=``=U&:W67fZ?dN6SJP(+R,\9j4LLtj#0Z6,VPVN5U%aVV?hp3Q"/P*h?@h#Q>Iq=eC1Bl$3KqXDg+dh^aC]t-OYI<+m^1HTF?S<5V6H]n,s5U]oP=n3--ViM!5hTa+/E3IR#[U7::2R4m#U\%>VHR"dVf<lZt0;4Qe]RJOIBNiuSB`E5QZI+>1(4bLb%/KJS@a/Rieh>s2Q:kA'NL_COkIbjpJ+E!NM0C8dR:0rXKl0O-mCpXekpiCH[S3ghE3_Rh@]P?A)7`Z05K%/]TnL+8M2,8e^7pfK?9&@FJDgbG=!U.9Kj/nK'#;E5K@+;2IN'],JhfAtp4-a%;gBR9U2./ki!.%FZZ:10%hlLQWqDL(:IVfY<b^sYR;*3u#FiR\!a3mNV=>p2p7CeA!ei<A=Y"*(nEI&JeD64b?`n4U`'+B(P+6EJ%C,?G9jj2\-"o3*MDP%g3H-kH8Te0'H<&a?bX`"Y]>K%\GC<UK6.B+cG4P":^,rst7.$]*;Qe/pi*!<c7HP=maU6OLR&r3/4e1W)pG)<_=Zk8QQ+K3>]EKn[b?/^mBo+gAuYbn]B2e]Hd[S`JGS7A75AO1@qJ_\5Sg%5LOg.P%$Ta>=D^3&C1/>kQk)]@3*n0@(-L_S>@NZI*'^ba]?qijP0Kq@0=LCq.(fH/ldDpfM7nf<LqRNEfM@3dW@!dp3f>N[7A1,SQ:D._:8ZL:\YY<mL\E1Qn-VRdJcR$/u@K]I`Uu%l0MF36Ped(9'\lbiD+WhCau9:aDq=*^U>$ENC,(GA/R52gSS>#d\O,K14+,S?h96CLPP0%=PHdC'kV%L1N@#'t<$Ul*\,Ci_XMs"fZgm,9Co`,$,D$BXOh%TNOQYm>nK,=0C<RgLuE]/[#JH!k6^rBP"<k\(\3UPMWBB'Nk=8MhhOCi@BPj<>Fc.<-+pqK4P_!NNMMK*5r9s^(5jE81V/T?O,oGVF_bkZ-I>Rr7%6j:gkfcR0#afl6=!"64dG<?k=]#/go<pOlu4]Y4?/1')4+tAl*ta:ENN3MV-pp%,o#fZ^!_kG-SX=MlbQ+Z?/H6DhAkN>m9[UUsh<FK8W>E`$\6NM=TaKElLFZYmetT5A>RgdKGJ1,phoo=4j]#"oa2H6nR?500?3Xo\eC<)-,)`>.#!H_E^Rn9=g/CSbceL:N*#cc*t;2NVl`]0i:f:[>FM(MG2?3]jH`pKTOTVB=HuZ79L;.>:7R?V%R.XE#1p6WJOfsTu8;<8`>@h.aDU&ritLn6eO@\eCLi_QYhqUc%^_LCtiOSIOi`3KX!dO(Wd'fQA&qu%6\)LQ:3lED:p*RY;\[a%h;AF?4Dt!l[C`::c$BN[qhi?ei<7%gVku^Ym08;LG9!;!pUC_&fHR9\B4:ue[7f(AJiSRkBf,JCosp4i!VG^1Ml#I:[HnhYh&>DV:cR[BY`r1.%39b!I_>pKoCC"aTnFb140GDWG&=*pRX\P#re=6^5k,nA9\+^[4?3oQmA-?p5@)$%@2Qg4CHp%]u_,gibO-Rj1N8L)rZnLN?H/5YM&EY+ESTWnkoj?430,@XK^N`T*_fuI#L&u.sUg^">0cW6R`d"JIaLbK13^5ic\u(_I$Ro\c[I=_]l8HCpkAGDR8;KD)Vm_oeCV!%&q')*:Gm)DCusr]$bSKE0.ohRhN`VBbJYM.ZQROU:Lq;j$\Do+nbdHOncb7-3G?;XE\f;+fK;j9Q;&eB6^t`9s,GI]CsUXY7*:Q,'](<BaRs#&24JRNV2M<n!,39?b,_%n"\sPAdIPum[E]r1!&s/]h0i/hV\3`5`Y~>endstream
|
||||
endobj
|
||||
xref
|
||||
0 13
|
||||
0000000000 65535 f
|
||||
0000000061 00000 n
|
||||
0000000122 00000 n
|
||||
0000000229 00000 n
|
||||
0000000341 00000 n
|
||||
0000000418 00000 n
|
||||
0000000523 00000 n
|
||||
0000000728 00000 n
|
||||
0000000933 00000 n
|
||||
0000001002 00000 n
|
||||
0000001287 00000 n
|
||||
0000001353 00000 n
|
||||
0000003436 00000 n
|
||||
trailer
|
||||
<<
|
||||
/ID
|
||||
[<d26ece81ddf37883320773cbdf3e68fc><d26ece81ddf37883320773cbdf3e68fc>]
|
||||
% ReportLab generated PDF document -- digest (opensource)
|
||||
|
||||
/Info 9 0 R
|
||||
/Root 8 0 R
|
||||
/Size 13
|
||||
>>
|
||||
startxref
|
||||
5323
|
||||
%%EOF
|
||||
212
Les07-Supabase/Les07-Lesopdracht.md
Normal file
212
Les07-Supabase/Les07-Lesopdracht.md
Normal file
@@ -0,0 +1,212 @@
|
||||
# Les 7 — Lesopdracht
|
||||
## Supabase Setup + eerste queries
|
||||
|
||||
**Duur:** ~120 minuten klassikaal
|
||||
|
||||
---
|
||||
|
||||
## Doel
|
||||
|
||||
Aan het einde: Supabase project gekoppeld aan QuickPoll. Polls tabel aangemaakt, en homepage leest uit echte database in plaats van in-memory.
|
||||
|
||||
---
|
||||
|
||||
## Stap 1 — Supabase project klaar
|
||||
|
||||
Account + project moeten klaar zijn (uit Les 6 huiswerk). Anders nu doen.
|
||||
|
||||
Check je gegevens (Settings → API):
|
||||
- Project URL: `https://abc123.supabase.co`
|
||||
- Anon key: `eyJ...`
|
||||
|
||||
---
|
||||
|
||||
## Stap 2 — Tabellen via SQL Editor
|
||||
|
||||
Supabase Dashboard → SQL Editor → New query:
|
||||
|
||||
```sql
|
||||
-- Polls tabel
|
||||
create table polls (
|
||||
id bigserial primary key,
|
||||
title text not null,
|
||||
created_at timestamp default now()
|
||||
);
|
||||
|
||||
-- Options tabel (relatie naar polls)
|
||||
create table options (
|
||||
id bigserial primary key,
|
||||
poll_id bigint not null references polls(id) on delete cascade,
|
||||
text text not null,
|
||||
votes integer default 0,
|
||||
created_at timestamp default now()
|
||||
);
|
||||
|
||||
-- RLS open voor demo
|
||||
alter table polls enable row level security;
|
||||
alter table options enable row level security;
|
||||
|
||||
create policy "polls demo open" on polls
|
||||
for all to anon using (true) with check (true);
|
||||
|
||||
create policy "options demo open" on options
|
||||
for all to anon using (true) with check (true);
|
||||
```
|
||||
|
||||
Run → check Table Editor: beide tabellen verschijnen.
|
||||
|
||||
---
|
||||
|
||||
## Stap 3 — Test data inserten
|
||||
|
||||
In SQL Editor:
|
||||
|
||||
```sql
|
||||
insert into polls (title) values
|
||||
('Beste programmeertaal?'),
|
||||
('Beste IDE?');
|
||||
|
||||
insert into options (poll_id, text) values
|
||||
(1, 'TypeScript'), (1, 'Python'), (1, 'Go'),
|
||||
(2, 'Cursor'), (2, 'VS Code'), (2, 'Vim');
|
||||
```
|
||||
|
||||
Check Table Editor → 2 polls, 6 opties.
|
||||
|
||||
---
|
||||
|
||||
## Stap 4 — Supabase in Next.js
|
||||
|
||||
```bash
|
||||
cd quickpoll
|
||||
pnpm add @supabase/supabase-js
|
||||
```
|
||||
|
||||
`.env.local`:
|
||||
```
|
||||
NEXT_PUBLIC_SUPABASE_URL=https://abc123.supabase.co
|
||||
NEXT_PUBLIC_SUPABASE_ANON_KEY=eyJ...
|
||||
```
|
||||
|
||||
`lib/supabase.ts`:
|
||||
```typescript
|
||||
import { createClient } from "@supabase/supabase-js";
|
||||
|
||||
export const supabase = createClient(
|
||||
process.env.NEXT_PUBLIC_SUPABASE_URL!,
|
||||
process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY!,
|
||||
);
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Stap 5 — Homepage van Supabase
|
||||
|
||||
Refactor `app/page.tsx`:
|
||||
|
||||
```tsx
|
||||
import { supabase } from "@/lib/supabase";
|
||||
import Link from "next/link";
|
||||
|
||||
export default async function Home() {
|
||||
const { data: polls, error } = await supabase
|
||||
.from("polls")
|
||||
.select("*")
|
||||
.order("created_at", { ascending: false });
|
||||
|
||||
if (error) return <p className="p-8 text-red-600">Error: {error.message}</p>;
|
||||
|
||||
return (
|
||||
<main className="max-w-2xl mx-auto p-8">
|
||||
<h1 className="text-3xl font-bold mb-6">QuickPoll</h1>
|
||||
<ul className="space-y-2">
|
||||
{polls?.map(p => (
|
||||
<li key={p.id}>
|
||||
<Link href={`/poll/${p.id}`} className="text-blue-600 hover:underline">
|
||||
{p.title}
|
||||
</Link>
|
||||
</li>
|
||||
))}
|
||||
</ul>
|
||||
</main>
|
||||
);
|
||||
}
|
||||
```
|
||||
|
||||
Restart `pnpm dev` (env-changes vereisen restart). Open localhost:3000 → polls zichtbaar uit Supabase.
|
||||
|
||||
---
|
||||
|
||||
## Stap 6 — Detail-pagina
|
||||
|
||||
```tsx
|
||||
// app/poll/[id]/page.tsx
|
||||
import { supabase } from "@/lib/supabase";
|
||||
import { notFound } from "next/navigation";
|
||||
|
||||
export default async function PollPage({
|
||||
params,
|
||||
}: { params: Promise<{ id: string }> }) {
|
||||
const { id } = await params;
|
||||
|
||||
const { data: poll } = await supabase
|
||||
.from("polls")
|
||||
.select("*, options(*)")
|
||||
.eq("id", Number(id))
|
||||
.single();
|
||||
|
||||
if (!poll) notFound();
|
||||
|
||||
return (
|
||||
<main className="max-w-md mx-auto p-8">
|
||||
<h1 className="text-2xl font-bold mb-4">{poll.title}</h1>
|
||||
<ul className="space-y-2">
|
||||
{poll.options.map(o => (
|
||||
<li key={o.id} className="p-3 border rounded flex justify-between">
|
||||
<span>{o.text}</span>
|
||||
<span className="text-gray-500">{o.votes}</span>
|
||||
</li>
|
||||
))}
|
||||
</ul>
|
||||
</main>
|
||||
);
|
||||
}
|
||||
```
|
||||
|
||||
Voting bouwen we in Les 8.
|
||||
|
||||
---
|
||||
|
||||
## Eisen
|
||||
|
||||
- [ ] Supabase project actief met `polls` + `options` tabellen
|
||||
- [ ] RLS aan met open policies
|
||||
- [ ] Minstens 2 polls in DB
|
||||
- [ ] Homepage leest van Supabase
|
||||
- [ ] Detail-pagina toont opties van Supabase
|
||||
- [ ] Geen errors in console
|
||||
|
||||
---
|
||||
|
||||
## Bonus
|
||||
|
||||
- Voeg een 3e tabel `votes` toe (voor user-tracking later)
|
||||
- Type-generation: `pnpm dlx supabase gen types typescript --linked > types/database.ts`
|
||||
- Loading-skeleton voor detail-pagina
|
||||
|
||||
---
|
||||
|
||||
## Veelvoorkomende problemen
|
||||
|
||||
| Probleem | Oplossing |
|
||||
|----------|-----------|
|
||||
| "Invalid API key" | Anon key klopt niet — check .env.local, restart dev |
|
||||
| Polls niet zichtbaar | RLS policy ontbreekt — check beide tabellen |
|
||||
| `.env.local` niet geladen | Restart `pnpm dev` na env-changes |
|
||||
| Foreign key violation | Insert opties na polls (poll_id moet bestaan) |
|
||||
|
||||
---
|
||||
|
||||
## Klaar?
|
||||
|
||||
Volgende les: schrijven naar DB (INSERT, UPDATE) — create-pagina + voting werkend.
|
||||
@@ -17,17 +17,17 @@ endobj
|
||||
endobj
|
||||
4 0 obj
|
||||
<<
|
||||
/BaseFont /Courier /Encoding /WinAnsiEncoding /Name /F3 /Subtype /Type1 /Type /Font
|
||||
/BaseFont /Symbol /Name /F3 /Subtype /Type1 /Type /Font
|
||||
>>
|
||||
endobj
|
||||
5 0 obj
|
||||
<<
|
||||
/BaseFont /Symbol /Name /F4 /Subtype /Type1 /Type /Font
|
||||
/BaseFont /Courier /Encoding /WinAnsiEncoding /Name /F4 /Subtype /Type1 /Type /Font
|
||||
>>
|
||||
endobj
|
||||
6 0 obj
|
||||
<<
|
||||
/Contents 23 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 22 0 R /Resources <<
|
||||
/Contents 14 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 13 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
@@ -37,7 +37,7 @@ endobj
|
||||
endobj
|
||||
7 0 obj
|
||||
<<
|
||||
/Contents 24 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 22 0 R /Resources <<
|
||||
/Contents 15 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 13 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
@@ -47,7 +47,7 @@ endobj
|
||||
endobj
|
||||
8 0 obj
|
||||
<<
|
||||
/Contents 25 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 22 0 R /Resources <<
|
||||
/Contents 16 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 13 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
@@ -57,7 +57,7 @@ endobj
|
||||
endobj
|
||||
9 0 obj
|
||||
<<
|
||||
/Contents 26 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 22 0 R /Resources <<
|
||||
/Contents 17 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 13 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
@@ -67,7 +67,7 @@ endobj
|
||||
endobj
|
||||
10 0 obj
|
||||
<<
|
||||
/Contents 27 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 22 0 R /Resources <<
|
||||
/Contents 18 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 13 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
@@ -77,258 +77,86 @@ endobj
|
||||
endobj
|
||||
11 0 obj
|
||||
<<
|
||||
/Contents 28 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 22 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
/PageMode /UseNone /Pages 13 0 R /Type /Catalog
|
||||
>>
|
||||
endobj
|
||||
12 0 obj
|
||||
<<
|
||||
/Contents 29 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 22 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
/Author (NOVI Hogeschool Utrecht) /CreationDate (D:20260607080655+00'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260607080655+00'00') /Producer (ReportLab PDF Library - \(opensource\))
|
||||
/Subject (\(unspecified\)) /Title (Lesopdracht) /Trapped /False
|
||||
>>
|
||||
endobj
|
||||
13 0 obj
|
||||
<<
|
||||
/Contents 30 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 22 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
/Count 5 /Kids [ 6 0 R 7 0 R 8 0 R 9 0 R 10 0 R ] /Type /Pages
|
||||
>>
|
||||
endobj
|
||||
14 0 obj
|
||||
<<
|
||||
/Contents 31 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 22 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1449
|
||||
>>
|
||||
stream
|
||||
GauHK92jk1&AJ$CoFY\ZKd>E9b`.<fQRus<8!m4-_U0VUNZJ%J@Li:i\,DJ\">bUs>*:XPWR^rilg%=R",\1$5Jn5Omh7ZAB>?K#^&mn^#EqgUA)]U3KF9Cq+,Htr)fQpN>Q$iGG7sBK&HNCZ-n:(:*dEPSV#gf?f1F(0A-TbsEYo?:W)OfL`I+Atc?bf_c7u[rHm++/odr@-_$c'4d36`rMpB\$[7ON)Y"'o3V%8b)*.7bKb6@g/c:o?4dPQ]j+uA2PJ19Xo:+kJK4IJ07S*U\5%l!fY"W05lHqJe<PFG<#9qJM#RC8-YoK5`&Y^r!RXCC?]n.qI3)3KL=@eJV0Yp45Db42:be<N@Z0*1$2<&9/Q$g$sY>sRW+(WK]HI@jMTq_:BAaTA^'(^h64)pF=qc<r\Vg0f)Wp>0I)/9E;WM"00P\,WI*A=^&GE+92QMS#6;7rl*s9b^XgkN0upFQlCTbahBn(%kS!3tGLF)pF=A\_@pi],dTY2qeN6iS5qr54KLhXA@%bgh-Y28(U_jVr@X&3Q;V1HQ]S<gE-Oo@S\fEEYfufUf7O=I6fd0*ADcF!GYnJ[4\t-H4EK]=bQkshj/&+YB'fTVC:'c$Q,)hKn7:mA<G!KgE#KW<dKAR0f6,*m0dY<*Z\E[GD/:Q["cc+Lir#4\>i\`R5Eeqks/9LpoA/<:22(;pnF+q)k_tb![LX.pqFJqVXFi6:_JICL@_cGB"EfH,TdJM]V$?=iO$i"1B2e=qmt\-@RNM+^jiH`Bfn>rbWp"<al#Mm<5"rn?EicZ]t$5Z$$X&tf!<m$n^LIhcs*U=%6W5\m%0"lJ)]C-h>.IZi/+,kH;kop*H?lRd5cT%--7LA^79h=^qj/VAkb#W=rb>m$jj.qP-QbJ/7Y76d8K:T[-0Xg`ehVYD)?T8$>].n]j`2s@0odQrk-pcZde=Ban+^c`">14SmQ!7:1.K;0G-)/\0o6V9-6i0^t^Kip"I>?ctI]17cEnfNFN%?1P\<SS%+oUS!DRJi`EpI0%-"flZkp0P?X_D-mK.Qb%h"3^PNRLY`?+DEd0q>;=`JaXO?Hhm#a/,GbXtBF<e$Ff&0%WijR3LSDJ(OY!PZ$4Y?q%*_A<[]MEag&66'P,GpC18kmK7S\_f!+b=?5i2XTs/BTAj2VE+s8DjV02Tm6m@@!?mO4(U's#AHUKaF+8@$!?h<6?IV>^/@H;)6Ikm6c)=acu[3X$bVZ34ZVf*fb#EIg9RQaEsPDC2a[La,ei;Hci-("c6<Gk(_@()HSWdRY"hQ4+;BpH/)EHl]c3_'^P\lkXaTd%.@bQ926+sUNfafFSlY0IjjEB,XlI;Qed&6bMS!>Ed75`Eq(MYr<mC7-L_8-2>AUU_&Jf0<5KJ^LH\-FDQf1IZ`$FhcjB.9)h?eqI9)l`FM>7\FZ+Srch1]'^\5!ZY&D'.gH>qiJ&2DA,Q~>endstream
|
||||
endobj
|
||||
15 0 obj
|
||||
<<
|
||||
/Contents 32 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 22 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1662
|
||||
>>
|
||||
stream
|
||||
Gau`S=``=U&:WfGfZB'5N!&)a!O`MUF4N.=>ZUHlR1)d*1*)6O81LV=I2>"2b'$M4P=[1U,$2RhpP0IcMD*QY:Y#NlkA^?f!TPlK!%*PUq'itF#@@SM,HbP_6te&Z%O;hXJoVUe&4Rq&H-ANP7C84#2'Z;F)E@.`MCBr*>W`H4&/A'=,nS><84U/_$PIH>W[.tH.)*7,ZVN[S@M3h7Tpb9e_/KSDSFWUF'$<NU_L)g!\*lMO^u*,R<lnoMAFNB#g>oPo"m66l3e<XkS'?hM/Iu9="nSWe_$F"pP_;B'?-lMS'q8cK4OAG]8ok)^"S)SgfV:jI1JMm]F;-HgIR"`]1#<D4D5^`r!fSSe+j+:s#?%NZ]O$m-;H(&E&G[;6KM&8a'&B`_!\Y3\&LFr#TY)g&YnSARi.A:YOgi,!&8HI2!kcp,oJIZ)kb'F4k[7)=&)PlTs5;.@Rfo'D;bQQ/VYp4sKXe!a8p",LUSOSmc?KIS%S7@l2J:@-_>>G".]CV&c0ilchl$]U;E+K9d[Jn$?($C@K<U_;Cf_HMa]lFYkn<o:SusPIVC$piRBB80%:AJpd0*^1G=$FcF]tO`m8_njCWHn]gLf+QMU[:def3/N[JXiU#J%9CD:TY.g'b73*9R"7CiMFc-mIY7*T5rHpPHjkq4,o'rB71u-bYM,Y]lQt/b1N*)"uBiVG8`(`ft<m->fQC8/f\+W@U*sWFRcd8Vi@O/")Gi,uYB^@kBbrkJHBd&])nCa<gE7Ke7/5fW+OaQ7`u/:un"<bb>c-W=lPE;u.]k0Mc%;Y$N/S3@s7DSZ4XF>>_.qmQuj!b*KbVkS0,sG1A.X?%S-=5fP[<<@%;h6&%3a'ohZ85t45YU/:P@q!mtbCW5H"GMue4(\_^%"VOn/@[#=ZT.tQB]Qko`muY)T#:c3ZbI#!T0HN5XKG%)=S$7;]58H59M3M38qkFcRij?%3+/)&9EXbfJa'</D5Ws*eg;r\`/<QHVdTnS4?uQPjIU.KG&R\h>q$NUt0"2T(s*IpV6?6e(04$QqQOrT/iHgB#Lit#`?%2I/h=[k5:)$"gq'1:!H]Xn_+!fXK#46b],,3F`@5HojG/SHWjm;"cLIT,MCU*c]Jqm4tc&FlWJb,b[?7jX;."?kjRkAR$cC*u0>N1m4?KF'm3tC'1Jqt]bDYc^:mTpH>^Ymt*FN<LAFW#tWAo-P1q.I+gJ7s_G3Dp;;9l6!-OMP_%mpRc=F^nVs'^q5*c9@cl;4CU@k9Rm4jM-.9A2p5@D4cf!fXOfd5:&)_(!nN&(3k\*')dHT'"rr.@!'cgPGc>>Ao0'8SSX!%p6pgGqt-B"[W\D8a)$X(^R-$(a(dt:.>q2?en^3-`ajQ=/.O$;b8nSC+e?8nj`XG(hhYP3UW=J%LY8Vq:l^uq@F#eWE2p77*PoSiH=P9a1>UI*ohP;]]"T`dOl/qg*LL,M?-G:rHa,0'U?mE#i6rRV.$f$-8_42o&1a[6pYLNArP^@KHoTIC[dK0;aBTX"[0Mu&(cr=.q7fnO6Ko<a&1WqsQ(DhOk1ioOb6Hg4Koi?Mg=j(:.K.HS9aVN^0\i?\M*G`WUmS&=WObNN"hhk%Rt'r"js>*LUP#_Ar?HQ"_HFb-D45il-+8;iD=Ypib]4#><aEG#qjV4W&e;a-\[,<A~>endstream
|
||||
endobj
|
||||
16 0 obj
|
||||
<<
|
||||
/Contents 33 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 22 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1876
|
||||
>>
|
||||
stream
|
||||
Gau`TD/\/e&H;*)EAR=).;G<Ipnfmies@*<(8P[)$l`Rs@q7W$,>4INVoaPgpJJ,[h8CdpTsY>6U3Y'JjP;s]L]Fl%;LEg!J6-4t]d5olN+YBm@PBut_f>.;*hn6Y`W8(,4"^]t3r'/Hb?bHZ+Q64bJAMpJaabglP]@L8CF:EjO;O?JlOcB[@&Xtc7CZ1R.shL-9!)l`\.J)*IDo"DoNWXkG*Zb9Z!__ZW>=$W3XfH6-&;!l#0.hbGRs8;99X\n-jnl`98kgU?p^iGQg`mm\Mc_fRq)cDT4.XKGL-D&*$al*\INprdO:\6\cFk>Q[YmLBn:Z=]3(g6>#CKD5`0&`GMiDUnq2MTaJ=X-kUcmgo0jm-I?I5?+;8(V+S'VN\1&V'bSoiNq0gVr:q4$X4X5Q8.r90nh_N8uE-aF2LiPTF_P5)H/-FXc"[-I[XPmomM7u6B@G)]!oc10eN%kRJQuc.jeRJXm,,>CE_.>K<`Ln:BEf.0=+@n!4qAZWRnB.*L_^dKn]kP"-p<@>QQX4Ue/$_-aQcYPK`\"1o,?<i8.uZ*$.A6gA?!!W>AI9LX3BfYfHZeu[p%dk*aida=:Ckdt4rs%:ZRejq7jEH@&aH$2)=%[$)WX<t-Y&-Bs#peho(^,mq<s)gm@2kf&40Z*.B9ErAS'e,N#Lh]qLmAZ>ToFnm)Q$$9+\"aMfrjH%[)j8U.J(G=-FO,bt+FpbtXCjbm7X,iK^V8S=7;`N%%2Rm-tm3P[n_<?=J"g?3e1N1Ur3C&hTdVCE;"R^r+K4s2F]mj:ZIp3$cOoHkta53)UJ:bY:C?Mo%<'g(WhVELI<EHZen=V6g@.Lm,n9Bj)qIA**I6oBhWT2>doFFjY?j[]=VXo:i9F\NPK\G)PX1GX?ju<ti"`ghVULp`I2WB5_e$d\=YbVjWQrQY5$aBOP@uC#E0ME*@sl]:,-\>BCo&'Cq6PHnmMFAPiMoN7<_@cuD1ja]O8-H%Ntrr"pfar:(E[:q+[HQGhEj6&N44_Us*uEuG,)8?OYk9qsDe#]?m9b0tPM(rnOgS@`<;@%+ZE`+@F^3P&1D=qMM)iGHpd5J4#36?A>n]^Vp77p2NnC:cH&RI;<\D0;<$bZk>ikk$e*@($KWb`BW881(d(iNC'O[oZ>,-)K,I_,P&n(ZHhKdcY#$`$YJs'gDRbq^WuZ!+lRHL[YWg!9H9t)>"<dra_qEgbtt9(_tW$$&iNY[f<G`QJ-/K\E,bDVC&RVV/fAXFk2%[Q`3p0KMt+JgkD.+nf1c`]a)NCU2!\4-K.Q89*5)$-A,bDD*/Gp/X$b>@djGiVT4!kpA=AV6"X&,R$d,7@,*t+bbspH?"&I'<oC+$h!^6^K+<K$.E&?+ChH;75ho?s_hqFF@7CAMqltHWpD2HngC%0JS)K\W]a8(d1XsT!!kYi=5mJs=[b`<G?nLl<Zsem+E@gB+$FA\['MMqT0bjS=O%\BB3jBR12k#p_2pBEs,&Z/[12+9kA*o]Cm>uKHVRA:FU<OP5Y/os:cpGd:5n*Vqh>9bh_@jIr0U>_s_j.dg^Pe4=^$h\I3?j']%1J.maO!%(Zi.MN7le'+cR%T.pL!=T7BeUoik[ag2TbAB[.Rm>bB.TSm2KaiO4l8Q/+^*_gi#]eB8r,LARG$NjU:;A^Xb6MD$.PjZJ?!KQBRl]:']["K313>"s(uI]"m)JYFH*'NCL*MS(\>,I96;8*85KU:M>O39\[HtZQ"e>G[XCDlci0Qf>$g$kfn6pBi;/aB)L/3<d+n@aUWn5Z+Ve3,0Zf=gNB_p`X9_b?qO%D$0>X661n$!@_ogn2pX+`:1.dsX1CYdhp@?[>Wb]*[&$dq_j:>'V%mQ7qo31#%u,)oZt=q<o_nsJODgH~>endstream
|
||||
endobj
|
||||
17 0 obj
|
||||
<<
|
||||
/Contents 34 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 22 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1850
|
||||
>>
|
||||
stream
|
||||
GauHKgN)%,&:N/3D"T'c&HmUa$+dRCc/^pLVFdQF--?<85r'+:?qAG,nbD"R+=2oRCb]g?CjR]>_Oe*G=R7(aT_Q^1s0Djdq%uT)(bcH["Y`4FN8MIpEUQDYE1[A%!q?ut64P:5g^iJh?4,+.I`Ok\M?ZHP!eb#NWDEUc]-(J^j9?BT4U*2$BqPS?`MB^8*IEkBS0PEadeCYkp1s\mF"\g<g,jD_r^/Bp_:Cn0W1G,ra[!^&J\h5u5/2e1G%lieRC+dI;s%\8<l0O]!<.3N0?gt`D.`>@(k72.Td+6%$;$*H6uX+;SLJA5cZK?^5qf!4K4og``%5e&I(jSpH:3!!_sI+'UFc$l7EoV=C6tY9k*0hAlQIN:&Hm6&S$faR'Qo/bV</2663RhP.r)D'en`i!'b]Y%;*f'M6:SW'pL+0lKjMHlnXs#NW9oAMa%2k&lYF'8UKam(O)CMFnO)@&g3t!cp?er*euNQ-rROJ&H6j]8C6fL?Y):f(Kd>`<qr%8NTaG(EB/UZZcE^;Zj*:2BRXZ>hH>,oQ>i'u"%>L*l0T9!K;3KVFKPMu:R@`]\^^Vi8Rm@#J;&i;#S)sWf*MC7o4HTPZd+"AblmePbTW,IQ8#\\5QF`#kg55+*N75r"4hFfeKJ.(XF'3M/bsJVn&p/,Yc=!nLB9!Kd@'6`>c"(eL_2Ne-b-4VR5c/Un'[QL-n5'a)HM*!'3PtQ,ZQo6q_+02>^4p<M"@\_Kkn7l/iF[*1*KG+#O[,kQ+#BB%0!UO3km?P]*L1E+N`>QLYCthSIk&"IG@#6DD6?N["Kp$RXIIArTG<>\O3'7'!-*]H)>"qQd@VD#R!V#:YDm[5@P]O^rpUfXbaiH&)&uB]\resY5>GFCQlcSIc25iFr@45(HnpN?PClUM`lY?-$9ZKK$Yj_/FTRd?5sqpW"IN(T@b4iu6jo@jIW<KH;V><QT-.Wp:LpE8aF$jmnMOHeb#P#W@0a7%f\6JTjPW#F;$sX3(WC`lR$2un08C@]A.H`C:p3J!fhh?;4&?*(5/kAC'lhQ%)n!WH1$"ZU/8SK"V`%$Bktq"JY?cTJ)3qJ;3?F`r/gd_l)#0iM[#3U37Aa^0GW"QQ:,D7W!Gsn-:qO'::6OgW19b_<g7;:pl_2`26f6l/^720eCJ1Dt:#!p/keYd2F-AuZlGCbR&XuGg[OTF5EAa8To"pd$.gVYaHrDOI?=_&<Uo2<"167j*546J._<X\B"8?<mSE;TY=$oPnhm&^+dM+o9j($+G9(BNm_O8q_.C$'XHDPKCY5QUo4+Y*$$WO`M7]X%Ober<)EPAhA*kA?"@E#KM441RHlFcGPf4sYol8;?qHHh:UW;g`C:C:)V<(`V19%n!B_.Qu`aYgK,$^8G]!PJ-)*)QamU:m1dF&K\;id3V'jYn.Pb4Su!qR*)s\1::uCI_akZqVY7WR96ITIic>ID+$<:$B68K\4p-5_gEBV.dMXVfT_,i'A_fqFH?%Xl7t;XC8Q?[S@J??f3G^g5*<k\)2.BJjpVg(6Fmr.UjbeCYM-4OOoC0^]FAEZZ"[OG'90tC>sJ6eeR,aGd=Df\K4c0/o,sOqZIh,Q-0e(8#8uV7'jrKHU:*]qdcC;\K2dFT+NP6P8:qa3EN]ur8ROD\30G+EG`6-*S27")#*Y)Yq[Y0cggWkmHW04_/]<n_/6_(*S_$$l6m]cob2Ub;>jJJ(E;hh#5X!mroYtBUJq8Xk;KNddQN!1GW2X`%h0A1n*g@55<*%i7Q)4bmso\$e()A7?oqbdk&2Xi0jpUP`#^pF5$P>rG@I/C>Q<!AW8ub%R'6dKn@>qeX9t.%b?WB-4&HUU&tcuM*]S*%r<m?OR"P~>endstream
|
||||
endobj
|
||||
18 0 obj
|
||||
<<
|
||||
/Contents 35 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 22 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
19 0 obj
|
||||
<<
|
||||
/Contents 36 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 22 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
20 0 obj
|
||||
<<
|
||||
/PageMode /UseNone /Pages 22 0 R /Type /Catalog
|
||||
>>
|
||||
endobj
|
||||
21 0 obj
|
||||
<<
|
||||
/Author (\(anonymous\)) /CreationDate (D:20260324182754+01'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260324182754+01'00') /Producer (ReportLab PDF Library - \(opensource\))
|
||||
/Subject (\(unspecified\)) /Title (\(anonymous\)) /Trapped /False
|
||||
>>
|
||||
endobj
|
||||
22 0 obj
|
||||
<<
|
||||
/Count 14 /Kids [ 6 0 R 7 0 R 8 0 R 9 0 R 10 0 R 11 0 R 12 0 R 13 0 R 14 0 R 15 0 R
|
||||
16 0 R 17 0 R 18 0 R 19 0 R ] /Type /Pages
|
||||
>>
|
||||
endobj
|
||||
23 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 779
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1147
|
||||
>>
|
||||
stream
|
||||
Gatn$968f@&BF8='RNM7K4;NjgtG=AFOHsA*dZf)Jsp/aFpp4l\*qHm0S<;9$8r0rX53eO=tLFT]P.+$>lhTri9CCJarpNe<"K)X/\I-rVh!?iM@jEf`@jgr6Rbb<7Ruj/2tj/".&cRn0u+d99fp-aX"("qF#'AME^aeX/NQ9U\@B-m&)gI\kgn3i=giti@iF26iRYPK3D\'rL_>O#^n<b"FcUjU0hI$2WaC.p>6e-R'[oAMi?mWO!O:FpNkhTNL4M%ML/g(!'<+u!F6hDMGEP&-I`^#WJg9`L//<"B:biKZ<>5q`6cia]R'E2i/Vl=%Qs/u=:19M"^:70Dr.-\b$[C=dnW.q^>)_m6="kKZO:\iB"08SE5R[\DI:D#/7?fXR9&IRV;C*m"4EjGb6B!=LK0/h5+itY^4Pt!DB5Tqb?l!NOb!Q5G$):T&=;\1=?_ud!*fijm+1(B4.PT@NqMJutU;uS(>:rKc84kH`Of!u:iA[nF2>cA49<luXgmd]>34Is01^AsKPDddoLKFd@#KOsJfa,sPVn#T9Y'>+YIVt**IWL+D@<T"MlOl?"Q7]G'?/ar3ND%Sl<JCJ@MM4]90\XgMMm(fS$$hXZDRtDdHiq+QWP-7Lm!Qfs&eJP9'-*%i4pFElF-'idc!U_1.Ulp:r6l9"8cuNU4Tdl*"t'$QpuDmZnuBNBaV>FePP):%WTph9"UV0XZ8n2CX8en-3b3Hj,W;,g$/LS3i<n>m$!Y,JQWBQ:KM-m)'hE4u1aoF'c%ACQ(O_^e\c~>endstream
|
||||
endobj
|
||||
24 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1029
|
||||
>>
|
||||
stream
|
||||
Gau1/gN&c;&;KZP'RT)O'7qJ>VDk%eEpubkPF;%i2_rH4%Nls+Vg8/3**fD$-Z[6_*gcu(rE._P?U3PL"Z>VA!;IJMaVb/5+eA`**"V%%3/n/="4WkZ?mgbLKHTnS#=UqS`i6ic%WLY-i/j'o+q.47oFJlfT]SXH@H'V-^jqmcH@6+;EOk#.[-#o/Y1XE*98GgrYd\@m.l8E0Mb0R/^O6/%D,,>%%H(q#jQj#g"!NZ/Ri[=A)9W&/C8dTVZm1[5/fstteKa",kP6j7.\O,"5-jbX.gi"i(U1X`XMVSDGd%!'nXB:2hFo2s!'(<+0FhO9-.?fD_hTJ(Xia%D#3cW7^a^=AiGPeG0aPLV%%`k`BhQ9!HbOD5OL0NO-Itl+2dTIrA>Os?E3Bn#`^O=O83Er3?H[SBg?2:Q[cVCDPWqR;ZM?*,I9*ORc="Xo3i0sYqd=l+%pR)!Y<!_k;Xee)WrscMMG@m1g.T!9l7kg=C<$jI`RNn]Y^]OW=hTCaC]NV0<l+X,(4=4:$'^a1`U)X+.TfcrQ'/s%,b;6rJB?X3-O4)FMO.C"j/"Jq2mR-9\1cUKbDFMFQ=R'TJ-p+]Ko4;F`N5@SQ.,fTZY9p%#s34<<K0nF8M1F5n4kY35?T4XakB5,*dLa75q[;&_A2qoSYaFKG&=eokp:1Oero/U2/6"0BW"]IKW.nVdrLuc?5D8mf2Q:&R[_e0$#H%1g%6ZjI809+&K5V62EcT_Z512SXG0`OlIEfQ#dS.EUmEs@*fd=1_*jhF7(-?i^u<A3'9HPW/pP2^3bQ#Z.pCOoBVA-^+MH.dpP6"a`Em5l9iE1[W,"*!DHo'].?cU3600dN%86g:RjLFkW!3*>1N'gG"4=pJE$fS0b%glM[?jTm=/hk7ibok%4qU3-(BR[7^AUC&Q'#ocFlRhNEEqR[9f@cn8e8MRl!@N=\30c,$8,YXUf;/PCb,#KN(?*)JJZ%l&]4ntDem:oFPNDtPQErXb!0R>5p3n>NYUK9OlMK:en/8!P5u)@"%>E0`W~>endstream
|
||||
endobj
|
||||
25 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1346
|
||||
>>
|
||||
stream
|
||||
Gau0C>B^uE&:WeD9`9VX/67+))KL.Eh"KeK[rH4Zq[i>&Ad?tUPr=!Z,rY_h*D$WF*+MO.)N6r0b^B#AoP):\U)2FRP76Bo#l;;Ui&6Ok^g6*>kQH>TFZt"o1Xih$+5%6]^^D!?r.s]QR+]1o\/m=O[%,2A(-1XjMHP^^nlD,T7NlTPFU7Yc!o7A)"n2P_b/N?gc?"f>=aZ(c&4W:"oKj^G:TpZm3-H5E\*+'Pa6d@NY!G@1Eh0/,;>cEHUV\!$-nELsqOS%UiX<X#3h9M*I%]t7@mLbA#01E]8R3,Ir8Un@V4t+hYhchf./XS1p52$$CYYW'I9slQE5l=&gAtR$$5Lj+GC0\F>"kq1TosXHEOHCQIc.VqI8-1Sl[c_9fF=Ti=V?]bs!ocY>I.NW>[_'nAFM4L/r`]jW82Y6ks[gnX-cmu1UN%p"e)UBU'`2K`3E-a%X+c6"WQNXO]o*\\39`&_`YHsYfO;*d"TLl'h?&:W8;FUZ&m1[>6,EDDdMYC)ru^aGhb%?3=tR%%rZJ[lcQFY7B<Y,1*?dZ<6TY2F#E`Y#e1b&W3Zj_`eS.R_*-;t5>;;.E2RDI]Q=V%X(EPE=[B4Q%s:f+Z:J[)FE:VO6Sn$cj=F#53#k8RN":Epjt3.@\GMJ16ad/!FWhek4E&cm"C;[Kp\4(9i3etf0JYF^Z3?+g2?/tEg0AW#IV?:lq"!NIMoN.[Cs?,NZ-GK#LPaJ7Y4p6YM3k#!BSn-XW^mXIF.?(1S>q->1H*->P0P1%HYSbhV4;6MSU40"*L#.0eK2$Xg&+@`Q>L0uo\K<K$;'g!&m*`W#]M_uoY1^`P6s^0hiIB9Y;\uO6^iDhCS9Dr$&bidbY0&>Z;1*i,T\uGP9N#OrY@r.,O69p.F#4Fh8,_.;k7?bdhY>R_R(F[57l>t0.D6!%U'f_D6sq[[D=NpQ+4<c)]MX_0o[OdB8Ys&\;7J3]8#EnS5bR)VBq\V=/NN\#J#M!ULpD!C,`?V2qf4;[pnp$^hSjh8Idr9=B5M`1LGHmRK3E35oVJVdLOf-fSGM1`7H_,8/O!aFi`3?aQ.M]d9pCT8h&8@^VdL^VaKj.[CRF0i$enR:=[5Be=7<A'5?JPC'3.88@3b-a4-;Vgg5J)o)%*Y2Ks[?+c?@@k_qo%%t6<\;PG.aP#<`fL8%EQ%q+)f^+a+5=#DR+f<SepT8R?>\U9Fmm0mhCrldsb>QV8NE/TFp*IoaEk.N54T&44Kj"cO>JYt?$H\*OH7bRg9kH_SVkRYmJE=3tN$TP?]p`aT6WX7JSaF.[rDQrBQJNhm\=r,kq*%R9g&("RB3M&lR)0eot]T?O'q\F/-J^2#Jgh*\~>endstream
|
||||
endobj
|
||||
26 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1616
|
||||
>>
|
||||
stream
|
||||
Gau0CD/\/e&H;*)EAIeukn;.%-!Br-@I&8p[`K;[?`F0=/372`OfCt8"bH^NNg-B]Na995Q37dN+7C9-4ac\]5nAH.qgXb2]GQ:u`WOPBnJ&Wd">G98YK*2P*H,@(q'6mT6OsB`8%`7e`-(i4nTsuHK@OU[hEdc?'*]K?(r?M2Z6<Zj^cBrP!0?aqnbiKYZLXHLn5AD&'MN38"[5N&hT.GW<FfA'_>"Y_cOI+nnTQ!5^Y]+%KYSNF#[V0GgV%n;aCbA.]]'j>Jd\I7N+GtYQi-DHBa+akV3D%kJ<0%tP=mcbP_"O$pLmho"[2%#0&G.[*TN;;nT_MlB96"c5o(9$At%6(FoKT?Zbc_$6F2hM1hYDKPb)/HiZP$ZB-Q#])d0&lHD^ouocljX1N"Bo0itWBm2:q=K8gbW#nEs<A'Fq\"P;b5<W,-YH3KKNRr[iS'<Q.lS#bJ2^!V#5JJYfK)@tk7IgE+$J)5?>#WEbZN-^+9JCQ$Q=hm=>rdm*T0eNPm*^\!,`H)uCRI!dY;phdHd>-\h9K\dn"r"VbB6I3c=17fBGDha!LD-(e0Sa?kF6NV^lFVYIm]VW?ZJcBnU+n!4rG&GtL;lP&X_[fs+i.?ZestQ"oBApkq2kJrE>%FU$?SL!C3%R5<oG#arOViajLftu>nODl9VbK'4ra*A:e[>n?f8-hQ8gJJakdB/FhXY*nB_>=G@H0ZObEg!_@ojgEK4E:/+_XWUK[!8\iCBP]1(le0WAA-_Tg9aBcX2_EsK`3;b1Y7+l?,GSLN$OMo>GVdXo(XOE,ib[fLb8s15rqm,^a_oS#t/cojBQ*I%7Mio5R;Pa0CU\,0't(^YUE7OiT/.kOSn-e)ti]i7mO@K*&>B/7.>_-a+\+%]Hc5.ra/CM+^q[A33dcDBGtA4g,6,-MDfCHa(?<L;i`ZbaROp<YnF2u0(qQ`DF]ZVnSWeYhQ^ROTE5>0i>Pa*,q1I?U_Lqhj!HE#7lC*j+hS[jtp;kl9fIIT?dMEFCq)@0u7Kk33ZuHQZPVpM.V#8\[DQqS2ZL&8fqcd/---DT)1[U<AJ,UU2>u)*`1:CL=-Wc&D7%^SV=?>q2Y!,A6!ZPe_:W(%dregLI`Cic]X8dKtO>XNO0a$aj,/E.X`CSocg4\RO+4"^1;FVmVsGkeE7>X">T.;``+o6CXI!@a\jbfnNs'RkE.Igtk:)-;6h0TTtRt8&&5;Ll*]d<PrF4IRc,o7f66<7b"6kkeJeu4`PWYU.(5DIZ6,a<U(gRfjXX;?ogZ^`Bhjf-i=4gFlE57?Rf70>/&7K1:<K&RC^SM:Q*hd]WH)>&,E?d?s:"?>H6QjOr2pk0b1\L)Z1Un%I][e0*miW[:fM06bf2al`kp]<bGZ.jjMLOi%7^uoo:#^OBt_\CngZd_Pk/9Uo?A:b0G([;O6HO@]--"+8.L&/I9#K%7WTF'O*%.9YiG!bnSs#X$oU`e4T!A[m[9O?B<$_9-W4.X2!ah?Pq<6-QkQ**/#Z&c?lEr:pl3W<5=VUpqUoQhLV?,K[X'icfd]3Wk`J4?:9*:0Ne#cJ;[.&[=\1956sRuIFB0`liMV,drYod!%eIJ57I%n*5[.u_AH]=mkQli5j)J_>mb9~>endstream
|
||||
endobj
|
||||
27 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 837
|
||||
>>
|
||||
stream
|
||||
Gat$u>u03/'RfGR39sM#^kq[5U^1[$!eeKM7O.W2m(mPo&npZo\-7W`he0QtZtomtET4q1\bFn>lV$4$S(dUU$63\t:FW6'C]kZ>&D74^ZIXG^Y#`P+M,QX8kf+d>Bq/q.T%60<[\Zi"d)]Us2/93)lKRF&YJ)'ql-Ch;?k(/IX=?EmJom+1,24of^[(c(rW@)Vs)./We9jX.4nV*N)e*8I3dnss:`XE@qd#__A>nT`E@ArlP)m0KR#ZXaP(TY3X2ba2)a5*X!Nr%r5!g%H(r'Xu'FM"4@c[_-)jc/EJP&Za\75TG\m\&t>\j0_%$^&pD"O$F_lCjj<TtE,j8LTf?`nN><+B"EZ?;6j"$+tL[%#6Wr@IF04r,H%ilsVYd_lMk]^;oJ=sUsPMkmW09gZM[oc=G[,c68e6kTsX\J_1)38V!%\)m=_eN6mu*?b;OmW)LQ>2^?/XtI*ra%tm;53>a_o7mK=[@Euifq"?0=)6.9LGj;h]QkLrBFV3.8IR>BM4lDqh7)1=q>H72We[Y:a1c^qZ'nB+/G,T4qpPK+*B^O-3j>50h,'!Kn1+l@jp:=)Q"jmln9p8?Lni51Ei1JZc;%J%dQ@EL^tp<Ch:5cTC4WSd;-i^hdZ->uD5>7DBCNKuFUr>iUaWe%>inou>dUai@PitA=job%KikuTCp@bb\+aGJ)\s6.;Kc(.Ck>KE,cb[X$c0,c<tCkGbHqaGimF\DR5At;G_>FiE*V^mG:jB>n>WL]+;h0L;V<rJDd&qkn`$dbD)$XCo6UR*r7LIm&P-<TMm!X\@'91=&[0^$L]gSRkGF&eKLCZo[2tg1ha6W>aej[S~>endstream
|
||||
endobj
|
||||
28 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1134
|
||||
>>
|
||||
stream
|
||||
Gatm:>E@K-'Ro4HS>''S7bDs5_^;4^'"(T4Zq7m.:HW0l&)^`?m*(FA-&DTXisVqS]A<+2&P(L:npTDScPZpF?**j]F+Dk`)#qI'3A=e@o.1F7n)<I*i:DJASq1ATOV9I:"O(=P&5aE1[[9d=(gL7T*`,UT.RT&6.cC@8RM'%7^pqt."D7J6E1@74RApTMKG@t%jRFh_W1cTsUX4CJYiJ\f_>FN"05GC=e+FPA2sfKb"6%cQQsZ1tfWlF<dgX%e:niK;A-9O82rZ#7$UL00pg]Ftmkj0m<qi0>0s(Hj\ja0k@LWW1.Q0_\^pYX:CceAK67&W]dp/Z850qKC3.:23.(%e90'sa!#:/Qi^kr2?&peM2Bl+!?@K#jch[1e@S4N\niUtBknG1N.XO5:0F`S^P:::t(6AVt41j[Q2W`^2gaX/n3TiMU4Y`_Eb_k4qp=/$V)r#4Jh*ZW`/;!PD!+(\;!R)/bFA%OQf;`&Aj;H9T'rJIE%W2:];I#7DoD^1h@4demSajTtXa!iPlZ7`:ff)#;0q9u.+ic*0Cmi/]T+dB]K66m>d*nni5(?_WODZh'\31T\qnVA$10FQni1>fPf8[laIZi.c)`uaJK8%+>V_c,769q64"IcEH6L(Z;Fdk*o#1E@l<(RBbK:kC5JO^J61,ul,5Z:K\HgREe$Np1S$XsMtn^-1i0HsP\PW?)8X<(0i%"C77h%2l<*R>nbWBZ!]HAQGMHC`BbB6DZP>P@rS<lY<"1V0<g&p3X;B'>9gNVf2;?.sUjW'-%K9rZ=+jFBrI&%l]d%l"Xi`;;WOSIjWmEj]'>j5DudbpV>b3COGC?mu-k\BtW'<%<0#`N.(;$*9oJZYNt355N4^.P0D7jrLIR+j-afP4-*/])RF9RFkW.-*%dHs#0t-l.rZ_g#,UELF]3.'lC/7&[riYLe5\o)K<,4#Pn)LRef4hU&nk?38\JT_9UBq,hB72;BpL+5$jA93*$pJ\/ga>;$>B8tZ`UGn"OLkUrLOOB5Nm@'Sn0^ME"aPX4Xuh@o:-TnSM5Q4]TB`@h/u`g-!/_Lgs=%Cb7;2,H,]j(F<p*>=:V=kO\BXUmMq[2DZ)T?4n/Nso.ASgkZJBZSI>@W@%H^sE'8`f?`/`dX8~>endstream
|
||||
endobj
|
||||
29 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1711
|
||||
>>
|
||||
stream
|
||||
Gau0C8U&oI&AII3bY^qPL&cF)qGP@Wdl=DYjPoq)+:4?J;1LubG25N8HNtZa;%aboWU!95B#-F\2\Z9/^PVbJ>64X[JX:!P#_gAX&E!"dEWN)%dJ"6XRNZgjKI-hr+EC!c->80DLP@YV")tp*ob%U,ior,;(F/QD>1ZGKGQe7cY0_YO@/QJb%-TFY&Ls.=Ei)_EQfXZ1=i''SdKn]&30A:]$mrG;H*/<=_XB*Ze8)rG/fk;b^@&k42(TB/aC>><;R&)ULK"i!1'MC>i;.Qr(>&Kk/:N9VX$@)ZTYaU)"!MV95d%YB;91MbEB$U4DIb:s4;SFTGO<37>er8YF*2jIBb2XDUg%dNK;V%E11X5S#6X"IZ;?IL?[fS:3E$-i6*Q2[>\/#JbA1DuW>%J4K"(C2C@&LG^b''leMC^:nSbQP^FIbC(Fl!?@(X*bEfl5(aS@#3<3GnSi.JI*kN>_q1-D2,lM#>QIDr%G3Eu,8TCP<'0ulVFlV')3Vp!%lNYP,eI/q_XNoh070<fPPM&u)0XrZ]*bMh]5J`SKf:5BTQ\(cMtkTe!`_R7eP7H7#?NmDi'$:$n[j-\Yub:+bVm\J&Mj#I<t5Kf"`K'O?2nsSLS):1f<nC4d7X-f@D[r?jPZ!p@qocJeV[s2ZRjsXrQ2Aslq`.;t66>+Ig^F;lc+Z_Eig+/-(B=ckS_C0I/%lhROA36Zc@+9`8\U[Yp$>4\:8(GL_G+JeS]5E&Cn)7dVFhRrbapbI8Y-ftC'gLRHo=[h1bI,R"h0>"=1JXJTq^,ZiDW(._*5OFIoAt+_.m&/@+9KbD(YF]!Umg`jAluC6\<m"rkHr;IggEb8]'8^(fG!mKc>h2r@-l^K2H@>$ZPs)JGV5$(9T&Y=%X\&;j&puPgu>!4.B^]]FSs_Dg#"BBC%sWSH+oWg$(E,IT?^B2aSjh:G.LC41BgV/Ib1fR9dPW`#n;G4nZYLnU%_Rn?4o;=i;2qpqR?dgqYA3(68sdMfR:.s&T&EETe\rj:`%K3jI1s'qf('-E"'!s_AU+RRAGHaTU$(]"<e#0lJuBu]/?SN4&JD?>4]YC+nJ=X22X7Fnj?eNBRHWI"/r;-=nZPfW3#.%4C,5i!LEWaa-r8cg54[mN57;U5G"9TR"&W2!#Vc?G:;n6eQVp"!0]9bc*(9<WFHM1rbC5L-T9]99D"6dFf8U](B.AGl:ngJid6Np=^#jIP]]Y!J\SZ=-Ved8_X?aQo8s^%IGM`?9fq>`K1dG.g[DaYDn?t%Q:A>&m-g5?:US!!gB'Lf!Z[u$!)Jl1&?j6<^8X+L2c1JoH-tX6@)\c7=H&"6;mWK2Z)V&uVl*&V.eUoIn`i3UQ=d=WPaD."@bE&%MtHO5R2D`>0Sh07n,EMj''cp,o]bmV8SC5R/Sj/CFBP[D-b^k/5E%:3`;tp#X$27n/b]dQ9WLCJ19JAhb-\7R+&0I4rA$Bs3DUI.AB)'k^K%0$'b/%)5dVifj-#VOO5T*LjiORTV[(dL5F([hTYmRD2*4pTA)l?9[FLZClR!>r*jfgRqRJi(E&806pg"sHXdkA[pWdJ7dR;Iud>bKhIJ5rZWXZW/9i]B;<Fr-S0ob?WZ/lI#0%J;A7LDJo4Kqp?$)55bl2j3>8(BBk_?@L`0Ac5a6p`T"/F*hYh.7*fkd[<.D0q6"-/r`DoPsl-h@2;+E4itVfa7d6G(LQ>2=KeF@Iu2o)Tot~>endstream
|
||||
endobj
|
||||
30 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1410
|
||||
>>
|
||||
stream
|
||||
Gatm;>Bed\&:WeDbW_<S'ZC]NZ.%0W1aR"MUe/Ah^>teI%TX2U@oM-tVS@RM2e,1)1oK,FBtf_l)inS8$4aeLqAi?45)+$$8qA`'Dh5L<Kl@%jYk>=k%FSb)$WoZfk6?SD?@[>M7R^La70<gn5e0iX4CpdW>`MVcnT<epgd1fo019iI_1QtpH4/\">G9R#0[%r;h^!r1.$huNX<<Fq6HtfAM$Y"&]2/=bG]\!(WP>^`#Dge@KZKB1/Ft'gbbD?jice!<4Ff?8`Aj8/1)>ttW^N)5k7>KTcm)WeIa0I.2nZGeo")`+oTs%F.ED>6F6ug>c%$B9f8TB13#G6!PHcqkai[5OWQ=d;KYO^paOM&/kNQX4*p-*4LkSB.,f]F"W?1"fbb?Mf@$q:f#`,6*Jn]<3WV@dF_fC-3,a3r'#b4E4"1n)jW*(*W2*M9OUW`f]peBM2a*K?Cde0/K^jlPnq3&1!W94!(%6WWka+Y"5:^FQoBT^)OHG0b_Y=?Y*)G3!98k9o&:ZQ!lPRj-A$k5^PGRUCGg0o(JdKZ<JVME?A*d'(,;UU&Z5s0R%JHcTmS6>d/9GA(ni:C@=;*q6X/UEe&0r%Bg`2>K\qrmD$k6B@30M@i%U<HWI[abE66eO_cdhF$>2SVQ?ki+#I:#'EAqLec=\;.N/7Tl>Mk&#WK1#Lt^N!)X:jFPX`IFJ]#2lR[s(K!!@rR;6p(H)4OR/*5i(4!<!BhM,MID>]%*;9-rnm=r2Iu]df&mt/jBb<RkGlXFBLS%e<1RC!I9NMH=8!piO^hM(UCX^Q9f0DI5$tbHQ!(U)J\kN3cX8io46\$C5kW-ZYEi44[mmMS*H!*c,I4]!"CWB%]4]mi><4PqI0_\%][B4+]ci)=(bgU,S'P4+u7$W[!0(*%D_Dq-n@?'\A2JUkTg_:Mq,YL42m8Q>8:9(sWC+4i(.\pp3`S\)2+#C.h)6V`"Ju,rT.sm+@2$i5)(>!I2r12.HJ]P?]=-Y!RM;OPBK(?d%'6jYROp0mLrS641Q1(8>U8OX%k\=M(^VC10pg[%:AWbk`2dnB/F"RgUcq*?$9\S>Be2Cb"Dq_QG)slnn3kkO%4srOo@H4C,JWC%Nj7T'S<;!\*h:m*qS_VcLFuk/Qe4*J&]8pd_VBSE0!]Y_ZiPi>3]s"7>JI>`H0O.#6C1#/P(aleLGgNL/>KhiU5@=9)IbdGBJ2`[>^?ip\#=EQR\$$T\hi<Z/;c1C04>R4N@jg)cj$PBZ<q#C@U_<]-X-'J)%G_cJeXYF$2Ya#\,qH$5^]4:)A?>GSQoIg\Jq%(uB0@ZRB;<Kn%cojVC<Q[KCJMhZo^Q)83>^/WGguaM7e9c)'9uc/+K$9#4L_f6U(<"r7Lb>oc0MB5eY]mIFLd=8.IaK9\;t7PF#%T"l[O))9^;~>endstream
|
||||
endobj
|
||||
31 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1255
|
||||
>>
|
||||
stream
|
||||
Gau0CCNJ2h'`H=\\EtZtfa,c>PKD%32OhgC->=Tnh:_-K[S_j4O^)%NA39bY/&/kZYddtj);CgbHdBAd7h6#s\o;g'B)ot>kkp/9lS,sRCa'OII5i+Q^:%uhC$Wk6F:X"63='u?Vu!B)Ut`Ij>(@#_1HZ\>B;?U\PEtcr.q+/g'g`-g$^'<Cd/HR,"@a13o@OTOKYWhm0o6/<he-moSg8VQhSJ[^L@8&#T@L=UP&=5B@86^9:k.%>kp7TkB3DhaUk//J;"!7Bf,Zh\M=dRaQ]s=WU$5PoY*YFWlHeeF(:)l'KfiR\>SHBu"d?cRRsn)`6E]SX\d*i&nbXkTe,7EP56JPL4X3U\`A=04;XeI"PeC#0*&OY'D7f\J[[pRtKIs.\CdseFKeKAH7&1,3e#ECo=T`K:Yqgdg2"l+6cp%,Rq7_A1C'HW_dN/rK.@VSoK3:%l^>$-.A_4L-/^V*j.pC*jD)DAfas/n/0dT6'R)$sh+&_Ycc<s89&Ua0JkmK%uYQ]o/kXTd9h$1j8`[d2$e12eM)[5S=_dMQC:_<347cE@fO5]<fk.#p7@5PL)l5fU'-R2W]UO+HMUtb,rnG2*1/GK;R,q@T+6D!;2(1=J,hSnTqkksMf,P(d0I;k&Tg0HDUZ$q;mfZX)Nf@`th"gK1ooEgP.o-jef$1I+88BIdnTu[cNrg47Ji$2A[!b_WC66eMl5(e)$6o5%WS=A4G&r8Q=.Lp$A9"g>A?BH''TsF09h&eo+<G+pe-8dLI^*R^Y#a[>s(f;UV##MP92mI:#=%%]&I#)>(',!)1o9CT`RG0!!HTro53fCP1n-q]MHq?M4jbN;D-PWiBDHn+:*\QQ>OY,X/+bA)"7RW-V8s:DiP&-$0VW'Nb5;aNG7ItT>ncjP8.DMj5,#;?Jl[G,:C7;X!$Ktj^d;Rn_2AfpugUABN>S4m:Qm=AH`sOHR%E*4U^$4K2<YIu/%l2,QTkmDo2TR%IXqjDVHo>]3%/n_"8D(>YY!0;fKA%_57%#=[c4:4dEOB*K[UO)[V"-gl>tCbf1[O'YPHT%j8BTU\_jmUaOY:pIni6<0FQ#!%q<RL,jnFb/=='2Uq-PSMjWb[$Y`if<^XHl4,uL)7q(*ZJ733sS($Cg/8#mfB32S+kjPP*r=`u5,'5:Q#j=(VnI3gNof@h$`auEl9T?)tLkBu;k/kD8C<KGd%RVb+O*^/_c6W9i%[Sp&FCpnqmp9'-]WjWdIL5RTa_-6gS_4Ut6If\uB>k7~>endstream
|
||||
endobj
|
||||
32 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1242
|
||||
>>
|
||||
stream
|
||||
Gb!;c>BAd^'Ro4HSFU4=XK[)iOLEW[9Y4j_S\9^0Qh=*DMZrXj87#N)@1rQdO(92'&d"c>'Gpt9cLj7hr^=TB2`9LQ)8P>>\pmVN%ZD`"4lX<A$N:mM^:.d`1N5n3GPW#"!@>)poMH*b$+9:6Ku[[eD4s_92M6m"BYjcg(_`T$?sP:KJP1BH*2a#r;iIXVDKoKHDt;uDJdY[ORD\\[@p`BT4#$L8UGM;j#CJc!SJsK"gN(-Z/l5mo2R-0IaDV$oqS_t/'2s]I\s.5+`/U;-J9,*<1#Ws$<gnF'<pj$^[/k'Ihe=J-ROJ^CU$_R4nbDWk$T%IN7J_Sk$U&_s@`eke$2)=HI1i7krkNdhQY4>-FuoQ88VgRt`.e3)HmH$ljpLOMW8N1@9QE.G2X/dkm0aT1Nd%i0]hHmrGaGBtMRC[s?+%n$d1@uur6>SQ@O];NR>\<^RW>6i'Tj,Q#4NZK,ZQ^(^Qa@WrqrVjr>XO1]I:%bLTqPIG"I<DJ5#8k#G1*\A1REifFO:HFaUfcC_&qS'3T1IX;uEnPU`o5`X:hQc9[oK@!$$YkAUkcO*Q`m`]7[ha8[jD50)#P1$0ZT`,ktmQ>2YYcG_E$aTNg2`#j+u<i8HbS<Pi&_?JMPRca`9J%:*[/lgFCP6Q8Vd$lsu=0FmbE]K('.u=L-W#XiB$$(7j0i-7CE<"h4cG-,r&gPt!I(3>'A'/rkS>[-Dedj9cf2f^S.^#J)/1j"iQU.1GiSMGM:7?t7jL(!r&Qt`,s/e=3L_8GPniB#lZU(mW9Q*!(WLld#`2\[8G(O'.E1Y&Fe2UGIC]ZarY-]9RpBL,]c8[QYi+IF,Xc@(O9d3rtO0?Y&M0l$"i^oWP9Gos=&C5>+i&U[pU^!6<)obeBfX[/$V@o\=RN5+Jc;T[QirdD:5QG@"MhL?FM9L6#'l_?_jFG&4hPoaN:t!P%jG[_fb(2:0Z(g/c^Ge"A:.?VgAc*usA6IL6:*FVi4+]JI-<[$lHKIcchCdq-3l_lRR`73U@*P3c'$$^*Zc<!L`'qLr._><<1SRs-\?/.%^Jef7h!SR=0qY[qqW'*$X$n*6qjnTMh5S`G-;WHCLfAdE=c`'S/n$)te0\UH#K+_eq:RBH5H&>4onZ?@T!(GbY-@SFA\ET1Hcf0tq4#]@^'):)ZhLDq7S8Ms'sXm'g<deh@7,]-J^a4<+Khk"#Kt3=YB?7iNGkCa>i3H,)>JG4o0`.c4dX$.$X3Q3jt"oC~>endstream
|
||||
endobj
|
||||
33 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 675
|
||||
>>
|
||||
stream
|
||||
Gatm8?#uH"'Rf.GSB:C(drAfI7@;XiUoBp/fT0"/:HX<q)QBrE^c3\$J+)Jdj$u/-9p+t_m_.eT]6XsB8KV8e%o_C1JC3E8(4n9N_]/f-HjI)d)K.B:Mn-R`dt@$Cm^k[5d5LTDca8*?`buqV-Eu!en!Y9C_-tQ*22/J?hMrtN7qLVq7j`4qY$D\r;;tfGga5K>Kp%eMZf.6=))mBY5Dn,G&=c*X$c1.RKXZ(@`HN.G;4`8t;V=3;[`=:O_7]0*ebeg8E"_P0m"r-.Tmor6'(]7hjEk%LIbJ/;HDggH)U1W4eB=2_Kl.!K;#_?U-\ps,C5SuqFfUNR*j%0=jLG)+A!@A@X6oc.q??IQK?73[F&g;g3m3u;)TI9m\bTCNJR8Bq[_gVlH%h`JoNs`.0PnFJgoAcdM0+&L8`j-UgtpHDSt]s_M-<]NI""CYqPD,TTnYue&a)uKRZc()RT_ks=)-A=D?+gl50dA%EH.AdE#BIZ7LHJD'G["V!`CKVA9K=V]Uu%lR?FSChX"Y<`k*]ji$S%6lQQk?DmGh&abAK>NU8E`MiK4361;u:*JBa/_0=mXV:qPP3m1Q#;3YLnQq'B8>jaH*7HBu,jD+RJ1m^L'\l6HsfBP<sbUspa+tL%DCMT4#OddS_/KEJ;+`*2GO*GNn&e$U1^B$$T<(m~>endstream
|
||||
endobj
|
||||
34 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1715
|
||||
>>
|
||||
stream
|
||||
Gau0D>BAd^'Ro4HS2/i%-O!qJRpjKXRr,W%B.msdpPFYB>C[A3GqGG;1B-`*Oq"Z>,\5%%L^%'EQga-cqMYS)^+B6?>6%oeT^fi"bD+CYX;5NdkTg!hWdLjLq94jn3^()f6+:>9X4QUp3kS0<'>IYR43"T6g9e;+d-q*BfO/j/$V*32Y,!"&PB:5LgKh>M@5sKn!NsTi<sZso?uuLGEtuf(pj+K[VGi;JjKbUe>&E@lk@Q0`LZ8QuT?)4&"mo9EW`L#Y?UUD]-:MDX+d(bJT=-Ij!+3Nn8snZ%9-aVb5cu:<B^q,&\!6QXc_fC$MqC'Ra)(HWGPq?!$>IC`L%IE<f4i(hLtFM^46kXBg;Lg=cn[Zo;n+g=N_;>h*D7X-b`HR+ml@%I-\?pd#)LB:SWq:>#S<k8_HPQr[_X)?BoL,4Iq^;f7!1RuYL*Vm:q_g5,[c-<,.u@UfA?R@RAKXdi8)-5_q<oDHU%6Y5(eDEC:o6H%t$pk0'KtYbMu:;XfFRo!Er\pB!2CNNBKtWS^AA:rZEe]*ubaDB%piPr1"4FYhZ<"XN*eMm3Vk>M19o=*jSff]F]GKZb)l_C.pur#"o;]<S`D.hLl2rI2YJs'BW48]He7TY"(T^P/c&-q/Lij3>>`0'>_Qh2mMF@h1Ukb,nBPC1^QO:bj(BGTlnO8X2d4L%mmEc3`rTE0(@u8&(e#9%n0$=]S87s`X.g\i\h814kq;L#1HS#6KK5alt%S.l:s`".p=[Y=cJ96pG+<pD=#P2Z,\/W<2=89(Qf]0rQcTE$PD$(eiblH&*)p2be#XY/5kb^8Gcu(-oT`S:dCFkae]r*<T'NuAXd4\#ng0$nL/R]+d,8gYsHbg?A"m"`=1E<R,bM3LKqet-8Bk!-Q]H;oe[U&2XF`#?eFM3'5Z"*?/@%lrGMuWb3dLJ/C/a<^NBk8Kc;I?q&W6P/Cj8X<n,3S=Ns0Hhr8qT%R.FD:,F7\ps7(fNP]K?ko>erE9r4&Yc,SQH22M0GKuX]\f,CR2"8uleCe)!$`D<YNHo)H;:01jPYs0IPShS2HM$I.AW1Gh53'!!)qu'u&3Qh2C,+s`@T$5$"-6IRqGb$l#a%1VR/7M9Bqp"NcJijXk+df3-R*)a`5%PLV:ij+qYSHp,RJkReI+tm+;%`h#Z)St+/(s%DYlLE:s1a-.F;DuK`X*sIa/XR8-#ep1%.\Bprq\.;h5QgBNo[u+CRm=2]j!j%6"V4MUY&S<CUlY]%=?")%<,Bk1oDmp%$;VW*29#d@@crksQV9E:l@a*QM]=KK?Z$G2+L_k''gON>o]:("+>/::S((_k1";4qf+"JB^mk4c%u=#.`hB-$g)*9qOEEJghIDK-fKc=Fi=8.MWVWN==M-D&'dJaCqb"fo>XK&Y$.ET<']$Cp1+*.-P1>f[nGmPQ`iM9<=467ofr7hKkaV?<8a>O("?*ENpGY#Sf8*hR_`'!l%V!oJlA_\"e'^)]#7^$`O!^#XkbXo4TePT3j7,lKLX+SM+BrSn8S4I>SA;d(i05ShN9W0T(@4)tk*hC*`OMV[P;P`(>Iii5ZRIQR)0p7PlJq-?8T`7L6;jI[<?;GIES'`3e6(c"tBiN'%'%j/^@2aQfD]K#]BLXrG8Y'"JZWd":;P7EZl%dV@I0AYYKp>(n9@mb$>r)b<n)[#J>G<.A,TAe2/Sg8*D>iOoE%Rgs-o(t\Ib#Zhb>r!/'jYG)~>endstream
|
||||
endobj
|
||||
35 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 736
|
||||
>>
|
||||
stream
|
||||
Gau`P?#SFN'Re<23:0XJ;%r+S9RC1t'iNZV,MH(&;IUbSEMsmk/&ZqpFiYDr/(1e[J\fruch6gNcJ`a+bFAOZ%-XVQ%QLtVF:@Rn+6b)s;sVQbmE3de@H&UR5nYoDKF-W$0oM7JnIk3_[hfefn8,?TFJ@F.I]k)a`*$oF*sX>D(c_JY5l]?FU!,o]DcuYP6TP>D%'T*76Xkj,mLU'2Y#c:hialGq)S(<^,E*FZ<0rlg`Hdp*8j"\YY'[\7"<FQtcW*0X=OUfgW5Wm8bYGB'62CSWVm+R%^Ud8gF\TZW^`&i-5NcV6B)-Nc1TqiA[tom>YA)dA*>Y&K(>6fbi,Xe#4u-N?V*r!n&m+(h^(krhGm/QAQ-AS0KMn*#iV9De-NCB7Koj>WRq(_EY8=bThsms8Yh@(m2[";SlYY8_s'5<aDg25rn1.IZ_e-E:CcSo$4&D*bnmt609aU$h3no#e@/k?3Ishb?O_SeQ!PMQPoL?Ad*4euI(4(h\6SLGRl7pH:OWHLa2p1Fr.,^(H\42,EQ`1i#k[>qT]i0%3KqPl-(2>9tLL)ellVMTA9'@]Zf8[u]1Q,/k?9ID].ZX3^[k?0DRl`0=9o.S<e)!t1_Y.6+cQ""Q;2D,u.5[dDL>R'/Tfi3%AsI[rU`FHaR-44S(-<K(B&oIBjA0\MP3I)1'6bSCV98U53mW&A9;^j>cdqaLDf1$>]YLFX1B_%.Js^e"k8nVU_>4K!npIM~>endstream
|
||||
endobj
|
||||
36 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1081
|
||||
>>
|
||||
stream
|
||||
GatU2hf#8L&:Vr41"RfHe5FMO&GgFq8\*YLmG;`5G$c`$S1k*o?tTqEHhZ.LfT:cnM43]r!l9,qD`mX9?j7YmbaoUc^n3&\s2BNaO?N[Qh%8!rR&6XN,M(0\qsHH6'*`Fj].=gIA4M\dJ*b3a"E#p`K#@mQ$-WWr4sEZYTLgZ.nA2RJk'REZVcM<nW)k&`>seD"@Jia<0igLUZ8.JY(qdMqAG*F5ChsnGZ)iGY1X-_)Es(#%NP%PZo3=frF4EILI+t(1M[%HH0X;rYS1HEhQC/WQdgh#J>g$g@D^RVcchRnZ-1k!A0M_*+.t`9O'fOY08a36,"mR$ge#^RRY`<(n?qOHdDA;@FQ5OM'dZ>Vg2!=\F)#$@SMY!"J^5!n;$`;L7_"p4^>^TJ;GBV=]]RZ8Hlh:D/mCX(VTpb]cip!(k4Y;(7Q?+UA7S,P8b/Jt)*R3?bZfshl:tDWt.2jmUf6kkZKLa&ke^3eGQB*-EO4XX,"f</:Z:DU83\WBT7!:c5"(jm[U&iBH9n&cc,[hi*!9^ZIX1gQR">Y3B8=R>',/3h'O9uH2OG=XUbXs$[-JrEhRGm#H\NWG$^8=W0VTQ'M'k@tChHrV*?j3LZq@XPI/li3#9_l=hQtE'iqX"Iu`h#8K][/KcitI%7DSlEj=4:N9k0Su41I[nMm9L8s#36!tnNhA.B6:%%pr5shE=s9\F^O*u$no4&6/g*T$;t/dPk9IEE\A,*N*9-b.(IJL\bQ\G=%SmOMAcVW!2kDsaEjmB,-&h0eI4`U?glocMqX!%?5-Qo2n!?:OmLM0-?VmB]2l[V\a&Lf5^[;T?A0XK[#1hZrc'R?9^)aYdrNT:SZ4R?^P;_M3e^IW='R&jCfm'+n>35p=<];\eND+P.%3s!r/>H=Tc;CkpS8T'8[=h)rX4(V`P?699#eE,-#QOtS%<l4W&!gF,hB`Dn@%4S,Skn[VVbA"m\9S"E^o*VMF,p);&gGaS3%'`%$/+EP7T%qb,]ljPl@QgdPgUtiZTLUXuH(66UV^,2=5Af-Dt>Dn8[MYn2uk\hnmGDU6(sH&5eia'Coot<l/YUU]1>?iF>7~>endstream
|
||||
GauHJ9lo&I&A@C2m,TFi&PR]t!Tqah1U^MqT#@lOT/>#jW/XIY!a(U_lMgW45=A/M(oQap7>[gp]5Jc,%hIaZdD;;n\d!Bq_s&HP/g1-%>VZWU'jS\P5=S>"6HK4pY<>)_^`pPm5d;;3#XT:r,3#7Y`O(dN2.p)_)?f.N`>''mT3mX=0GSn+9441nTam^Vq^`G58kTqQ@<@mon^BA/LkQj2U=ju%N$<L*W#jKUbi=6]+C;t\rJ/!6r8O#EVYA@Rpf%uqhH)BE6G_=hc>eKVj]J$<quH9Q]"efS$p5=#;XK*C@Hm>OOn:ojaYL1/"?R_JWJf*$.F2Kbn0E.K*dc/lFqi1`Gg/@,IMTBfR``)ghjB`NefMo$kNShq@Q$#(SoLV#..38j3=@gu*/)qpg&pEI7Vm(9\2)H[M^=>B`uHI"ZreSRk3Q;c8tB;2/pNo@HjpJT-^8!/A=f"k'FbeRQ0gR`ZFke2`+4%F$i"_bFkf)B>pNF6`i=&u'VrSFYuBCTI2@oQo6osUQRjo(S<PN\=?-a.k6b=!Q"4Ki2bJBsqVqU1:iqSh1\5/pe4bl-OSH6bhqs^'mn0q]7*GK<dF;].DN/gjO;DePOR<?XeLNiqqYOsY3fbQ=Hch#!Dsa>a\sOm.(;cg"ApcSNG"G<=Lb&/5^_QF0\BXjcL[0;bi?:@"`%o&E>)MY+FsLV>+t99Nr'P@,=d#4siX]lP)Ql[NY#/M"m3XR@!m[sHYenF^03%Dgc7Fg=_I5kC>(Or&ZbuDVdhORD)eN?DQoENVZ:^"3<5(AQ*C?FQ"up,8(@//_%!J3f"5_h^kq[1[DBX3N9-;"'C0i$cp@uid,L)C*TJ:eVh4m7cXMLLL[p554P/U6uc_O4JksjDG*c?N%#/Zk*pPG`;BW-%&,[\+aZXqnD:$,,ZVD$G91T.ZLW_.>pOeYh!]]nNo>[MuYl!6@hah/sef\+@VB"_T%V;K1HENOpj.oXg'm5GuoVR6ai5EAnH?ai[HrM4Z6BAdscT`RN(8r5ih$L#`e.t9ND.bt@-<t"oMOIgn>oW+mYjBT;Ss,k4V3O<N1dU;kdkfomD*]CCU=fMqomq>1fmr'jsi]$AkqYVnYR%8=[/MO0.gB6@=g));Cg@,i8'u@-WehHq>NGMa3~>endstream
|
||||
endobj
|
||||
xref
|
||||
0 37
|
||||
0 19
|
||||
0000000000 65535 f
|
||||
0000000061 00000 n
|
||||
0000000122 00000 n
|
||||
0000000229 00000 n
|
||||
0000000341 00000 n
|
||||
0000000446 00000 n
|
||||
0000000418 00000 n
|
||||
0000000523 00000 n
|
||||
0000000728 00000 n
|
||||
0000000933 00000 n
|
||||
0000001138 00000 n
|
||||
0000001343 00000 n
|
||||
0000001549 00000 n
|
||||
0000001755 00000 n
|
||||
0000001961 00000 n
|
||||
0000002167 00000 n
|
||||
0000002373 00000 n
|
||||
0000002579 00000 n
|
||||
0000002785 00000 n
|
||||
0000002991 00000 n
|
||||
0000003197 00000 n
|
||||
0000003403 00000 n
|
||||
0000003473 00000 n
|
||||
0000003754 00000 n
|
||||
0000003906 00000 n
|
||||
0000004776 00000 n
|
||||
0000005897 00000 n
|
||||
0000007335 00000 n
|
||||
0000009043 00000 n
|
||||
0000009971 00000 n
|
||||
0000011197 00000 n
|
||||
0000013000 00000 n
|
||||
0000014502 00000 n
|
||||
0000015849 00000 n
|
||||
0000017183 00000 n
|
||||
0000017949 00000 n
|
||||
0000019756 00000 n
|
||||
0000020583 00000 n
|
||||
0000001619 00000 n
|
||||
0000001908 00000 n
|
||||
0000001993 00000 n
|
||||
0000003534 00000 n
|
||||
0000005288 00000 n
|
||||
0000007256 00000 n
|
||||
0000009198 00000 n
|
||||
trailer
|
||||
<<
|
||||
/ID
|
||||
[<8a6c7f848f6a2a1be56036b86245afb8><8a6c7f848f6a2a1be56036b86245afb8>]
|
||||
[<c676df07d673064026e86bd63f52215d><c676df07d673064026e86bd63f52215d>]
|
||||
% ReportLab generated PDF document -- digest (opensource)
|
||||
|
||||
/Info 21 0 R
|
||||
/Root 20 0 R
|
||||
/Size 37
|
||||
/Info 12 0 R
|
||||
/Root 11 0 R
|
||||
/Size 19
|
||||
>>
|
||||
startxref
|
||||
21756
|
||||
10437
|
||||
%%EOF
|
||||
|
||||
346
Les07-Supabase/Les07-Lesstof.md
Normal file
346
Les07-Supabase/Les07-Lesstof.md
Normal file
@@ -0,0 +1,346 @@
|
||||
# Les 7 — Lesstof
|
||||
## Supabase Setup + eerste queries
|
||||
|
||||
**Vak:** Technical Foundations
|
||||
**Vorige les:** Les 6 — Next.js QuickPoll deel 2
|
||||
**Volgende les:** Les 8 — Supabase CRUD + Mutations
|
||||
|
||||
---
|
||||
|
||||
## Inhoud
|
||||
|
||||
1. [Wat is Supabase](#1-wat-is-supabase)
|
||||
2. [Supabase vs alternatieven](#2-supabase-vs-alternatieven)
|
||||
3. [Account + project aanmaken](#3-account--project-aanmaken)
|
||||
4. [Postgres basics](#4-postgres-basics)
|
||||
5. [Tabel aanmaken in Supabase](#5-tabel-aanmaken-in-supabase)
|
||||
6. [Foreign keys + relaties](#6-foreign-keys--relaties)
|
||||
7. [RLS — Row Level Security (intro)](#7-rls--row-level-security-intro)
|
||||
8. [SQL Editor — eerste queries](#8-sql-editor--eerste-queries)
|
||||
9. [Supabase client in Next.js](#9-supabase-client-in-nextjs)
|
||||
10. [Eerste SELECT vanuit Server Component](#10-eerste-select-vanuit-server-component)
|
||||
|
||||
---
|
||||
|
||||
## 1. Wat is Supabase
|
||||
|
||||
**Supabase** = open-source Backend-as-a-Service. Geef je een Postgres database + auth + storage + realtime + functions via één dashboard. Gratis tier voor leren + kleine projecten.
|
||||
|
||||
### Wat krijg je
|
||||
|
||||
- **Postgres database** — echte SQL, geen NoSQL
|
||||
- **Auth** — login, signup, magic link, social (Les 9-10)
|
||||
- **Storage** — files uploaden (later)
|
||||
- **Realtime** — subscribe op DB changes (later)
|
||||
- **Edge Functions** — serverless deno-runtime (later)
|
||||
- **Dashboard** — visuele tabel-editor, SQL editor, auth-management
|
||||
|
||||
### Open source
|
||||
|
||||
Volledige code op GitHub. Self-hostbaar als je wilt. Geen vendor lock-in.
|
||||
|
||||
---
|
||||
|
||||
## 2. Supabase vs alternatieven
|
||||
|
||||
| | Supabase | Firebase | Planetscale | Neon |
|
||||
|---|----------|----------|-------------|------|
|
||||
| Database | Postgres | NoSQL (Firestore) | MySQL | Postgres |
|
||||
| Auth | ✓ | ✓ | ✗ | ✗ |
|
||||
| Pricing | Free tier ruim | Pay-per-read | Free tier | Free tier |
|
||||
| Open source | ✓ | ✗ | ✗ | Onderdelen |
|
||||
|
||||
**Voor deze leerlijn: Supabase.** Postgres + auth + dashboard alles-in-één. Geen extra services nodig voor 90% van je app.
|
||||
|
||||
---
|
||||
|
||||
## 3. Account + project aanmaken
|
||||
|
||||
### Account
|
||||
|
||||
Ga naar supabase.com → Sign Up (mag met GitHub).
|
||||
|
||||
### Project
|
||||
|
||||
1. New project
|
||||
2. Org kiezen (default = je naam)
|
||||
3. **Naam:** `quickpoll`
|
||||
4. **Database password:** sla op (lange random string)
|
||||
5. **Region:** `Europe (Frankfurt)` voor NL gebruikers
|
||||
6. **Plan:** Free
|
||||
7. Wacht 1-2 min op provisioning
|
||||
|
||||
### Wat krijg je
|
||||
|
||||
- **Project URL:** `https://abc123.supabase.co`
|
||||
- **Anon key:** publieke API key (mag in client)
|
||||
- **Service role key:** admin key (NIET in client!)
|
||||
|
||||
Beide te vinden via Settings → API.
|
||||
|
||||
---
|
||||
|
||||
## 4. Postgres basics
|
||||
|
||||
### Wat is Postgres
|
||||
|
||||
Relationele SQL database. Sinds 1986, krachtige + betrouwbaar. Industrie-standaard.
|
||||
|
||||
### Tabellen + kolommen
|
||||
|
||||
```
|
||||
polls
|
||||
┌────┬──────────────────┬──────────────┐
|
||||
│ id │ title │ created_at │
|
||||
├────┼──────────────────┼──────────────┤
|
||||
│ 1 │ Beste taal? │ 2026-06-04 │
|
||||
│ 2 │ Beste IDE? │ 2026-06-04 │
|
||||
└────┴──────────────────┴──────────────┘
|
||||
```
|
||||
|
||||
### Veelgebruikte types
|
||||
|
||||
| Type | Wanneer |
|
||||
|------|---------|
|
||||
| `bigserial` | Auto-increment ID |
|
||||
| `uuid` | Random UUID (default `gen_random_uuid()`) |
|
||||
| `text` | Variabele tekst |
|
||||
| `integer` | Geheel getal |
|
||||
| `boolean` | true/false |
|
||||
| `timestamp` | Datum + tijd |
|
||||
| `jsonb` | JSON (queryable) |
|
||||
|
||||
### Constraints
|
||||
|
||||
- `primary key` — unieke identifier
|
||||
- `not null` — verplicht veld
|
||||
- `unique` — geen duplicaten
|
||||
- `references` — foreign key
|
||||
- `default` — automatische waarde bij niet meegegeven
|
||||
|
||||
---
|
||||
|
||||
## 5. Tabel aanmaken in Supabase
|
||||
|
||||
### Via Dashboard
|
||||
|
||||
1. Table Editor → New table
|
||||
2. Naam: `polls`
|
||||
3. Kolommen:
|
||||
- `id` — bigserial — primary key
|
||||
- `title` — text — not null
|
||||
- `created_at` — timestamp — default `now()`
|
||||
4. Save
|
||||
|
||||
### Via SQL Editor
|
||||
|
||||
```sql
|
||||
create table polls (
|
||||
id bigserial primary key,
|
||||
title text not null,
|
||||
created_at timestamp default now()
|
||||
);
|
||||
```
|
||||
|
||||
SQL is sneller + reproduceerbaar. Voor productie altijd via SQL (migrations).
|
||||
|
||||
---
|
||||
|
||||
## 6. Foreign keys + relaties
|
||||
|
||||
### Voorbeeld — polls + options
|
||||
|
||||
Een poll heeft meerdere opties. Twee tabellen, relatie via `poll_id`:
|
||||
|
||||
```sql
|
||||
create table options (
|
||||
id bigserial primary key,
|
||||
poll_id bigint not null references polls(id) on delete cascade,
|
||||
text text not null,
|
||||
votes integer default 0
|
||||
);
|
||||
```
|
||||
|
||||
`references polls(id)` = foreign key naar `polls.id`.
|
||||
`on delete cascade` = poll verwijderd → opties ook weg.
|
||||
|
||||
### One-to-many
|
||||
|
||||
`polls` → `options` (één poll, meerdere opties)
|
||||
|
||||
### Querying
|
||||
|
||||
```sql
|
||||
-- Alle polls met opties
|
||||
select p.title, o.text, o.votes
|
||||
from polls p
|
||||
join options o on o.poll_id = p.id;
|
||||
```
|
||||
|
||||
In Supabase JS:
|
||||
```typescript
|
||||
await supabase.from("polls").select("*, options(*)");
|
||||
```
|
||||
|
||||
Automatisch een join.
|
||||
|
||||
---
|
||||
|
||||
## 7. RLS — Row Level Security (intro)
|
||||
|
||||
**RLS** = Postgres-feature waarmee je per-row regels stelt over wie wat mag.
|
||||
|
||||
### Zonder RLS
|
||||
|
||||
Iedereen met je anon key kan ALLE data lezen + schrijven. Voor demo OK, voor productie disaster.
|
||||
|
||||
### Met RLS
|
||||
|
||||
Per tabel: enable RLS + maak policies.
|
||||
|
||||
```sql
|
||||
alter table polls enable row level security;
|
||||
|
||||
create policy "polls zijn publiek leesbaar"
|
||||
on polls for select using (true);
|
||||
|
||||
create policy "alleen ingelogde users mogen polls maken"
|
||||
on polls for insert with check (auth.uid() is not null);
|
||||
```
|
||||
|
||||
### Voor vandaag
|
||||
|
||||
In deze les: tabellen met RLS uit OF met open policies (`using (true)`). Dieper in Les 9-10 (auth + per-user RLS).
|
||||
|
||||
```sql
|
||||
-- Voor demo — alle access open
|
||||
alter table polls enable row level security;
|
||||
create policy "demo open" on polls for all to anon using (true) with check (true);
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 8. SQL Editor — eerste queries
|
||||
|
||||
### Insert
|
||||
|
||||
```sql
|
||||
insert into polls (title) values ('Beste programmeertaal?')
|
||||
returning id;
|
||||
```
|
||||
|
||||
`returning id` = krijg de nieuwe id terug.
|
||||
|
||||
### Select
|
||||
|
||||
```sql
|
||||
-- Alle polls
|
||||
select * from polls;
|
||||
|
||||
-- Specifieke poll
|
||||
select * from polls where id = 1;
|
||||
|
||||
-- Sorted op nieuwste
|
||||
select * from polls order by created_at desc limit 10;
|
||||
```
|
||||
|
||||
### Update
|
||||
|
||||
```sql
|
||||
update polls set title = 'Nieuwere titel' where id = 1;
|
||||
```
|
||||
|
||||
### Delete
|
||||
|
||||
```sql
|
||||
delete from polls where id = 1;
|
||||
```
|
||||
|
||||
### Aggregates
|
||||
|
||||
```sql
|
||||
select count(*) from polls;
|
||||
select count(*) as total, date_trunc('day', created_at) as day
|
||||
from polls group by day;
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 9. Supabase client in Next.js
|
||||
|
||||
### Install
|
||||
|
||||
```bash
|
||||
pnpm add @supabase/supabase-js
|
||||
```
|
||||
|
||||
### `.env.local`
|
||||
|
||||
```
|
||||
NEXT_PUBLIC_SUPABASE_URL=https://abc123.supabase.co
|
||||
NEXT_PUBLIC_SUPABASE_ANON_KEY=eyJ...
|
||||
```
|
||||
|
||||
`NEXT_PUBLIC_` prefix want anon key mag in client (RLS beschermt data).
|
||||
|
||||
### Client setup
|
||||
|
||||
```typescript
|
||||
// lib/supabase.ts
|
||||
import { createClient } from "@supabase/supabase-js";
|
||||
|
||||
export const supabase = createClient(
|
||||
process.env.NEXT_PUBLIC_SUPABASE_URL!,
|
||||
process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY!,
|
||||
);
|
||||
```
|
||||
|
||||
In Les 9-10 vervangen we dit door SSR-safe variant (`@supabase/ssr`). Voor nu volstaat dit.
|
||||
|
||||
---
|
||||
|
||||
## 10. Eerste SELECT vanuit Server Component
|
||||
|
||||
```tsx
|
||||
// app/page.tsx
|
||||
import { supabase } from "@/lib/supabase";
|
||||
|
||||
export default async function Home() {
|
||||
const { data: polls, error } = await supabase
|
||||
.from("polls")
|
||||
.select("*")
|
||||
.order("created_at", { ascending: false });
|
||||
|
||||
if (error) return <p>Error: {error.message}</p>;
|
||||
|
||||
return (
|
||||
<ul>
|
||||
{polls?.map((poll) => (
|
||||
<li key={poll.id}>
|
||||
<a href={`/poll/${poll.id}`}>{poll.title}</a>
|
||||
</li>
|
||||
))}
|
||||
</ul>
|
||||
);
|
||||
}
|
||||
```
|
||||
|
||||
### Wat hier gebeurt
|
||||
|
||||
- Server Component (geen `"use client"`)
|
||||
- `await supabase.from(...).select()` rechtstreeks in component
|
||||
- Server fetcht data, returnt HTML naar client
|
||||
- Geen extra API route, geen useEffect
|
||||
|
||||
In Les 8: we voegen INSERT toe (create polls) + de /create page.
|
||||
|
||||
---
|
||||
|
||||
## Bronnen
|
||||
|
||||
- **Supabase docs:** https://supabase.com/docs
|
||||
- **Supabase voor Next.js:** https://supabase.com/docs/guides/getting-started/quickstarts/nextjs
|
||||
- **Postgres tutorial:** https://www.postgresqltutorial.com/
|
||||
- **RLS guide:** https://supabase.com/docs/guides/database/postgres/row-level-security
|
||||
- **JS client docs:** https://supabase.com/docs/reference/javascript/select
|
||||
- **SQL crash course:** https://sqlbolt.com
|
||||
225
Les07-Supabase/Les07-Lesstof.pdf
Normal file
225
Les07-Supabase/Les07-Lesstof.pdf
Normal file
@@ -0,0 +1,225 @@
|
||||
%PDF-1.4
|
||||
%<25><><EFBFBD><EFBFBD> ReportLab Generated PDF document (opensource)
|
||||
1 0 obj
|
||||
<<
|
||||
/F1 2 0 R /F2 3 0 R /F3 5 0 R /F4 6 0 R /F5 7 0 R
|
||||
>>
|
||||
endobj
|
||||
2 0 obj
|
||||
<<
|
||||
/BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font
|
||||
>>
|
||||
endobj
|
||||
3 0 obj
|
||||
<<
|
||||
/BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding /Name /F2 /Subtype /Type1 /Type /Font
|
||||
>>
|
||||
endobj
|
||||
4 0 obj
|
||||
<<
|
||||
/Contents 18 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 17 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
5 0 obj
|
||||
<<
|
||||
/BaseFont /ZapfDingbats /Name /F3 /Subtype /Type1 /Type /Font
|
||||
>>
|
||||
endobj
|
||||
6 0 obj
|
||||
<<
|
||||
/BaseFont /Symbol /Name /F4 /Subtype /Type1 /Type /Font
|
||||
>>
|
||||
endobj
|
||||
7 0 obj
|
||||
<<
|
||||
/BaseFont /Courier /Encoding /WinAnsiEncoding /Name /F5 /Subtype /Type1 /Type /Font
|
||||
>>
|
||||
endobj
|
||||
8 0 obj
|
||||
<<
|
||||
/Contents 19 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 17 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
9 0 obj
|
||||
<<
|
||||
/Contents 20 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 17 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
10 0 obj
|
||||
<<
|
||||
/Contents 21 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 17 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
11 0 obj
|
||||
<<
|
||||
/Contents 22 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 17 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
12 0 obj
|
||||
<<
|
||||
/Contents 23 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 17 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
13 0 obj
|
||||
<<
|
||||
/Contents 24 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 17 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
14 0 obj
|
||||
<<
|
||||
/Contents 25 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 17 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
15 0 obj
|
||||
<<
|
||||
/PageMode /UseNone /Pages 17 0 R /Type /Catalog
|
||||
>>
|
||||
endobj
|
||||
16 0 obj
|
||||
<<
|
||||
/Author (NOVI Hogeschool Utrecht) /CreationDate (D:20260607080655+00'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260607080655+00'00') /Producer (ReportLab PDF Library - \(opensource\))
|
||||
/Subject (\(unspecified\)) /Title (Lesstof) /Trapped /False
|
||||
>>
|
||||
endobj
|
||||
17 0 obj
|
||||
<<
|
||||
/Count 8 /Kids [ 4 0 R 8 0 R 9 0 R 10 0 R 11 0 R 12 0 R 13 0 R 14 0 R ] /Type /Pages
|
||||
>>
|
||||
endobj
|
||||
18 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1932
|
||||
>>
|
||||
stream
|
||||
GauHLh/h:0&:`lHfU7)[:$#!Q/^$(o%rIcjFXG^U!pr,jpYZqj%`Tjp+P6Ym<gIS2"@=Nc5QFICh>Q`Mb^e]2<M/4Oi;F5D?8Gt/L(dsTjhU?iY(jWFT#Cm-*#C/1;VUABq6p9TCt_Ot'pe@"cTkCSP+Dc9A<rIo"HN5%*qLLQ0R;Ja@!R?MdK)ur=%KT;^MO;&;7'iD6MT=0fD8(@So9Hh4&j\AOVq'$)H=o1FtCd@c\:<ZqOdc`q@W]tV^`3iBc=mU,#dI%J.^rc]__sVe4R^E;J!%>GRq^D>!RkB,:#SehBp\jQ01Rs0hab9djPNQFVro."WIr'f4kV]=e>*9B_d;Cm0UFDd;qG%fT\^](V[kfcoW7P$Yf5*[=GL5?8,tqe9.1nGJ,=SgLEFSg_fVl<@b.V$%&61\5s&R=6Q(l>mh$e'\/$0Z_jq@oI<=8Dq7:R>"hP+,Bf)u@94Trd2M2cc>@*+Ha8R#HPVmrQ##aAYGk]6m>Ap??F8A>'tWNsf>;tR]4U2//n:'HJN4KiR?*c`,a<bG\:8jb15&C3$nP`J7ON:4T:'>5)a%)^;U98J(H`A@FVJ`uIT6n\<=eGK>^afY9Zor'K5qiW$ZZCQ<Kp.d!2[!6;".;]/5l;MR=S$p>t6S)\cck>]7RHo%m=*52b$&tBVd>"McXsa"^@F"&;b[NQ4/^#XhV;Tc(q@irNF'8f+"Rg>59"#)YgSMfd?/2QCfE0K,Cc?1)U<cPU?34@2K[M,RB`JQC%F=.#qlRKjmj>gen&-o;D+X-"@+`3X3Dl!-B8QP6Yss?J^,+YTrRZ95GQTY)D+.@PVjjm@(hq>Ct[+GkX9P5#uAN@=aEX2]7Yk#6oMl1=e4.fEB<l7VT*/mFea9-`GY*keiV3#W5c&"s&jqduHN$*4-lC1#s_T?X_dRE*Gfjr,Wds0NKYm#OV*:G47C[j-mt*r='QOIJL3#Sk5I'BTA,o*;f/12`^Z6+ZMIVC`$EaO]tO-gdK]5A<rPA]h5[9NOqqUk0X>Aqm3Y:VWZDG`iQj73j]rM3hfrF=o\C?'G0AC>5^PJs2)ie:lm(QH+c1`[9!A3.F&!X*s5E2#dTH2<=V<"W%>c8`/9pq\@fdP<]Sjc4q-4,$ZPt[i6I1phh<4SM?8u\RAKX-/0G4]75-[AD%`4a6L&F9C`c-lc[sq4#!"m[q<'RfVAU-sFDMZR)QlGnocc,KLI'@pJ96hQ8P]IL%)-/lDL;XcZB<0[.J/)T;\CCsV=]&UQ8esAWE&7Fbu?Mo@'76,(u1O:FiIHg(1^l4M;BMRffP#b4>k>E!qE69m-\InqY"4kLeS\`3Lo!E15h%Y0^;/"OengS)S\eJ=MmlU8Z^$)?B^M?k^XPr;pjY<AiR2k%;rGoNh[fCN&<N>/fMJMq*RhT772ma-h[I)nE268rXn'aX_DVk$facd<QBKjV`5.@?hZ:]YOaonrVOLBcSM?C,B07\qo\\YE-65E3J:CoPYm"JT<2&sQg%tI-4%$u>\N0d>fF:D)-X]$Zm9I$T.n=BK*-<#T)W*$G9Z,S]cm0uM3M/I230mb1,I8@aFEG7@ma"8Y5\t#[#"Z)/[J9iq]Nf]1+!#3848q2$C(e0.lDm)Kh7XsgMcUa@Y44RK!Ld&=,r[ci/-Nh4X">Ca/isJBdRC(RWH\&$=IDV9`HK]-D,]ZK5?KU1+_?D?kL^mQ"&mr.RT%/0TT4uW+ND6ao2iV>H?dZoG07>g&BhMo1g$fZLX<)eNAcXVeC_G:D'lFm.rA!7B@S:r()F"R-3j:dUr0IX@Cbn_h1gnj8>He1;u;Ekrc\nGlptc1S7SCIAe@=T81(Aog7a.0Z9Rf)lM.5Glp'%,3AA)/:qRM66%:m>YDs?&+QF[\V<ls4kuBQU(L/+_8,.+dq4t80nLsCE>je`jeG"7@k-5;JYDg&Gqd*d~>endstream
|
||||
endobj
|
||||
19 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1857
|
||||
>>
|
||||
stream
|
||||
Gb!;dhfG8H&:Vr4YqJ&rp<EdI&C?hl81/Q6Rp;C/DYrE0)(RU"#bM+[H@Pmq0OXe\Rj=TN1q)EI<ic0_X`cop^r.$<IKqUCq]VI?#S7?\#9^H`_seR.%+"o51FT$$m=8VjVWC`1HqXKiR\!)iR)+18'C\]In6?oKNu4JOHU)S@lOk"uJ;:UH":UWbY%NCG&VkXJB=qe08o\V#E#A2Ua-Z=A3]u;-ATSdOlAa*9Js;pCYEj$m`,Qe7`mD?nr9Y/F9Vs!CAk<WOf1_$/QGJAT(G7nfV-&U'=U=[)L6"$9X!_R?[@)d]R(MVT>,5ku4KP(.nnBL4d"[0+aP]fqb\)[nQo6^\\'<q+$:1p$B!DQI?@ck(#F;h;EaVT[&Y!1o(s`Gonl`&/Da[iS,K+2U(,6dq4AsM5lYtrtmFIrl>>:f8-[:l0Yp^r$_s+9?9(R$@W,O:1=hs-G#\I?$K#"<$nP#n/S(>)'UWf>8^7+AUi'0o4!X?1DZ7qDT$O&jKKo.R&?m9.0=1Qh.FedkB1@QIh/pTJs-X9C>@pat)/g:<6+,d'N-=N4=5N)Oa2,o(s4Ic"R0)8Jb6=r<!IbBUFd:uJ9p0@&8K<,pCrbcAi/f=-dL-@8DKJ^eN+BjV*:MarC]Ok[B9Or2r^*QX0cnT<fA5[6$X"aF<Nt&T8d6iDLUtM,V"[#E9;8?*IAHlBG$u[TU,Z,+!_7Uj^UI1Oe1G#"U3mR[.VHFj[cS8HV=O^ro_F5&%^>NLm$<X/B5%_7a=bnA)[Y@u;8)'lr,*@0kma\o7oPsl1iTO?Wj0O.\L9DO.-HF\]3QS$erS$*9r)3EbhkCM*m4QcDSDh.*Rs',m0p+HIWsj=))XQp+`5do#3.>^.#aK'^VnSq8dG"LVi_j<$^n[2-QG9FHonXQL1m`^(oD.d8Yp*leQTR>4W.\Lrhr='l.Zkc<?Wu>4\dj],'!S2_Yu-APnPB_nqZdTn69qH)(cZDAG(E*O0Z'+6q7p`cf!FYAgUPrIr&%5a')"D,4#s;)H&WIA=:5IV<>^C0HC24jG+\t]Thm.6Go.VpONKffd78?3=+X5.AB+<o8$\nZ3R]h'D;An:<rW:_ZI_UUKrNaMKo_[s'"XS=2*hDnX<P6,r.Ub5m/!;D/aO/c%iSJgjRBBt^tmP/iP8CB$K?4,`W%-lDc[Z3_k,r#['aW%GT*Lh[a^IXLe$OS[ffq17/SDT&uZ,S8,9=US&UJAWi?=%?H=DiRT+;84"MjR'E\5qjUhBQV+qU%Ar7D!1CS6$9MfTA''HA6m.od^YiJ^J$bf_b:_G[_#'$bg;CmmZ#-V#>Q2qdfOJ#-6]F0ueMBE#HA^'<BUr5;.a(pG#.Tolnd:#pgA('O3_CH*o9>7dUK-6#EbQW>da]!t3AP%.Pm_c#WY7']00qUc`Z;OebhK2k-MjPk:m<5mJa$h(YG%8s5*/Y'1:2qg/mDRXhH/`a9orL$a&PlEp*]Vsfo-?S7(Ehk`J:,A:2%Qs"8^+8mGi3k3_4S;\@*Zasc`Z+r^f_\n<AQf0m!=9ihX)$5nq'eGpa6T)q#ZUo#GAAd5d`[=AM8[>a_4fG1jr!GA/BG.EIAhW:F.8-:DLq1AdiCN:gtGMBDWt4SIXTFQ[umbdkHp)=8G:eP(e?;1I1I$LKnC:mcGYJ8`AeMVIGKVE\:=;J==q$.b9.hqD)gXM/JXsX\01t3XI4D"/qQOXRBCYj<]3]E@>s%@j,05.AjoC@H#<!-"=-Cou-;]K=M=2VcYp>2b&;I(Th=/`a@YTBrMU#leV7(%6;V;7JcHMS<!bg`(!*:rQ:0p04Z88/q30H?f^5q'QX9k\"C#r.HW=B"2$7m4_8l'^2Wd16TNli~>endstream
|
||||
endobj
|
||||
20 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1805
|
||||
>>
|
||||
stream
|
||||
Gb!#\>BeOU&:Vs/R!f@H'p^Doo"K'N$Z%dBD@Q*`F#ZcI8_#kFZ'DWnpH-+O;S-WMoW48-YroL67[h_\K1@"irgteD?B!k-.h5h"GRdt6$0/MaE]j+\?p]]H#/GWRq2kXmq8ENj@ZWjJR#4;M6$jd(T`h>TdlPo"LbB0^#T:MWnUL]LPo"0A9_1M`FbARa8dJ<H=eJa$b?s#%$hGR>C?rsbl:]!MK%HZ!WP2ma&&J=d9,PBis()?5U^PDEB5&:%B:%TLbe^7i+Zpj_0j\:Y?=NU6`of%)>U\59.[;=d.bkg9(A$=Xo1I(/Z`o8eIm_"Ao&'t`6=2DeG`k0bYJ'LLKqOBU=2mM4&SUs]W>3H*+k\R%"'M#doTa)XQ9cO_nhAk)E77:KZ[d,A)c\iY<DqCGRAdmR!er(i?.gYnQGs1HGl:^CBT6a4B"#'<nHr$Hmm\tN5Yok]@cIAHI<<B.O#uJQdC>;#kh:_02KX7qDgUCGg)5K0\?a3b'=o&@60E'iaJ$%EmPmoDC'RE1#+g;]Z!Mp_%JBqrV$[Q^3sh-L/]$71XP+5P91)Z:8Hp9bgat;*@:F7=c1`0UI(cMO=8I+/rDQCU51-5+YJu.<>9!"'S8Ti@/=`=d2U80+d[WDpp_IJ])+';k:+3h:n49TEi?C(bg?et##u&]Wl0?=-R#Jj0RB:Lr=Zjit8S0e;]0e]5aSTQ:)Oh&Q0hoS6E080)Ef%ne"(Xs;'JEMfiuX6qjk095c'fis%O`b^&^Yb*bCL)>.R1CPnN^im?sF5M8R*uGHK""BDJ5o"G)TAfQG1[<;=.K$Pa"?g_Dr?eP,Pd]*?e;GLNpU;W:e/GD_91;l^C`.e8#KLg=D^BNFr-13]J(C`MiPg))m)EN.o;oST6YU(9pDLTn%+X!@]Xbrad"gH$>NekZ,Qse65iAp:"$1P<3)n`n@W$=(r5OTQEr<dV`bdYd5\@h3l5b7uM6E3`NmO6fW.ZN=s4(be<Klbn<7j&*e2mB2m,ET@,pur,@_1^mlm?1F@Qo5F2aRW$@A;ns=W,ctY5BBa:@KpI.;-Iei?%'CIfPDskAW^3/Ueg*&D#s(;_c(W:QLPAFe`MRdkXGtY8WGHX?59`o9K%u?:$g7iOSgQSKTW&&BaUN@:]Mi']L+RRr'/h-Nf(>_2"7r#6cYS5P.\Zun2Q<\DkVQsO9gNdeF>UeT>3?a/f$>+L=.cM79)7?8I9p4F8gU#Xt7(;@fWgYoPM]=NgidFF7qWBAq*nc53!:=qLXmBph;BV]s@C<DIIBmY::UH*SQgjhBka8r?):$JVG-JdC>?8K6<ld<BSj(ln34?5@<Ia3$?aigH:&;g?r(4."Fa0&CE"tHkP1h5m(O`u//%[-WNG#Ur$%_F6Dc-G53)FCK-J9WQ-?e<?^0$pIpjH^/]i08I=$#0DEPiacDEc/SR00m!2CN'NCbecdQF17qb?ek2cJ&MWXXJB%LW-j&YN(2"cV&c7'pbY03_j,XO*]o%66,L4W4)#:tBID8KGY(L$>G_b#?a.AY!.b4WH])jPu?i+I-%he>F5LnXWaLKr'6g/*148OBpOIK-UJKLT&C=[LJXQ>i8FV9,luZ[s-o#j$'L.^=5L[!ebR@cqoM0l<DSa^Yj:\']=@hB[6*XQ$`/lkO-!Yq=8%XtZI'K%/B_LU>HO+ArOd/`U`=$`#t2[OSLZK@&K\CYI0!i+\R&0;'3.0uIO*Dl[c+SYm@Z7FFs$*h`P.;nl(pFbT5&BW092NO/HQ%,j]r\q2W@k<OsW_%N^Q0(>kcd(S,"H^^5%Fd\4tn/m*_0pD~>endstream
|
||||
endobj
|
||||
21 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1630
|
||||
>>
|
||||
stream
|
||||
Gau`T>>sQ?'Roe[30.L7'p:+@nojlVcGF\$b\e:rSij?S,YIRc955Cos1Ydd9cO6A)<q>E/(-H8\U?LG!Gl)\rh%42^JEhTJcMJu>lnGj_=SAcVp7L:U7;SQ!HKK0I1"&>b6tV@PCU[cpSgqR@Y(=_^a)3Dq@]`0-Nk$CBioh'#U$sgO:73r*g_8YhF3r4URE?eF+8ObNDGl0I)KfB#%mNd_TWEd)q@Q')8a<**_^(2I/ABa(&ga*3hP<,B`ro%R@`:O&5Xk7\$,9i5NjM$lg+bO5@OD^<6u<$\25OOYpo<CkBW1B.j9DA<L>1B4TSX(K8g"/CKQ1/,X'A1kFZs;:H\ng.Qk<s5-eLf2FJ2h_,S[$"A0uF]$gt=$!cAkeP,(N"3=4cgm<F;Uf+mShhK!O.*Uh3ZqtX,"^b5X4%iS^(ffArLV'pk)V_GG75bgaPt]ppCt;6emXC2^crMnP`t:-8Ol8@<SL1;l,GN;WBG6Iu_tbK-dL<4CZO=3%-(l<_^Y)d!ht/--V1_]nVRhfI!r<6?1n'0Y.Noi3Ss)jQ.2@>MD"m34PB@d4q(lV'`@CTs<ZMt-5LV$?A"@ug.(C0gE_jcoP2)>Cn3oTq)"iVVO@P*PXfh12Hb3`,0"*N[;UODR>ie!S<E),aZS5G5'AViMk;!sjT=p5e4mai<U+XT>abB`'hFNg:JE/nOShp$[/Nq2%H)=T8(I(kR@VltJ]MS.0H<f[1\rV_7[3t3K0F:MJ-l29u@X5-di@s,u<Y%PQhtBCK-$q7.lBZgGF]n0%0=M&-jiA7nl:(miT:<j&]iSMl)`PfZHAHlZgkXNj6<$Zd3u0hMic8Hde96Qd@>74#6oK,K:-0g#Z6.#V("LMaGLr['?`o)U\";(nBLe#[mNHTV&lSG;`gng=l'e*;PFW/m_cj84XQ_poSQj-X\E0b_<tBZt"r#-??[L2kO\Z;FAog3YF'W6:af=R)SKI2f$,L.r/)%(;*oa>aFu_gtJG/7V\Au=]cV&=b,[<q\EL-!,EL,H"ApZfP21@,]pKC82-.(\3L,+JtYsVuA0*MP-^V&'%1EtQnhS3#aZ%P-uM2idN_+/SE=D-mXI]dfO;^t.RPFAAO)Cn,`.Or<-$[ATX/XXK8.T8d'-@'Pcc6s]:bRkN<U>7iG'tBh(f#%PZE04`n>U<rFjOUubJCW[S=bhXW5*!,"P4@L)lY'.>#WCF%6FsUSHNb2=a0K>nH>_#!V+.uFH<ELL,.l4aPZ_bQ\N*DJC0QF("sg++LMVWfos6l;D:#LO**>I#P*Va>J"lU1Y<[f^qaBb:<$2?_M:VFd8M,O;Ua4[fTdAE9"F%_%VsBn1QMZIm.Huq-l]caYC,`*&caAN^m3Zc'8Q<e=PE'<Nl7G_>-?G_Z,ncT24#hdJ1&Mo'A&DR5F1'AA&pm44Dl*,^ZnSH$b95@d6^8+Wj.hbtOh@f[X\'u3`C>$[!s_QfYH[@q&J@J&]2,SC=R'QREtFl_l7Dlrkj6]5*JT"9rJeVfCJqDPV!/m^lI@CC)WJl1-f;r$h\5sf83b'C)*cPlMHr4X_O$<-h(Jt\&+9Ccarj6gSS$o,1C7<IP^h4)EOrhHlo<9!%5qa=/5KX/lg-&o<a/bDq%"=En'(~>endstream
|
||||
endobj
|
||||
22 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1746
|
||||
>>
|
||||
stream
|
||||
Gb!#\gN)%,&:N_Cm.a.q@KZZa!0cZ"4%Z;eh<&0(%iro:?j`'2;ku`HG*B,u!k^%lV::ni[O3=d?nV`iB:!$lnX$e9P81mZ;gA#)!TPk>!"2<tdkc5+ofd\T7pH0?&78="k!3D5r]n$dEX3m&`B7`TW?>(A&4f9dN$WFJ-Nk)ZC02I$%#B_<O9#p7_FR.'XS5<)3P#\k(e*ugqBeC?_i%+97#,4%IqT7'YU6?pWZMep64q(V"d;1-HoQgeMP[J=bG*)9:K-Q>d_Lf_!@Of7;W$]>=R5MhVH5H7Z47(.K1KGYOVf$#doBt:7;_+f>,Ji^E+%TE,1p(TGS=+'!X+A!LqH4pAT<CmFOqFC$]g'f&g$%W$nEtBU5$)qbIg)<]<ECBn;dhaW#1Q9G#%&iZNLjk$3Oq@*K*M5L"jf)\7!RW/qRsD:%]$bLNcW+?IRaJm<p9%m=WOMTo6<]he1Eq-JkT^G[u<im=+aiK\5g['%nsJY[Q*=it2D;M0pK&Fr_[B8X='m(KjeT8fK20-IpZ&>M`QQI3O'aCD2uYFCJWP9PQ?]'FJ=A5K7#J$F@ng7uT%'SY\bXXI;]2%kh_%G1BTTjt>pCYFpCI+,DfFG<1MO0W]Bq@OM3FJ@,6\#9<$DnKFW_55K?#5\jB((f*nJ38^gfKrR!-HN&<QlY^VLms+a4YheJ0T&Vin$jEiBl:4"Rn_R._0-.%^Sp"nJ[Ip)94=#Kh<N1PLf`tuS1n,IE/fi.G8^1*P3I9CWAMuQ;*TF]%j9Xe=gTI_,a2u=8.qMVC=O9)693/?f,,+)9VM6_lINLuFqZdMW.)MpC&8R0()SD),&9r\J?L.:]iYKh@lGL/-2J$Ve_/,:sVCZ>7HN_TG5,^->W=a.L*C9iR@=fX^#<dSN4M5Tjat-1k*A=cT)_?BG8sLp/i<g;mQcCDl>O&%S_5N=<:qU[f$+Hn)BOI[&HU&Ui6RZ(Hh=gN5c/pXXK``$_r2[p%keGC(@CK^QK3tN9)VnLR=hR9Q<0!\sXZsY0b2MFJlkRa0;3:%g39LSjpWE-n7csn<'L`=L]dhsbDbo?35-<";^.D/m@@gL,@4_-R/Weis[,3Tnr=J#[59ok;\&G9RSNR4KWs^J'QLdn6,3ml_S2A'N[n#:=8p:in+$dCTp4n4fZ_;n*MNp=1r(b'G2PG"d(I9uhe\$7m1qaj%]eS7<qT]/'H2/UEXqa,Vod4k<9!a^^">V?.<?k[#*c<%'"[i8]DU%$&.hj7N8R(@LM#sJgVL4!,Y/'5m.Ym]Z,"qSd7\Hdi<2YA(I1LZXYe<YGC4QVpl(^.:RP.N]9tA[3lEm;ugU##U8k!1_LFRj=Z.E@.2>YoNG(TKlcj$sWf/hfOf<?$/jd"tAd@_tY91U[XEfJ2?NO^=(F?Z2<%O%qs0+?p2/DHp>EuB'in?L^-jR>Y#F/>27%mLTh_"5W0PJ[aJm](6Y-I,JMOXScO>)T[U_6"DgY^:Ze\nSrqjIIV@<_Zj.gU]?kaEH+PAd;Y>)QP(aO2\b`p_[AgOMd8?bD@gCG,q`h>dHM=L+S6nmf0G;@>J:7N/h)n:_Lq@Vc1;`DC0K<F<ai^\qa&V\e3X8UV3l"XF-cR/Gr!'laH-.m%FTJ,l"M/kjfJG=PlkCLIZed<*Z4WY_01p@,,.I\mH?(GUsA4C>[j3'YaH/QM\7(k)8s3A%Q8Ci;=V`eiYgWLYDrk3f,kHgureV_0k,@U@B@p8*SU(PLM1Ni;F$,0P!H~>endstream
|
||||
endobj
|
||||
23 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1376
|
||||
>>
|
||||
stream
|
||||
Gb"/&gMYb8&:N_CbaW/g?LNSp6P-U7;POEt[tU)2)+YTZ/^pCaKqt7$mlS_9MK36#J.&t;.L@F^hO-AcF3a3:!Q?^-s/$0S[o57HA&(&tYCXY<L?X'[AK#uV#Zk9O&r85@=:W7Vs++o+'d+5gQ<OQJC1;8nZ!kQfCOi1PekAHmi;+j25d[9>`'=`pb,?E["]:e"lBk,=m!\mTTCMD%;*?sng&3TANaVg]6<"O1b+t=W?,5O\[m/3tf5g<EoVO0\ps;tm]kQD^Et,&1nBTk#]Ni&5&>loj4n8nK6"=JF$;,4@IIHI4.Bg?+^F/WS83i.9r.,S&+t2<c;V&4!=S[b,b,iJNKPOY$?_.Ph8[q1#Kgc\kh3BnNngHEG40D;Oref'ilES;:A'udX@R2Q1P-ptfRj*e?NBr?X\f\:K0N_3`;26!IBOaO3VX%W3SL]]`)GH/%!UJYcB!]3GURS4DOoKUl4ung7>J=!EH:Ei3Ar5W./)WB?c_\'W=])f2JZNNW=I+5=_ptR)RbV0h_Hi>.S2VG#F`l_P=dAS.=Y(P=,YA!a_:@LfC(-MbX%u^*AlTRK0o'T=H7'l?dK:Z,N[&&aHo0EsdEe.V5@MG+?T$`be0\pagl@l>)u*<B[r[os-o/:.k&:kgY$0)l#,ppn,TjiHX:tU3l_aB%`$]317?,Q+>;Ng3\P&FJ3@,J43Zc&K2AhWG#[FA"YtYlLq`K:G`b[R^+:&adNURLd&M/#EN374bZSno#(tQ&GRiENfBqDq3(QU?mlQKetc1c[0gKHRgl`+33hQJ#F=-ge01#0B*4A,J@#f-^aQV3ZWf9uNa6$td`/;Y"n49Q50h70I"_])uFcjE(Gi7pGTG%6s1BZmDq1FST\n8L\HJ+;.q\?';FK$W<tX^$I?5:-i>\kXEp(0Q9<hRUeI<X*8$<R)\PZXdQ8&',XC9T5eI!]^WP(,BdeSDe0pLakk$(7fWf8@?>#Fmu(geoM4A`/[i%qjnS2CS9M!ON7YCm1PJm7Z5G#*[LRT<cK$]oi-7M6NZ^D&#&O'kLZ@+l1'h^A(K4[T=&Q`9CU"\[,e2C31\AG2b11)];`S'k/C'Vjf'@K^8'UQ3@9D9KQ?tn7S)8E$4)7&ZQhR8NW]_q#G^TicV0_rSi1CDBt5^^X2tqpL%jHG2g2kVj!6K=AWu2Y^b8h4Rqbs!GeTaqh[a%Q2R73G>5-nu8+`BSj_F%(7LZMbhAfn_W*n'&D#44K_gk87IQ.&*!rq"V<8J\K-^MR0C70HEC'SIE\\c+,^kMZd+h.>>K#V:K:Qj^_;.C^=h+@.eQ=t-sbNnZ4ZQq2^jT:Uu%">@+3h-U;a7kCoXWuVUN]`R2T85#c87&/brokI?+Sm$K=8si~>endstream
|
||||
endobj
|
||||
24 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1900
|
||||
>>
|
||||
stream
|
||||
Gb!#\D/\/e&H;*)EAR=).8lV1?:^na[PW'QCg#ZTF;nU1@hdWo.nd#jV_*MupDronb@tEC(m*!#Cl9L0Hf<e%7kp\3B'"4r#C&Fei<ojK_fuO4,qb.;@5RD#l4NH*iHda/8Y(A6#orPgCt;7po8+RYJ:XMJ8E#.N)3H\9^i>nV9L,I`qP;/^#bMIg!g1^uV>nedL\RC7BU<tX+5C10lR.[<!V'sm:sJ9X?oWeh7Ti^2-'W\lKCKocY?nt.JsY^qkM^!@`c,*l3kR"O_RY2L,PX]7kr;u4C^\6)@/RqKBS!b/6kasQ%XP5J]L\q8a;[!p&d>!5n.n1>+S`TMb7A.Z%mAepN3^5hpXnBGc,Mn0oI&T=NX%9,\O'8u[:=4&Q..?i%9``.KXt-i7q=D'm+F,F+T_6u<^JZR5%2YO#hjfeHI>E<AgB2_$B)`VOKs"uY/'6n<nO/tAR`<V\i/lV264K#n$6$7Oa1$_4ac3S:rY"3ZAsalL'8j\N;LE</e^lX&<-T.T=m75IXH6^G&mHAi;(42kj7rtn_RhS/Fo@j:n<B#4!\/ce@E^Z$.HN(Tg<UGmfbq#p%m4lDkk)@o[dFV+e>lh:2aV%;d1A*cj4&kAfB,927=0)J$Rb=!i;PFVos>f=Cc^rI=]]o.6o1n![%):R&_)m$&!;oEHj6`GC0JT-:;l50Ao/3C9k7MoA*Ss]VRJo'h-pW?-gsQT]$8b)MQpJDW9TYdO!MaEmZJlF$)dgp`JQ06OIlTB.]Geon`(JNm/l)4BYFb)V>Xc9D66bOr^5H0Y3G?aLQtI3?AM[_gOLt3'&/8<%7C_WT"0$Ff"0\ib6%sZN@9Qbd8jA^$.I0c-eWEIr7M'qU5t#s4M"3:Cs^O$KBr-b=*d>6C(7-0;T:iRcG<)[3XC/dqLSi/Ce`rE&b$$!OF<dYpL$Q>`np)k(i?KODBgJ*KU`LFQ'[=C9mN6Mi'VDChdg],'Fb;*@66D&V?p*mn.4o.[fN(5&7ZaOB9jeK9MLC:NJDDE2Bj2Q0_Fj<l8d,<Z'oND*gU!K(fHt=i+/WkClff62qG+ngJZ!8.ESE4"$D)hb;\T!j-ae[sV6M.D5<!!&FsO3m.m?-_o_Li><#!QKX#9FGnH&0Z@!^0[dQ*As*hi@T2okP8tILSl+>k4"`L43--\)U!p#5<WbEmaNe*oZEkct"\)S!*kQE2-(th?)R<;"`GhM_L?Q?n,d;o<:Ru0bkUaJNOrLjoZ]!X!8!>q*2R=?OO[eH$h(J>!/RtmXq:?mFkqWR'#cn!KFKR!Y6u^s*QVuhk^ob_Wil^Sm2;!IK)TVY3kUaV6]Kt[ZT2i7md`oj,ek&mc!taLZae3"8p*X&bbCra)5e=#X\W1fgK\_.+^"@P0L;bc?ZO<>_g5>b\c;`3K7QXTklJs-]Aih\HZ.Zg5k.D'@Riu2M6Q:6,\JT^W2&\l-L)?/(`%B*8pW4'#?0mWra:;IAGK:cI!!_B+mVoGgV$*,1&:TrYL>iARPc3\ePs!NO0]-)[IWl[uGEa-Ro<Gu3!8$<js$Z!aJT3Y'=(qHeI])tK-3WVcDB,(!G-=:[dD\h86>OgOf[m9X9C.l:Y5]O]T](qIn*cbEl@0B\Z.T3/+ed_PXOP1Ymo\1Z:oZsJXi]/=K=VU=W,kaP[2GNTh/4<P\s`ld\[GK9gCqCF=P,8O/<r#>Y*[i?L!h%?K1`XP8Z1\;LARGE_E@._T5c^R,rkI(-%Db1Kis]=#nu<),ooH;`[%mr*nXWODAt9:Af?#sgW`ZHM/604m/#W5:A:cD<L>tA%iSR]4Qrr7RC[:oko+ocV?kZu[SO^#o:EV9[/QGZVr#_E$_?gD^1]o;6gqs*le$>>9QabbAsos;?1W:A0?:gL6_[O\a2'\q]Ii$fqZi)LUNQ~>endstream
|
||||
endobj
|
||||
25 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 864
|
||||
>>
|
||||
stream
|
||||
Gau`Qd<:sD&:O:'k0^!L_Ci&DGtUo]et/BgM6p'm&0)9T=P[8irVJ2qC1?hb4BURXOe'%(kMCcdi7`fAfCTs=3X4b'"j.r/!VM9[nL`P7SQU_%c9a_qiX+4p(m)h>J"X)B#luD9@M&e&L.$\Ypjs,%+p#pMKcpmk+cO].'M-=$;#!9Y%Ck=Xq&\LRg!W%j30.D/YP<sC?:=RGSY`kZ/XVNjX/=IHSkiT0KE9$;d(T>UZNjiKL,p>J=hkQC0HD)L0G_N*%mJql$TUXu#4ViUo=D^QW6^07JVPmEDc(9p7n\s@,g4@6`"p.@<H*^okV47_f=/oWA[bfKG0kKl2BK*1")YaeFd[6bOtFO'pbbM'1M\-Q;nE,ML+aB]F7^je-l$i&$C9irD#+eA$XsG;gSb7XmX(U;AagpTp!ZOnc"Md0fr=r>M?@Ln:3I1-3ZUeg=+W:7`$HrGjq9JnTm,,'H&TR1KL%OsQl(LU/.+O"K+BY(E8$(=L1IJY)hK[eT$N%Xi0sb;o6%j`qo77%2=o+Z%:(JeQ<<Qd[2uLoE4:]G0j`66kGt_m$b1lC^i&rXh0q4USe@#:Pc;B5b&!O3_Ut6T^2t@.$6uNtG3[GfKEQu-l+1bJ]sm=<PR?jF$UuJ`FRNa?5"'`bA+DCecmDToLX*!DdpL?Am?AB/E_**YT2);mer`#L95QFqhg/3=WUck;YL-ga+Oa?cXD$W5`=?S>M:61ceiH]]a4id7G/%NNL5BU[S5pLtai-\GDi>JNdn8`acN/0UHc#a'I@!"PqN)IQQKHg1LnepB$Hj-S8MX(`Wq*-/1_t#sB`E.o55*IrE!rX;oGCJ/.=GlEB#Trb9WcC-/K?g$!S#kClM~>endstream
|
||||
endobj
|
||||
xref
|
||||
0 26
|
||||
0000000000 65535 f
|
||||
0000000061 00000 n
|
||||
0000000132 00000 n
|
||||
0000000239 00000 n
|
||||
0000000351 00000 n
|
||||
0000000556 00000 n
|
||||
0000000639 00000 n
|
||||
0000000716 00000 n
|
||||
0000000821 00000 n
|
||||
0000001026 00000 n
|
||||
0000001231 00000 n
|
||||
0000001437 00000 n
|
||||
0000001643 00000 n
|
||||
0000001849 00000 n
|
||||
0000002055 00000 n
|
||||
0000002261 00000 n
|
||||
0000002331 00000 n
|
||||
0000002616 00000 n
|
||||
0000002723 00000 n
|
||||
0000004747 00000 n
|
||||
0000006696 00000 n
|
||||
0000008593 00000 n
|
||||
0000010315 00000 n
|
||||
0000012153 00000 n
|
||||
0000013621 00000 n
|
||||
0000015613 00000 n
|
||||
trailer
|
||||
<<
|
||||
/ID
|
||||
[<44f9cee1fc8d03a58752233f94569497><44f9cee1fc8d03a58752233f94569497>]
|
||||
% ReportLab generated PDF document -- digest (opensource)
|
||||
|
||||
/Info 16 0 R
|
||||
/Root 15 0 R
|
||||
/Size 26
|
||||
>>
|
||||
startxref
|
||||
16568
|
||||
%%EOF
|
||||
BIN
Les07-Supabase/Les07-Slides.pdf
Normal file
BIN
Les07-Supabase/Les07-Slides.pdf
Normal file
Binary file not shown.
Binary file not shown.
102
Les08-Van-InMemory-naar-Supabase/Les08-Huiswerk.md
Normal file
102
Les08-Van-InMemory-naar-Supabase/Les08-Huiswerk.md
Normal file
@@ -0,0 +1,102 @@
|
||||
# Les 8 — Huiswerk
|
||||
## QuickPoll polish + bonus features
|
||||
|
||||
**Deadline:** Voor Les 9
|
||||
**Inleveren:** GitHub repo via Teams
|
||||
|
||||
---
|
||||
|
||||
## Opdracht 1 — Deploy naar Vercel
|
||||
|
||||
Push je app naar GitHub (als nog niet), dan:
|
||||
|
||||
1. vercel.com → Add New Project → import jouw repo
|
||||
2. Add env vars: `NEXT_PUBLIC_SUPABASE_URL`, `NEXT_PUBLIC_SUPABASE_ANON_KEY`
|
||||
3. Deploy
|
||||
|
||||
Test op productie URL — moet werken.
|
||||
|
||||
Noteer in `DEPLOY.md`: productie URL.
|
||||
|
||||
---
|
||||
|
||||
## Opdracht 2 — Voeg validatie toe
|
||||
|
||||
Server actions valideren nu te min. Voeg toe:
|
||||
|
||||
- Min 3, max 100 karakters voor poll-titel
|
||||
- Min 2, max 10 opties
|
||||
- Toon validation errors **inline** (geen throw)
|
||||
- Form blijft ingevuld bij error
|
||||
|
||||
Hint: return error-object uit server action, gebruik `useActionState` in form.
|
||||
|
||||
---
|
||||
|
||||
## Opdracht 3 — Optimistic UI
|
||||
|
||||
Voeg `useOptimistic` toe aan VoteForm voor instant vote-feedback:
|
||||
|
||||
```tsx
|
||||
const [optimisticOptions, addOptimisticVote] = useOptimistic(
|
||||
poll.options,
|
||||
(state, optionId) => state.map(o =>
|
||||
o.id === optionId ? { ...o, votes: o.votes + 1 } : o
|
||||
)
|
||||
);
|
||||
```
|
||||
|
||||
Bij click: roep `addOptimisticVote(optionId)` aan voor de server call.
|
||||
|
||||
---
|
||||
|
||||
## Opdracht 4 — TypeScript types
|
||||
|
||||
Genereer types vanuit Supabase (uit Les 7 bonus):
|
||||
|
||||
```bash
|
||||
pnpm dlx supabase gen types typescript --linked > types/database.ts
|
||||
```
|
||||
|
||||
Update `lib/supabase.ts`:
|
||||
|
||||
```typescript
|
||||
import type { Database } from "@/types/database";
|
||||
export const supabase = createClient<Database>(...);
|
||||
```
|
||||
|
||||
Refactor één query om de gegenereerde types te gebruiken (autocomplete moet werken).
|
||||
|
||||
---
|
||||
|
||||
## Opdracht 5 — Reflectie (250 woorden)
|
||||
|
||||
In `REFLECTIE.md`:
|
||||
- Wat voelt natuurlijk aan Server Actions + Supabase combo?
|
||||
- Welke RPC functions zou je nog meer willen maken?
|
||||
- Wat verbaast je over Supabase t.o.v. eerdere database-ervaringen?
|
||||
- Wat is je grootste vraag voor Les 9 (Auth)?
|
||||
|
||||
---
|
||||
|
||||
## Bonus
|
||||
|
||||
- **Realtime updates** — `supabase.channel(...).on("postgres_changes", ...)` voor live vote-updates
|
||||
- **Delete polls** — admin-page met delete button
|
||||
- **Public link sharing** — kopieer-URL knop voor polls
|
||||
|
||||
---
|
||||
|
||||
## Inleveren
|
||||
|
||||
GitHub repo URL + Vercel productie URL via Teams. Werkende app + REFLECTIE.md + DEPLOY.md.
|
||||
|
||||
---
|
||||
|
||||
## Tips
|
||||
|
||||
- **Validation** is meestal het vervelendste — werk er gestaag aan
|
||||
- **Optimistic UI** voelt magisch maar is lastig — test edge cases
|
||||
- **Tijd:** ~2-3 uur
|
||||
|
||||
Volgende les: Supabase Auth. We laten users inloggen + RLS per user.
|
||||
124
Les08-Van-InMemory-naar-Supabase/Les08-Huiswerk.pdf
Normal file
124
Les08-Van-InMemory-naar-Supabase/Les08-Huiswerk.pdf
Normal file
@@ -0,0 +1,124 @@
|
||||
%PDF-1.4
|
||||
%<25><><EFBFBD><EFBFBD> ReportLab Generated PDF document (opensource)
|
||||
1 0 obj
|
||||
<<
|
||||
/F1 2 0 R /F2 3 0 R /F3 4 0 R /F4 5 0 R
|
||||
>>
|
||||
endobj
|
||||
2 0 obj
|
||||
<<
|
||||
/BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font
|
||||
>>
|
||||
endobj
|
||||
3 0 obj
|
||||
<<
|
||||
/BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding /Name /F2 /Subtype /Type1 /Type /Font
|
||||
>>
|
||||
endobj
|
||||
4 0 obj
|
||||
<<
|
||||
/BaseFont /Symbol /Name /F3 /Subtype /Type1 /Type /Font
|
||||
>>
|
||||
endobj
|
||||
5 0 obj
|
||||
<<
|
||||
/BaseFont /Courier /Encoding /WinAnsiEncoding /Name /F4 /Subtype /Type1 /Type /Font
|
||||
>>
|
||||
endobj
|
||||
6 0 obj
|
||||
<<
|
||||
/Contents 12 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 11 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
7 0 obj
|
||||
<<
|
||||
/Contents 13 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 11 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
8 0 obj
|
||||
<<
|
||||
/Contents 14 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 11 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
9 0 obj
|
||||
<<
|
||||
/PageMode /UseNone /Pages 11 0 R /Type /Catalog
|
||||
>>
|
||||
endobj
|
||||
10 0 obj
|
||||
<<
|
||||
/Author (NOVI Hogeschool Utrecht) /CreationDate (D:20260607080655+00'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260607080655+00'00') /Producer (ReportLab PDF Library - \(opensource\))
|
||||
/Subject (\(unspecified\)) /Title (Huiswerk) /Trapped /False
|
||||
>>
|
||||
endobj
|
||||
11 0 obj
|
||||
<<
|
||||
/Count 3 /Kids [ 6 0 R 7 0 R 8 0 R ] /Type /Pages
|
||||
>>
|
||||
endobj
|
||||
12 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1785
|
||||
>>
|
||||
stream
|
||||
GauHLD,]1K&H;*)YohF9<@.I3DeXcT3=aIMR-RFX(r[*'i)ls1_qi)Bot-Dq894>n-Gd!pqs:*68*_k%pgV3TYQ4GRL<h4U(l.W%0T0$e5)81'n^AW9iN?_o0g0:J*/JOqIuqm6(i4se55,q>e0U]%J`SWGH+jM'f=<MT+d$a<d9o4ELUs&\`+-793?.9Yic'p\/Rgf%^V7G!kN22\i`,+QB)+o+3.k3s2-*G0:hI<tN#+1X\@ahS;`0nUE3E4Df/f&1]nQjV/e$(a83Y-d/S4JR`Xad&QojLK[2_XUQb'4e:U;a'QH<WNAL-DH/:_joHp\6V'+V3b3@5uRDjs;rX8EkGY$2a/CR:hpM"&8/S3$J:%bZkTo(Ldg^h>>;1C:I+QEP/G*+HM'LW16BIQ=HKer0`$kB:B8cC,@!>,/4+^n:rX_TutGop(SIar0pXmODY:a%_M`@qM)sNd/Xbqo-iT1hjO-2g4U%l;?;OA*8:uX)Z^LjKUW[:$g+1D6;4:fmf#F2eE_m0or_n=bPPRa3pn:.Y!_?s7leG3-f@K@e$HX3k:.Pc!6I%i$(Q]?,+J:F.$K''o?.mnS7>*MSKQf0OH^'';)TN!*]>eKu)e?71h(N'W1Wo)ba8%V/Rf9c4ZPZ=WD,+c*[\4UH>0KC>5H,KV&H#DV$un-s?W5NI]RF.@=GP"Cin<X0R:JPt-q"=W&YfE,[$C%p)#?;>HSHH0F#:AuiA\-p_hiL^6aT(=.XD<LibD_mH(`L%$rmdO]f.MJ^VA7F@m%)rUIc?U]#RcQko!RgA]p+>3o5/;:-@.Ae;S0[01fL:_A>DO[`8D*5'cXQR!mD'rFt1L]l3r;Jbf4r9LQ_#b,d^FX[F*OtAhL_<Q(r:r[@AS<Zd*D0^Y,fM;A@p'GunhGY6V%P3PW:&1?#%qq/]:?reF4K`Q50]rQ9hPXcTn'B^MuGhV@pkh:GS9_UB":YmiRM7F-%;a`UnV;UjX+=eB8O]*Hrf\-O^(B@+,GVAi'o&EN8=bTg"$M%S[*'rTc?6e&BeYL[:3u.&5`e>RR8&e4o'$s1D0AZHJ@<OZiaoU+iL.ogl9XH$^6]ZL_d+=Ut4!i9Ka-F5m"HmPL*R*0]BIHQA!d/(sZ`4+eN2-W!=4(h$o$qV+NR,W9h&ckh[`Zro-(sjBE0uHg7eUp/7IEAB=NPSj\__el5aofj5Zu281):IlTajH@'ct)L`Q1*T(1Q5@6)4KC)\L0.nnqs#C#J$=WD?Qam9,qrM*4$/;Mpl14f7?n>4cC'i'Oc*BTi&s2rfRMJM1a;ZlPpW)!^=:qAM1ZUl:.2*!INBKHd*h?[;+H+p!3ZP:hh?K[-Vk\#h]fL(0Vj[$l3mUGSDj6c%!CUAQ?:iL9^($HVedA">2YK`i-t"0LU73Z=kJnpf)/'>70IA(oKX-<UF6[nPllbo3deRpk9pk8?K#Hi3nhF]OWrBrL1Cmk:rl/pbO!50s=scdDhM0r%7.a'+qN[8tlZD!u50?%#r&dSX7u8OQC"V;_H(?Scf1/g;g/0`I9#XM!iP.->'^j\$`u)gAPI]'m:'Pcrje2&UofW'>)AE,q&UWp3M+SO;NP^H4N=n:=:K]N,C%tL;ZMd)+Ya'!>I)jJk%:agBXU76u=$,qD9oIjU$T4_c2*-8uS0hD6\=rV!.Yl!-.kUDUQ=1!T@B<[H4gIe>?gdctSlr._n8;EJQ<Jcp[C$9=*<pJ2[KT^oGG+:nHQh?$d+Dg[?kEPaKSWM([4G4ROL[&?[>6\HB_gmfb1T_s)a??5nLl37kBd~>endstream
|
||||
endobj
|
||||
13 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1974
|
||||
>>
|
||||
stream
|
||||
Gb!#\lVlRs&H@3/`=AN#'SIc:QCX898UuO5V@[c>VUOjQI'u#Yfp:[=-#':WHWPY034MUB,TI>1^"TrE]7PWc+'SX:@t5@/fK5fm),)Z5>/Z$7#ol]0+%Cq:9NW9jknp;@J@MKUJo!VCJD8"cR7k@N"EB(uQ:$Mh\.14J-Nk0G8[s"%U-OBK#fd#+:i8AgNVt3/)+2piiO8-&\\GDqdH8!XDQH2]lYdJl*40^cPA4:>TNlH'`%_2Xo\D77;KJ9'QV'^9[`G7o=hp7V!RHhc5V?WD;OMC>j9d5p["<j*bGN2nL:Al.<>jp@A[\P6S9a][nUM&o]Z(Mk,&Gi_ATLHP@CR0N&YTDOD2_9b[uReTcNjVF(e;.Fn]2?;Nbq:E7[@QJNBO76J5$Hq&4;?(o(\u?k#0'ai-$EHV3s`=Nj,2lmdc+3Z_4(dW.#><-kVIqG]!)iN*_i814!FS>]dD4qg38X7t5V@WX;=Il?r%@U%53k%H92j1!#_T>Xk+j[S&0pEEJJ[?R9suJ#K^[j"N,QrtM)e[KBhIS9ED+WfV_I5*WVEM:;"^V9pdPJoJmiBr)(X<Dc.`,Q@,%(+6O>S7^f'S/5KTGG*f?*)*hMs!^o8&prkbXDiTs6rV-sYuW-#,%1KKqtlp\GR"0J+[k_5'"uO3,>7\05G=Ts!S;Or?s#)YOLA2.hp($We_JX@-hj2EoUn>l+,9=pX9t1X.u:2jbKr+3=S&*.@Jh=^!^@%j`FHuR9VG@]bGF>AhoI[0[#9(Eg^5*Tk9UrhPsHN9Qe>8Ki-UjGCG+E1">adP6RQb_i/Z>BgkiGj!`0&?mg.mX!^p(C@XOUKRAUYAWmPMN3L+O\/5-F"n1h]8>`MTICV#>Y')t-\FXG,Cb!]hS@oFh/V3dET!H6-1RsDQ_U=RL$Hm<$rOtrYI5@25Ol4B0MmgkX0)aYhD!(O4r[Sk?N2OZKQRKGZ/2>jk/$n^dr+`M]"dNjeqLd",]VIhHE->D$!\n#u.UG,il!1qck]tc-JG#IDqSR$+MD:UU/\o1MH,]B4*.%K\4#.G?VcKH1CADq3!p$M3S99r.SK6')T.*Es%g4FJoAVl/@\"KS]o'-urO`_A5(M<<N*k:4422<k\<E>k+p7-c4OKcc1A1E>9?hUX(f[c8Z4,Nl7M6>TZ=4-p'B+iDOAJE:_ppnrMF?7Er[motoR,-<8`^"c$00I"bFtkj7eNX@f-tW)id+:OT[X!Li\7gnnVTuJ&>i82DNkM_p^5CB1iepp\!q_9tPNhcZ/]XSF8TU*!CcNin;p4[F[2`M^*-=?,IM$>)BAA#ufJNbJq#,B*S.Eit&2]E2)h;pWG]\!$EcQOuia@2AkcPCh\-$f2l?.FR\pUjPQIP>H5gQp/"P2i>405,)'k4#%-4\Ig3cq$1UB5l4'faO\W.;f:atemlX$no,]W$[UkC,:piZ-TnD_/qsHFD6GCiRb<\_ZT*b\\4L,b1L?KSqU">l7fkE$ZZ)F,9MUnhH(I4G0noa6bL'RIP7ap:<0.ZHQpPLWG98.\59GT`r8HT0S)sGf=QoG8DdFbJIe=O8BIOrDu'&k1]3JVGr[&O=i?8S(D_oSjH_9W97`33ShF6kj)4k`<7L:Ep].Mb"UYHHn2_@cr9N684C'N:q6m14^]&[,C<--Fb[]WD?KTRks]hmP>G:iiJkCODED37IlAePQX5irW+l,s-.DBbWq'Vjao!gjE\?sc*N7iO&7(Pn'J<t_hH4-GGDDL^38h$P@GVpS"'H'LqHjpe@d4,:R-^^,*(LR15_=="X=O^Dr(tJ=U$$(M/.-gPQQ+"!/$-?G!"5'H#`lT9cVIr2W3i^_5%8:.#3?&o/M:'*#,PA@n?%4\S4!uU?EVRLVq,E_X"D'RVB6SWar+_F<M6,Y'>0Ns0-a"D'pR8DVod-/K8K6[SA>#:I`6Ta92f@Cc=XRK3'98_r>hN^(iT*7aJ-PQ!t(h'!$bB;g]~>endstream
|
||||
endobj
|
||||
14 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 665
|
||||
>>
|
||||
stream
|
||||
GauI3cYo:,*6%CB/)E#H1tOY*2SF7eW^a#>Ff!cf(GBb7*J"Wgm^BmD"qm@HbG=Q&YX$)!HdA=f%0I%ul^kF/n1hoH"U!dU+2A!k8?_MC*W6lg0"DTL8>KsaE0)>[0@\[R6nF0gGf$,Q,$G9Yc%sr-"qU<i@LBN^_o[^c-qT[>+I^8IbCfU&OdlYl6"2:,rV>c,\rE$f\P<rMp+;)S&T#.Z5rB:.Z<5(:QPb4_Ska6-A_,*A<E7u&f64Ul\E@,UI"G/faVNFLf'e\a,!BWL[R>g[6n53[75(.crO2CF?KJ60o$SZ7;Rd#=2\M:WF"&_uNi<<Js%Ra]T0fuHV\]A3LOjY,)Q3DRmJ(N[%O@ha>E6)Vme+2te#r%b./IPi7\jB-;@F^qbs(2O;sJ&;Lln&Zbm(@=_-Z7mQLK$t1Q86/aQLS+<S:Nf/81!t@;2k8VSL&p4P;dFfTpUAD-sQNG.'lk%Peo\.?EU"S!q&3N/cF>@9g!`^<E.oB=OENn9CsLiNWgG1`V,:2KaqV0O]@["7ZBplo_VA)/#$!X8q8i=o9(n1k2$f*?b-p5=B1RqS;c9c[@dT;XC"+_;_X+A@i5><^dc^S4-lB)/bq/q%:-r]^ZA]n):VC[RB.lm?!Z'Q%dV1O)J+/#f!+:KBu%GkS]*Q;ag~>endstream
|
||||
endobj
|
||||
xref
|
||||
0 15
|
||||
0000000000 65535 f
|
||||
0000000061 00000 n
|
||||
0000000122 00000 n
|
||||
0000000229 00000 n
|
||||
0000000341 00000 n
|
||||
0000000418 00000 n
|
||||
0000000523 00000 n
|
||||
0000000728 00000 n
|
||||
0000000933 00000 n
|
||||
0000001138 00000 n
|
||||
0000001207 00000 n
|
||||
0000001493 00000 n
|
||||
0000001565 00000 n
|
||||
0000003442 00000 n
|
||||
0000005508 00000 n
|
||||
trailer
|
||||
<<
|
||||
/ID
|
||||
[<0cbc8e901f9a8fb8899571460bcbc4ea><0cbc8e901f9a8fb8899571460bcbc4ea>]
|
||||
% ReportLab generated PDF document -- digest (opensource)
|
||||
|
||||
/Info 10 0 R
|
||||
/Root 9 0 R
|
||||
/Size 15
|
||||
>>
|
||||
startxref
|
||||
6264
|
||||
%%EOF
|
||||
240
Les08-Van-InMemory-naar-Supabase/Les08-Lesopdracht.md
Normal file
240
Les08-Van-InMemory-naar-Supabase/Les08-Lesopdracht.md
Normal file
@@ -0,0 +1,240 @@
|
||||
# Les 8 — Lesopdracht
|
||||
## CRUD + voting werkend met Supabase
|
||||
|
||||
**Duur:** ~120 minuten klassikaal
|
||||
|
||||
---
|
||||
|
||||
## Doel
|
||||
|
||||
Aan het einde: QuickPoll volledig werkend tegen Supabase. Polls aanmaken via /create, stemmen werkt persistent, alles in database.
|
||||
|
||||
---
|
||||
|
||||
## Stap 1 — /create pagina
|
||||
|
||||
`app/create/page.tsx`:
|
||||
|
||||
```tsx
|
||||
import { createPoll } from "./actions";
|
||||
|
||||
export default function CreatePage() {
|
||||
return (
|
||||
<main className="max-w-md mx-auto p-8">
|
||||
<h1 className="text-2xl font-bold mb-4">Nieuwe poll</h1>
|
||||
<form action={createPoll} className="space-y-4">
|
||||
<input
|
||||
name="title"
|
||||
required
|
||||
placeholder="Vraag"
|
||||
className="w-full border p-2 rounded"
|
||||
/>
|
||||
<textarea
|
||||
name="options"
|
||||
required
|
||||
placeholder="Opties, één per regel"
|
||||
rows={4}
|
||||
className="w-full border p-2 rounded"
|
||||
/>
|
||||
<button className="bg-blue-600 text-white px-4 py-2 rounded">
|
||||
Aanmaken
|
||||
</button>
|
||||
</form>
|
||||
</main>
|
||||
);
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Stap 2 — Create action
|
||||
|
||||
`app/create/actions.ts`:
|
||||
|
||||
```typescript
|
||||
"use server";
|
||||
import { supabase } from "@/lib/supabase";
|
||||
import { redirect } from "next/navigation";
|
||||
import { revalidatePath } from "next/cache";
|
||||
|
||||
export async function createPoll(formData: FormData) {
|
||||
const title = formData.get("title") as string;
|
||||
const optionsText = formData.get("options") as string;
|
||||
const options = optionsText.split("\n").map(t => t.trim()).filter(Boolean);
|
||||
|
||||
if (!title || options.length < 2) {
|
||||
throw new Error("Vul titel + min 2 opties in");
|
||||
}
|
||||
|
||||
// Insert poll
|
||||
const { data: poll, error: pollErr } = await supabase
|
||||
.from("polls")
|
||||
.insert({ title })
|
||||
.select()
|
||||
.single();
|
||||
if (pollErr) throw new Error(pollErr.message);
|
||||
|
||||
// Insert opties
|
||||
const { error: optErr } = await supabase
|
||||
.from("options")
|
||||
.insert(options.map(text => ({ poll_id: poll.id, text })));
|
||||
if (optErr) throw new Error(optErr.message);
|
||||
|
||||
revalidatePath("/");
|
||||
redirect(`/poll/${poll.id}`);
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Stap 3 — RPC function voor voting
|
||||
|
||||
In Supabase SQL Editor:
|
||||
|
||||
```sql
|
||||
create or replace function increment_vote(option_id_input bigint)
|
||||
returns void as $$
|
||||
update options
|
||||
set votes = votes + 1
|
||||
where id = option_id_input;
|
||||
$$ language sql;
|
||||
```
|
||||
|
||||
Test:
|
||||
```sql
|
||||
select increment_vote(1);
|
||||
select * from options where id = 1;
|
||||
-- votes moet +1 zijn
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Stap 4 — Vote action + VoteForm
|
||||
|
||||
`app/poll/[id]/actions.ts`:
|
||||
|
||||
```typescript
|
||||
"use server";
|
||||
import { supabase } from "@/lib/supabase";
|
||||
import { revalidatePath } from "next/cache";
|
||||
|
||||
export async function vote(pollId: number, optionId: number) {
|
||||
const { error } = await supabase.rpc("increment_vote", {
|
||||
option_id_input: optionId,
|
||||
});
|
||||
if (error) throw new Error(error.message);
|
||||
|
||||
revalidatePath(`/poll/${pollId}`);
|
||||
}
|
||||
```
|
||||
|
||||
`components/VoteForm.tsx`:
|
||||
|
||||
```tsx
|
||||
"use client";
|
||||
import { vote } from "@/app/poll/[id]/actions";
|
||||
import { useFormStatus } from "react-dom";
|
||||
|
||||
function VoteButton({ option, pollId }) {
|
||||
const { pending } = useFormStatus();
|
||||
return (
|
||||
<form action={vote.bind(null, pollId, option.id)}>
|
||||
<button
|
||||
disabled={pending}
|
||||
className="w-full text-left p-3 border rounded hover:bg-gray-50 disabled:opacity-50 flex justify-between"
|
||||
>
|
||||
<span>{option.text}</span>
|
||||
<span className="text-gray-500">{option.votes}</span>
|
||||
</button>
|
||||
</form>
|
||||
);
|
||||
}
|
||||
|
||||
export function VoteForm({ poll }) {
|
||||
return (
|
||||
<div className="space-y-2">
|
||||
{poll.options.map(o => (
|
||||
<VoteButton key={o.id} option={o} pollId={poll.id} />
|
||||
))}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Stap 5 — Detail-pagina updaten
|
||||
|
||||
```tsx
|
||||
// app/poll/[id]/page.tsx
|
||||
import { supabase } from "@/lib/supabase";
|
||||
import { notFound } from "next/navigation";
|
||||
import { VoteForm } from "@/components/VoteForm";
|
||||
|
||||
export default async function PollPage({
|
||||
params,
|
||||
}: { params: Promise<{ id: string }> }) {
|
||||
const { id } = await params;
|
||||
const { data: poll } = await supabase
|
||||
.from("polls")
|
||||
.select("*, options(*)")
|
||||
.eq("id", Number(id))
|
||||
.single();
|
||||
|
||||
if (!poll) notFound();
|
||||
|
||||
return (
|
||||
<main className="max-w-md mx-auto p-8">
|
||||
<h1 className="text-2xl font-bold mb-4">{poll.title}</h1>
|
||||
<VoteForm poll={poll} />
|
||||
</main>
|
||||
);
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Stap 6 — Test
|
||||
|
||||
1. Open `/create` → maak een nieuwe poll
|
||||
2. Wordt geredirect naar `/poll/[nieuw-id]`
|
||||
3. Klik op een optie → vote-count gaat omhoog
|
||||
4. Refresh → vote blijft (persistent!)
|
||||
5. Open Supabase Table Editor → zie de vote in DB
|
||||
|
||||
---
|
||||
|
||||
## Eisen
|
||||
|
||||
- [ ] Polls aanmaken werkt via /create
|
||||
- [ ] Stemmen werkt en persistent
|
||||
- [ ] Server actions met Supabase
|
||||
- [ ] RPC function `increment_vote` bestaat
|
||||
- [ ] Geen errors in console
|
||||
- [ ] Vote-count update direct na klik (revalidatePath werkt)
|
||||
|
||||
---
|
||||
|
||||
## Bonus
|
||||
|
||||
- **Optimistic UI** — `useOptimistic` voor instant vote-feedback
|
||||
- **Empty state** — als geen polls: mooie CTA naar /create
|
||||
- **Disable vote per session** — sla in localStorage op wie heeft gestemd
|
||||
- **Total votes** — toon onderaan totaal aantal stemmen
|
||||
|
||||
---
|
||||
|
||||
## Veelvoorkomende problemen
|
||||
|
||||
| Probleem | Oplossing |
|
||||
|----------|-----------|
|
||||
| "function increment_vote does not exist" | RPC nog niet aangemaakt — Stap 3 |
|
||||
| Vote-count update niet | `revalidatePath` ontbreekt of verkeerde path |
|
||||
| Form submit doet niets | `"use server"` mist in actions.ts |
|
||||
| Foreign key error op options | Poll moet eerst inserten, dan opties |
|
||||
|
||||
---
|
||||
|
||||
## Klaar?
|
||||
|
||||
Volgende les: Supabase Auth — gebruikers laten inloggen.
|
||||
@@ -2,7 +2,7 @@
|
||||
%<25><><EFBFBD><EFBFBD> ReportLab Generated PDF document (opensource)
|
||||
1 0 obj
|
||||
<<
|
||||
/F1 2 0 R /F2 3 0 R /F3 5 0 R /F4 6 0 R /F5 9 0 R /F6 19 0 R
|
||||
/F1 2 0 R /F2 3 0 R /F3 4 0 R /F4 9 0 R
|
||||
>>
|
||||
endobj
|
||||
2 0 obj
|
||||
@@ -17,7 +17,12 @@ endobj
|
||||
endobj
|
||||
4 0 obj
|
||||
<<
|
||||
/Contents 25 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 24 0 R /Resources <<
|
||||
/BaseFont /Courier /Encoding /WinAnsiEncoding /Name /F3 /Subtype /Type1 /Type /Font
|
||||
>>
|
||||
endobj
|
||||
5 0 obj
|
||||
<<
|
||||
/Contents 15 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 14 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
@@ -25,19 +30,19 @@ endobj
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
5 0 obj
|
||||
<<
|
||||
/BaseFont /Courier /Encoding /WinAnsiEncoding /Name /F3 /Subtype /Type1 /Type /Font
|
||||
>>
|
||||
endobj
|
||||
6 0 obj
|
||||
<<
|
||||
/BaseFont /Helvetica-Oblique /Encoding /WinAnsiEncoding /Name /F4 /Subtype /Type1 /Type /Font
|
||||
/Contents 16 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 14 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
7 0 obj
|
||||
<<
|
||||
/Contents 26 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 24 0 R /Resources <<
|
||||
/Contents 17 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 14 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
@@ -47,7 +52,7 @@ endobj
|
||||
endobj
|
||||
8 0 obj
|
||||
<<
|
||||
/Contents 27 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 24 0 R /Resources <<
|
||||
/Contents 18 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 14 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
@@ -57,12 +62,12 @@ endobj
|
||||
endobj
|
||||
9 0 obj
|
||||
<<
|
||||
/BaseFont /Courier-Bold /Encoding /WinAnsiEncoding /Name /F5 /Subtype /Type1 /Type /Font
|
||||
/BaseFont /Symbol /Name /F4 /Subtype /Type1 /Type /Font
|
||||
>>
|
||||
endobj
|
||||
10 0 obj
|
||||
<<
|
||||
/Contents 28 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 24 0 R /Resources <<
|
||||
/Contents 19 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 14 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
@@ -72,7 +77,7 @@ endobj
|
||||
endobj
|
||||
11 0 obj
|
||||
<<
|
||||
/Contents 29 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 24 0 R /Resources <<
|
||||
/Contents 20 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 14 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
@@ -82,265 +87,95 @@ endobj
|
||||
endobj
|
||||
12 0 obj
|
||||
<<
|
||||
/Contents 30 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 24 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
/PageMode /UseNone /Pages 14 0 R /Type /Catalog
|
||||
>>
|
||||
endobj
|
||||
13 0 obj
|
||||
<<
|
||||
/Contents 31 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 24 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
/Author (NOVI Hogeschool Utrecht) /CreationDate (D:20260607080655+00'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260607080655+00'00') /Producer (ReportLab PDF Library - \(opensource\))
|
||||
/Subject (\(unspecified\)) /Title (Lesopdracht) /Trapped /False
|
||||
>>
|
||||
endobj
|
||||
14 0 obj
|
||||
<<
|
||||
/Contents 32 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 24 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
/Count 6 /Kids [ 5 0 R 6 0 R 7 0 R 8 0 R 10 0 R 11 0 R ] /Type /Pages
|
||||
>>
|
||||
endobj
|
||||
15 0 obj
|
||||
<<
|
||||
/Contents 33 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 24 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1129
|
||||
>>
|
||||
stream
|
||||
Gatm:9lo&I&A@[:lqpJ50Kt;rgsW]M1QuP5=NRNYPXZp!r/aLmaf3%g$^(Q?fs3J1/WDjq(2r)7]j6Ep`>@i)ZP)2_-!X\0?lYJ>JYaWGjTkR'RG9*A/$;eW6l7C)#@^-sK4^BJ+;Ib>>6]gs@WVsV@Dj!uJE&YlR>/`!f2i7\U(u3*"_*iu7Qi^aLuKCQVaN"GO3`mb9V?$T)VH:YiJh4^_+%96<MY:'W?j)g=T%^PQhTur^%-$KY3Q-QGE'r"*W3meL:?X1dbjqrhYQ@^=T/EG=!>Bg1mO:rOm5<\&&,0T[uH;2+5JEM*3^=%2-+^XUA.8R#tD:e!iu?3M%bU+as>MXW%3Q'+"ZAMKq2A[PnACi<feWtJMBHhPUr>qeeA^b=bpaMfc_glM^qpcgFeXD=^7X6)P*%&#t5a9IZEsY^T`Tu9@aDuZ%O"4"`!46%aj%L?o@pJm9Cd0ct9GOCI/JqB%"ul(_r7RQ(U9(7."uJ:2"`Ap;>SdQm@hL_^8e@iK@@1NdXi[fAQUc/'O\RH_@Y=fH2pH@S\d3\,_L&.FiT[?gOcK\2,KS2F'JC=?dV?PK9%lc2n4RIeW*u-2\2GFdH/[pu\'*YAU'+*Sg"imVg_RB,^tnFVlR[+S1-9geuN:E0nq#HX@.k7=3$:cE[=n$Gm3A:sADmS/u@F+<_G@"R1^#ieuR(3?UItA^O"6qmkAG&:97tW6-nt^fA(KDI&U\<I6J=>(aO[_Rj+&mb6i(S-shBikuCV5lP?VYDX-Aa@"q4;=Gb1TcNLH%XX\^gKh:;ORDrnD02nEG]=Vfkp+eT!NCkU%kkmt^Z"1]^AAA(O=E=K4q8XD3<=qG@Lm_XLr_m9<6eW<?u`a32+'*r=tJT=L'B'tC=i7g2MGr$I,eIOZKMr<`eh]>mA0SXWu1?e:Q#;q.N5%rs7u.q?.Su`8ngm.17mu&5^pr)Y(AM@/YAg0hSAe:cScm2U;4TG'`L"_7U,''S^B:t6<"?<<MdT]\Bc1#A;tf(Igp8Xb7YW/ff3dafJIH*>?1D9*29p(=+I&R!'EUt2gCHUFgCdEiY_0[`P:Zm(:X0A)0Nd(s69,;;5*65a(`SO`uOERgG.Rhk4>Ba^E<@IGWJ+\+41jC+o~>endstream
|
||||
endobj
|
||||
16 0 obj
|
||||
<<
|
||||
/Contents 34 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 24 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1269
|
||||
>>
|
||||
stream
|
||||
Gatm:ac>+F&A@Zc$9Dm[Yh=@^P8OJJ15Gs@ll`T0\kl:?8[t04/K'3:pCp2UUu_&"!MYQOX6[IN<Q1tI5k2sbcXd1Io*g4t#)pH9%87B@ZZkonbkp`=Y.9Z%Lp0j3*(VLC#8A+1"f7%cH-!d!6`cCm/L/i$(-("c_[I4heuq1?`+Wne"CdeI<e"U4Luo\V,uIj$fCgS?[[%^BI8YhUgD>J#%X'm4LFORC9Gn#?"Ju^u5J;d.Z]3]m[ojKaa0K[-D$b:/%D6ro^Uc'Nc>m"A_!E_A]rDACTMeX]KJ]$gn(^+M=%1U>I>Ben1]fi@q#e<T7a_,Z9i=HZ;@L8-&Oop%d7)m!F`m'q%t.'[_Y"HQ:E%]n[p+bRBk_G:06K"rKM$!6/,$Vgl#gc.186$`1`ie+@MD<1$ne>j2g#J='nkk%`#^/Cg;2[R#GXH6d\FLC(k6X2:\Oa$qQEP1lSZ4P5MM8)pB&2YB.:*`X;D'l,U$f*K4#jb>3[GH]-P^[&ftIa\>XKkZ8dRd=;P*A',!^VEgNX"a\U6\6&17&Y7q0R&\l)=LPfakg0AX<L3Mb1;&,G%Y0r%3IVE@])`OD7DrC.s@W'S_dPco3G=PdN.En\77KrrF\N3joga:E$Kk27kpCC-\mNtMIoFHDVK&l,c<LH/@gWAan</'4_ks,i(bD)[d4-i&p`j!b:dU-N>_Cp9sH2Xsge\OP3Y.kFSClCkf63U:TU30K^d)PA=Yn,pEOFEfl9BUf,#tG8S-M=de7tt<<=655Ya5#`T>o3X=mGW8#lm<qWN0DG;eW7RqY',M'NS%-$,Rrk#E?=/6\*.R.geBsI;7%4g^oSghlcg0i^lJ_M?/[rPa9i'h`5'N[<U%Z.`fQ0,.^YNLK997i/XmAu)2pV?,)l)KXl<GGbdC*tG[u)H@uilG/0pNeHfO";KQ0XOUL+GOH^*L_5JUMP<khSKQ@nrO(QV-tL/:7POd7$]GE;</`0`$k[(;Rs5=@LG=J,V/Pd/VlV@d'$Gu9i<G#=P@)h/H$cI\:I;b[bV?&=9qkY'"3%Q'48Brq?_>(1Vl2c6#3J%P>a@qD++`@f+6XkF@rCkGn.4"OZ'?+WSM";Z:!H#ImGe.m>3Na\3Va/5'Nr+;a]SZh_[Vm2'^-PGcj3$I;"o)&]^]?V@%S/V]*Yjp?3_**g-c#C^ma`I;k)<JZgOfIf0Vdb.Lnp)*4T_1&m\=+CK%7<9<0Np7FIX2_JQpu?B[,'e*#`s)aE&Q`r@kdlO8d'D=!)OAte,~>endstream
|
||||
endobj
|
||||
17 0 obj
|
||||
<<
|
||||
/Contents 35 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 24 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1784
|
||||
>>
|
||||
stream
|
||||
Gb!#[gN)%,&:N_CCd!6/F+F<&!5YPS[(1GHR7s),C7[8G0G5om6]h]^fkDK,HPZg'Z9=r<LU<46,XLAT_.%V.^jtF2ec1Ob_"/F;Nu9V]ZVt7`#ai;[=0pgX5e,g9O?c-,_jCO_6hc.P($$JP;)++LBGqI'#nWO;X^_e[a$gSuTJUWa+CIGY73aC7BI9!F2o^V@EK6n"O\3UEa#Eq'UDFToYX=lYLLAbe23[<%6U<,aObDC+-GTNYrWI[%<i0&j'h&=Vg<qOt/Bg,8i0P+%C!KFRCeT*WZd1=Pi!^#ZKqq+k,2*3KD5q'O/<^S-9sRC_"Mt2\>P)B_U3K=*L.$\<6gk85;&1[(;0V]9FtO-KVh@]ZO's&b..Zfng9NtWl3?rVh&7\."c\6g]'Zg0]!bGUKIJ?bW4"9i,`It>(-IOChl1,4[3/HKO9LS2=q=rg*fTg$('3gEAGFMkD8u=Vl#.BS=]!/%qt_V2*et<Y0h[@@U11??0o7pN$:5I>Wf_m;Z\*++TJGW>.1`$*^=_7$.<.'ZX2h(&9i5*(KPJ+j4s^JT"fGq:L4c+r=o)jd2NNHIORPf@?-q"N;[c4OJ`c*qS`\%>\k6dBjJ/ZIo.jn/;9tFW>pe.88aP+_p&_"4S1KST:nf;KV\c5FPd*/b^=L;flE>R9VqZUXkej,ON^](Ao>t]DY$WM6q%8XV]D3%DmO,k]8X'X3g&Wa^]WtpDRi-GX/Ke164.dMBbm0&m<)D7'buZ-rj>nQKco]n!`pp3Dkc1*fR[<cS&Rf\d/oNOt"pX3\[E2<ZANnGf!a-n?q#j8O"&%"hH9R`=@In3%=]<Tnc`rq,,bH0<&Wh5R7f-8M$Vb<U>*eD%bU5W"2h1_UOsHI;<u=[s!PcOhKo3C@#6_8DAT7a]\U[am=Wm`spY3ooUrhO<XOA/6D9#V;]'5:#MIV(mZmC)Wd[P7)b\g3(8r94GBHX3O36AF3=P.$Rm`/sD'8a\TB9=iU=U2PXrWnIP[=:FH?qNV:j<@04=&qdA7#K&fMp@s5V)3MG!P3e$)6QB@"80R\H>`>rAWohiUC`SuNK+2O.[+<&Ea^s`;IGd@Cgaom]ZH*O3O6kfCD'-0%-+X5+bnp7Qtfri[Ag0:A]E[HD@dD>pBLntdViLE"2i1FIM947o"i2NU!\Mq,5dpD^^WAiW$?1J6XQM[""5_h6>M$+*njlneYfR%cbP6koBh<TksLi6b=>CD]lHPUeBnmfMH]`_f$VhB[Uo)Lm_"DY[tl`d,C:/kqN1<Wf^J6ikdfpuC(=9b-Vlf0^NIjM+/dC3e&0AK2-1kiZ.c72\f+S..$*[5</nA2TXsHn=1]!1T_NQYVoL4#COs`Gofm_7P7<1Of)G4%7DG+[(Ia11(3=\Tn?%YZ<]c8Us/o93ScUB'lAm&FKp*M5[:8IX>?#gie7,kF>@k=<1D-\f?='E%Q*o<baQqK4TT4>DNS;Brl54Up:0r,TS\4AoBFdRZ>MiRimh??eoDh7S1n-%!Qp,K;*+,jCDEhP$R'sq@/btLjS#qB?.3>)I=NT8G+f2Hu&d?d1OY31=4$:/sM87?kDO*.]?g>W6p.jGBN-.-gS9FMULVW=X2D38`*c@*`/,hS"gnSC"*^Z1RX"BW-W4le<`[V73?X7-r3uqt2Z?JjRfH7R$#A77'^>\=9nmV)\'Y#,I?1O[?p745K?&M@im\*:fY(cRW[(#_AcaLa$oLeI>U9XT4Bar2eIp-[7."cbUpP@2:O.6&L(RQrg)>p%ScH!fOa_9b1rC.%.5D6e!4o~>endstream
|
||||
endobj
|
||||
18 0 obj
|
||||
<<
|
||||
/Contents 36 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 24 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1725
|
||||
>>
|
||||
stream
|
||||
Gau`S?#SIU'Rf_Z\1mX7F>6Kf,UI#AYn_,[!_(^L?=2igPpP/3-;1?a-OgLapK^Cs/>ZL:%E2ouEHFX@H[%c8Xr1&`ZheUM"aI;&fbFV/@Bg"`Lk*G`GdSB:)A0-^.jP\HUQ3ZOpl9VcYo0A\'i@0h)0jXWSh!'NN-Lr_!QTVkb?QGPXIkIh&6D`\'0nZ,Q)D@Kmh!Gu\e[[`jkntQo(*8QT;\%rdVM)QL+?AQW".>iKJMda=DVF:p8@YgiQ#c0bO@R9')8jaFEh*-P&hFgGRZ>!ND?ca(MBuI!uB4AK-$tQPXn<S6dRd'bjq\<3hU]5-;FXS4cl9jMFSB">A>cl`04/.oH+TaNrfJrSBe8k:3@h,SYjL^<KMiHr4gQ-%7++8=UO';='&P0*O'gV%i%5k"/j!qA[SSlPlls`f7^W*@KVf:cY%Nh,dZCfkkA6?]d-T\]<1D!hD;^Ho8js@laWPF5o=1I_U@\_S*66f).BWZ0%'+)FsL>%.D*lkN.a^G`fmC&9gu"RDVsFof7]pE`fQCfW2cOPRj?4si#fe';U(qr6"`K^dmZ$$`:^e"D0c8Y-XYhgT#`1%d;a$tT2'J(2]Q+al5hbMVIWApr484Dn_.mF-.OA,B3\kGn[?L9\sCCK;F@FA)dSE;HajBnIG?']X6Rip`7mC).bI,!bC`fF+9u!bfbVTbc]WN14.<:EbU(c8rXcH`2aJ'H6)EHBeTD+flHe!3`4iRq;@Kmp2:oTMjZ=;RhePu_5M+25nh(A[]h=i<]"qu^:/%4nN\2I1D-+;.LFbAC:R:)[llRU.`T0R@h/-BtK\.g;TXlPW!m`f\i&6Cl/t/TW_rYDKVdZ:.3itR_*oh=2(Zc;R4HHsXTI'FXN]tBq^8ikIk3%d-8XC:&X9CX9cR])5ZK^:ZICt<rUco_eVReCc>=eE=]W*R.%C4Mq)/QYpfl;i6E:,l\8rh/2*Zcna@0%r-*uh3UB&@.inBpOpphfL12IVr2FTV8tKf%#Xlr-Su3BKhlb38#<Tq`%&i&gB,0;FPLl9aj\W$AQ8<%"CMQ<:hroA<]0LisT*LisP[KVBhYs075dB+W+[lm/95&n;,_ZK*]U:aOUfm7_HmjR^1mWtcLb0e%N/6q1dcS8_N-G%Kj2cj2[lZE4S#q\Wu185&8ofV,$RrD#:G-,8)4<L,6bqc7jbU$4`c-T3:2/s_LTnt'1M3fW-@;_."gE6F*GUJ^=BmPl[a[4>.>.Ea's&aD('.I-"5IC@&EHuDnQ<cK$0-g<6TN[HqQ+\3S)cOS8Q/f[<?8d"bPE`GWTZAi?;F"2P6!2?t3<f)k!q_h=W$OGdgIld0.PFsJa#$X54hbMdJ.]DjI4&,@YJpck!.Ou]K5`tH^84RWiiTtNgg.XFoE&X&hj)C.B5o<[:ZZ)S%#jR<h#tr4(k7NPk2P>J$k!AikhZhq65$ZBJRg%#9U`0@>@/WXG+_XYBa.405s72"qPc/0)TBB@@B\Q;(;8h6'_onGs6JJ[BQj7#9O26'R.@^=dp9Z"03*m$s_R-M/#LbM*&V\'6p>d"'2gSp-UA1UX>>/A%Vfu''[Y4:2nHtp1-qI8G-.rLuEg"9:\Wt[X!NW>XPA7t,qJO$n:d>MmQJg;eQ'ZdVe_HWs-kGJro3.`Z,X$S:C'tM=As9LY"SQsC/EYm.hh2A-RtheVeh-YH5HSMge,#oDJiK1\bqK!#DFVe@hBW<#^Aqs3.,b~>endstream
|
||||
endobj
|
||||
19 0 obj
|
||||
<<
|
||||
/BaseFont /ZapfDingbats /Name /F6 /Subtype /Type1 /Type /Font
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1891
|
||||
>>
|
||||
stream
|
||||
GauHKD0+Gi%0#[%JbkRoX!s1*,UuH6>IS51Xk0GPf6sTE4'JL%20s6g3m!]2Iin<c3/JBJ\\u57VMGJm!tYG]R/!DpIm4!Z2$)`n!bF&g!9JmOj=S$9%)*5XF-t-f+I4]5NredPr"%6;+9pRDNlO6h_K:WR3H.9@&=rlVEir&@8/3]L#8E![R',@4"LT9/glT"$_\fE9`-*,=;nfP5jQ:a+WN8HCb;Y%3%U(mCTN[kQe95\r6nir]rpq*(,?_%j5=q"LrmIe::Gb`_F5`HEn=)I;@Breq*_a;aA3X/B!Tga]Cl>pW6/S[n=j9mu!$06o&505h+<Q]a)T?-MC#!`"iL_2$#W8UE+@XOf8TdeU!')@L`cVfd!I*@_hI\>ZE+.m\m8=T"LR?k=].9W4it%S9bI!+6N[UQh2*jnDePt1el'6T6".BrmC4Cm=8mEN#O3ImPCc2"jZSa&I+-!+^GjA$"eK::iMG20"A\a9M$bRZn9d6U-k_./)*i$p[-7n.s;$>)s5d"/-.LAK&9/-B\XQ37kSR("lo`i9%AiM;n*^m%SeSkiJH6m2Z;fDnu1l5W8ZOmBtUL##@e,sIG2p8mp)(58/=i^+<1KG=GLuhdDPWD@p?;R6B9fFX%S7m&0Uf#015J`,[MKNO\:OB?$C%G,RhQhuHaI$*KTIpQRk%Z'kTa$q`)uHjAa+!F`*+K]P^o6M]Z:?W\V"P+&,uY[mc[/&RPAo"2L!8'JE_qW6^bHH5AErXsK)#FX3Xt'p>ePfkkoTKL6%pF>T$>Ch5Dc_:h&qd0$]sO,d$:%@-E6;BgCnr:BJ-\TJ35hRJ9<pG+?I.`/JTH0aTF[H%<Jmm38Nm4[i$5MQabtB$C.e,@/i54X#s_AFL49gl\FJE)?oM1U:qjG0HWK6GO&q>dci0I:\T0TQlr!dFA9VCKpXI@]fpbA92*t0[V%)/H:/dc<Y-fi3dR+@Ko&VJ_g<g'/1aXu/FVGLV:Dk32U53'Wq8?3;;l\7a!7)^_&<dn,8nGXLGI'0a[j)^7e1#95*"b:?&[lK-a4MIiQLVe[S(X>BS22P-a\f3Z07/"70nesf&KmG,5uE&LG(<%IY\JUW3-Vi'AB4<gVg@%d8e\\U)`DdJTh8e%uu>Ygg[>g3](k$HDDD&qi0oB;Z2`Z5)YTOgVGU-$ZPIj[r/tshJCh*7s-B!<g[Y]Nc5[^L)j;g@\Z_&Y4,:C@SBauY8PsBhTS/Wn;_[uG[,Gem%@t<2H_iueab[E=M#Hp)hUf-dU5]81_Inu3C),`DShY]XeCDJmrSl2pF?tGJY)W9El5uf;^JiOQ>=$.]oQO0DTZd.@r(`?+t6;RTnYO'lZ6':l(,!8N:eT8Z$W_:4H-DWPB<s9WDYSaE8]7X9:=Y4Y8i?*T>ro,D=NuXMT=:24Dm#6rnIjo&]-cMi"S7R&]D>%WSNcr$u=AFa81k@8Z<kinB.uj64/&R;YWCG@1OUEUKXHC4*_YX0FNMO$bYGWn9U<&RDu5rfsUOeaiC1'@Gc]tLTs^@OAGQA5*<0J_<ZB>PB;##rkel.X-+iHc+gs'@J#<aj-pOp>T9lcGW347KeU\c2Z.4rH&XUugtt%=ZT9R[kSn3^,K+t%?2%)=/P9hO"mtO-.I:F"CN8OY5fu'LVjIVM.Qu=$(.dY4OP>s;VrK/rYgp.fLS(r2U;f(gdN7*ocIpLl3S3QMh)UalW>&l_J]o67\iIgcb0c4skXV/DFm[hZF6>_.s4Ue>2d:A8@tJ/pofm`$\M<<lE%8e,[B2re:IdaPCZc!'T(d)eVFd6<oeaE%-fMMl5%38mGhMoJ:)*"/?LtF7eDhC9jo`eKPc?MW#5PT8WDC[sHV9R9Z^Xd+(DkI\]8>iR(Y)%>-EiSWSSd!`KDttDD'B\~>endstream
|
||||
endobj
|
||||
20 0 obj
|
||||
<<
|
||||
/Contents 37 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 24 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
21 0 obj
|
||||
<<
|
||||
/Contents 38 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 24 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
22 0 obj
|
||||
<<
|
||||
/PageMode /UseNone /Pages 24 0 R /Type /Catalog
|
||||
>>
|
||||
endobj
|
||||
23 0 obj
|
||||
<<
|
||||
/Author (\(anonymous\)) /CreationDate (D:20260407143958+02'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260407143958+02'00') /Producer (ReportLab PDF Library - \(opensource\))
|
||||
/Subject (\(unspecified\)) /Title (\(anonymous\)) /Trapped /False
|
||||
>>
|
||||
endobj
|
||||
24 0 obj
|
||||
<<
|
||||
/Count 14 /Kids [ 4 0 R 7 0 R 8 0 R 10 0 R 11 0 R 12 0 R 13 0 R 14 0 R 15 0 R 16 0 R
|
||||
17 0 R 18 0 R 20 0 R 21 0 R ] /Type /Pages
|
||||
>>
|
||||
endobj
|
||||
25 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 952
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1232
|
||||
>>
|
||||
stream
|
||||
Gatm:9iKe#&A@sBCi?#<#YVI>WA?]aThlS0Rc;a'(LrB]`3C?'T``'D/(lXP#/c#QbAqd6]C5.9-59^4;Yq=b!5=2,GX?s:#k*:i`.RO\^4jk\Trk6=Lp*2_L%5KaJ\Z]Zj@'<q3esPaTpf%?FYF3j&s"d!U<2]RXN]b$gaC6E$6?td7R&Q0ces.)eZ8JZ-o/;@/:aKO\Bqh0dTM#!i=*Sa0](ZAPtqUA':_TcLPt>;A&m;kcN6lBiR6hF!E%W7?@_#n=;Z:K6"[AU7YG`WCp@7/(!$R[/rMKaUA2Ij&8Z^.Jq-bYo0<dP&5mW\Lk3-:q%S"U],3R3XG7qf80GSU_0)![=[)hY(Ie!&Gna7t[4\6/BVdd-gKTD@#U'I[q(N5W3eug?Xc/`Y.1M)@Z>DUeVI1o%D?0<N#G]&FRR<gA1i-i\<?7@o:_Zp98oR3M#`HP6kAuut^lPcp_k48T>U8%u7lBK;U(#J_C$7+=!D9^kB6Q3[l=bb1>$%\0OcCO%a*dD859?t\P27fU$<a(H#OXb0hbpIg.r)XWA=0dFV[q8lL/=Yl9qCM=\oK@NK/"f5O%UY.ck7Br4B2%7^T1s<D;=1E]%VAQD.jD@Z/8Qb#].kO,$s`/j>M0/\p7/=3n$*:K#>+H;6?ONVJ.+=%1TcoE-.,G:C:Cr)c.K&pCt#*liE7)N5Ecu9=W6(q-<)A#CAh8D!#M=l#]qkI,E#6n7Ea+4FtU8NT\'6/Ak5*@*>R;l+#'=3W8.9SiK1g!t'4T^J>joi1H3C2W_gX\FPIjY%R/X\?^j>oaQ/T0mL!B^q5SWH$oeO)8fuuA2,P&2cpLg1LN?/*-Oe4[h>Qe1W24()Q)9uX!pp`IC;7$ZYq62SYA_qfXL-r045$/P%pBCkud++ISi:hbG]2rZOIF>Dj+1g*UcR'_ZFsukPUOhm[f^=U":[0$TS.eIO$@u~>endstream
|
||||
endobj
|
||||
26 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1229
|
||||
>>
|
||||
stream
|
||||
Gau0BD0+\p&H9tYf\@ip;iKfsCbk63\`VU>BjM:tQRNqE(aTH(aX7IZ]:8`m8hpm0K>Y54?n;gpXe+?sSm<SFeJFWhS-#5ST_TW0EhIUaaKn"mFl9?&qcH2nbJ:B7aGCJ8r0E&2+B&*dA'51KQKNn^L:/$]?q%6tJ@MX/T4m>R?E0$)^bJ@CCBs,h'9W?16^Pks#5rk.;o0Y'&k4u19_Ju-Tf7PZ>E.`JI5g,)4`dOkCbuElV1A],CkWqHqRR0h.063Zj<QR4]+Sb,/-LCABu)gQ,u,(>"E\8o*o`^V`Z#'.GJN_U33#Bf_!ql(b=naJ69l0G;MGjX%)scDf/"=@YBZ3q-MW84&sV4B/"ACFgD)F=p+"'9d`$q5otrF?bD5t`'a8b2oO*)I0ed9oqWERH'rl,DZ6fjI^,>(S%Gi[gG9JfJ,83/^;AH>`!;r'7dbcTo)O%g#Qqjk(VHZl@I=7,F8Rt*r&!1Yt'O:VNa(#F=92gCUK!><E>OX-T$D^L_<rXkTb;CJbaGH8tENgCX*sVV>Y>`gBN6S?[9M&!r*".XZ$)s"D5<p`L^1M)qbp?H#6\bI+(f.sfBs8NQ\jb9,8pH;Y`KS_K*AD)oj!+VWF,eo#ImNW4`:dL/9#Pnj'k0C#$7`?5MQA@"r2lc"SGgtW>htoncJK)B2chB)-f),Fc%jU7=NW152k(IE]5K6P[S"PD0fSXg"Di7$EcH@Zq!IG:A$[75c5KXPWA18<<61Tcg0F;K&;:OYZIgcWW;f0:8/G#)V)sl-TrVAj:o0D(4QKV'b[cg"h<",NS6VUhE.L=("7GF71VG$7XjgD:lQrS%K%@Y9jVFkBMBYfo;H<rLT(BO>9'GcD03U-g,cV4"EJ*bGU_>fDUuR4`PR^DDY,Lgn@R74Dmn=&G&T.bJiQ]@sn`K%,2F]ag_75<3ROq@i_=9=BrVBE,7CpZ2WA5fGDHb[N*?Y4Kh7H;d+"TSI&!&1ScO'>?GH[Zdmo*7uBXkL_2j3'/,?9T(BJ)0*VWo_n@2$gKF1'38jqLHOWqC/)*l_<N&m(.pnm6*XTU*9>Hiu):_1KLfWRo!k*"t#EJmYsKNiG"\B'GD5UMV>"B-`h.X)=D"U"]$;_a5WD!L>fAH)<aeD7DD]s89K<q7':bbCGI%s!sm=j^_3(:6LCgZ-9a(q+b#K9[7,OqUoQ>,5)BVC]&gZ+OIgi_!R*"OqKnq;EQ7A%3*gr"!`SM-i~>endstream
|
||||
endobj
|
||||
27 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 746
|
||||
>>
|
||||
stream
|
||||
Gasal;,<]I&:VB$n^ZCsg31X@a$G]%@^J>K`9QmBR$\%Hh",F"?-orQs*GQB'0X$2Q7uinB(h^4k2UFJinZOt!f%(GIH06,P&'Q;"\;C.S;cl*]_;gt(<0\)0b%U3j"Ro]p=KT?a':_rZ36f,_-K+YVISDhrqqK#"e;nFC;Oh_'IfE<Q:l"3-r$gh+HSHF8lHOpB'6)%DH'Y0JgthE5Ut!H8u0<8_c]EC(WdZ=T"WkDYBJJ,aG%/r9;-ES6(@.!QZ]:>L]OIWHf'6C)NCg_YL?VmcL#q3MU6F::r/kcEr?iEp>TW$-?pB43-;&qJ5*)&Oi#/;I=l4M+r^aS:SA)MHelZe8`kKB11.<Q,C5:/9Tu\3QeJ=<(*]NFaAS^HdY5otI9G$!=g_J#:02XD\:a3nD-#h$1.Nf%WTq=gEd.<1<&[tu9;B^dh1\Zo,79%5>7A,uZ:<%6(NR*QMY(j3%*%=E5aj0@lfk[X@$tlWL2+*W)'&;B4npquLE!P#gBnJ\=RH+G4<Et+4VX).G[2Cl>Wh4RkH.o(J@f+Ur9ei=gYNsuDgIq#>uJ'CL8hSj2%[XMWtad\f^BJ7AuuGHAXC]fPP4El^n7;Yr9[]IJ8s5Q7-A3^EiXol.>1nWk6:"]1f#`9M<B1-XmL5,Ec/9hYBA(gK<+L0JD;RFVA$2\O$+P9H#YpaX["dXCfq`W^>dW;^(<V@B`[:\+?P>.=.BQWV1kf#UEcK:]QY=!0_u%8a\rN~>endstream
|
||||
endobj
|
||||
28 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1400
|
||||
>>
|
||||
stream
|
||||
Gb!SlD,91]&H88.1$+Tba2[FhVc?_og>968*X>QW1tB]f-HUjLL\7*O"T8#>Y&0=u65"UH6j\a7h-&(Jo?9<<i*b#lS+h"/E70O0NuYY3r@r8PH-h$O5P.%h*Ssm&%LZ_njq.A4j)GXZ3SJ(?i.R[4b`-EtG(@Q7rW,%Dcoq2^S,S@O38bViqY`QZVhc3M4ZH/8!a1[[@,O!f>ZC<*R$7m.'hX&=+nRF]J#!2C8?\qCipKE8CS#gQ?#s@71c]Rs!95ujo=nSm"KYr\Qm?X-@/T;_lSDQgL><Gqb#I&1[C<JMMR#pR;I&'dcJTD1W(%%OZmlV630]]<;BYPj)9rT"J4.Oj;)7oL>XEjXXP,e=`rN@2#R#-T5%t.k2Xm%;`7r<0f?nYChKWF#,;Qo;W+6AJj#(,W'Q\gR@3cNqYuF:Yg*'dhYCs7Ee(^4nhb`/Tq#gtBO\Z:.TW`^I2a[a;4sIF76K'/b`<Zp4r=>eJ@$h[1=.$n,+M19U9]S-4Q=9dC%Z0b4fo@"f,fYn2#"2-!lV<&PfCPUqb_OLb('f""H1:T$`8tqXl!H+7=[^<GNBe\X*#ZNW9i5EECQ)PT[QuHVo0Oq:KsE;THPjq8"p_6a/ff=VcnH44@"23ffn8[9?+$&0fbcm\Rnr.WK$',8aredVXd.+plNEI_UE!Bg_n'C9-:nCJ0aMj6!QBGALtqK,ie[`j^luAX:&(W;4Xh1m$KEU3PpgZTc+aKr7"m&:,]%m-?hF'\J(1+*L"l!&Gi!2_;@oND7"G`Q8<3kU@Gle?D8a.%HZV-k#Ns5,@s:lN6+dPThZ+5Z0^qDTk'4U7a-l=K[N?Fg\m<di4h.FJ'p.-m9hlM#;n1-OPc@#$CR=H4nhdC<\]6D+EjF%GQ8#NgAr.-[3+T)PCId9>>a<"1V7&[WmXg"4@/M(m9hNV`<O?f=VKFYuNWt9G[s!B;OrT^lO?F5R]IYgKjss8K&lg6!B\6NP;-%CgAZrMgg';hGXl]0H3rXV+lasU5>ISb(!-L;(pY4/9A+rWSaN<Gtk`LmE;b/uaL`:ZD>=7]J`Ma#e2&i9;:/Kl/N3[71<H6UJq1kueD/U(5Oo80\Ba?BTR#8/a.r;a$RN(l!18XNWN#uN9QU\Vi)]2nFOVf+O+dZ/p%0=Mi0G^(NZ&E-*U\,k.a<qjo11$EuXSOqKVi&od=B6;66>D\k23RMqmhXU0JU*mf*sBXCnJ;k/RmNfdUSZ[L.%G!4oeT=/"RZh_D8/ub=f,P-s1>D%1G%b+R,iVX%<n<qV`0aE#nT=IWSF![37k2$0Ys9OIG[;C7WE+A<X9ud`f0obI*kb7k:$^nLAOo/1b$O`,<;C'd^T"hrVg<K36<))Srj:)WuXemY$9(pjUr.pb]!M]nZ`1e^B!-67K*~>endstream
|
||||
endobj
|
||||
29 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 285
|
||||
>>
|
||||
stream
|
||||
GapWf9hWDY&A@g>]]89#G1&9+-UC]C]ne]:-+:/6V+n74K<W,Il/FHP%.=ja:s.-rG8'K0E;)[A%<hg&WePl@ZR\cSr@<k.`bJ.[RmrMt<d[67o%rT=JMNM@A>$:]KuNsq8ESGR\Q$C>;Bco_9(Z/hHQ0Yj1%C-mEQUBS]KG+0i/)_IKq*J(Ekj>HJhBeI"qDSmNl'_eiN`qRFK9Y)i/VccfQeS$a@V&3X]m'cT\ig.M/coC)(CU+Jip.0bfPA1Kb;d'/DUi_PI`*_(HuA+quMG%;mQ~>endstream
|
||||
endobj
|
||||
30 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1320
|
||||
>>
|
||||
stream
|
||||
Gau0CD0+]+%0"PUd.$.e]@a=lN8^4#kH6JiBdQOnVI)q[/@GOcCp.cj%V.?mpM(MgMZ\t-84/.)b=[(+Xn2l'D>GsX*@(V,7aV""!HV[+"kIh-0Y3"27ZB&1[b9oUN]1n^%/RZO_ZntJjQO#3H>^LP"/k1g3s-:h5tCs+S2EhbgG:WXaFjr(0ql@c_>4`uL<^>oMBiiaV@$6MZB3O]!MdspHE0@06(_XP=D&]]CXW`Fl<4A.#&>LF/2PTF%$I(]4sQ/#%Rm2OY/pBkk6Uf+;4!@MeBgO8?k4^LkmTA>.p*&p@d:aI,)["DM;8eYLb`&=d>3P@]^1qCnB@/@lhH4kDF8ieh(f#T1N**0m5r9CTJ478Fo/t\XHi;n3\"LRfXaHGJ9%!HnO3oZ*OZ4@!'s[2=GM5>rmUB$FAO0U*7=nMU2=]c#E5=po>`]?4=mmC:rNiOZq7=>k+'I!&ld2"/U4(k\qVkbg[Y$OFo6eC!iW8OrmGb3Y\5uuYMJrb:gGMM.G2B6n+o2f-S]Re5"L>;DiN_n9Qo!LAEud0^jdep&HtNOG_-g5>7nn9XC*MH!mMfjEAVCopb^kIGKmDKm(\S/qouhhQ\r5KpIDZ+NP?r:[OSaDP./SXHX]GYQUWgM.5*(s-C6D<dQg5FKhio/><7OLCO?.Y4+lk3PtN5t._X($Es3nE>6hQH`T3_s6rh<m%f%R@LWao--&`lfLj>TLn-#q`$[Z'q0dM-\05Pi(=%f#!8jI!8c*bLap%0?62J;p,'W&V5OHHM5Ps#_!#g&lOa8/b'@5L?8PPd[KCX13qA5:'Jiq08($7&NADLRMP8ffKH:>u=lYMFrDTMcgH\qe_]6fTdm@M.Cf'AULe*Sa%b/CkCp,;LhkRe$Vd3FI-P"100;mcun2A.$=JGXaQ"ko6Y-X,Zu0p$gLlD4AI,5$f*8:)'j)or`47d!@Pk`u!coeN(aI1jg%*qJuIMa]d5&QnE`&Z?Oo2J##_QhQHs:IEVQ94Z[b7N$D'F>:bN"1R%oG'*5n%bIe#ip\i@Ulgo)I43>CC9Bn>I[nA(9lNdI7`GZ*P.Ke`)RmVf(3nA_2h_RWc4"=<m)<OqrNG):V;edO]T"^I6b>6Te0#ll7f8!!5%V\+"-7Id''DPI5Y$hha=#*B\28t7=2'6_+rqi=OEiWjGF_^-mNZ2P;`n$>f8?a!R#4(A"6j^im^P"p:MO<h?60q,NMZE):eZkAUaX,33C;2:J1O,f>3Y0r_-+*!FQiCjdRHP_S&u<mu*7Cp0(-@efNr*YD.7]pKPGfIF?CM4kniWL4(NXdBeZMh:j'V9>gdM~>endstream
|
||||
endobj
|
||||
31 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 729
|
||||
>>
|
||||
stream
|
||||
Gb!#[?&tF>'Rf.GgmBusP5tkn"C&=V-JcCPRVY@fjF\ul8f&=*%(_2_hg=mg&XtWF/q*r`;/t`gq_?,A"W]8-IeFG*3u>8N$If&7"?KM;i'+qX=8AuFm5Ia,2/U7.0HAaq[7qUliGI,N/U_$E+o_86W&Lq[<85nmedr<gb`ift<Bl5hNG@E-(f1kKK=ekgLc_@WqH'M%)n;H.!7bjrgAM"@o`lY=<(Ah<*u$L2[gud.Jc"a]pq2/#>(@]AH2cVmR+'/5cY$cWN6^SZm2B<AFVDoVa0EcC)=]Ob'/,hs-f*&%8Iq=C&!ZNqC4_Lg&i*gG"-Q;1rlHJ0i>2'oR@<UKG2]EY25@TMNtM,kW]H))s4"Ie_.4]eUd&^HgWk)#dV!f:/#V/l)[4c+M4618/9K%6<k"Fh@FJd9@9U(i\aM[T@E`%#Ot=_3cVhm'3@-Okk%2I2^CWCA,id9`e]di@M(qN(M<'OrH@'8QIK9b/V\tm/%o#ncZ$!_=W:M2B=9*F?7B)Ig`dCA?;%Tu(o#X!@[@#F@\7!7fSt$ko-jbek"t@2AO(s.h?6"0l;en!e0ltJMQ;JdfA!iu2qQfrWL$Gb*r'/O\hNlnce?BUi715,[l2IZDlp[("\X&\<4I%1#5u],67/OSSCY;E'FkS=8Hcl;tX.&Z5?=0fen-+tumT/68eMH0@#Ud;$k%3n92]:UZo6L8F7X,l3p^7%b52lag+-(qO1&~>endstream
|
||||
endobj
|
||||
32 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1335
|
||||
>>
|
||||
stream
|
||||
Gau0CgN):C&:N^l3dt5:#suMa*E">ij4%+Hm5eB"0:![aWPN)?OYS_u9i:h8H?A+Hgq4s;`<auY5,Y<jkMUqZ0/re#,Co)'e8JW3)_`7agU*G(quV?V/,rZ*_Qr"%gV$)&KhgC1h-R]`cd?UaFm+_kgT-iDaJZWY6]NAud/^YHL$4s*ep#@O\?mp*CG\*1a&*HW'O'&eM)F/01:"<6"jd#ZEr$Y;Pm1R&$H"5.IP_oAU=V#fNHLa1@,.>>j0fANN4*LUmAC$:%G*+T&2L+kJg6]S.7sb9@hbW@i>SWlBaTnU63]+gS2n'MM:#TKL7VCq?Nmmr-'j)d`l&!kN!YA(+TY(MVo%%*9>8t%No5aY!>f^-(fFfjW;K/BcR=6'Ss;do=l6o1YNoHe@!hkLc\gP1Q\sU74.U7&[TD0g!O](U2nLZR997Ih%j]$ba"6^L^74LjQ>ecYpa($CjnhEF&H$@r5@gPuX,K9@9op:U5Sd<_)IWYV)+SWhOnnk5C2(C;/T\Z`rOj9C;*A<UmBlnZBHE'hCHY<eXdS>66DGMV+/,de3uKCQjsuL<'pM@]\Q/UFs8Bi=m)>i?I*J;e3+cm'M]s97AL,Tj6fALjrCm8uF[$#$*mejJ`[p%Wnd?kq?h3Lf(bAVN=^r3soVtt_r0YD,R2:Ju39"GOT1:5[&<.'<^sl'QeFP]6cTrX@)N@Q+X[2s5Du9?I/h;+:V.Ft/cn8EMomKf^@!Z6<!*1[V@QW6d*ttEdhkC!/_C!Is)n@NVSuZA5^Gra$):trF:1l%RVc(=6q6u#\T.0Gu76%g(po8*CM(!+Ua13Tji("E)_o*7\OS1DpAi4'[+.6.A\=Te6\+V3-&H@??B:Xd^#T`EtFk/%9_,?cQ)Xeh301LU8Z%UDnU28F#ku<`l&/_6IdtF1LCf&'XH#R6_S\E$o["(@]bfr/Zij"pp,teU5<R2^Mi/3L\$jQ<4KUt?D=q/-o`[Mp3UIf;:VJ)tOZ=\?,j;Q>bGB6>j%?PQZ!XqWE4JV80-p!C[s+W.)glJE<\=V5SmqV\4qSP3o4i9aT6R;,RG@:-E-^S]gPK(Y*J/e)BpO63n3mP9YIP[=u/4o+5SYPk)*^%pc2F/SZO!A[,XWKgXbRp+L4'2C3GEc(WX+(hOett5-:eWT30_doR1#;YN.BiTg0m7jI@^gK/II0)?IJUP@]MVugQ0nd_;)Hn2cbX>T\4jliG/p5`SXNa#qUQ(>AJd^-<u:4k:RGk5D0<OgJ9+`#eA2@]*>Qm!o4ngBP:Xl;EI$@F'$(Yd\C!BZi$:(CQ8Hlq;4]1OrHDLC)](oD'T.1CX0$,fb($1\poO~>endstream
|
||||
endobj
|
||||
33 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 630
|
||||
>>
|
||||
stream
|
||||
GatU0d;GF-'Rf-p:A[F/@5%fkh6KY@QDmb>XXi*=02?IQ<j4$?,up4[T:N>dP"&ZR#fO9>n%Io:k*X$7%paZ4'ei>?N[UieF:-_LIAF@IP$3n^IE@Fq&g`"$""tcRM%X*lVb*Ds?BF(VIseXpLkS9\aLdE.35fE@#ro28qf,/9>m?bmBK1__et)61-./he)T>5t:hk*_UB%P28uSYQco9V$JFin$H:WO&@3S.@:s6/_!,TL6$8\j!lgaK/-I;%I2(cQT.^S;`f#r@]en(`+O_4261Af9PbBeEiAfbLMK90gn4/&WsRi`oXrl3Z2eMTZL^Q7mE#4hS.9M3mEhcRi&k6kqVkrkutdTJP0Nb[g_:.`r1FM94!oY1#haU5W&V>*qKrj'IA$K[4XWThF#na+0"3<Jd(nQ*o2=IgSi/a2H"s!\[)aejZkNLk<tdJ#D"_>Q$E=(V4.s&$9"6Z%!48(tb&CG3@UE>WU<A)cMTTsmbC0)+AH^C3E&+Rs.Ki[;`[`l1"te[GbmN(r,j^UEELIA,H5:A+-^@E'E,CJZEZ?b(&'-`ekpSd@O*,;;l/;6l^MCYUFH<ErqJRg4(qcNTq'i4c8FR'lj7I<Noi@OtZGT,fI#efVZo/sQ~>endstream
|
||||
endobj
|
||||
34 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1425
|
||||
>>
|
||||
stream
|
||||
Gau0CD,91]&H88.0pb\p"A@<h*%+`:!QPq$*%BgGC7D6W,_NF[A,Fhm\-hc`46sAgn<S\W6#dUbmQCBj4HCj0g@XD#qfi-\kemBi%bq-c)S![)nB^%FDgZ9g1=ERtgTu2G\t(J64h!rIkVfbPX6XkXfj<G$=ho?lq#_?gBMZ@*`a;OL$`lIEGs?r4#K.1D54"=F$B:.'5XkfEEH[8f%eqjLh]!CKoQgoQ[o]6(jl8LfOEXBer++TYA\:b-r4uA:coTK\MAjo26kMm%KF*4q"(G6G\eRO`&7L<T@l).Sp2*52#r3cG(oB"5+q6k,$Sa;1YscrJn,_L&ic$(DK\oP*A%#8eKSHHo'iTFti"nD+F?EQDG"qk]$A(USY-LHS7#Gr0IW^&&6Pp&K/D/-f\NMnOAE\>%TX,'"dQU7R3n782>41P/j5m,NdNS^IE>Vk[(G=%:$orA+0Ba6k@LT]EYKL#;]Wo2#k,cEfC)DZpI#b/tP06us-\F]O4Du"F%\/>s3f8W[^e\ol5pE!3A$oHNTIoAlW\/09FoUP*4'm-=!++!-$9#)S5;u[LDB#\?[_&+5Ro_(9"FHa9GJ"FWBGkd$$OYk^I@b\S8oEfsnq'LR]U,SPgT,Y(XQ`G!X.oF]1Zg&K\i`1GO5\^,g$-m+co_TOp_K$/6jl7LWF8#OMFGeOWkis0U5srM1<K*a56);7dIN4Q:]1qd3]TD#"N-O+)%Lk>W:/j\O$em?/`Z&a_3W9qiKdib&b,C/iS(>L@2B]kH!T#J=a;Gi#C&<HB'HiO!1AG)ZO)A,2D52*NYLQW(Ld^r9Mgjq!Ekl=bCY-3+Oedk4N=Ymmqj4KJZp]cQOK-)N'uP;A,81?Go;n'o3R!j.8X$=0$K&tKP45(>lg*cm35a_gp5c99B"_#P6uNhDcHN25&^_(7HYUU'&RbV&-X1(TM]8d8UK=EA*SOQGN=`eo^hQX5c%"bp[BD`><tE:Q5hJX'cpRbfX6SQ_cF)tK[nm;iX.[U>BcqZ;PUoh1dB/$)6OSrBYs^(Mc1%(9T,MNO\l[a$/)Nqil$@W_uT$Lb"*lOFI)M1N<SblKN^6]1bpJ*nmLi!R\"stGtSG/'NJ+3Fu.pQ&,k*YYjZUKs2[dH!kCsL^1uY>5hdD$1j;OP)Ugl-`;T,)pGmV9T>.k@1995[NKnMH;(ntq)=C=rQ%Gel9&fstc![C).s7]8!:`)lpPKE!6IHalWpFS'(HT?ob2h?:#Nij"5L(X!27N'Cm^3r,SfYMR;r@UMQ>%/$.?^KsXS6F^7AeP;>G,i:TR#SAoi[+HK2Ln_<3,$m:!X53`JGl-jE923A4hP5!n8E_4BT9P6_D`ZlW>aEOM3N^*QO(k->?bP11t>kU\7Cteml-[)42,-H2YR7_1R,ISto,-pG0:Nb<"0,QAYr(rWA1fG7X~>endstream
|
||||
endobj
|
||||
35 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1337
|
||||
>>
|
||||
stream
|
||||
Gau0C=``:f&:WeDFS([Q'F9@H"qn@fPLuj6AaS.>AmD;9[:$YY1,Au0'`WSc#=<qAJRbi#8^l;C-O*Q7D+)-+#N/Mk.b=kA2<\1NeFblp^;EsSn>fqB-Q=qVdAjS_\8:D!X3nR&3dRkd>KuGY$T?W6Y6Fk+V?OZ`W*VCJYdoWg_1cncr7%2PHBZG.dV+.rq"2:>8"<-s,LqrF'>'h<7Q&\sEd\Fai=-0:UIseg>H8T,nQd7LL,MP']fUl''0u#7oIY+(pOn,Yd#"o7$=Nt$n/TdXZD#]1UrV)IhKsf?Oe-]8VCF3fn.AUSF.]:lJ^4NoXp"Z.Z2(&u]UbaQk\q<bR:rk@<aZ+!0OtWb8M>c^4PTkO7bBBfcX=JM#17V)$p@ZAGk`#H$u&?W;;EN7O3gI8mM@a_J+hh$)p]&ZAAmRfhQJ_\d'OF!g>cUB[`;)0NZqN]j8D"hMqJ^Ro0FN^&TP>gG=UC5@Q/I2/e%j;nAKC$bVWf8Lc4fi-[tpD/pZd+$:.!QfC]j3%J4hd%t'RWbc$V!/pC$[[D<<B!>98`Ad?rmW<>4h(Pdrh]-H]'*F50^7ZrKD.j&srAUR_/5=BgQhMjA;8Y603`G87C/91_Dd.&Gci7B)7!@r%"P6;cZ7X(ZJn1fCAJJp6WVukqL?unMhojt+Y`U,W&MEabLZY"3%e*0,.FoO"bL_iBAB!,iX2]+MZ&`cXbG)*UQT#1@g/EHZ8-_.4D21Rn.kG\7Z6_7ZE.c&uplB\3._UgFj&aZQ@>D,kUgT5;u#qHbSUbCrfI_!^.kEAUk]#1f2:DSmLeP-^N]Bj:iDRrpD4g;U3+0mhNq;msDQk)Y*^:=lU/c*us-jW*H2c9as#&#))1qa9:Pg+b/.VhPE9+WtHp``%oRW`S-p15,G.AJ:t2LR`Y"NZe3'm]Cb^PE>M3faj<([&#m"(:X[OsJa@N06Gm'\G;bOUoKe6EL]ha#Nu-4=fG<QQu0o+H-bT@Pn!mbGFr7WKp0'*L&=L]3YNRQS$mBP"\Z%DUL[S`s:dA3[S\G*/mfpkN7Wj?Up(\C`Hk=QUhDW8cfZXrB?A<^SJ3ZQiM'o7"HiBPk:ZX5Ijnu73aoh7%Q`V?\QIU17lh\7!m)G1`^9O3\lM3qk`.E#$]mojI!keN[QKIVQf_cGoYAk%aFSAB7MslF8,QBF>EZFrpMQjDjZ.tD-FBbU>W7YH!5AbE+WYs-kH5r6]27k%dqXM)]Mp_@3ChN1E.mk<TSdEPISHPjK(!n*.o\,p_WE'8ls$PVFF'2RR^p%hSrW8F1WiUErHiI!mPb\=q.1,Y<eSTYuis1cQ46`Y'Pd`H:-Y@$q=4`~>endstream
|
||||
endobj
|
||||
36 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1211
|
||||
>>
|
||||
stream
|
||||
Gb"/(;01/N&:WeDXGl192'GO?Kdo,^C\>LUWu8q_*k[R\>e/Xdab@/Yrc^"%["Kp;@h*_p(qq8^h!OOsI_3.s_,=W%ruZsqa"B2ED6P%"7prgM(:YIEX]rE9g%.;[NnNh]?$/rDCYITf=$<IMbtb`Xm<;tR5JO7e#B3g%]5?l<dt1SYK,OuiPPn[U"1+aDK6F:)0uEJ0g6q5/M.GL7fle@cSK!/tAWeoHpYdg<0ET_3PVi(SMus(S.5YECh",m/@..`WO?N<Q7pd#c&oe2/In@>8b2-r.\BhB=]C#Fqh3MKj8<S?G+nk1m7##A[)m+G6o]k=\T<$o!Bk:TLFoXuoA?_kfa2Dou'!J*nKN/OdL6:EB#goPa#bbn`-0mG&`e4I@=dut+HL4"DPY.%hOYT@;KXtJ'9F4@s2nMU8O]:fWgi=D@r^I&WTEZAmE3KR19t":3$-KTb[Rpg(OuP^@k&sjeGV*DY\bW'V8f<9&E53-lO"nQsjZ`O0-Tkjq.`R(>&UX1(;T7KQ_DH=VdkiqC*TKR\A+ZHtft8s^o/Af)TDnfk/+i"hl)u1#MFlLD3r*\@U+@W)1F1A@0k_9!c[i*h\6@l!(c:lRj`]otK%I\=/q@PCp`iLl(g]Kn17G^/72qD%4,IYlb`c)d+WHu?1@.=g>6em''8c[daE>$85Mm4/b-9her.*]]lmtZqMUaUg.]e9a11Kr?cP>rZTZUp@cgP).57L'$rS])[1$!m*_^f]a8^[/uHfA36Et\4F.0Z?MG]C#X-RsaX;auP+N(eGW937Z8'[nhDDO%TOYXDoF+fV3P33]Ji&[)UQA]XZ17a=BEK'6r2Q-MGc[e89i(@es>]4cEU2/dK"WLuP6Xc_lX<>+3XDk[SFAJ@p?Bh!HUPYr&]<qsUlEa67%Dh][35uHZ5JQ%+#E_X8IFc^BF+"=aLP-8\'meT+ALr[m2c'TV;j[&"BIWnr?$T@)*\J&>1WPj05E*h2_*O?$IKo1Ys<F!c*Obh)?b%k"7k_e&ILVR](+6*m#YA(ice3=6sWJ'c&9T[jVE1k@jFjX'p=7i/'m[l9?HS99+$Jj7[>ISdADlhdNd;oe`GP(V#&$04[/8rY`NdB/o6YN("niaN\^3B>Q)XgNiJ.09]TCfs0@\V_3@`=ukJP`a3S#Y,=$!\)LkO]`\Te95,<DeS-KG0"U':IZ2'OeokjeEP"T_8bJc]hr~>endstream
|
||||
endobj
|
||||
37 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1621
|
||||
>>
|
||||
stream
|
||||
GauHKgMYb8&:O:S9`3tI0[9L6"e%?0S>9/+YuIA]*!@d3/5[V%oPuD$q>/Ah.>`(6;b[:^Ybh$Zbac"\fqAQr4dQ(/blD(0iU"tobD,Nr=K^W"GR/rldI!(Hm.>/4O6jr>^^CQ$nfuR-Z!mNQi-JcjU$4s'(m1SB5g580VU]]CcH(\K[W\AD%cQJ+@LCsPN3SV75DSb1`\3S6:\=#FmC<"^o"B7"+)NqJ36NSC(-MMB#gQb/Z[C"^eDMtA3*iCQ.Jn,\Ie3_[h:aG$];=>0g?k!n!b2(f0NA*F?oJ;fQDRd$*K$\@$*RJA'?jm9YY5oJcOKs=q1`TFIeU[hen2he*gegp/_Fs$[)q3:<!W,(7,]`DY[B6i+q[HrGaapp,n`[I_'Z6O\3A"JP`R$q8Fk4<1G8+!T-(l#$D3j6+C1]g!L!%Z!\\(N6-G'LJRXMI<*UeEPl:BjaEqt*J#(2L5h?]FJ"[jH/4kC:PiPNeTH_XH3A67WC=N^Y-`8XBJ/M@A/el8jQOp"=2Pjk`c6o-=R(c-oECh<'A[7[D;!+>g4ZT@FWB_eM*JQV_DRdcf1ngpG@9EoVB(/`_E!Oaor?nN5;'creH,c-a+,\8L76-nd$XG/7Dd'sXi(`CV_-_:sd5b$YWpZ=mY@G@hPu:!c:a?9FMAr!Rka?=$F*?C,LAuV$N<QL4FIC?5QUsC,6l/:HD;"3)_RAq$lTQ[RLB\#3nnWqXgBE.Io7CeYVqGR8@;?AWZJK(ZJPGe@%mSZLT"Rp8f.ms:n!:*&m'UZ?mZ1I.pG1R0*:0NPA(]JXF(88^F#HEIl?4u*[8J4P3snr-S9u$@EWNLI(:<d<!F;Ec(i6X1-rOB;]34`M2QBr,$qK5h_oEQEcT1[+,`a,/EL#O48>JS\Q--:A;i>;S0;ja!\;s2@0/#(1B<"h/ftE,$]fYmY%.Y.7kU)'7O-*7Kgul4FHp@CQr:T)WYD2Ku^-Wu6pDXQ`\:P=s[DY6Z[\p7OWHh)_,g_NY+CVfR(>fe:+D*8gOdl$S*FB7GW`^XsHWVRVAZB*[S6JP'&S\@=Z@I/f7t[j^+2Z%B8?r;%_h&cGe-TL!kgL)dRc-Ht[CbfP:#k.?<uaZaais>A6dZo6km[qJGYJr-PlrLG+0*>3;.>D]H$s`3ge_"4UA@J`12;WO^)U8P<At$)m^6uCX\desPI'Qg\YL/db%d*eGYD6bW.B0.-69/4[<Ohlo\jP4TKrmpU,hm(hQSK[6k>)Vj)**435q#7fL[Hj:Z)T?7*ndhK:3_LHb;1m<JaeiOu2s8kR`err$Ka1[Rt.mV=DPr=Qa;f<`*W?D=72Pc<J6tAoHN'oJk0M@.u?b9MJqq+7)Jk%8K;[e+I@k0U`=,$^>beX=n5A3qZODdi2,L<K^4sL8pp*'t_(Wc#\V;NErB@UHhrg)GE>El)W`G\Xn()"-4qh6(CIucMJecfDf5<\/<*k\@h\-BDlT>F%]BT)8FYhilDBM2+k[%c`8upL'MplYp.q/H"rba8;k^#^teapg"P*4dU>\+,qY6_DFE?AHaVXbB]NibBXnnX\Y:BJbDh=tM7/5+)j.Z56S6oa?jB-)"l\fUE7PT%^oScTE,6;*cCa_28,iSS4]Z\~>endstream
|
||||
endobj
|
||||
38 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1634
|
||||
>>
|
||||
stream
|
||||
Gatm;gN)%,&:O:SD#G""j3RpR&Xg,jini*Y'5O*Sc#d>*Q6Ck\9gVmE:B/!8?:7\W9M)3D&d;e>loE!:YU&/d7EY(%$Li3?QWF:qKuk>Hhsk.G&O&l`*`#=D),_i@BhVnSN#`Od1&Bk96UNp.")tooojS8'm+FVEk9l'W3aj?aL7gfT&GGuGN.,)j@`@qo1RK_$Ec*+N_J<@TcS'e$W7qbP]J`#Y`'o[h2Xd-Br.Yt1V=L:TFi3fEMV5[g1JB@l_G8l-GZ^\AR,udKA*g&s,N:s+Z"5c'SE67Y%N1`D`IQd@m")4kWkfYUP6EKs.)??T8B,[PZ(eV2oLJO6n-tR*@7G2iRQkLMkN^:rD!>+`DSNl>S"-`DV"cB+9?u_i9e96_qIT]aKb>hE&nhU@=s=L():C#.KpZPUi(bq"b%2dH*,`^s[$o_]JdI\oboZ1A?&(h[o.+p8B)[/+lbhU,B.t>hBq7Vb\<Is?ZV7ka>YWQ<8@fq:/X]p5n,LJ>pKV`4\\"],)5.clMW)E7bIK'u@n8*(#Gnct_.Qro$[C\,8h:UH_bq>]?=rPi(&Z$u]Ja+CY28k#Qm*%X$<WT[WjP+M'[pp9KNnhK[(tN6i(kHREQRf!V4N5W?5Q4$c=[?fA^)!lj+g#>SaWg-T'Nm3)"5\@J-9Y?a":HB//d8Ra_nK(C;n4:H*LMYUR(q@964Gh'M@XN\m.MGkFsXjcg?65\E+TlG[KDnY[YUQndiWQrGgnO@I3A\l[,bMroHJujV!m@&s_SL:9,8Y$tr>7Dg#4=aY/Yp8na$@@5n&N,>-X^4p<SLSLAH*G`;r,NgYBWR.b92W4U<oM8qIBA(\HG?6kO8Oi]RF#!)1.OhIm.L60MXV*3mQX/l?[E3%8*Y.mud!%r\Foub:/6<rXdXh1#sdY.r<fsGPCXHQm01P35gR9GUC(T`mKgjp*_GIUI6FCH>K2D-quh;<68PreUl=,*jBQ^GBn$!bs`n(d"cSW9R[6Q0^SCYZL6L>uU_E<e2aQHR#*jd!;:I]KZ,X2CR`';.>@A20a27",;;Pbe"Ld<PSDq`6iQWRI*4bFD56DB99%nr1KNq*itpBN7_rkL6bi7>8)MjH'0DWi`IX1q4lWT!#;Y9DD@^\rfcWEd@c&U#^X2IN!G\9>6I;g&p*m'uPIR<Zj&]dP,9n'%,Xj5&&<eT9r`!^]'B9-A,:Jk6P)WI':I49tb!hRu<!&%=R"]CrZIp2BmiL./<PPjbUh!qUg:+C>[@m/9:t0)4j*r=3%8>dJdOXo9g)%):s"sB<sbRf@HQOcf"cV\gta#OJuaBpL9aYBuBtN9)R&q%]TkG`E+q/A1K!]NfMiP93E08h7]ud5S["4)]%$%^Z-<0^oPWDeIm5JR2#GmnS1<UmI@>9L3G]'[)-1j.&`iBFIj6aJ/#-q^?-KT5AD!BrN7mu+K>sd*.,frj'NtCB845C2m`DDeYRl&4mB0F=e%HKCth_;]RTqF`!KhZDF)a[NNkhWfB&7OST&rUFutF!P8uosL$_X_(<lKOSLHX*:LSV(S\j?3$@C.f'Fr_n?;HV&Y,=gOL)i0N;3+/qOpHCS_Nof2A)R5)Z$ibI7.Yk8.5\foB1.0W>$=#$*]3J\apUuD"4e'?F8~>endstream
|
||||
GauHJ9lo&I&A@C2m.fXR)OLY!&F?7R-?8?.;_,-4;eA(P[%\G#":IOkoC';A84f*q.nOAi8[^)9^3t8'`=N)sL&UhJ!r-U6(KVc5*$u%!@huuC*P@f!rY[FCGT%sF+rNcd#F7gH#>@=]+V@CY4:=FZ.?eHSYmd%bR0696Bc<jV&/Hog+g=oKWJlDM0G.2&pd\"s:8)0`#a+NOGPn83QSHmm,F[pWJWWCR*GU3F`@M:Y1kA4%kC;=C?,IaFa*)X0FU9.l_:cMU:Rn>%Gn$tI!DD7Aq$AC?@Ih8=fE$tqJ0e'_4pHFjX`!8jD1KVU05:Z"#NS%IGX,!!P0"u*8U\/jptP+5pcJ[C%t'RphHpo4g?"1(m'$sBG!%F\G`V)FHi>Hfdmk*r8Oajr_GGuV=GMEBQn9lLh:q"0IacrD.U$'#i8_5+Z9?\4>,L`BW;h%kin!G2j[!Ya7GV-I>Iq'6Ee-3BWnHt,)'hW@q1S$CIA]n[WlBJk3gR`nR8hj+N`\ZDbHh'M.]j)3=-H:UPqm;51YDR7Mnju.';:K[SKb^!=u@nZk7sroTZ+>kF?Q]r>:QWU..p9![oOH5,No?GO=^-^$VPNJ(9@70RQR>j5GZ@g>?,u4g0kSpehuZ;N^g":Y,igoqU`9gdoTWnE-o@?;=MgU$<S"#`).O5TS_8>I(O3(,F]e/HnF(n@d1ILWJTZ*nng5FIYdI/`(U7&D)?"j8&`!k75$*7^P:OEZcU.I$-V+MMI?I&kEPP$\?Yr4>TQ+dlh:J<h[;Mt$bGLOl[8%F`G0XWnQ<"HNjF`@9iGfl[lWEOhd8n,nYfFJ%cqN3Wb7X/QC="l&gc',m2LASZ%Z@c^jg(,T:I+TTm[cm,+fk?!j/Nh*%RkOh1iVNWe"h#83i>aKKHXgApQoC@b&\:7XD-Ld5t]f&#q1Ndob:Ml8(LZL_O/KhuV(8dC@>qHcJZR*BKiDD(94#e#KWI#O=CW-V/?nB=&7b&fM+%#&Z$(WMdDI/NX.\>c-)'Z,g]_i`ABTBR/$^e;\Z9&Uk0CVKG8LL+(MZI;GWeZ2PX'1iOEImK0q:I7p3Y,8Nnn,AKkHc[(_'lBB_rnDX*R9AiJ#GLa.Sl)KEkj5VQp!_,t;r9/B_1X<ioHGY2%88n!IkLZ=PmG2-1%]aG?R[LcB2q*1o[tKfdbFL8,593CmSU\7de5T:&>ct"DI1,*q2611XWI^5Te2:O2F7Nadb[C&b15FJ:~>endstream
|
||||
endobj
|
||||
xref
|
||||
0 39
|
||||
0 21
|
||||
0000000000 65535 f
|
||||
0000000061 00000 n
|
||||
0000000143 00000 n
|
||||
0000000250 00000 n
|
||||
0000000362 00000 n
|
||||
0000000567 00000 n
|
||||
0000000672 00000 n
|
||||
0000000787 00000 n
|
||||
0000000992 00000 n
|
||||
0000001197 00000 n
|
||||
0000001307 00000 n
|
||||
0000001513 00000 n
|
||||
0000001719 00000 n
|
||||
0000001925 00000 n
|
||||
0000002131 00000 n
|
||||
0000002337 00000 n
|
||||
0000002543 00000 n
|
||||
0000002749 00000 n
|
||||
0000002955 00000 n
|
||||
0000003161 00000 n
|
||||
0000003245 00000 n
|
||||
0000003451 00000 n
|
||||
0000003657 00000 n
|
||||
0000003727 00000 n
|
||||
0000004008 00000 n
|
||||
0000004161 00000 n
|
||||
0000005204 00000 n
|
||||
0000006525 00000 n
|
||||
0000007362 00000 n
|
||||
0000008854 00000 n
|
||||
0000009230 00000 n
|
||||
0000010642 00000 n
|
||||
0000011462 00000 n
|
||||
0000012889 00000 n
|
||||
0000013610 00000 n
|
||||
0000015127 00000 n
|
||||
0000016556 00000 n
|
||||
0000017859 00000 n
|
||||
0000019572 00000 n
|
||||
0000000122 00000 n
|
||||
0000000229 00000 n
|
||||
0000000341 00000 n
|
||||
0000000446 00000 n
|
||||
0000000651 00000 n
|
||||
0000000856 00000 n
|
||||
0000001061 00000 n
|
||||
0000001266 00000 n
|
||||
0000001343 00000 n
|
||||
0000001549 00000 n
|
||||
0000001755 00000 n
|
||||
0000001825 00000 n
|
||||
0000002114 00000 n
|
||||
0000002206 00000 n
|
||||
0000003427 00000 n
|
||||
0000004788 00000 n
|
||||
0000006664 00000 n
|
||||
0000008481 00000 n
|
||||
0000010464 00000 n
|
||||
trailer
|
||||
<<
|
||||
/ID
|
||||
[<ab4fa5324f02268490d94a51d4d35c59><ab4fa5324f02268490d94a51d4d35c59>]
|
||||
[<60bcc86fa22a6ca874effbf9cb4ba218><60bcc86fa22a6ca874effbf9cb4ba218>]
|
||||
% ReportLab generated PDF document -- digest (opensource)
|
||||
|
||||
/Info 23 0 R
|
||||
/Root 22 0 R
|
||||
/Size 39
|
||||
/Info 13 0 R
|
||||
/Root 12 0 R
|
||||
/Size 21
|
||||
>>
|
||||
startxref
|
||||
21298
|
||||
11788
|
||||
%%EOF
|
||||
|
||||
443
Les08-Van-InMemory-naar-Supabase/Les08-Lesstof.md
Normal file
443
Les08-Van-InMemory-naar-Supabase/Les08-Lesstof.md
Normal file
@@ -0,0 +1,443 @@
|
||||
# Les 8 — Lesstof
|
||||
## Supabase CRUD + Mutations — QuickPoll voltooien
|
||||
|
||||
**Vak:** Technical Foundations
|
||||
**Vorige les:** Les 7 — Supabase Setup
|
||||
**Volgende les:** Les 9 — Supabase Auth
|
||||
|
||||
---
|
||||
|
||||
## Inhoud
|
||||
|
||||
1. [Waar staan we?](#1-waar-staan-we)
|
||||
2. [INSERT — data toevoegen](#2-insert--data-toevoegen)
|
||||
3. [De /create pagina](#3-de-create-pagina)
|
||||
4. [Server actions met Supabase](#4-server-actions-met-supabase)
|
||||
5. [UPDATE — bestaande rows wijzigen](#5-update--bestaande-rows-wijzigen)
|
||||
6. [DELETE — rows verwijderen](#6-delete--rows-verwijderen)
|
||||
7. [Voting in QuickPoll](#7-voting-in-quickpoll)
|
||||
8. [TanStack Query — client-side data](#8-tanstack-query--client-side-data)
|
||||
9. [Types generation](#9-types-generation)
|
||||
10. [Error handling — productie-pattern](#10-error-handling--productie-pattern)
|
||||
11. [QuickPoll — eindstaat](#11-quickpoll--eindstaat)
|
||||
|
||||
---
|
||||
|
||||
## 1. Waar staan we?
|
||||
|
||||
Vorige les (Les 7):
|
||||
- Supabase project + `polls` tabel
|
||||
- `lib/supabase.ts` met client
|
||||
- Homepage leest polls vanuit DB (SELECT)
|
||||
|
||||
Vandaag: schrijf-operaties (INSERT, UPDATE, DELETE), de /create pagina, voting flow. Aan het eind = werkende QuickPoll, productie-klaar.
|
||||
|
||||
---
|
||||
|
||||
## 2. INSERT — data toevoegen
|
||||
|
||||
### Basis
|
||||
|
||||
```typescript
|
||||
const { data, error } = await supabase
|
||||
.from("polls")
|
||||
.insert({ title: "Nieuwe poll" })
|
||||
.select()
|
||||
.single();
|
||||
|
||||
if (error) return { error: error.message };
|
||||
console.log(data.id); // de nieuwe ID
|
||||
```
|
||||
|
||||
`.select().single()` = krijg de ingevoegde row terug.
|
||||
|
||||
### Meerdere tegelijk
|
||||
|
||||
```typescript
|
||||
await supabase.from("options").insert([
|
||||
{ poll_id: 1, text: "Optie A" },
|
||||
{ poll_id: 1, text: "Optie B" },
|
||||
{ poll_id: 1, text: "Optie C" },
|
||||
]);
|
||||
```
|
||||
|
||||
### Met returning waarden
|
||||
|
||||
```typescript
|
||||
const { data } = await supabase
|
||||
.from("polls")
|
||||
.insert({ title })
|
||||
.select("id, title, created_at")
|
||||
.single();
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 3. De /create pagina
|
||||
|
||||
### Route + form
|
||||
|
||||
```tsx
|
||||
// app/create/page.tsx
|
||||
import { createPoll } from "./actions";
|
||||
|
||||
export default function CreatePage() {
|
||||
return (
|
||||
<main className="max-w-md mx-auto p-8">
|
||||
<h1 className="text-2xl font-bold mb-4">Nieuwe poll</h1>
|
||||
<form action={createPoll} className="space-y-4">
|
||||
<input
|
||||
name="title"
|
||||
required
|
||||
placeholder="Welke vraag wil je stellen?"
|
||||
className="w-full border p-2 rounded"
|
||||
/>
|
||||
<input
|
||||
name="options"
|
||||
required
|
||||
placeholder="Opties (comma-separated)"
|
||||
className="w-full border p-2 rounded"
|
||||
/>
|
||||
<button className="bg-blue-600 text-white px-4 py-2 rounded">
|
||||
Aanmaken
|
||||
</button>
|
||||
</form>
|
||||
</main>
|
||||
);
|
||||
}
|
||||
```
|
||||
|
||||
### Server action
|
||||
|
||||
```tsx
|
||||
// app/create/actions.ts
|
||||
"use server";
|
||||
|
||||
import { supabase } from "@/lib/supabase";
|
||||
import { redirect } from "next/navigation";
|
||||
import { revalidatePath } from "next/cache";
|
||||
|
||||
export async function createPoll(formData: FormData) {
|
||||
const title = formData.get("title") as string;
|
||||
const optionsRaw = formData.get("options") as string;
|
||||
const options = optionsRaw.split(",").map(s => s.trim()).filter(Boolean);
|
||||
|
||||
// Validate
|
||||
if (!title || options.length < 2) {
|
||||
throw new Error("Vul een titel + minstens 2 opties in");
|
||||
}
|
||||
|
||||
// Insert poll
|
||||
const { data: poll, error: pollError } = await supabase
|
||||
.from("polls")
|
||||
.insert({ title })
|
||||
.select()
|
||||
.single();
|
||||
if (pollError) throw new Error(pollError.message);
|
||||
|
||||
// Insert opties
|
||||
const { error: optError } = await supabase
|
||||
.from("options")
|
||||
.insert(options.map(text => ({ poll_id: poll.id, text })));
|
||||
if (optError) throw new Error(optError.message);
|
||||
|
||||
revalidatePath("/");
|
||||
redirect(`/poll/${poll.id}`);
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 4. Server actions met Supabase
|
||||
|
||||
### Pattern
|
||||
|
||||
```typescript
|
||||
"use server";
|
||||
export async function someAction(formData: FormData) {
|
||||
// 1. Parse + validate
|
||||
// 2. Supabase call
|
||||
// 3. Error handling
|
||||
// 4. revalidatePath / redirect
|
||||
}
|
||||
```
|
||||
|
||||
### Tips
|
||||
|
||||
- **"use server" altijd bovenaan** — anders runt 't in browser
|
||||
- **Validate eerst** — voorkomt slechte DB rows
|
||||
- **Return errors als object** ipv throw — beter voor UX
|
||||
- **revalidatePath na mutation** — UI ziet anders oude data
|
||||
|
||||
### Met return values
|
||||
|
||||
```typescript
|
||||
"use server";
|
||||
export async function createPoll(formData: FormData) {
|
||||
// ...
|
||||
return { ok: true, pollId: poll.id };
|
||||
// of
|
||||
return { ok: false, error: "Validation failed" };
|
||||
}
|
||||
```
|
||||
|
||||
Op de client:
|
||||
```tsx
|
||||
const result = await createPoll(formData);
|
||||
if (!result.ok) toast.error(result.error);
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 5. UPDATE — bestaande rows wijzigen
|
||||
|
||||
```typescript
|
||||
const { error } = await supabase
|
||||
.from("polls")
|
||||
.update({ title: "Bijgewerkt" })
|
||||
.eq("id", 1);
|
||||
```
|
||||
|
||||
### Conditional update
|
||||
|
||||
```typescript
|
||||
await supabase
|
||||
.from("options")
|
||||
.update({ votes: 10 })
|
||||
.eq("id", optionId)
|
||||
.eq("poll_id", pollId); // extra safety check
|
||||
```
|
||||
|
||||
### Increment
|
||||
|
||||
Voor `votes + 1`: gebruik een **stored procedure** (RPC):
|
||||
|
||||
```sql
|
||||
-- In Supabase SQL editor
|
||||
create function increment_vote(option_id_input bigint)
|
||||
returns void as $$
|
||||
update options set votes = votes + 1 where id = option_id_input;
|
||||
$$ language sql;
|
||||
```
|
||||
|
||||
```typescript
|
||||
await supabase.rpc("increment_vote", { option_id_input: 5 });
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 6. DELETE — rows verwijderen
|
||||
|
||||
```typescript
|
||||
const { error } = await supabase
|
||||
.from("polls")
|
||||
.delete()
|
||||
.eq("id", 1);
|
||||
```
|
||||
|
||||
Met `on delete cascade` (uit Les 7) verdwijnen options automatisch mee.
|
||||
|
||||
### Belangrijk
|
||||
|
||||
`.delete()` **zonder** `.eq(...)` verwijdert ALLES. Altijd een filter erbij:
|
||||
|
||||
```typescript
|
||||
// ❌ NIET — leeg de hele tabel
|
||||
await supabase.from("polls").delete();
|
||||
|
||||
// ✓ wel
|
||||
await supabase.from("polls").delete().eq("id", 1);
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 7. Voting in QuickPoll
|
||||
|
||||
### Voting form
|
||||
|
||||
```tsx
|
||||
// components/VoteForm.tsx
|
||||
import { vote } from "./actions";
|
||||
|
||||
export function VoteForm({ pollId, options }) {
|
||||
return (
|
||||
<form action={vote} className="space-y-3">
|
||||
<input type="hidden" name="pollId" value={pollId} />
|
||||
{options.map(o => (
|
||||
<label key={o.id} className="flex items-center gap-2">
|
||||
<input type="radio" name="optionId" value={o.id} required />
|
||||
<span>{o.text}</span>
|
||||
<span className="ml-auto text-sm text-gray-500">{o.votes} stemmen</span>
|
||||
</label>
|
||||
))}
|
||||
<button className="bg-blue-600 text-white px-4 py-2 rounded">Stem</button>
|
||||
</form>
|
||||
);
|
||||
}
|
||||
```
|
||||
|
||||
### Vote action
|
||||
|
||||
```typescript
|
||||
"use server";
|
||||
export async function vote(formData: FormData) {
|
||||
const pollId = Number(formData.get("pollId"));
|
||||
const optionId = Number(formData.get("optionId"));
|
||||
|
||||
await supabase.rpc("increment_vote", { option_id_input: optionId });
|
||||
revalidatePath(`/poll/${pollId}`);
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 8. TanStack Query — client-side data
|
||||
|
||||
Voor interactieve UI's (live updates, optimistic state) is `useEffect` + `fetch` matig. **TanStack Query** is de standaard.
|
||||
|
||||
### Install
|
||||
|
||||
```bash
|
||||
pnpm add @tanstack/react-query
|
||||
```
|
||||
|
||||
### Setup
|
||||
|
||||
```tsx
|
||||
// app/providers.tsx
|
||||
"use client";
|
||||
import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
|
||||
import { useState } from "react";
|
||||
|
||||
export function Providers({ children }) {
|
||||
const [qc] = useState(() => new QueryClient());
|
||||
return <QueryClientProvider client={qc}>{children}</QueryClientProvider>;
|
||||
}
|
||||
```
|
||||
|
||||
```tsx
|
||||
// app/layout.tsx
|
||||
import { Providers } from "./providers";
|
||||
|
||||
export default function RootLayout({ children }) {
|
||||
return <html><body><Providers>{children}</Providers></body></html>;
|
||||
}
|
||||
```
|
||||
|
||||
### Gebruik
|
||||
|
||||
```tsx
|
||||
"use client";
|
||||
import { useQuery } from "@tanstack/react-query";
|
||||
|
||||
export function LivePollResults({ pollId }) {
|
||||
const { data, isLoading } = useQuery({
|
||||
queryKey: ["poll", pollId],
|
||||
queryFn: () => fetch(`/api/polls/${pollId}`).then(r => r.json()),
|
||||
refetchInterval: 2000, // poll elke 2 sec
|
||||
});
|
||||
if (isLoading) return <p>Loading...</p>;
|
||||
return <PollChart options={data.options} />;
|
||||
}
|
||||
```
|
||||
|
||||
Voor mutations: `useMutation`. Voor cache-invalidation: `queryClient.invalidateQueries`.
|
||||
|
||||
---
|
||||
|
||||
## 9. Types generation
|
||||
|
||||
Supabase kan TypeScript types genereren vanuit je schema. Geen handmatig typen meer.
|
||||
|
||||
### Install CLI
|
||||
|
||||
```bash
|
||||
pnpm add -D supabase
|
||||
pnpm dlx supabase login
|
||||
pnpm dlx supabase link --project-ref <project-id>
|
||||
```
|
||||
|
||||
### Genereer
|
||||
|
||||
```bash
|
||||
pnpm dlx supabase gen types typescript --linked > types/database.ts
|
||||
```
|
||||
|
||||
### Gebruik
|
||||
|
||||
```typescript
|
||||
import { createClient } from "@supabase/supabase-js";
|
||||
import type { Database } from "@/types/database";
|
||||
|
||||
export const supabase = createClient<Database>(...);
|
||||
|
||||
// Nu krijg je autocomplete + type-safe queries
|
||||
const { data } = await supabase.from("polls").select("title");
|
||||
// data is typed: { title: string }[] | null
|
||||
```
|
||||
|
||||
Herhaal na schema-wijzigingen. Of automatiseer via CI.
|
||||
|
||||
---
|
||||
|
||||
## 10. Error handling — productie-pattern
|
||||
|
||||
### Wrap Supabase calls
|
||||
|
||||
```typescript
|
||||
async function safeSupabaseCall<T>(
|
||||
fn: () => Promise<{ data: T | null; error: Error | null }>
|
||||
): Promise<{ ok: true; data: T } | { ok: false; error: string }> {
|
||||
try {
|
||||
const { data, error } = await fn();
|
||||
if (error) return { ok: false, error: error.message };
|
||||
if (data === null) return { ok: false, error: "No data" };
|
||||
return { ok: true, data };
|
||||
} catch (e: any) {
|
||||
return { ok: false, error: e.message };
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Gebruik
|
||||
|
||||
```typescript
|
||||
const result = await safeSupabaseCall(() =>
|
||||
supabase.from("polls").select("*").single()
|
||||
);
|
||||
if (!result.ok) return <Error message={result.error} />;
|
||||
return <Poll poll={result.data} />;
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 11. QuickPoll — eindstaat
|
||||
|
||||
Wat draait er nu:
|
||||
|
||||
- **Homepage** — lijst polls (server-side fetch)
|
||||
- **/create** — nieuwe poll form (server action)
|
||||
- **/poll/[id]** — detail + voting (server action voor vote)
|
||||
- **Database** — `polls` + `options` tabellen met RLS open policies
|
||||
- **Types** — gegenereerd vanuit Supabase
|
||||
|
||||
### Wat ontbreekt nog
|
||||
|
||||
- **Auth** — iedereen kan polls maken/stemmen (komt in Les 9)
|
||||
- **RLS per user** — users alleen hun eigen polls (komt in Les 10)
|
||||
- **Realtime** — votes updaten live zonder refresh (later)
|
||||
- **Polish** — chart-visualisaties, deel-links (later)
|
||||
|
||||
Maar: **QuickPoll werkt end-to-end op een echte database**. Grote stap.
|
||||
|
||||
---
|
||||
|
||||
## Bronnen
|
||||
|
||||
- **Supabase JS — insert:** https://supabase.com/docs/reference/javascript/insert
|
||||
- **Supabase JS — update:** https://supabase.com/docs/reference/javascript/update
|
||||
- **Supabase JS — delete:** https://supabase.com/docs/reference/javascript/delete
|
||||
- **Supabase RPC:** https://supabase.com/docs/reference/javascript/rpc
|
||||
- **TanStack Query:** https://tanstack.com/query/latest/docs/framework/react/overview
|
||||
- **Type generation:** https://supabase.com/docs/guides/api/rest/generating-types
|
||||
- **Next.js Server Actions:** https://nextjs.org/docs/app/getting-started/updating-data
|
||||
257
Les08-Van-InMemory-naar-Supabase/Les08-Lesstof.pdf
Normal file
257
Les08-Van-InMemory-naar-Supabase/Les08-Lesstof.pdf
Normal file
@@ -0,0 +1,257 @@
|
||||
%PDF-1.4
|
||||
%<25><><EFBFBD><EFBFBD> ReportLab Generated PDF document (opensource)
|
||||
1 0 obj
|
||||
<<
|
||||
/F1 2 0 R /F2 3 0 R /F3 4 0 R /F4 10 0 R
|
||||
>>
|
||||
endobj
|
||||
2 0 obj
|
||||
<<
|
||||
/BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font
|
||||
>>
|
||||
endobj
|
||||
3 0 obj
|
||||
<<
|
||||
/BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding /Name /F2 /Subtype /Type1 /Type /Font
|
||||
>>
|
||||
endobj
|
||||
4 0 obj
|
||||
<<
|
||||
/BaseFont /Courier /Encoding /WinAnsiEncoding /Name /F3 /Subtype /Type1 /Type /Font
|
||||
>>
|
||||
endobj
|
||||
5 0 obj
|
||||
<<
|
||||
/Contents 19 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 18 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
6 0 obj
|
||||
<<
|
||||
/Contents 20 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 18 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
7 0 obj
|
||||
<<
|
||||
/Contents 21 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 18 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
8 0 obj
|
||||
<<
|
||||
/Contents 22 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 18 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
9 0 obj
|
||||
<<
|
||||
/Contents 23 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 18 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
10 0 obj
|
||||
<<
|
||||
/BaseFont /ZapfDingbats /Name /F4 /Subtype /Type1 /Type /Font
|
||||
>>
|
||||
endobj
|
||||
11 0 obj
|
||||
<<
|
||||
/Contents 24 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 18 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
12 0 obj
|
||||
<<
|
||||
/Contents 25 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 18 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
13 0 obj
|
||||
<<
|
||||
/Contents 26 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 18 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
14 0 obj
|
||||
<<
|
||||
/Contents 27 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 18 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
15 0 obj
|
||||
<<
|
||||
/Contents 28 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 18 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
16 0 obj
|
||||
<<
|
||||
/PageMode /UseNone /Pages 18 0 R /Type /Catalog
|
||||
>>
|
||||
endobj
|
||||
17 0 obj
|
||||
<<
|
||||
/Author (NOVI Hogeschool Utrecht) /CreationDate (D:20260607080655+00'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260607080655+00'00') /Producer (ReportLab PDF Library - \(opensource\))
|
||||
/Subject (\(unspecified\)) /Title (Lesstof) /Trapped /False
|
||||
>>
|
||||
endobj
|
||||
18 0 obj
|
||||
<<
|
||||
/Count 10 /Kids [ 5 0 R 6 0 R 7 0 R 8 0 R 9 0 R 11 0 R 12 0 R 13 0 R 14 0 R 15 0 R ] /Type /Pages
|
||||
>>
|
||||
endobj
|
||||
19 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1904
|
||||
>>
|
||||
stream
|
||||
GauHL;0/3d&:XAWfU7(XH4`FE,j<Is:"lDpbk-3umIhUHpHYqqP7V[5a4'qY[h9gf*>@FY)J>Q_X`jGCm=&5)_8[#9hpFU&RgGV!UHf\jY(=0M$^2*?0c<-5/B4)s4g5p`FohkKi2@a=Dal1#gu8>B./:6TI,T\C;p4n;*uM-oJdTRF>e_1SYQVFhmt0Y"O8F<?]jl'%d'RS6S-PPLC]AeD?=<<W4*7h*7:dl5CJ[L$j'"A6KEm]f3;WF%[nCt<h8ge/B3>:Cb?RO.&uLTo34jibq'_GC+nK32gqr-;1=/n`EZZHDZ**_O/;c3pY*=;@DrNSVg/7>W,M6\fXEKL`e.R>q@,u[P46!d<IcLj>MQ%$k4p2Y-\XMd$RemS1T/f:ao0B9bfq(^ag3/EZNh?CiD3P6iPVHc>U/>Pa):caNLtugP>@Z(%7Q1tXY3"t6C(rIA1`t\R>1E;7K@h%gL8.\ca(QG&4*+5p,Q'0;-7mo\4hnt]Jm-;61F!7=GqdmqLtugP>@TmV>q,@rO&DUY^g)eC1r.7I$;,`H]K^h"2Rk4G9Is5r7ON>`SuH[r!s2c8D%SV(MtNkZ\'F"+`7KB%2'4fk=p$9_<7sd<j5hJt$4@/Y^O/2"?fB=B)4#9.(6tT>b;d*1PU-VuAkAD%YtUcA(:5;#[:$7]"\b&*gbo3E,?mr&EBu6pNIVm1CY%7upsfu[=8f;.#UYskUk2f$dA2$Z/\HGDk&f4U!-:cO@]41UY'YbZPf?Rf^q4ENcDo7Y1ko^Rmfh\;1,"s4o-f?nha"H!9XgPL0Dnsn,L`'66k2Me(B@GR6'\]%U!K%dI*:=.%C7Bs4V&&W+7"7uCKghk0`p*bj-MuLE2Au<LO2.1Jr0\mKODG[+f.Ze_`C?R/!LdW2P-J,FHX4p`=Y5#NDPNjC2cQ2pnkA<>n&9F@O$tE=Y:LdB\D1l9g'F7dd4s#P8ghC*]Lmp)\:bq)rfk,NBhF6ZPH_^E`BLpXNI0YFIk's4.S.V`NY\BD%<Eq4J6NRAUZgK9@V\[UMJIe:<1kBC?V;)__?k?%)Wc[o(RX38&%m+_D.e*a@]3gG?W&\_`nDn2?71+eB8D0IN2^BR8dmWeIb-9ai@(a*\4UV`+^CdOq9K@bZmAKILt/W&D2A+f]NlBUKiPMKSAi='j?C:,cO7)2;4,?4U=f,#YoS>S7@sOarJ9sik9\A)Y-a]>uG>:;@=$M+@Rm/&"XdE]JfsUgCsM::ZlASM^l3>Ub5dqk<)r`Y_mB!MsDY_aDs"6HVTM2;*q&jl4:gABT*H.`4e'OIduBk$&"%o>E7WR19Vn;1%>pV,+rq"Ap^3nL>KiKjSQ7;\#bP;)i2tOCKG`aH.3MKDWF)X/9%="l<u*c*rpFj7[o(q\.#,o6n7fseQt`P?;@_t@n_5<i!R(latPE3,XP!m698#5k'I2M(sWKn"Cb`\Rs\RNVhJ\4F5?44ciGTG-tu1u5otd8W'-q6fb<I9SnC(-OfT1\iHi*PGrAkNOfQs3/7kuX;k$<(9,^r"[cDaeEL9i:C")ba7=-30;35cY;`%fqoX$2h6HmpmJ9P=P(ulAF*oGXne%djC5MC6Y$eB[MkALNgqeP>$'YO/!"&jVZ'[u*u2cA,s;qcs'Ju6;2Vskqa1o3P*FOHlUCT#2'[_h/FfsnV:NAQta/<a9UQ1/R1d;tbgSB@^<l[i2m=#0#M(&R0&Df"g\mQ?1dM6B[Dp<P4t+fbOH3\L8Jr^<-#-2m`-?=JDfdN0>kd(9UF@ChCj3.HR70ZJS+mGoQ=+`n0>_))'iD_\]$&?.YuDdGdCc1C`(R]*\jGYIA%XDV]!:j')l:c3=CitIes?=H[&l>,<=a]91I+be-[`t[pWDrtWK9'1?o22*4!PKqQqQQZ<EOu83t#D_Nl5l~>endstream
|
||||
endobj
|
||||
20 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1254
|
||||
>>
|
||||
stream
|
||||
Gb"/&hf%7-&:W5<EU]1@))Qi"Ub_;1=W8nWRr4e+Q['u9RoYcrQ7L)%J0=mhNfm)ZSms&P;!_W!@9PMV]2-JZO!b,GhlQgK/HIIN0YV)53(t+',`sd+#B)!+Q[j%o[1%Tl6UeqE7)HX18:hS0MPu>$$k1\)BF3*@@SC<_URft06XaEn.UYNKU=r-\L5!dKJ(Y4(3(MS`KM"[gp+8MhkX@nIm#YiN5qlQ[g7.Z365%F-*Pu=n_s7iJ?boN`@a!G!SnIOs<S5u!"]N](]Y8tVp8cI/[4T[3EXS(4c9V\7.YG4'oKMJ#>F&:'BL%$,PB7NAmf<9;&_nQYhU9i8'-UA3OagmB<IVd+*U*!fTH'`s,mLUa'<h.La9c*Ws8)HLUu=:oWu.klIa)_==*mW%;Gl.iWNaD8iHRm^H7H3q-rX'TLs*0lG8X#3F;RKm-"3$,$F@d69ak;#"IO([LH$Bl16>ZuRHNb=5T8nrG>g[g'qpfUmYoi%R0A&"Z&f6BadRA81^U#Mdt0@k22aR!5D)eEM_&7()q4VPm_J&3f.<RV1)XDCY-%ZjDK\6W_+damR<pm)0tn>5e^:;5Zj"q3UkhF/E<VIiN6'L12Orm0Z@_s791E<I+tqjTIXq2G:+I_OlhIZn[)WPb$]'?HTu<aGJ,j+WjNHe,Yg0SV*)+[R)lnccBail;VlS5]eT?$H<E`u-*!Y#oh:u.PE!(@K_[BatKj\,tdUmZWG^X`j,YDb1c-fUT=_II,BfdJo(7a!2O0@Q192=>Yp_;7g=GM3KL2'e,MA>PE4`T<eA;McL-PdbL]PkjX<p#er=e8<BDEg]R8,=n\_q`,/M;m'T5-5.qou6^f8<L5^AR)AmlB7.rp/<4jm"Dta_V/RLg=-m*bcf>]HCHm#\>Y]?r)r*):t]<AO=*R'jW0X?;lTNB(3>DS:5'%CV73)oh+MLeo%ALXZ#o&e;&XTmbDejXcmtCom39llcT&o7(LFBE%,HK^SZct5=F2p=Y=r0*ak'OMq2]RV($(G='`<B]0;$\g3Ns)B_VZ(XcNaT\n/>;>oQ1[)%<g,0[\jif_1(_UlO(S&qdO_*Z*E?YM>d"VW`j\c,)<ci`[Z=%"2^$EPj89aleC#l[i9R8)fTbJ5-#&N.%nI1T`<Y/-lRRF%FY'N_&1"iY]47;TAll;:Ub-]m08S`0=K1Mk3/SB50%;em=L\5qL[Wm%#gYpK6@,Lnq7(^a1Vt8(Y/<$I"S$*K10)t%m35K%uaXXRK~>endstream
|
||||
endobj
|
||||
21 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1219
|
||||
>>
|
||||
stream
|
||||
Gau0BgMYb8&:N_C%.n'8i,\:u7-t]Q`Fse;8Ph9md0iCF/dZIT`DU+=h_QNhMGacp/Po:UajnZsZZB_kQ3"s_Fh_o'nB2f'3sLY]Hjra^$1iB1qqV)6&[&[,$AbocKH*N2g(0De0*A&-%XH.2;F@OJ+>"hhL))c&)8clI%b@gG#/k1iX9<"#dT6BU08Sa1W?kDFLR7^)s(q"-8G(:kFL1uk(sZO071H1^'$?G90MgZmrr&b(n4134<P6TJ"TGDo(N4(kE,OUY>PQH+\0N_4Gn'Ak0RqUcN'O5J\--Zo6/T5QWq1?Dnfc`RZ3\ASi$1_\)+!kh>EUa.Q!tSUO"e^CNStcCI@/dYGSj5n'on'2HIA0E[)6#*8P<:*e'JYU9rOk"4CXrG`830p,U5pUR`TeJ&>N(lB5f"o5ABUp(dY+L9B%[8X<%76:LNh5'moT69S+pMY=JK=C/0hp\+R<pC9Lt3i(cPijXVYNQk:RZ65"=Y2$as1WMT%T$3H$@,)Al.eLi8EN?`Rgph.PN!6f;V:q%3JQPOjL_^"db+7^\.-Wl^\$8W;_EP9Q%CA--"LceX)/((3?$aVD(:>1`Z*BMo>>=VCc_n*rN-MY"C!nX]e>$Su*"Kt+N-1=bKE,3uuRDIlt_FidN0Lm@<Rl&i1&1:=Th++HVSYa`MhtuXFdXrW!FUj+DB<N[JV'T(p24u/]QAnaWGGoq=878!$[D0p!`*`@]pA07$R_==T6[obcfbBRqUqMh6ep3ZM0@fIM8]R_`HW<J=o=q\\'DNPgPgf.hOCFOk9g)q+3&qL7qoS]Bn*7j9-L<0-P(rN/TQFP1?0PBC)`)8d_Er<P>U6iE/V_uE\$NhTo#8F4)+>Lsmh5E^TW2:\\ErAbf9jrRL%`s&;0_j7]"srDbY+bKI)1E$2qc?UVNA4PMWbpu0Hh$,*".[es&pTnZ*IJT)5UZ7]]f+d"9c1Z2#9G:`!i>o^8TJ,FMh+gM;p]m,JS7f<+81t(=uKV;+6jQs+<k9^oDf3s--(,IRMd/c9thoFe,->S)qXs-B7USV9kK`rH;7P2)t@DMJj^]-hoNA"_fR'=T4d<9;=-mHeDMhY*H85B7o'q$"@_2=r9=R83pIB-HlTN"2XfTmNuW5n5OPIK&7WFN`M)(M9ba@Dl5foSR[<b_`7o3MQB#Z?Ja#SAe_h`#k$EQ?Iuj%ep[4h.j$IeqPnp4r6YW846XV/[K~>endstream
|
||||
endobj
|
||||
22 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1654
|
||||
>>
|
||||
stream
|
||||
Gau`SD/\/e&H8h>EAR=)Ba]fopq!TF>-u*Q'O/1qrFB;9(#%4]9:hq)*Ral[*VF$tafMp![NpYWML=i:p[I.(!QAEsr(ja$:DXS61LM1<.q!r7=M0=MMr:dhE5f5H5U&Q?bCS<es$4+)Efc/,b:Nf`2)/9b0T6iY%<.i82:GA_=?Qp,&?Vlh!f18_)0KS@6knft=qIZt4eCR,B=rSWW6RJHZi*6F*5T3T%B,C3PY!H8Z%`!,^V5*s58S*:-(CXMi:jg)aeje=k8Kr)J7n;mA];r[B<_.E((\'/&ZAM1Q_<sokY"uWFg5[I?H)4eO$S^)?=O+b"N>_sQmS7NM3/;SUWb1rcgYbgm)'KE4:.A,DdaRjXkV24I9@[$ob7(*6i7[mK'I?:l,P'ccmQ?=#&Boe5#%u8&@;]*VB*&<T^PIbMu?9a0VXOEIAV?F]!mq-FRMnX08$J,r*_J[AeJp3L.D6P9m:h'JSk0SM<Pj38sgoj1Tiu>:,&QHa]B<G]\A-3l/LENEDi]'?BMh15Nb0tAC6"ZWe$OC<XpT\?Fb+MrPUg8LrH6`G@HfR(`CkuVqYKSeo1`AjXu!(UT%I"Q,OMN5D<8:54#m/9hU=B@dFZ5F;HC3^)fO\pRr)gpaTRi4qs3Z+sL8bFc:V]BB]RhoMo.7%^D3Wfh=IH0bS1]'dmUM:nfi84uC:>lL-ideRdTJ'&("4.^EkN?PV\r=^9#)_0OX9T#&[),:I&"g,<[G$'M'<3it1CO.ce(CKE1PZ_i)(QuN:0?)IFD@[5_@U1>M[^l)Jc_;F8<],%trT4Po.6jn(.$,k^?,LnD>]o>O<::B\13QD.b!q(ath(Im61[JGE=maAnr$fdbMt?&`P];Zq,.Kb+7P:q\l-;`QODd5O9RmL<E#88r92TcnhmBBYpp"0Da]uPL$N:$Q3nZVn`'7HkJ9k-0f9!U[G[?[>Y']m91'?][cN'<J6eJ7Q:PYY)NBpW3Ra7kKK#5Pgm6/4T(sP&)Q?cpNV*n-1p-F(gUEnBo6gC;`B>tL>8'D!&DW%8B.=V+<E.7WM9+qWed>oHbNmi;NV$S)E&S[4A6;+s8?pHlNkOZW6-(:$<5<Wja\")>tS+1Y76?51]oZ2[-ALMqtfb6.FD3([p9\afZo.qa,c1'N+;aQEl3Wp&jG_]\E8$^)p,$qlq'3I:l:$lY@0T+knjB[)=X?CF;U;W+Uf+Xr)"X8=3-a:7>Uqjk;QkOh33t7iZrIm!(/h?eChoJoZViFh6:DP&05LPIUas=ZF"O5P&YATPtQ?X+:^MKFbIeEF]ZiBa@\J09.@"g:Skb4S<SG.niGgp3p_GAN#<+TE1%hNReYaiH9I9aX-Dn>Gn^73(+T-!9@ZHf;41o%>$]lsJ.d4jM>9k35jQAaUGG`J,EjuU;I]?4@iGgd@<crG4mFZ$hBbK\Z=iX;Vnj9oa?+$Yg7&VDa2WC34:FH3oJK/9,Xb-4!o>c[o)-G]*Pf!%:VpE;nXLk_B!_t'`D1jC_Hpm](g1>E"e*kDTOHX$O?:#J9g5,4'$:nIOlc`5X/-Va3U$I9s%6,dF=muo'op^jSlWB_BD8W1C+5^u>aWOh"YBQ/Dg>%rU`S6ofO#_&)`+96<$UT6[?W6\P0)/K0lP$_e`0%+$JZu$u]#I!bF70~>endstream
|
||||
endobj
|
||||
23 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1697
|
||||
>>
|
||||
stream
|
||||
Gb!#[>Ar7S'Roe[3:k=`Y$ae+81MLug8;gjFDG&>`?#ErMG-*(AC75eVeqOq5*D'Wfl?#K"gZ-;A5PD^mlNWWJB`kZs4IJ3jVSKb&0M"4B0[XT_>#Up*Y1FD:d>*u`IL:8_^#5HK_>r+Hr*.'&P[k1!65Lf(.#kFi]Q02(cfSA"!q@KCd7tTMA_HTE=u2Fn&U9?#(\KLTpX8=>JBWg>PAau)t/`Tp"(TJDic:oY;M7M-8CEe]R\Demlm>YT5lQalpAhrcEn5;Kn`/10R.R=a'pV-\J4</`g8B.Ae"Bs7[0AR.,._t<`G?MZWbIb3mYt`igtbr-A-NtU5U<<j2bcf4N?f/*J(6lFu9PQ"^61h1t3][e>27^L<049pa0Zs\uLc;KWtt&qbDkK`Ir3iD;A2oX6J-.T_YTJN/"B*5UFo`W$.sjc7c)70%Zgke']-$66+NY9?X;2'rY-3iE$J6$0Ooe<uZ;7oT;M^T.U_XX[a_t@p7sB<!s6a3k[WI[?TrK/i6O]Kqa+XQXF<Q+S#Ls?0&,i7n3JDk`mV`-m_Sne"QnhIOVS73QRP&cke%e3ZI6K$fuC1BE()YJg\dXG9oM2F]84e<*t/i$&b'DFY<,k^tB$Ac%U&'+BMJB7QS6ChtnuiC!_$f)#$&u,'>6@YP2ZVEgbl=1Og9<<*_g(`_,$I7W1I#6UYVSbTh^26;>5hf=F)Qh[dp8JV)OU-a4FUN7E9/?Rl<ma&]EKnf%p)35Vc3_V9:?JR9X6+,Rjr3)tDZ7PouhBU'7;=h0m3#CaXjl>DI[6&bElA)&NNSZU-.E8JQa4'rs&/t23@2RjU6NR<4/mN4dT.Uf@1[/XIK&sNMETO?ad@q4/.5lH0/qsL#UQ(nYC,0g9<-U'2[16AQNPSq\GAS0m-R1^:CZ7%&pR8f)SK>JjXe,5XS^s0bD@YS?Y&o.R,n.6-t%uWh&T-<6S6j((@OB4rFeOhrZV=E\YHK;4WT>Kue0F\e#(^.MC6-^O;#RjPr['@f0RH\(u$.mC]@+]RDS#]\\(LfG\lVDl8b&?_d%6>hufJCXX38[_Z17)hN[!,.sSKfY*;<jqTXGu3B@Eao7T=%OP&feq2XGnVPKJMOi)mSP%c@^;ZZI[oXf(p-:.Dq^Y-YD`Ma>-n![`_^P6Gjn,?Dk?j8\W<_,LD^F3HXmdXVJr.6WYkg8g=Staf'J]hehSj#9F`$"p>\_]3d8TK_C+<hi=\nFPJPleBj0eS=L_9(r'rYJP)h`4*9Ko>j%G\o=6:D@lb$Xe)AWW'2aLO@r`+/e5hL<@oBG!OldtYJR>[Lp,=&AIKar<E+eKn1#;<S25G0U:'nBNe^\E&Su7iu<7=;m,o;cmd.[BP3&u4_s$j&cS\6AF)pl,JKPB0oo?4\S(@"M]I_AN_T2J.JpgbAdVo.[_^4A-b%Qj`@F:rpHb@tkgR^@T+VYpW'0Lq@jT7?nmYpXi;pBb62@2QqS!'G((nfIQ@9)sJ%$/em(V[RdXSsTKso?Lk8^,bknE0j4%mJVRmAkNC([FCp3Z=C^WQuB=._g1Xhan0q9@N#'Hdo+M/L,*WN';)[)Th8raIt?rQA68YqAAIJmr1cqH.F%"d0OrLZ!YO-FHiM3Kloapp_eX>7$en%?WsS\.AGc"C"ESRc<r!I9;79s$M/lR0WPfL:8nMPD;W@,tEV/5^e`:+bdY#AcF/+:J~>endstream
|
||||
endobj
|
||||
24 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1370
|
||||
>>
|
||||
stream
|
||||
Gb!ksD/\/e&H8h>E<u-OkuL9$&P9CoLD4m8!++8"?9];5'Ua-/b*"!s$*^-'I7M!*94A\@g&[,&836:445N,E]MS+f6`[ul$K1js:<t@c#1E`P5m0k/0V3Ub*at3\&HLeDk90p?Eq][Td`Wbp7#!7gTRB89&g0"W>)+"5l7#.:'F#>V4:4JJ?YKO/dm.[D07?S@@q]&-5g"%I^[Y)]pHg&Cn'K>UMdX&H2Oiu.\KF'F;ukA^N'@72q#Z#gQ_o^[o/q^kD.2F.$T#d:S6`o8o3g!oD2K!ohSJiL1GAeD;WAOgg'4+8ZF'G%#5JrbP:Qbq!4]rQ[Kr$RDFqJKPnY'\O&2I''#W1(lS,s?GSj5n!gJJEnq9n`BKKA^$10gn?IZr$&mtEK.+.FNf^!&tFA_db$E@Be=3aqK/\'rfU<\BdJl)D5l;=:_*k_2n0Yb(3H[bEWM@Z8]NIJX3r\jIf]o#>J;lBNbS3pEKeL.q:`#rJ3#oR:e!_!1,3N_lFqDDMgE4&h=2c4;Il>cr<T%Nt/Uph0b+He6\6,\J6/<Y%;`AYgo82?F29P1IMEbf9^I-nl(ao"3Aef+uU$*qFn:0tBE3Dl<Og-fB9VT;ASaHJVP,oe#AXNWB@Y$<GfJB`E.4KKPPTemOTCF-W/Y.pXtj/p/G6Mu&3j71ljNO;i#lhD=F-sLS`V1J2$ICkjAN"O%IIt7?b%69J,bpYKb(7!(7m!.u4NgGdaGjfi;^;Kf`S0$f8HAiIEAOC00XQ/!tBUb5V^V\m?=agGRI%?hp:Do`.FkNph?4\O@/U6fq)!h@bj*X'Sa,XO"FB0DA,>$h2GVYkNl\8U(O&uO^GYIPfaOY1Nf-d+$To1Q#q>?D5-n5<RA=7OR;q3="K.GY,l9+8UNcNrC8%_UVpL&GglNab8X".YWZ,e\!'R9^dZ)_^4nf,.^!*L$3$<b$ee$M6kf/e,e+.8VJ\44,,DcfE+B'rs\bct44!G*F=Cl*>Mc"u>=BuT7MV".e6$#@8o&k9WG6a#oaSEono4@j5%+ca])R[[nT$S[1cBS5inJHOEg`)Xbrb9A`FfB8ogbu^$%E5$mg1$!k"&\?j&Tlm4"??[o$FHn@+MGs]r]f5@%.$D1q#FK*!OP'*$@^hi_@>#O"CB]4Lft83cSljQt^</P]j9`c-pK0DE9ZC-:c;KQ%0GsOQP$1d,j):*m2u@gD\Kn=]IX5f+h[P"3Ves_u[dGR0\?IQ?Nu-hjI0QOf/?q%j(3p-C\hWI.UZ0SH][PC8<8KEO%GTooIIR%qoB5iF\8Q.99HDGtm2PpPBD"KPcV5ARgV3^E@7(Y%SD,;niWp']RjA"($/OKGa@u/U$fBJl)uGQ+=RF`EmiU(5NAp~>endstream
|
||||
endobj
|
||||
25 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1751
|
||||
>>
|
||||
stream
|
||||
Gau`SD/\/e&H;*)EA.U@l"Z*OhP`%5[\4-GT]fS/m3_uf,LNqX]iCfU(kM_aNdA%%A5RjeD&h1Dc$Sm;h=2PL!Q>kUhnp/dNs/W%$lFc=$CF1#=M0AiMoh:li?%_6(PjZA*H3-PD>p25:GQlPiWVGP+K/(hmslW"&L%e%dE_KS&#Fm.ZO$`nHdiiA&A_UIGk^QAic1!]*TDBOE7_hc-Od\=GV)"Qg&*'3c=$%6H;rWBPe"L9M\KcArq^jGJ*(NHKpt2#i.EX^\C%PAgkXc?iMF+d8RA@d";ZL)igFd?!-LDT9CVjhd+>:tFM;KThTBu28alrbmkB>6K#_)!/es%<a2c7s#brs?0Kf;H'4qoL$-&0J(WQVK-][XSU$]m`M'JrR4:LoQpBYo?59(9kS8`Mi&h_06Cqk_ia"Vnj0pW8.[m`*PB@)\^eDVR=0]EHppmE2=keU=[Ta*=Z54i)aqnm.Y?c0ut;V.%V2<hP%C^B<PV*q[*0h>D3!m\:\pdT)NUs$%dbgRc^<2M23A$4?N?D^+l2\.:La.SYV1iR2k(]d5<[r@?#Y_Q5HV_BE_%!A(Qeb%J6Z'Z*@`>fhu7qVQ<E<FU5<&_5*eMaI65Y$2^]7hG)P0<&Lj@/GVp<+,Z*F[kdFX>VkJ3-GCb7']C&M'2XH@2Wu!]XI/"_^qbG&)]7LG4ijogYhDCg%Q/<:er$St:uC4.&7KJfYc&j/gmJd(9@12K9G1C^O;SgT5T+f.u$ZZeOV^&([*]/kFoIcG7P=)`!T!@QDWjm!Lo"bU:o<6`N[8O]O#`J(3oQ2CEKd'STP]DBRL[Xl^cBSLS&"M`Dl=$$?RG>j'2US[an>MXrGObut=&Bpb.Mb;LtQ1`E"%`gt]2gV=tE0fqlZX`!e1e>aT48&@H!]+-=/"%^>NUrckZFUeV$?DYp0\s0h;9Bjt$1aQ/hTu-#i.XR>"0-H9""@#YC<G-!`eFeZlbm(&gPNBpcE@]'UT'_GEm9XY;cB"9;[@U`6;W]$sbqd%OYU#mOR6+73k1K(mD&0*aHN"u;H>5;C,CF?tpbq:?f;FqfO<[dG]=_"lenTIcd]L)V1OVJ7Cdp-?@De92CJG4\5EEdP6="Z`Kb=?rS(G?$ApR_:>`RT'kh(&-nX.4D]V71D'&1Ft9em\EV.KS3i/@iaUn0k:@MH5"kS:KITa*8tnF`=eor(qc\!;P;Q.N#U;nf$Pct]#NG$0&d2RDM31K2=IV3WdmUAZu&C3OiMLlG]LiWs2dAt*,+npjEb8hXhJR$`:c_Ym5RB]-M"qqhn[[ep7EK3%R(>q`t8=@9JJjHZe\.>nb.``ZCnm$RX5$0Uq@*`X+"TAo'5XWT8,eG#`Nm^.pNTu+a1eEX0cS)s"CAYNl:e4K2ns0noY%O[4_H>>`-JU79J8$=F59ulRh:49%uon@$*#V9N[?H_g[Gdg]7XuY-i8W;&e=)k#9(G<`I')1X@e<+BEkAF$$jd\*en[37^YF>n:2/EP:s3%faKR!m/3BEOFLmJhNE;=R/8!P@>n(Y]iU2%u'BjBm^7)?ebgbEdP2,gi`)rMTOelSo;$?c55kA^^@gmboR3o&M[QV&:%8N3&]j2YT?B8';/eV0!O2:%@q(.hXuj9acb'Z%6cb9cR]R3^ff=l9qO$N%l%MTposK(g\=n>>'9g&iA#)[3JOg0krNk\R36qVH6If^;1/i0>ICi&Al/AI?F,("W'U94'T<oE+1NI7CrY%,U$HVmoY.0_lM@Se,l~>endstream
|
||||
endobj
|
||||
26 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1782
|
||||
>>
|
||||
stream
|
||||
Gb!#\D/\/e&H;*)E<u9S.2%N6?:\[bZ)q6A@+j*IY@$Pr<Fs0N,"me=B+5:LpQ:\.=c"(FB[P*`m-o+84Pi5F$j!Hd`-b&_J7$=SS.ZqY`YUm&jMCU2IN&g##D`SKGs3@;@olJl_UU:fAqLfq!!Rr]!ZX#7R0Oc\Li^C`.QPKSK0mGoZN1*F!mJ.ZL_E#2_**&["dCLc*qFqKgm)gUj4ZYIK#Tn6B)PTL'F/>1A[T)j_Sg(NN#+2GlgM;qn9['WAMh`="TGA-)9j\!:s._Z1\au,a<\r?Yn,kf(dHIR2O&Lg='Gr4?g5*Pb::-&Q+RN<E>eo9;".(GYgj<3`iXddaRq\t7=Kam-6c:FZ+kFKFa+*?Sr!6#/mpF'(op#>C!"0N=:99t)ufnH&$nt;DgA(.V%Li]ofQ\_=dhUIn%6pr-SDBdX9Y&c<-=+05S2t'j"]tdiQbI\^n!9<>$,,Nq//.IT@%%10R9JOol3'k/dRZE)"Apt2@`D'5m\"M;]h.;pWRnC%YT,qj@+5*:M!CtWr07&]N]C7.Mi5k`V5[pKID[g>4):`Yac&u5%E3c`JZi/.TjNfV(?MV)[-J9MjKDjY_J&[>JT)k<LB(P(gT.U%&<+W>4_0f)5pqiSC>2Hjn"rkXJFB`2"&fR1SihS>1_rJ4<F_Zj2RbiA.2cqe#8/1'\Y^8PMlkCH(7P9RDO9U&$(I[].RPFV6s?S-rZ7YGLt5h33es@%+T\H:.C>fIlAUOaclZDS"hIb281m_$<\s='TTXC8:B2>X6XF^>.(tE+$3\O7m!f\^Y7mt(J+<.,^ebEmgg%_+J1DRfE;MSO,1-XJqWV4-L65ZBTTG+$PJbW4(Yq.oo283=#g^\,iNUKXEGi,Au0TLB=$K]*U7$F=7L-leK`85.DDdo#a`Y&&\cPrlJ-4:WE&_])OXZbA9@`(S)00cm2gV>d8>sqRa3]T?aDdUc>7X%)26QrakbkR=Fe5<\9"[j%$M;N+bhZ2a'oonoh96\lDbhEop#%'99L]q7"BV1WHoO.9^Tsqm3&?q]"Zuu9]'_(?/KNK\5S,D>Mm#1Hg3=5ii.p(:lYYd]R*B"+SM-Z=@*kA%#]lKZSumZm>C)sNI7-?a_P%Z68cG2=3Ir7@qr;.N3o-q"k0[_%j3LNZZ$h\1UY7:]4#:/$%iS`Q\iX&o(E@Gm:k2G%N5l8+$=!0YaS>9,A;GsKrh$EAGEtIo@VG_9BV(1XaL(UZB)#r9II_EZPMc1bgO(ln$(OK?u<B7`m@jlal4X@NdtSt%fd<JCL\KN.gZn^)*JmmQ/;2ZZ/X'e'!$Aqd%6,P5`;?3W1bAfNh(P614BFaFV[-4LFTj?>c1VJZI4S[Rai=HY6qg>:lBeS>B#jp4/9>T@U7fG2P4F__m`cL^ga8i2so<2(h4HiC>PZ,ej#Y%c(e=a&:kFR_ItP4j&DR^4>i)l[9Ro3)7#d0$t<Are%6Rg.2.O7gg&@;1O-'6Gjq`g$Wg`jOL`\8'=a`$0YYeC#rA!lU'nrX*pVP5E573UCZB4)?6@_ebq]eoL'h%d_UR4e',>Ln6.NLhorrBKVTZK$9*snK//KI](K-CY@6.[B5A*G.KnYc1,D&NU04nS@]$E3dX+GeLIeF&b<0aBNrs..nhaa1J9K1_8cOm&>A_X[I)CFd$V<IVi(Ue`r$LX/;cIOplh`WO7dsM2TF:*f<6J5o*'/7ag:QnRT(6WJLViM(l/ILM0$4[Ts7"-RbpK&A&_/cl<Vk[O*W,=7<Q0;;<5BW[mrpQX=(^C!@?+@7\~>endstream
|
||||
endobj
|
||||
27 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1737
|
||||
>>
|
||||
stream
|
||||
Gb!#[gN)%,&:N_CD"T'O2?`LNP)A@8RnJs5N0?rck+V&B6U<JEMH!+pM<jHa])YEaFCN^:B&#oq6!OM)mq6&5']2T6`uBP9jtM)+JCuV`!HX)*o2kEtDLJaFc#)A2J2dRP65rJZW#$.`.g(hG*nhciJGLP\?#Tm8JfkK;`cJl?Hmf-!*a&o-c`&"r5Q^*<J:DRq+l'M'[7`X-_s?K$qZ:>889etlRTY%M%!Sr0.>-oqKJLmJ@(q3^l0CQ?_M`dnb4mO6;tsW6,!M3pY\bJ2IL/fh8!2q<;&mCL*9N<HJe"a&"*B+kIF)&i/7lPq5i+op,`<f3!5-8V2@/*@c12_u?APkB2\ohdKcJ!?egeln4;Pr#fH/1&fN><F=.qLWe8bYk%^mPpInlq8rN7DZp;E8Z3OT-+Se-Wb#rJRj#GVu_j#ONC(*e8>BG!+7W5=EDg8[a7_,sPVC$f_d`n$QS.n%(O6r'=8&F)l`,cGe?8OZ0:S(ZSu.M:EO]7FPi)9UbnH68CRefk3A\J8]K*>cgu_U25LA/A\]-^AeZN25<*A3#l4*nVfVfGCXSKBm<f'Ie?ck"VGJdafIRJ&]6\pVebqkc+K[;U9CiV1/4>f*Z"/EL_Q'.u#dNGcoInK/49DRu@M?U<:M=Qm+9ug4I^Qf0`W(K,?)WWhbg&2D6=\6!T4:MC3*^1'r;0(&8&'5;e-QBmq%mQ_VT.-]\HRj5tS=<_3O'eKHDf=r1YK@+)7*+`&24f*qdc@Ge`@;_`G8VC`@O[0:QAQ*P7s=jQ'e`itZGQk6P_(bil##^?4)Ft4Pfpl94W?/s$0:3UYS,j/r&(D,tE*p9#0.\qS:Fa/qhBI2TS:)&O5Dc^jeAZEkGOXnJT5_Td03eQWpPdI"p($NV][*@(,*%_Xk.8gaNPfQ7i@Pm:aQ[mEjXX:%BAiW;n)J0>Q/<XfYq`k+4Ij!LBkn)<gNb=ee9jjn`2c'l_3N^<0VNr$m3/aLFE"_-*':\4L;f_k]JtiViOhg:JNpnBY8L[%.+-Qu%]Hh]/+rfbWq*l7peI?E3c%]Hk%6Z)KiC?&dmE,`O;g;=WGl_PT[S0]roSD<=q/R:p6l^%g.7K@.g[0;Qf;rnbm<;"+L#8=gM'K*k@0:?4H<d$0JAT^2OOHCIF,r#IFXWdOC/[daNC6]io?^B[,G?\+D07uqKejPF*3`6uAQ2uJ0s#O9Q;!m$U6-dL:G@(7F!S0J>Fa@I$%6,S"FsK1KuJ:V!4*>`KC".PFBn@Z']sO^56df2G?Pf%-%u6=J0LM4e>JSfMh>^K5/3J:/9^$X;7&jC9"p22;AbB&e""5(J2W:Aia1Z2/1u]QoL:(`X%TUNPlVnc?"GKZpDJ_n1VoRQ=@6MQ$R'^_f(JX=nP_)OK9u%?N>(n)PHe,_fm5QGl1Ec6DKM=_2b/M#HK/#)lCk4'*nJg(mUHrNp;f*H5#]:c6BkcM\HD*]:"V*-\JEFO8$Y'ZdB's@a8OB/ZgjdEYiLGmY*k'A_>NbPRf-(]s%C$X2658ICsPq!i7+6T"\,5bffU*d2A4_qd8nj$;ff-&.f(P]\P$L\1V6-'a<;;OhPXM2YBQ'"'/F,K'`L6VBopbh*MRiALWW,M?aM)">`FKLm:KGm(>Y$uR%2slhUs$c5qbO7C=![@>R.m7$Rij:F)S_E1$4o6hgDb?"Q&R0pd,q$06JJ\QDKNa3S^j4XUK4KgWfM!,[jhDWmL7pS*d*)oRZZg2aE%;~>endstream
|
||||
endobj
|
||||
28 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1350
|
||||
>>
|
||||
stream
|
||||
Gb!<O9lo&I&;KZQ'mioCMBqsKhjgQXdW&07W9p;D!?kMY/J;Fk88e:i]-&D&YtVQG3h"4b=>M5,fR4N[G9I/3rNc-H<WfuUKDUr8o3j`b(-3Ut0B%]Vg#k03O8U>_^^3ml)#<*K!rE)"3"lkB:-A);$rS`udNjK"APS\S;XeC,P->''_Xuq-""/r=,RqR]=VRe(cMYJ7I@lf8SLBLgO6<_E9<EOc-XM'gDK^M?N(1$O:`HH$k]eXN+rJocq"XHan)9fg:hMR5/,7(3b[q&+^7W3[H[(09XCQtK"cVnXr6d4%AMf?5-X^ZZ[F%Xsg;mu@jGFbMi4uuW$eL&Na0.JrS2Be'6;Oeup2q0<RfoohK"jmnH@?4CC<E-DCq8muBUs8&qJ2R;=pG_,,[\*lm:=#&Lp<1]f%N"6R<^LPpo?VZ^u1cbZ/Gkp$Ts(ukR^bUSMnj9WmWR=BN.W(6XAi=A2MtUntOa>Pjf\Hq"7eq#4H.2\`nrVPdn6D2L(T]<Gqj;cV,e,hVa%YGepT83])(#RJV?!s7(4/3>u4)n-YK0PbNCB5!>4S^;IW,I.);&enZ93iXIjE'A#D%@.c?Y5A^qKcHoWSj()XKm>e!MYc:MbN<X8QDh0`=fNhNi-0fn(NsP;Z*62D)gl8ds=C?[]'r&iZai0u2E4]d)W,I$(rQ)%l?d!EHDoo6$]!ri3p2^LD%Va,F2f:kfo8-_@)\B==KsIZZ;%u3t$ClVX?7a=el-,E[gUmi[F0R1t24pX_[DBGOkEE_eecn_I<*WjRlDeMn,W-=@d&YH$LPUARJ^YL6k[t8(=;E;C7<4k%o1iR1Die%tXF%>%WkX9WP>`&.e1<-_rfVjk%(1XbKmH3N.XJ#dA,*eHgD,ROmPuBBN%6\hQ?pA]&3$EDhbiXVC06a1Y4hq[e[[)a[tLX9=8%l^+#m?blXI5]AoPF3Zh]mRAF<<Wi1\5I7Ln[8aq*-aCjTrN]VcH)n=u^_K/UA^H8.WPi)B4f`fZ8=aT5h=D?g%9bf?3s[hfFebPZ-%Kg>1S!ZjbgetNBT3+GH@W11a9gna7^$:!@LPZs5GRIctd4#<b]kH:je':_bIDD!a4d\.th(E'f.I*$N.b/Ur^R6AT7FN!c4HJS\Z@FIg!2m_bmlsXr:(Vh%L3EGnsYj'B%pAJsJk2tt+D[)r)m'Kul0c.<RB61RhT_d*__f2=:\<b0J44^es:n%s?<:LmqV4&&E\k9PsmZbm-mn^PmZBlYH00.hEq[V:2`M1RR]=]SL#Z4c0&]N+5Y#He&3dnq2NH;#V[eo@JUAa@BpX9^2r_>OQ'ce7M1rR;=0PFB6K6aB+p4;U3HJ0i.q\r_g#Oq~>endstream
|
||||
endobj
|
||||
xref
|
||||
0 29
|
||||
0000000000 65535 f
|
||||
0000000061 00000 n
|
||||
0000000123 00000 n
|
||||
0000000230 00000 n
|
||||
0000000342 00000 n
|
||||
0000000447 00000 n
|
||||
0000000652 00000 n
|
||||
0000000857 00000 n
|
||||
0000001062 00000 n
|
||||
0000001267 00000 n
|
||||
0000001472 00000 n
|
||||
0000001556 00000 n
|
||||
0000001762 00000 n
|
||||
0000001968 00000 n
|
||||
0000002174 00000 n
|
||||
0000002380 00000 n
|
||||
0000002586 00000 n
|
||||
0000002656 00000 n
|
||||
0000002941 00000 n
|
||||
0000003061 00000 n
|
||||
0000005057 00000 n
|
||||
0000006403 00000 n
|
||||
0000007714 00000 n
|
||||
0000009460 00000 n
|
||||
0000011249 00000 n
|
||||
0000012711 00000 n
|
||||
0000014554 00000 n
|
||||
0000016428 00000 n
|
||||
0000018257 00000 n
|
||||
trailer
|
||||
<<
|
||||
/ID
|
||||
[<2a963c3a26f31af55617bdce2d2e6bf5><2a963c3a26f31af55617bdce2d2e6bf5>]
|
||||
% ReportLab generated PDF document -- digest (opensource)
|
||||
|
||||
/Info 17 0 R
|
||||
/Root 16 0 R
|
||||
/Size 29
|
||||
>>
|
||||
startxref
|
||||
19699
|
||||
%%EOF
|
||||
BIN
Les08-Van-InMemory-naar-Supabase/Les08-Slides.pdf
Normal file
BIN
Les08-Van-InMemory-naar-Supabase/Les08-Slides.pdf
Normal file
Binary file not shown.
Binary file not shown.
BIN
Les11-AI-SDK/lesbestanden/polderfest-demo.zip
Normal file
BIN
Les11-AI-SDK/lesbestanden/polderfest-demo.zip
Normal file
Binary file not shown.
@@ -92,7 +92,7 @@ endobj
|
||||
endobj
|
||||
13 0 obj
|
||||
<<
|
||||
/Author (NOVI Hogeschool Utrecht) /CreationDate (D:20260520093344+00'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260520093344+00'00') /Producer (ReportLab PDF Library - \(opensource\))
|
||||
/Author (NOVI Hogeschool Utrecht) /CreationDate (D:20260607084029+00'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260607084029+00'00') /Producer (ReportLab PDF Library - \(opensource\))
|
||||
/Subject (\(unspecified\)) /Title (Les 12 Huiswerk) /Trapped /False
|
||||
>>
|
||||
endobj
|
||||
@@ -169,7 +169,7 @@ xref
|
||||
trailer
|
||||
<<
|
||||
/ID
|
||||
[<f3027a8d2312895e62b8ae303848b605><f3027a8d2312895e62b8ae303848b605>]
|
||||
[<79e8326966c5c98df280e802b5bd3c63><79e8326966c5c98df280e802b5bd3c63>]
|
||||
% ReportLab generated PDF document -- digest (opensource)
|
||||
|
||||
/Info 13 0 R
|
||||
|
||||
@@ -82,7 +82,7 @@ endobj
|
||||
endobj
|
||||
12 0 obj
|
||||
<<
|
||||
/Author (NOVI Hogeschool Utrecht) /CreationDate (D:20260520093344+00'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260520093344+00'00') /Producer (ReportLab PDF Library - \(opensource\))
|
||||
/Author (NOVI Hogeschool Utrecht) /CreationDate (D:20260607084029+00'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260607084029+00'00') /Producer (ReportLab PDF Library - \(opensource\))
|
||||
/Subject (\(unspecified\)) /Title (Les 12 Lesopdracht) /Trapped /False
|
||||
>>
|
||||
endobj
|
||||
@@ -150,7 +150,7 @@ xref
|
||||
trailer
|
||||
<<
|
||||
/ID
|
||||
[<990b43d766b45755d5f398f80fe317c5><990b43d766b45755d5f398f80fe317c5>]
|
||||
[<ee84849e5e540483dc2efdfe46a069f8><ee84849e5e540483dc2efdfe46a069f8>]
|
||||
% ReportLab generated PDF document -- digest (opensource)
|
||||
|
||||
/Info 12 0 R
|
||||
|
||||
@@ -167,7 +167,7 @@ endobj
|
||||
endobj
|
||||
21 0 obj
|
||||
<<
|
||||
/Author (NOVI Hogeschool Utrecht) /CreationDate (D:20260520093344+00'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260520093344+00'00') /Producer (ReportLab PDF Library - \(opensource\))
|
||||
/Author (NOVI Hogeschool Utrecht) /CreationDate (D:20260607084029+00'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260607084029+00'00') /Producer (ReportLab PDF Library - \(opensource\))
|
||||
/Subject (\(unspecified\)) /Title (Les 12 Lesstof) /Trapped /False
|
||||
>>
|
||||
endobj
|
||||
@@ -309,7 +309,7 @@ xref
|
||||
trailer
|
||||
<<
|
||||
/ID
|
||||
[<81cf0bff9c8a5b633cd9ac4faf7d01ca><81cf0bff9c8a5b633cd9ac4faf7d01ca>]
|
||||
[<73c52b02e6200a193904a57b4ed003cc><73c52b02e6200a193904a57b4ed003cc>]
|
||||
% ReportLab generated PDF document -- digest (opensource)
|
||||
|
||||
/Info 21 0 R
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
**Lesvorm:** Tim demonstreert klassikaal. Studenten kijken. Zelf bouwen = thuis.
|
||||
**Demo-app:** Polderfest 2027 (verder bouwen op Les 11)
|
||||
**Vervolg op:** Les 11 — Vercel AI SDK + chat met data
|
||||
**Aansluit op:** Les 13 — Agents + autonome multi-step workflows
|
||||
**Aansluit op:** Les 13 — Cursor + Vercel deploy
|
||||
|
||||
---
|
||||
|
||||
@@ -333,7 +333,7 @@ Schrijf in repo-root:
|
||||
|
||||
---
|
||||
|
||||
## Slide 16: Volgende les — Agents + autonomie
|
||||
## Slide 16: Volgende les — Cursor + Vercel deploy
|
||||
### Hoe ver kan een AI autonoom?
|
||||
|
||||
**Wat we vandaag deden:**
|
||||
@@ -341,11 +341,10 @@ Schrijf in repo-root:
|
||||
- Antwoord komt terug naar gebruiker
|
||||
|
||||
**Volgende les (Les 13):**
|
||||
- **AI Agents** — langere autonome workflows
|
||||
- `stopWhen: stepCountIs(20)` of meer — AI plant, voert uit, evalueert, herhaalt
|
||||
- Tools die andere tools triggeren
|
||||
- Stop-condities, retries, error recovery
|
||||
- Voorbeeld: "Plan mijn volledige Polderfest weekend" — AI bekijkt alle dagen, maakt schema, voegt toe aan favorieten
|
||||
- Externe APIs in Next.js Server Components
|
||||
- Cursor Composer + Background Agents
|
||||
- Deploy naar Vercel productie + preview per branch
|
||||
- GitHub Actions CI (lint + build)
|
||||
|
||||
**Daarna in deze leerlijn:**
|
||||
- Les 14: RAG + embeddings (semantic search op grote datasets)
|
||||
@@ -365,7 +364,7 @@ Schrijf in repo-root:
|
||||
- Tool-invocations in UI gevisualiseerd
|
||||
- Edge cases + error handling
|
||||
|
||||
**Volgende les:** Agents + autonomie
|
||||
**Volgende les:** Cursor + Vercel deploy
|
||||
|
||||
**Vragen? Feedback?**
|
||||
|
||||
@@ -390,7 +389,7 @@ Schrijf in repo-root:
|
||||
| 13 | Tool Calling vs context-all | Reflectie |
|
||||
| 14 | Lesopdracht | Praktijk |
|
||||
| 15 | Huiswerk | Praktijk |
|
||||
| 16 | Volgende les: Agents | Preview |
|
||||
| 16 | Volgende les: Cursor + Vercel | Preview |
|
||||
| 17 | Afsluiting | Closing |
|
||||
|
||||
---
|
||||
|
||||
@@ -1,194 +0,0 @@
|
||||
%PDF-1.4
|
||||
%<25><><EFBFBD><EFBFBD> ReportLab Generated PDF document (opensource)
|
||||
1 0 obj
|
||||
<<
|
||||
/F1 2 0 R /F2 3 0 R /F3 4 0 R
|
||||
>>
|
||||
endobj
|
||||
2 0 obj
|
||||
<<
|
||||
/BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font
|
||||
>>
|
||||
endobj
|
||||
3 0 obj
|
||||
<<
|
||||
/BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding /Name /F2 /Subtype /Type1 /Type /Font
|
||||
>>
|
||||
endobj
|
||||
4 0 obj
|
||||
<<
|
||||
/BaseFont /Courier /Encoding /WinAnsiEncoding /Name /F3 /Subtype /Type1 /Type /Font
|
||||
>>
|
||||
endobj
|
||||
5 0 obj
|
||||
<<
|
||||
/Contents 15 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 14 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
6 0 obj
|
||||
<<
|
||||
/Contents 16 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 14 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
7 0 obj
|
||||
<<
|
||||
/Contents 17 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 14 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
8 0 obj
|
||||
<<
|
||||
/Contents 18 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 14 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
9 0 obj
|
||||
<<
|
||||
/Contents 19 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 14 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
10 0 obj
|
||||
<<
|
||||
/Contents 20 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 14 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
11 0 obj
|
||||
<<
|
||||
/Contents 21 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 14 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
12 0 obj
|
||||
<<
|
||||
/PageMode /UseNone /Pages 14 0 R /Type /Catalog
|
||||
>>
|
||||
endobj
|
||||
13 0 obj
|
||||
<<
|
||||
/Author (NOVI Hogeschool Utrecht) /CreationDate (D:20260521071303+00'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260521071303+00'00') /Producer (ReportLab PDF Library - \(opensource\))
|
||||
/Subject (\(unspecified\)) /Title (Les 13 Huiswerk) /Trapped /False
|
||||
>>
|
||||
endobj
|
||||
14 0 obj
|
||||
<<
|
||||
/Count 7 /Kids [ 5 0 R 6 0 R 7 0 R 8 0 R 9 0 R 10 0 R 11 0 R ] /Type /Pages
|
||||
>>
|
||||
endobj
|
||||
15 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 2436
|
||||
>>
|
||||
stream
|
||||
Gatm<CN%rs(B)NcEFGLJ3H_4ji+(uF$b4s@0i2u$M)P6"5XA=YM_RZC,S_[9dbhcOL/6K[ja,N66uk8.m_*[KB-`;n,M[LS-Mh^Whu,)s8=EnJn<m)D?g-%q]ChO"A`O*7PiaH]`+!<XW4M[0$:5NJ1)?[2`,t((Y6EB9eg.LQMF9jtTrT!$+;TYndQTB;Jl%45eghM.$.1pE_D&^=^=,k^ojS\[g-O!W+(1HZ3hlmYjYJN@.%pC)B#"?:h$(JEY>(RjatflE2jHs9%5"B7kj7<j=^>Z_A!ZbNq-`c6ZSk6n9_8!8Ipln_n9l$*?h%eGrteUt;"T('eT[n%BlX0<>\?Jl@KQ0@2RQ$^AZ'7@"H28)_&8=%\//W1g@M)4h.BDB*b$IAB\uLl5L`;ccQT.An0!Bn4:$UG4-#"g73\T09o-<M2$b-j;K)+epGua##TqIh-nP$NeB%19c0m9.'LCrb4SY<NXegX:'!\09e7e3gs3Gkf!3%/*[9Z7\CED]eFr>M1#%>E*[=*9:C`c.ALrMqns0M)./7=#?>)\439El\1ZLg.h5A_ltpG6?52Hp_pZ:gNU#U@;WUnj^j.WQTLdh$\bgW/i%$Fh9'>`hjDil3O8_J0)'ZYQ?LD6rB11>1(ioIXo0ZUlY<[P8^`V;&R1f7YgSFE[ZKf/[%g&*=:R7CMD&B;Q>soFH=09Xsc*HeiTN<9;C63E3S=4U4<c";\HG]Cc?4B'lmNgjutU3I@+JSF.dgeLF%%faW3V[b/P_>bH8ZEDlX97f6e[AY'Y!YU-u5LS-6KBZ!4Alr$tej<Die,ONb/3P97\QY*ePMX1*NRj<KL9c$6Y/ZVQbfVk]?\EBITXEhLm6m?Nk8H_sm:fWgBGtC3CTR$6[q#jonA]gX.[bL'Jpi#n[$u$QO$VHDiFY=3E$)h,-KSM\JbrH!s>_UY6-9mIDieHGbDtiG&muN".hD^c*4dMPt1,j/;g/+5N)bVf"]0HN1LN_V`Hl+9FgFf9/a%)e_%qtA+j=,]OrWo7oLlV?HCUKGU,&40$[tIt]e5d?tk1t^aRl`c3>1%h+:uQh4MWFqE=Nk:"Z"L#7!U;h+>@u6)#!K6R,p(c`nDnm#^C.S*Q%Nd'bHC8_SXlEsPU:U*A**O\1Z*r9W6">GEdQEb#?6>1;"p<2E`8<oAX,5U2QKMgOt'bN9O.HsRt_V7?u@hW%!?O\O)eG](\M5apu6O<bikdoA_,5.B41$N\Y8bp&*4ZsZrhIBXk0F2-1eC@Or!\CQCj%FSYZhnAQfjD<TYZ>d'$,tAZe2LEQH30?9h\^DJ^+HVLfdkR3C$lf4JSfcCUUs^'\!G$M`..;R,W`Ys(\j'd?:$5P.=I-0/BZ4,e`sJ>$ph:WB3uB%ckub3;IDcUkfY$o]:QNqs2P86Z8b#Ail>2ePs[+%W)5J"M&hDoML7%mYN(@`_P&C<oBr]>]C?'?`I4Fe9<R(R8C+qB:'>)&TH>QKL$"1`2`-0,#-Wd;JRSlNH*b/eHu)g^%_lV/&0fYD*Ua^TEho^&"=@[.uZE,ZRbf&(%gEH%qhk*$8WX$Iu'cOhY/qhj*?X7D!JAFdg_i=BW2NOX[br6WLFs>2]qtgE>F<g_:9/r.//U:'FjC7>;,/9gBd;Y%''Tr/oH3U*&4O\X'RC]5S`.=[(k0O/=/5T<gobIAUHgmEg>n?H@Q,Z3?Re\!%"*L(Q\1%lS_YXXC=J#f]A;2LtI6"!;[QerSC@[sJ2o]\7XimuQ@lEoW',d2kp)8*_iqeZ,+0\GF&;GVT*.s+iaEER&qQ]82jeMKGCifqum6*@eI0+jMhoJ7H3F6q?jS6mX_@'#el(;lHUkqP,l+oakDfNp,4"n;)/h\j+'(S',Q9h7*rVTLY[-?aiCapRt3Bl\:9BWT_d[9p20m%[*G,0(`EtO5b!5=sf4\qaG,*G8%>pBc;/:EW@iXc6b,P<c#4hgN7#XaXR2)b00NmrWg+]Hj#$:UKZks=^qJi/a.;aR%Z*D7H:Q:X?`hn2p'+Z9VQ1*V7B4,3F2rKj$W[;)TS/d[%b8S?6IT$,2VWt5+6TJQr?WB:IU/Hp:42S,1-pNVaHd@J;GrsrS9s8B7^X,o\umfU#HHS3k7l`>&Q@AAQ##<6"B#VjTnJsY,ZNUQlYk\j7fRuQ_U,2]*A__6j5c#_$$es\b"fX[QL8<Xf4LT:g07iB=Qi_jrbq:YjZ?ZVi[`L+!=<d:9Y*tSUrf[n8q9(#_$9-ol9ID@THbh"a:GZbhC81pQ#E,K=da6qXrMVSEg"PLK:;*<Ws1Y"/kO?X\E(GkNU.jBVeh,Ca8AQ4#lQl"%sqT])CTl&(:VH3rP?'bHAta)]9GZ,J-*(#PO_I>5$oipZtm\5B\.i:-7Z*&1O?gpa_(?O+1NuMGH3G/jpD%<Ca:%p*Zj&SM[8Ca:e3%kN%p\PP8FsV`c+~>endstream
|
||||
endobj
|
||||
16 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 535
|
||||
>>
|
||||
stream
|
||||
GauI1bu3:M'SZ:1MR-!E5tJ:4a\+ZH"#KQSl?:.dj'3Rj=>mH5_qS7tSMY&Rb?>g$jEp<=cBSBj98mN6!q-Me>mL^miZ:E@L#O!mMrZU$;G3c?Ygi5#QXG*Mq;CSW+k'-J1)I1M0P_Ae(!PCe6H2&rKRkN+T-OK^BPsmQZQdk!+4[8_9,UqaQ>)oi>sIr6%:7?P9G]F]*Q@"[@Q(Vm9bl\41Du&cMpGaZ>iDuhBrG'<\&S1#WEKJ\8SN-mFa?4[bn+QF&+ke2?/LeQmnipMEO+i:Vm"O-WK`l>rG*;o;HuCC___+D8b["'2m.hh'=s$o*g)nY\]qXA_hcol]UhfVA)ZHMjDHC#qNs(29)^QB4`V%?@6M5a>Kq07M`Y@k!TH:R.Te$N't[emJs4D#<$peqCFm35`)p79^2*UrZ?.tsjY-pHehLc!'?-_gNlWFVWYJMEjPE:^^AjtqD6'5*=1-#@p8>o!gFg3sBP7[LO&+hD:t*jZA[B=\+fs^N];<75@6j<V?'>dh3&fkanf'F+h?*~>endstream
|
||||
endobj
|
||||
17 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1696
|
||||
>>
|
||||
stream
|
||||
Gb!;dgN)%,&:N_Cm-%#9/Hf,fFIUM8i\[(#8^jVdM=Np\YfrCLRAB5IM>t6s?9h]&/A'.d;orO$9Ao.<fQ2i`",^I:r/WXaVfR+XJcXmc56<0gK_]E9T6hq,iB@dJ![9H9+U8VeqgiePje."\LHK+?Bg?b_6#&lr%Q/2F(Bc:>d_O64Nr]Q7)JBFF1Z`EPb'64"cI'$Fb4igHnQgOrL)1K;M[mX@rt#TcY\m>K<CfHE$5C]?R(dkCq^Zno/56j$(I\\GeYS+`CKPNs^lqj+-WQF2[5ip'k00X?.Pl@`"7n`brkS@KiCfl#'K!=Ys4UGf"M?ikWcM,<g#DuD/X&9u0`lZVMqTEO]SeV>RKs9=B/d!'-ZEY(OM:?1o=,u]e(IW[#D?!S7lIN^?BVP.k@9G8qo#)4@=r:6/<hrEfIp4^YQ\h>\,^hBMuiY>e789<%1fE?U<ZEud34A]Dd8C[?oO(mb[^+oCQchhgV&+3_Br'B]fshLIZ3tO,`IGICLDrK[*m3j4WWnt@I5hR?Usm?K-(_T'jl!U=GVf\$%GsD<E,F][95e$R'XX\9b**GR423OK%[Wcfp3M)86ohtN'6/u=Wa`=C-u<B_o(Ed^N'Y0T+Xi?`^:Dhdp\[kH'1Tn$4EP0o5Hatnud0I2hf`'5TEd9mo#t5a,6u<A(>FtrDmcAEgXRHeVSjTXQ@k$:O/0N0kA7s8[er!:]ckJ27%C6'K64"aB`"R20;1(,.uaAb`b?>MO1ZGT%)7"*)',dHpT+g`YRD)M*5JZ),WLmIKS-T":9_kOH:K-W4G_V!bXftiPmW&d!G>O%UaDJAP&_R3RAr#DYu2XTm85h"GBLpe*B"/ElNN$;'MjfHp-Tc+K@We1$8@G5\4673R&%-\I4h)WX*_a/f$P<kV7J!?=nP/'bD[F?k#4`EeJrF*'D54I/2be8S[g-I>hdX&Uk+r<5]T(m[sU<2YCdP_rir*p7PNU4A$C<a`:D-A2-BgMskS='QujFd^5AX2tuI%'D>/Pp$VcsF4+F_W/GL*U/5ZQ2LHfSns5Rp:`!_:F+>'**ZEP<,-A<&'D%JcN9K$FPMn$O9?G3GAGDIR8dS!`L+fd.PDd4Z/3VgKUSkHF!K7N&m[9Z*.`-QZDb&,XOqM>]X&-tKV#90`gk'saikeUj.fH*O:<q)=VUHT6R&"s^qphd*ZE>Od0KD&smnHd$a-2Qgl$,di[aK/Rf&3pbIh7mQ=d:<p_ulaE`@S`\W3#m"U,19$lK$uC_qetG71u(Q^sGhOPL:FG[RPEf,n_\L`;`G%,[)L?<og[aX.IjQP2QFS\QsluAS-"Pr8o3APW^g/3[6=j1XZ'`70q519rC:1H:oJLrQQHO]nHr(FRXG!,'6C02Mf^#cNS+Ld;\cI;nssj];?/BA*tTXp=&n/HM,Mn'ZicLEM6BWni)KkN7#Via5+@!aoCi!_'sF^45!MBXf9.8VJ@r&\t;qKhctrH\t@*L:YIr!ZaDH&(jA2ao]%eM9Y)o:Qf&h"Cb_D_Cq="?YVA[2)CU?:YOcnWP4%MIH=JY30!S$<fd[Gs`g(X_&CYH\)Z+$!4ecd%9B/LthqSHDDJ%LPZch;(7n4o/iGVp\+%/s48Ifa&=%-k9BsHH@o#05;j5g3igg9+3jN%3XF-7Q\Bi:j@Bn%Tl2sHq=Wt>0.q[Unkc:)n&Jp5HU]RKqRG(%I~>endstream
|
||||
endobj
|
||||
18 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1699
|
||||
>>
|
||||
stream
|
||||
Gau`SgN)%,&:N_Cm.a.I'*MAL9PSne2]'f9:=H0/6^6gh'I5Ep73O*mg._LZ$XQ*@[]I'(E@d/A/V155fKIC]",\2OI)d,?dj[D,c@Bo%/q?M;@JU>&9ta=DiB@dJ![9H9+U8VeqZl62b<bsB%sc5]dt$XIK%,`m*GXLl0*kY[V1HTKNr]Q7)JBFF1Z`EPb'ZL&cI'$Fb4ifso/hETdL1ohYsXuI5D%i"eh,%<$:uXEJV%S?POmD@T>A][BrZDX'Iir\QR6%h0]P9G-YEs]<)liHAe%%n$^2@lbiJF?9L$DdT(OtXQU295BX!Krb#H.Z]\Fd_B2ef[ir0QBP<8n,!d]Kgg*?F+@iA0<KS>Ak)gC'N\2.;Z?i#k0>`na2fi!k9KMnd>2QjYhP-Dab@uKWm`1F<o%F^8=-t`m,>c>GH$eC>X"F<Fo"T/)GA,)8t&#fZ*c:dNOJOPG\*6E*(>K1@<Z+':mUp?UNp(*eMjCtpO-b@K^;9VAD=NJ#WL:BQ#h8JZ%'GnX?D8(B<iVO(58GH24abaIM-LNekVQ,O_n8%tF0(O9c-O+1H$WF4W"I!bI\1]T7OLiB7@YFH)45k22XLgs<ZrO>A3-cIHb2hRaN6/m]9Dj6s9MSe978@7efbh4IMXlBSl.k?\[cgsl#k%sa=%TW.o7q;OhH$#V?JGE<AZ]"1`EssAn6n+[RX.1/`G(MGNFEaD]uM&OY,u^_`F)Oe]T#YJaWP9_PI%*WeC7559Wj3IKM!/A/\3#;Hd9W-(0jJ_5WN%>Uf%8?E/#QM"uun5Jl'>q/"/`hd:54fdD;1"N?6Y9#Hln\@5Ysi[CQq]2CV"sQVGO=7kmn1R'2qa:QfO"PVps?Y75m4:+>rFM\7iF+A*+b?XGsCaA="]:cFKJ8)]10,r&c.A!BfDIVkZ=D:7Lm[eCjqV.,!#MR5F!,F$mu'VAN0n9&m[8&t,\AkkO-[+(O'h>hkOFd+(P"%5a;ho'+b\J[pA`3Ntq&0R0OPMM"oV1JC1K=-h9'eRZ:Bm_`=W8Q_>kj7g<bmpNn^'M*`V`,,&JcrrV^NTPAE)1F4k-9=8GN2=pDp#`IM.7+h:J0lcpi]_snFc=c3[[;_jSY"[$?+,1$^2B=$!"5Z@sg^TmJSETYhJIt0gapt:+>o892*E_idp[@,pouBeUd0]9W5NgNe+Oh''"GN'&tNb!2G1M4"`6lg1ut/OkVEgDqi?]CTUs,B^;o[d2[Kkb`cB%M_qG`Nn1NCWjT[VSLuF%$(aV#>+LaDP1HM;:j(Q6XQ/I=3G'NV*?Ds^:Z)5F@j-*kr[r<[<_ZJU0C'>m++a9cneN(u?:q\E@nqsK6^!oOqj5OV&ERuGLVBC\r^5/O;%[ZWq7W%5K_Cp'eQBre.KigJa]`e=*!9iY8p3FhP+@::@!(m\a%G2dQL0,#=CGtOmr"m?/&'JAPLjHtCa/Sf%ke5te0F=JGY&LJW1%m]SP9Toked74Cq#%C]RR-jC+P59q\6kXkYh!#T#8S`J[i$]'8=Q7Uq3OLGNWD3a$+5/\<!`?*-XpQI_Nf\@5$E,8(/J8a#]fs+P96ugKhd[grS+7MF;g@g?qGt6%&E063F-0\$!R!Xk*0^`,5<+jh*$l>KSqGf7Z<%@9\qka`:sUh0f_bpC::%^D;0^_ikn_cDMqW_^;?]Za>M=cVY/CU#<i$\E8>:VYPc:0>G_$mJ~>endstream
|
||||
endobj
|
||||
19 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1837
|
||||
>>
|
||||
stream
|
||||
Gb!;d>>O9K'Roe[380^R$AOu=gl0acJ7Z>`/+u<P^?!8c6SLKCeom]Zec4J^G%*NE_F8-B#U3k9o:>>TkF=6!pgWpRBEGCsK^JLB(l.&f0L5gM5Jk7`qsG'!\/#^5Dl=as+G'!1TGW"n84?Ln!sXKp@^H,D(bm?k_"!rG9LE7IlrT5Kd>DZ`J/BVu;0U=_6ue6]"d)C\\'NCr)+Q>&C<d<'2STNP44mf;(=a4S18uQ.-SROVFE.X/o!'dAo/oh-c`44sGm,G<2=)B%m?V<]<]5\Vp<'9.FCMRk",7UGr7/pSi<s!*iD[FKs3[.JI/#Bgb%k3d2RoBsEKZ"uHU(rbW!alik=d`j`-7<jA?Eg6+"^uMTnJ#Sa!GF@gU5PkRSYJ-DiL7^/jYk*]Y>X,HQoY!_ZscjF&;7%JGTBS/[iuo4Y;6(6A,IXc`+tS;q?@f>9MWlM*0Ls8F`=<jSWtt7SiWs488$5Ej*LWg[AG;eBt=QRE%hDB)uEli7n<">i/(Nqs7V708)2p^AZp+=#GFlpg&9`M.?VkmLoNe*sY;'15R1"UR;LgYY$I*#$87#V?o`LB]Gf-:]YDX_dt&L^WR4MAomP.'W+S34,S[.%.e,#D\[P(D8K:nE<`8!O@-Rb,^6Y,I-N!7Q,[PpGD<liJ1rscV;g/h.u'F@jWb$:rd<7OiMfO[@Oh^_\?JdiR:uH#2N5,['hMt,)rqSNYSb*Y&U7f=j!p[=PuSDsG+@33RC'q,b!$JBJ%UT^<d3EOmDX>Q^0)<BhR^#8Sp]4_,Gt.I,Vd1__gH?5XY>uQ%(2b^F!hC#mS<NJ=]QQ/UVY>kUTmW5T%WB67,`5$No2i=jF2mCNC/2eRL<7o<-*Oi<r&OgDO+8$*O!rT-`Zd>%,9)UVg,b_OM24B,+mX&o]<fgP$G\B<r%_XVc`E)_B*2P_53^Y4<h%`;QhIQT'2qf2SHJZ:Rc-4O)=@Um61L#Xn1H5d8RGV*H&&/G>;t*D.o)!P\4R!g9!1RQgV<9^<*_6(6;6;iL?0/-./O:8Y-`reu%t<1!:WP.0VNR^TB_UQXFY7Xs:FFI:eBZRh-BER(tA=9gJ%&24duj(WBm1(QSLRN2sO^Ae[<_S3Yg&-5u/u)FkR[S'Gm1$*B]]V-Q_W@Al9?/[Zg`,#hCp?SRI%Ok6`j/Vm8]ePPWO2UYe+YQ/=i1n.YQm0Z1&s1"@u)q4\OG$q\@jgo3Uks.>5oCJM2h;cY\g4u>E'4'En#IT\^j9Vf%f+,MSkO$'SDd`f.a[HE="`2/pCg85%Qfp[nCuO`G`?ccIQ2n)E^0*U4[J0gB)\tF227mh)#de>Ke/&,@JSTUYCr7GX*tA3eiX2[P*l=FtPPtdc=Xo6.TUE,@XU,C9[XJI<NHI6SZ(\Y[")"SY9Z\>-[Y'@Q(hZ5%=Nu^;3FR"##U4h\h?o5*L^6SWLn9A*<#2UJr\t+T0*Ps7bCr0QM[G7O`paJ^?a;Vb49QfbEHG:f+o6R-JKQ48^,@!^gqg_pb'q=7Vl6+X#kG2P^/)-)`l$B171F2Qn).lgr[c*kG$e:OO3Y_V'C['t-7iat3-@!"n7LgIDY`M;CTP(OboRo63VD,.pHiFu2J)nrj@be)ITkIbb&qn=G>O7A*gnBt:f@8)Mn5,FUmpUIL;Wk1ke8Jak;J("`G92cG"qSu$JN@XGs6p!I?)k1<G%&"1Q8qg>.oNrd!`#mCR$2*p0ZRkH0[6#Z.W="rpRP[_:]\Q-sVJZdWBQj^-=Zt:ACu4pGRqglLe.EZrQ/SoQlZ:PG\$<-k9VtrWTm6>YsN^(o@H0o.2AmM_FF52f[RhDu2>D^lJ!Z(_>K<]QFcn~>endstream
|
||||
endobj
|
||||
20 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 2009
|
||||
>>
|
||||
stream
|
||||
Gb"/'gMYb*&:N/3%"cI<BcBO;.#Dul"d66,!sIFsj)eZ+:g%CIV7K*iS6h;,hk@2j@Ri_R^24il1.<80+_T(/7DZnQXhKE)i+N/s-PRt]aX<aOE1!03X,1h-&EY[5gH[;u=rme*=o&["KopoQ&BA9%"_"u1\/`#O6jQQg_f;hP?-"=>H=B\nY%,%p!tj%+KQCe=73'<dC//TcnSXD+lkA)8O#W,ABP.4(@+^)iUcMJ5'9h.Q%?hVuDu]fU$?+@H/:qH%7W>&A)(ZLr)0=d+FT8Qn_Eu@)]TaoaV-,>_[0MmgQorc;Xl4?E-JUB4+7[Zf!Ru][AQW3\r,[kpO1tr6+.P3]GIXS'P/A22>uM;-6O*(o.rJJ!1;`#\G9Af2:$UK9/M`\d9TtCB2C=l!S5@gGlRd;7-SW+i]V0pT%Fm=]f[$mt_mX77V_au_#ggB\4u+NMV>Wcf"#@Jk!lOB,M"!oIA2C`jZ,Sm[Q:Bt8qGZk]_23?,b'P-Q)ZNpo1QU08B1r:o>YE_Dg9Xjrqa+u0bdXckpeHP3&U"t_1La8n*VTg:UGOD-R#]TgKkV`B1u0,A"@niM-X<e"J4lXlBgo2&]A;gsH<Rr?`@8`'5npIITV#l9&!h%?`>Pn6f='TqR$B8)q:ChFQF"445=7<Q_26_7)>OXK/5fmJq=/RV/4bgVJhVa,npONRb"i"abM6/sG9q2JKfBuMRc:f851`b!ao"34N1e%BH1(R'+qNUEYt&,9<j21A3SU`S=f#gBKo]]Kns,B[YYc5Z`:cm&OofBm;k\GZf3/e:.6t9eXEM2-i3$8lDq>aB**ijUp._)=42g3W]A=ac5(V*s3+IUL_()CdNME&9<r*`)0rOHh=jXQ!<<#=dJLe[mA$ZCrqmj'VLn97PgY.VTg%;`m"i18DMH=l**dEW!PS_doh"7W6*X-7U-n*4tp@IdCbi&^NnerjB0$_m%44H>Q*IZh8'j=!T"DWqX<JUWp3g\52dS)!:3$%B;1:>HWrA[KfSa#";!A)hg?P'ld.__Xda(*cti%+S$qE_+AoCe&=;^\'WgN4._0IrnhWe0RGc/\<9qjMda]V8jDh_Fs'F%g!TDMA.-L:cJhL8m*-G:A_q'qWH[RAeSD3jOJHF5/?5CI<!:Hd;r.@iFlBVjd=N?53!sCO2KD\753,@Q_<0VG4"![j:-=8`X<Vm*1he>ka0NBCu`CXgr)<p\&qQ-<[=nK;FP*0mk51lr"&Afq?P6h11(p-AtJ"Ysi$YAoKabC+YpM6Ig.u02fF))#WB/&jV)PET"fC0YlQ8#d5GZ`WE)?;?r&.NI&2P2l%8W!DqMsg-45A!b?QpB5.hscPtCS_]Rd`baXXqA@YDSb7u&IYkqN<E@kH1ZpSl5auhu1YIT$$6V`mDU>TV`M4m&sK!dl_$CCIt_94e#"NTnM_W)mkX%lVIYq"GYcB$t9kp_*QI_o+>@LEp'<P\p.@ocslW="r?Tk3rMO3k@[$\'J[b:LogmY1dOY&gV'2>JPV_B>(8@TuLd>FNc5\f5"+VMh%3eCo;]lgZ_>",quj>[E\(0'BjUV]rW96)dW]&g:+M%q!(t4!F,6Xte^u=AGu/Nou6Q_M7%N'aGD3'`DD%s/nCiGg;j@s5Z,jq56f;LW1<>ngPPMFAL-VW7F=ENV_OX_ps9G[j$9<*NE-'9c.gA_X:Z&D/3upZ[1ETDge7`mM.uK*ih]00m1+oDDAQ=XH[-][g*8;s8#.>cd[fl7VMWCo]o>e.;,U>=^#BG%,%C<>V&m;q17<^/QTfN_MgX.RIbLD3orY"RbiLbVWo3hr)!`&%j8f?NmL3Qp\!j<.%D;W"Xh,"?[Y6m<%\+(O/R;^GSGW)!W:TRo;g3M%DN=\cd1^`5.Ee1TYt;"Xt&R\fKKXFqZ15WNb_q0m["Z"m@cu!5`2TJX3<QRn(B<>,bZcm,q+6i,KuacR7qM3&CEDLgQjrNVP.>)I^'7F<>mGW10O2qE0Woa<+6.7cI;%7D(u4S5;>1f^A~>endstream
|
||||
endobj
|
||||
21 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1570
|
||||
>>
|
||||
stream
|
||||
Gb!ksbBDVu&DcY&As:e;/X-7mmE0EH-TsJ('!',D)i0.q=<t]_TRG7Yr-JYkorr74D)YbMH;GjkpC7B`(LmdQ^8V&a)M%!,q!f.-Peh/B1a3OUhS@=fjR\&/KV_NS,g:ioB0c%7rIM*u/]7reEgBYFJs9e["AqW[QK8u<S<p*0"YF-XCdN]K8W[NrOGq1NQ9:NVP(YQcN_#Zcq;M8!^Wa6TP@X:qh&P8WL)+l9e.sp#83l2lL04UkDh%ZZ)IBC8Qsumk%DQ+!MNrlU@jtZqSmE6YN>3bP&@\B7>pEPM'P99XHfhj3n=qZa;&H,'n_XTS1k\rD1j;9i#MaO9OtDH2&*Q.\oms#\`^gjM&T5UfR,bh)gBDoGU2>kFCL\#HO4fWM"[@[XlXgn?:*SlC^Aq$^8_iOW7@h5*O03M]ldH'E.e%/s`jFFRaolD%r:XE2Bn_k$F(EULEJ$1Cn+tUmG0`/;Q5`^/q-S*HggaU)G>63(l=[%Mofe1,BktLqO+e[+=."P8M1t@D55;jC6>=Zs@p-A8E("?"gECu!AF/n>IA]NS[CEZ>6fL<Uf#<5^%:ZmG)gimc;8.u!&`1rAp;X*:Y-$tA<Ei'G<BDc/"P&<MPUTB+pkp`Q`RW/@1X_L)\u)N^YgD;U#(t*^_OR8<iPK)H=H\+PrC3'@F(mqIjj^:Z?=84_$.6UVX#44*hjXAi'9".[4iTJJlqCR-lP!*I.1Q!pSFHH6T:6.\=iNd-(l"J!H?IM0F5XsdKZ%i=Q&oTZ?LG7VCXfQ^pG=F0)\#FhM(-]>L-7#,;%daU5#7b$"DT/`^8M4F["b<@SN@O)(@n?E^`+D3PbRB^@0XQ]'.2LuU)8bN?\?_Mg>0cY^h<s?K5='9D@2p&Y4W(dIL"VQJHmaq)P]_Tg'lkipU>YfI!Q"ajGDXd__kkMo9@3kNi/KWqbD'^IF3+[K7FtWaao!0@S:";&+SGu!Rt>G8(8X@?3.#-+ETS5%^3HqZ]@H&[n>nm_Lo$+E6IQi0C)KpS.h$?@,i3h\?+D0G;c@5H;@,>YeA'!B][qVa5N#.7UZ=HrAG.Cp)JkX8WTB7fo"5,3TL3ZPR@?B_c$mMc0AUDW3rXu',ljTk9u3R;oJ;<267JsLdSR25fCH\C*fk\Vc\dbm70@BY[G#mr6+#hFh;@hQ;0<'#CtG)@QJ0[mWbppgpeXLF;+U*7;#][=2Bgf<8@npXOWkS(V5_fjV[)"k0-E:Zqpr-HMf>MU9)ACjl))DKBt#@c?`[`mU!*U$LqfK7PQ,E%GB-d%C$r.)#UQeQK1?'Tnnl%@CqD>Rh)(BIoNmIqa!=PA7tmEM8%Y=Sg!W(CK)kkVUbV2.h7C'*%X"iQb9KGq3YUJk"e8]b[ssb/I;9Zkc:[=4%rs#G'/'0I!5haP-9Rp2^!cCX8//OAr^a&GVnhb?E(ZoS_jg#"4gPrclcbFHImRjEo)D0m@e^9`(-8?Y,d0I*Nu`a_h+t$Ab#e[-[qBWK&/>_>1anK"%9URErc#5eWlKA>*tr?_o3AASS/e5/7i$'!gfoi-pQVl"'@1Y"n;(JNYEg6rWJYYAB+~>endstream
|
||||
endobj
|
||||
xref
|
||||
0 22
|
||||
0000000000 65535 f
|
||||
0000000061 00000 n
|
||||
0000000112 00000 n
|
||||
0000000219 00000 n
|
||||
0000000331 00000 n
|
||||
0000000436 00000 n
|
||||
0000000641 00000 n
|
||||
0000000846 00000 n
|
||||
0000001051 00000 n
|
||||
0000001256 00000 n
|
||||
0000001461 00000 n
|
||||
0000001667 00000 n
|
||||
0000001873 00000 n
|
||||
0000001943 00000 n
|
||||
0000002236 00000 n
|
||||
0000002334 00000 n
|
||||
0000004862 00000 n
|
||||
0000005488 00000 n
|
||||
0000007276 00000 n
|
||||
0000009067 00000 n
|
||||
0000010996 00000 n
|
||||
0000013097 00000 n
|
||||
trailer
|
||||
<<
|
||||
/ID
|
||||
[<464a00a4f31894d5e1fb188fac933ea2><464a00a4f31894d5e1fb188fac933ea2>]
|
||||
% ReportLab generated PDF document -- digest (opensource)
|
||||
|
||||
/Info 13 0 R
|
||||
/Root 12 0 R
|
||||
/Size 22
|
||||
>>
|
||||
startxref
|
||||
14759
|
||||
%%EOF
|
||||
@@ -1,4 +1,4 @@
|
||||
# Les 15 — Externe APIs + Cursor + Vercel
|
||||
# Les 13 — Externe APIs + Cursor + Vercel
|
||||
## Docenttekst (Klas A — 3 uur, fysiek, demo-driven)
|
||||
|
||||
**Les:** 14 van 18
|
||||
@@ -41,7 +41,7 @@
|
||||
|
||||
### 4. Folder & terminal-tabs
|
||||
|
||||
- Werk-folder: `~/novi/novi-lessons/Les15-Cursor-Vercel-Deploy/live`
|
||||
- Werk-folder: `~/novi/novi-lessons/Les13-Cursor-Vercel-Deploy/live`
|
||||
- 3 terminal tabs: project root, git-watcher (`watch git status`), Vercel CLI
|
||||
- Cursor open met empty folder klaar
|
||||
- Browser tabs vooraf open:
|
||||
@@ -164,7 +164,7 @@ Waarom belangrijk? Background Agent kan typo's maken. CI vangt dat op voor je me
|
||||
`*[Terminal:]*`
|
||||
|
||||
```bash
|
||||
cd ~/novi/novi-lessons/Les15-Cursor-Vercel-Deploy
|
||||
cd ~/novi/novi-lessons/Les13-Cursor-Vercel-Deploy
|
||||
pnpm create next-app@latest pokedex \
|
||||
--typescript --tailwind --app --no-src-dir --import-alias "@/*"
|
||||
cd pokedex
|
||||
@@ -508,7 +508,7 @@ Vragen?"
|
||||
|
||||
- Push working `pokedex` repo naar GitHub als referentie voor studenten
|
||||
- Brightspace: link naar referentie-repo + huiswerk-instructies
|
||||
- Verzamel vragen die niet beantwoord — terug in Les 15 opening
|
||||
- Verzamel vragen die niet beantwoord — terug in Les 13 opening
|
||||
- Voor Klas B (later): check of Cursor Pro licenties beschikbaar zijn voor studenten, anders Background Agent demo moeilijk
|
||||
|
||||
---
|
||||
@@ -1,9 +1,9 @@
|
||||
# Les 15 — Huiswerk
|
||||
# Les 13 — Huiswerk
|
||||
## Background Agent + CI + branch protection + DEPLOY.md
|
||||
|
||||
**Vak:** AI-Assisted Development
|
||||
**Opleiding:** NOVI Hogeschool Utrecht
|
||||
**Deadline:** Voor Les 16 — MCP servers
|
||||
**Deadline:** Voor Les 14 — MCP servers
|
||||
**Inleveren:** GitHub repo URL + Vercel productie URL + DEPLOY.md
|
||||
|
||||
---
|
||||
@@ -97,8 +97,8 @@ endobj
|
||||
endobj
|
||||
13 0 obj
|
||||
<<
|
||||
/Author (NOVI Hogeschool Utrecht) /CreationDate (D:20260521105950+00'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260521105950+00'00') /Producer (ReportLab PDF Library - \(opensource\))
|
||||
/Subject (\(unspecified\)) /Title (Les 15 Huiswerk) /Trapped /False
|
||||
/Author (NOVI Hogeschool Utrecht) /CreationDate (D:20260607084028+00'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260607084028+00'00') /Producer (ReportLab PDF Library - \(opensource\))
|
||||
/Subject (\(unspecified\)) /Title (Les 13 Huiswerk) /Trapped /False
|
||||
>>
|
||||
endobj
|
||||
14 0 obj
|
||||
@@ -108,52 +108,52 @@ endobj
|
||||
endobj
|
||||
15 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 2334
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 2335
|
||||
>>
|
||||
stream
|
||||
Gatm<8TWXr'#*s=oOTMp+p88i0S``km&nK)4H:aeYK@Z=KI#7cWK<@8RD\phY5ps4[FioP*2b%o"M4JGo^W"k./ksmR4\Ns:>ke8#)pH1#0\GY9YS;tM>+n44QMVH!"kBOQii2!rWi,O.j50i)"X,GU_/`O&&)RBb#e_cF]$($W"mN_GRR+WdRa4",RZpVm]@9Nj;_1s,RD;4GJ1C[C@bmI>3jPZmQV&r)9d\Q;M@mp$_dVJ9,RX$p%pasY3)`U(KFJN+)S..7131e7rWW85&6V"BiPB+eZC=$eP_\"F-p4MjFu/BORJ*Xpjtuio"V+-=9+uFH#onKRniB?1=+,HfKdgPkgYTfOBY@F_+57F!]T.*O*`%Q>C(`4FDdsPi'U0t%J?3Aqa2fWru=Aj\Hg+WTg?Kdg3tRu,%<8dBoL$e/>p^OUu($PiE9`0K_Ei-Y:T>pRSi"@SSu:8-jHBSn8P!+PEH<lc7r@QM&M6-GWP1rTL][:+a+n=.VU#Plo___S2*$tZ+C6rh2Tcf)XWggC[>5,5Q\qNl[ekb#;!l*g#SP"lVc^78(8.9Cr*pH2I-M1N%*$r_$*5?,,J/lLToZ)mO!t';ns(RAr;7d:i8s9cEma'p2,uLbj0"LAoKZKXFcf.mMnHgF],(E=OgEPdPe:$*.._EilfsRP%Aen@o-1$9+GRXE.Ua^^uoUP&!*12)s<lfe:?J[c>D-2PgD!JI,4hil@P.q;/$PF+f8A%^*bjX[Yu82'k:WcGFU.PD9G+LT!m0H&Fr[@hQ%nPnkpJuZ;IhZZkLu"(moh[Wi?tRWAJU<H1hQR>qMs(bOT]14Fi:;7q"G3$ZoORb2]-ieZcACTCV^IHAZFHWXoQXF10)5<q+/kQ[;)G#MPr7:%IW:"Ak/roKW%!(irf_lTGEdmjN3:).5hm&kgkP:A,@*Li"L*;hE1g3-](nSV/<a@GKBnXL%E`E0C*I0CXbkb>_o^Kf5>7$?m_3+YE8Mjr(aO?ni0tk:j;-%#!F(**e0q,>.>FYfdi8V[/:VHQeRGdd_O=CSfV18X.qD]7aojW@g"%RbA)(-T-(EY^erF5jA6AY[Hm.+Yes&7A""6%C#Jg\0D<g8]Uq$0g9]MiT0!RHdDJ\]FK[Qc#!iuT;Z-@WDm:-8*fbjbCC)#hN6.>C44^N/XD,,WYK%O$Ir+VXA00i)dQEK)]E"=TVGD[9`<I>^T0Cq7A"U%cO#!&e/X]&@A]32N?2a`"h/aYn()V[\T$D@9<TJ?b#ppK-)q0=dq>O42;#->6%Zjiot.oWoa4M9o#a#.T'b_<BW51jM-6N".ror"q'%'rd_^A&8]7&"`:><n'Gt:Wpn8cRK>Jo#I_%8p1!!Os0*bulg0)"`LO;&oD!%Ob)oEag:(/.b6^YUiX`q(5MjQNMJB^?:#&\l+*lGIgIn?1RlEk4k(%g)+hFP92_&+<(4DU920b^/"=QM`=M$^Ikc8G>B6:bX0Ra@Q6[ZI`=c+Dj8q1aYJ3Bk6FOJ?n3DG0t!)n7qHp;k_5#b0MIa>#QTSf_H6+q.b-r&A0OTl/>i`].T&X\DisLUsFbb+-q3es!-FHC9[cZar)_:[!^Q5KB;3WBIOI<WA/rHpnk<D9<g%[8(O1g:Lqio%P@\[4a1<)76STr#^0,:s?7mbsp=3-ZKS[`AP?/Imb/<W#?O'ggGtd!uRi_*._CrNYa!5BaZUQZ>+eP)8ZUS,Y5l\8EJl^I^>;G2jn9SdX7@])l<GJEcjSqa-5_N!:rtd(-X@\s"k0dN!!0+O#$Y2[OUF$]=hDpV/>RS+o4t90fT3.s"Es;i_ksFgYrZ99-jMVMORX>ICM&_G?(]u>hs*@rrD8\WES6eT_[ULp9I&J<gak=q.te`OohW,#2TI/Sci2<!j]iIqc20fV76&2<6_(,&ksKgKA3EVQ06s`/C\dN:Hlk1Yh_NHa4,n#WDZ/C5#N;hp)(=RZ@M?aOAVeXGYE/84k9<)rq8ihM+'Kb6Mbk`l@o15Iih.Y:SZm)grpX@Pj+A@p@2O8;5V*^i0\jl\.j+LZbVQnW;])(\k'u[CYB/k]e3%FA<2<8[bCC;Rf;J9=skFN)aP"@]'aSgLe-G3_$oT)2+_[Z75&_i^/Gu6D\!G`)jSq;@Mm/k"QF.Fh"PN.jqr[tMRK[F6=j7d=6nG-7AeV;.WmsD54s5ebS=i]T1:.75pE"ZW8WMWdGck`O%!edQ/a('DQmq'N>gtkUWOq8k7h4\:s8Ec@#j!7YM+uoce+UnP2sS&[dJ.ar`/$U!FbDfCe^G"VFBh@Pa3Y=ef9f:]El/P2iEZ&dF"42`Qui8$p+F*1o[*a<t"Ns%rsn*BE~>endstream
|
||||
Gatm<8TWXr'#*s=oOTMp+p88i0S``km&nK)4H:aeYK@Z=KI#7cWK<@8RD\phY5ps4[FioP*2b%o"M4JGo^W"k./ksmR4\Ns:>ke8#)pH1#0\GY9YS;tM>+n44QMVH!"kBOQii2!rWi,O.j50i)"X,GU_/`O&&)RBb#e_cF]$($W"mN_GRR+WdRa4",RZpVm]@9Nj;_1s,RD;4GJ1C[C@bmI>3jPZmQV&r)9d\Q;M@mp$_dVJ9,RX$p%pasY3)`U(KFJN+)S..7131e7rWW85&6V"BiPB+eZC=$eP_\"F-p4MjFu/BORJ*Xpjtuio"V+-R"3NK]X^u69dfZZRHJ,_C`qqcFQu=naK;;4?mLU3JXc2&a1W&9/Nl<*3]Btcn0'-KLAK01rLjq<Ih!Xpg]M&<clc_BD*JdK&[<1C1reNmQ;cp8;K)'9n>nB(6@3FR=-e.Hbp`)1cF7/,'SFb:Gdu(Q8]_-Fk85_d7#aTQ4<8St:o&p.&3GpYPr+RcFroC@:73'Kf\M1tmRCkCNV:No20LQ&+9>u8otYsl!u>CPCiW5LFfFm,,O,PW[U<K_RkB=)`Y<'JhuY)ZOjYZG6eLiOG8&$O.:A#91IXVm-oWJ-BA*D$q_h#ak&n'a1H:k6<l%FRGE*co3[rM]XQlfcBq&0MNkPI3n`B(daYGrH0rQSM,mQ5<35Hnji,^j9LI]VTNH<HCC-Z`>k;MWT9'DQ`^@)#EFhpVtW3h>^&5t,MhijNg>=K.*MD;?B4&2'c[UgO6:YY._#l,k[mo>McH)ZfKfdPJhg55)L$qro><E0JTc@R[o0$c`?[]ALhAQ`?bRg1WeqC#&#AUuJ7<I#S6W>]rgk>U5d?;E9b<u#2\Gg=kWcO0Z]r,Q^Hmm)46Z:TM9SH.qPR/Y-4"_/&.FhO^2pDl[T-Ne1@>[e#oaiSu5(9u,;I7eJS#m]omZ'2Bp5E*38LNOBH*DUY4mfi^[I[M[%\'QJN6K)gX/YkhLdQBm@%P6b9lPueQLOkQASV)j)Img:7"*XKLn._SdIP4+;?98'\ENR_o3f-a=D3n'N.Fhu6?W0%[qkV6W'Gg3$$Ri\q'Genu/0q*tV!'TcY5sr<&pGV;2@2B/1WG3Q1Rq_JE:4Z/Ph3`*Z+4]PpCe8m,aBiQi+RQ<DAgg[e/L/h>HR?t\AcnC6FDD=6(s`^Q.:^7BVUKcCI=jI&TguePc::$l??7+Wp!CLl8aFaQ(!>'--T?:Y0d>gV;O7-i8(t^.MpBWD<Ve2<B87c\4"kTF8F*;V?S!j.nK1(Xa[b2\6]396XEpYf<bF'+"^KN4#&8XA498>-XVNP6<\VP5)EB_J63khN<2I@$:"/MA5JYHh+ota49eprp#TS?905eUoT0SRK$Bh8F(=tIabc^DD@#i8T_2&<EY1+J)6auLdD4#q_INA,oe39X7%G)fW.NlPg)F`B3uA(\Q=oUU,\Fn,)6;QU1GM0rbIQcL6jSXN:(s)&_%m[7\U!pr+Q)ZB,f^/b&os4s_JREpBEM>VboV/A)IYF+'fi/2eam9%8VEcFO<6u/4k+=0f,2Pe^9u'tohZHI<LInhd!Ba*5qd;aBias4o*Ki-mH9jX34277Vs5?:R'5_*]hNbS[ap:08UIqj?@H,>ZhEL7.tdO1N;j"+%Z5OTYM&+XqBW6&VmrU*ooCN=#?<!9Kc;S*DZGE3RNo%Pea]@Z.;]+*7TQY[-UZNOT*2,Q!NCGdcu6A@lR()^<1;-RFea%C=K_'>j`hDd&n(\F^r"+qpRe>AMK&VhjACZ(hc@]9Ejp7nUpQ-[0LYq4+9j2Yo`%AZ?<h79?sC9pBo0dc=E2f)W=N(-qQ=RUS#\Wqj<"C#1fZ%g!Ao:2^g;14dOJ2U/>(2V<)Oj(ft_q7g63Y;:-eM4@)&^fY4QmDNN*j18YQM:DK&gf](3KqLP;2bp;mP"(Uj2gl^7OQ4&r<%`^`XRdiK`X65Ir("#>b`!09_>];PLshr"Fs/$WdN7S)ES;8'1UlL2Urok?6&Ode@`M_]^d_*/nK0?Wpr&0,c;$CAV)EYc.s'\,E]:)?J^GYNNn[+D-gSa8)XhH%8&8(7K#8F$DsAg?MJ<nCVP"VD&g+daEY^F%'^WT[oreotjro'IU[Feb*\>mpi2J3Z5VReo9#cQ#=A7+'Rc;5an=k\AqBZcKMb<Mf,=aJW@JP.;cRoCIcK+\3k8&N0J?03UJmi3>g)X)_J+f+"%JUf$0bCfK*KqOF91*,8Ut&^556oMrL8r#$G09Tm&u_q$tgg:rNX1a(#uPHB[?e[0!QT$l&_cC-!KLDPLXlXmEl.lt8IV>/_HQ9j\@QmVL4m:l[YrrGKPSRq~>endstream
|
||||
endobj
|
||||
16 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1035
|
||||
>>
|
||||
stream
|
||||
Gb!#[gN)"%&:N^lp5u.>Z$_i6Q8D0sRC"+ha\6>l&S<aI=E7sRmGD!Z5Y8IrkQ<8Y^k8cFF3^r^(^c:Oe*8a2!%rS:G"mP!cl3#YM%@9]\E^JN[YPm6OWOSnR,c.<OOu'jT[T3[+=(C^`Y=dR&Jk3#1J/LB)7Xiq'[[1C_W\?qJOH1F0cp[r6--p&oc=EFf;A75&;K_uoaO)c_M_"<TX-?<_ZmGkd"^%"Wok%N##PB6%,,(VT5NUWV-#!QV5E`q1aZ]7IFjJ:r3gZQ'V[9@KM.iq<94uiErs#scoWh#Xi:%JJG>]L4cb)J"jd6eAtiD#T%%bl4;F$3],'VHMRn`\\dd*/EsW3oh\O+9?H_G\?UgrpUjR>k.TC.JBO-=Yh`?Jb20(M%fF^Kh.W;rf"^ZU(U#2FIMq%_o<u7>^ffsb:EujL;du^jmUeZ'CQG7/WVeR>ueNV1L$uGB39D13l-LZh3*OBM&G+V7O:66MC!MtaXEbuE:?O9kh-#Rdgb'cX[P;*KUY#>0De?5i4&lXE$\n^e6\kG[l3CqH%S`gnYrp_7iG5'EK$$s@-Cj9jL+;p*MJDA:Tb$.jMB"7p'*pu==4RUBtLR):]Z^l2@g0'_EdVADXOZdkMU<?dH'#!FKV1l`p456`,q"1%QR]"dUn,eC6_+mJU&W'E_C@""%UV=rp+SC%')q"0-i,6Gu]q*br>EGB!M&kmrK\SaI@=la)fqHM"-2AoWY!e-[n<Y`26oaYlDAQnmFh#apG!;Ze"Uf*$@k6%q$r\u%fH+@,>T$fY4)=PpgW"E9;Rp0%L),&co#'dZji@A8=k6g$la>G_%8NN#Dp08#*2qP"#]mi@JgZa]X-jsE\ZMu^`+_kq#!T%<<s@kP2ZG[VqEW=BRS.GFURM#s+f$+)T7jbC%:F^?iI%sVhf_7,aKYQl1:"O?\kS(5G#B=ZB4L[$6;ONnS3jAu/oUiP?gjY88D[FFit'E;3Sd<;]^"A0Ij`q=K;E1(Q[s@rb:V>n=NmXR,MG@9UF@NZi/SreXZnC@&E*~>endstream
|
||||
Gb!#[gN)"%&:N^lp5u.>Z$_i6Q8D0sRC"+ha\6>l&S<aI=E7sRmGD!Z5Y8IrkQ<8Y^k8cFF3^r^(^c:Oe*8a2!%rS:G"mP!cl3#YM%@9]\E^JN[YPm6OWOSnR,c.<OOu'jT[T3[+=(C^`Y=dR&Jk3#1J/LB)7Xiq'[[1C_W\?qJOH1F0cp[r6--p&oc=EFf;A75&;K_uoaO)c_M_"<TX-?<_ZmGkd"^%"Wok%N##PB6%,,(VT5NUWV-#!QV5E`q1aZ]7IFjJ:r3gZQ'V[9@KM.iq<94uiErs#scoWh#Xi:%JJG>]L4cb)J"],_IAtiD#T%%bl4;F$3],'VHMRn`\\dd*/EsW3oh\O+9?H_G\?UgrpUjR>k.TC.JBO-=Yh`?Jb20(M%fF^Kh.W;rf"^ZU(U#2FIMq%_o<u7>^ffsb:EujL;du^jmUeZ'CQG7/WVeR>ueNV1L$uGB39D13l-LZh3*OBM&G+V7O:66MC!MtaXEbuE:?O9kh-#Rdgb'cX[P;*KUY#>0De?5i4&lXE$\n^e6\kG[l3CqH%S`gnYrp_7iG5'EK$$s@-Cj9jL+;p*MJDA:Tb$.jMB"7p'*pu==4RUBtLR):]Z^l2@g0'_EdVADXOZdkMU<?dH'#!FKV1l`p456`,q"1%QR]"dUn,eC6_+mJU&W'E_C@""%UV=rp+SC%')q"0-i,6Gu]q*br>EGB!$.+3SOP=Cp9X*2"4#Asl,la[]Pt4aRriu]n#j:$umD9:5%ei!+c=\u4?sucACkZ&K@>\Y!gVXDX/#*J]B?`V`gXn,Y.eg""clt,>IX'\Sr7M$.bBf(l]iLW)_<LRLNS-[V"#X9k@4jNEn77\s23UBe\$`W)3,L+k^dj[OW^+8<k20cG+3=7EF(oK;<)Z"+KTlT8P;"r%!=Z1dS8WT3gCEEL)0Wbu7Wqj:[n5!$:5ZshD!W36kQuB`;ogiA"YSa'lQ)3#ans5&r5!Y$VcsIo=5CLcmj&j$Ygi%-1@Pcu\`GjjMqPIR7/I4$1r[B=gbC(Jo`l3#&Dm~>endstream
|
||||
endobj
|
||||
17 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1666
|
||||
>>
|
||||
stream
|
||||
GauHK=`<%a&:WfGQq&HQ<dSh1BbWl$-9r'=:kKO+;,GbG@a%4%+ZKAmSL#SFFsJdsN(AOkX`hGSB'1EAMJq'n7k)7F3Qtec?l\<q^a,$rIg<1>hR,k`i`c1DKV9UJ5Q]nN:oq;<Hpq#M!sXKp@^H8P(bm?k^emjBVP155q:K1B[%c8F+GT^7W,L`#;4OCr8UR@d]CJ%4`mG0Mg9F#6m0CIH#MU-HTaF@>o<f,#'IFncIXVZCns(f%Fe0uMHWA^3?,6^-)P4X54tFgdXR$R+g9"*?9kq$"&^8#*r3=^.^mDnc;G_c\s.(`mq=(8Ab8XYj[CGDY.aC?l"/&G7W-]f/G>'kO6o`794aH%Y^lpK>.]FQ`\51i5DCtCg-Bq+Y=Q=#&9+n*:+0PD94d"?ui=.T%3N-gE^jUbE*O]ACSrUU8+[UeXqo!">0C/Y6*>%VF6lt_u,l",Z\J+DT(g%i)CTe$opMPCDHgQE_M-`Wp/j9J'$OC5Ck6;d_$KIVqB?pg3+fmih]@R(tC@D>B^VuP0paj4r]nQK%>eR*Qn1:U!4=fC0>I^&:D6ZZAN4b'=@o8p$g-s!R:`CI>_e2]42Mk'I2'gb%MA8fKa!&+:dnO0&!qJudLY4ElX*E/aAf?D*5ZVm4Xr"F6]XYOHnsaY8`T1g'SD@XtOIHLiTh7-Bb:&g>.Ge@b^hj,gCBEJ^dA3A`\h+HK>2i+@SRB4^eIY\&W?/40rLV*r.uiL^(,f"F)PZakZ3BD\[@92]h$QLA5?uEI@g7G3*fTg(>hGM%#24.SanOBY[g0fO5gVn64WLj1B,m,Na#fuaR**:qSma#fY"bI?1kZ4eQDQc+)qceWEEBUe?rJGp5D?eRD-;i)Ed'Fkhaml#MD0t>[QK2WdP/uG*YE%Tlq'7Oja'TBV*r`shGYLPLA2UT:Ai$_Xb\'d<lp\U;3$`I8iB8G,DC66X"b3YA";c>NhXhA.JaA97@dHO1^PZpr=KTt6"=$DJRJB/N0;0&)edc;#+.__\e>M,1,WhUaQr-U<fUQBC^?I6#I$,>-CqPpe'_:ik35p*J5MpmjU[1KggGOK0dmU#?[H]WpVJ[i`pQ*Ee)FIbKJ0UU+$Yg@s"qocG4\1%5bp5ks/6OD-B85@@t`;km4@5g1l1d\'&)-WLdL`Hl]BTT64b_RM]A;k`apY.EE6+KP/)0c=lfV9CmsG4eRb9'YnSS*NH.NcPPEdpebOE54Y4@Hj((1$7ti_q??JEZkO3NF_-#*LkK+^M'#*#Qp%NWfm)MoEHaU6VG@1%;*LlS:d,'[jn(9EZ4pW3<g0us=_1[rG%'a]WF).tY)]T>SZeNji=K!AN_ZFUZ?J&Dj>Y_%2VGH.J2tr;QcDns&k3c/PXR&e2fOuAF=T0>\mPXt$*;/.t9%DNfNjIJL9Al.+dq$"KgRBSXjl2E/f!R2U/MM2'NtZ+iLt1KHXM1<^?cW2@kGiEMS37CX/+dPH/Vdpr?FF^kqhE7kA"t8Pr(uYQ.P>R]Hs5o8OY_9d<#"I<r,fc^50=J0NdQT-6Ck:>nL4sekHPo=;:q?s_#fW-e!p870%-A)D6N8\!Y\5MZ3\@XK!LC\>Ait&52W_IVCbAW$p8+]:GhTJ(;>!Pf&G.&K5I1r$YtqPCr<?V.;1sBn`?hCG9?i1l1.BnJbMB0^]AE~>endstream
|
||||
GauHK=`<%a&:WfGQq&HQ<dSh1BbWl$-9r'=:kKO+;,GbG@a%4%+ZKAmSL#SFFsJdsN(AOkX`hGSB'1EAMJq'n7k)7F3Qtec?l\<q^a,$rIg<1>hR,k`i`c1DKV9UJ5Q]nN:oq;<Hpq#M!sXKp@^H8P(bm?k^emjBVP155q:K1B[%c8F+GT^7W,L`#;4OCr8UR@d]CJ%4`mG0Mg9F#6m0CIH#MU-HTaF@>o<f,#'IFncIXVZCns(f%Fe0uMHWA^3?,6^-)P4X54tFgdXR$R+g9"*?9kq$"&^8#*r3=^.^mDnc;G_c\s.(`m$$]Chjc(jp>28^g'k\\G!RN2Ve3/uS4/SGb+rk-XSih!gi5lfZPuNikgaDK+\!D8D'2#)=XDtT$,mi%X%p/]-T#g6Kn:hh#*)sB]i4d!^%U6/\:Ieg-&0\mgIH!!ZQh>jV%Z#:3,*2FK')^.>g^/1:$nRIP[FYPHHag_]]lq6@7'@eH(EWaO"ba.2EruhjL%.mtZf_G*&Cqooh<P&J2>@42hr7:(Hkp,JhST:MY27Y9GSX;!SsAg)/R1uX[b)i[7c)+ZZ)CJ"m@rTdW""g0iNjk*S&D.`)A6gM`<mrait,PXkpA'#!Vn%C_eb`q<P3&k1C_5P+KN"Uf8J<V?<gb_q+Wl-@e)BNc>G?ua@uep:aMQ\AJ@kZ'^r2Ai&1Uo21b8jBMqW@h3Nh6/b,X1:9\*jC'Z;N<"E'SIS]%tQ,`;?$QH$^%FKDFfn+:?g.`T?D?Za1+"h050n[5T%n:nO/o47#"7<YejEk\=gOiob+D@L,*fes)1QG&bj.4Ok9P%XIcS1Rnf;;;0)F=UC92hFQNU.F<\?"?mYc3iIT>Fpd[]IIO\N:bqmj%oL7@6MZ>FrZ<Bc(K4O,,Sep*?3cE]p:\;Bfftn#;?c6[Xhe-[oNk<l>MBX5lpf-q?f_-(C^_O[;+VeX20=0huh/7o<p\'`A1-U<]cbRY2EIrWn=uTJ8"]5d5ZR7`f-$%CGCX"&,C@h$JgQR@5u;jE:-;.n?f\2?Za,"'D%/PKm@IBkaVoo5lKP^o1%rnqY-`DQl<a(_d8"YJ%E<HXW<o@s=T^BlP[A_O"BfO.Sq[J"#Il4*i)#+As,qJ(+a2'1[Z10uE1FG*[)n)FXEi$#T*<6m;E5Fi\9:+c$o:71N)pj0Fr(3%M$`8ROTm/FrgW2GNc+l7u-$=GddP7_'bB8UP?slMS9+*gU0_EO$SMUI(AsYIYe>o637^@'"%ao43ka$"*&dqKohCp>[O^]is.f]<D).Nm2f-B^`pFGO1_=*s@WYD)%NZ@)Bu^L0-Cg\[C&=%1WW:fkoqo/C]c8@=bg=0C15p/uMPTdjK,6S,:2cB3""NF8)Xc<q[pTCpX^^/H62ipR6PMNdC-uV<[@na4Y=7-1FR&BsQO6mELjgEq.4RlWT[f(7;W$`sK'o`+nf_<o;6@YN(,[F&b.acCTg=(&G;_Q:!GI0AEqqI7*,FZ-a.8I].@9'pgg?5-9"-aI0\B.LPbYI_&oj+6A;S7m=h'Tha50p_8MCo@OK/..#3J?ie<'ktQUV([98P[b(1>JVg47=bL3g6!6^?/[tL#T5WF5e!;7<#+i-j-^o95$fAQcC[l,$_)BVtKsf#8[UIb<'XSt\q!uu2]8qH)FEo.r_##32XoWG~>endstream
|
||||
endobj
|
||||
18 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1812
|
||||
>>
|
||||
stream
|
||||
Gb"/'gN)%,&:N_CD#KGDWJqH38:l:]a0D2h1JZsi8iiNS%ho1=N-UOW88A1=$^(SUMe(L<1MNbQ`h\p9m[hC,pOEror6X_YPQJM^_lL6\."hL)-mp#2B5lY8Xt@LQk&V>p,A\`85QXIU5r#f'E'<1a/>+,%T*V%k(R,1;#[fX<pSe[WK[EGN!qAG.(EA7(Xs^kDo,ZgFL8HtN4YO<.^[Y*5pB'>3hP$G3(R<qbg41q^*DUG9qC_D=kl()Oo-p3j@p)9b4AXn!.V(A5E64IX#H)nRAJph,%cKt(AWfhfRAh"LrrW.cg/^^.G?i!*gV9`f9U7qL317bI65EY1hXb\+B-Hc)U(8*jV'_6\T),l<N`I$oCEm^W(`D:OO*cslbU)qaOX1e7M/@=]OYP7Bie7.LlUosoR)h$<]V0pTXicG$*#H+mF??iN@iSSX,'7dLT3)f"de9AO'\UJuAD+($$2uVR2NnT/%e@]0=B/8`:VHJ*hWj1$ZI^=qacF`9"bb<S0``!]3l2W^RN6S&L!Vm)\$$hN?DTk/m&kf_Le@hDg`-+I'O_bO?s;V`7Ol\>\EqIO0hl-$]ZV*%AVDLJP82[[3(V;Sk1Xo)*`Y%C+&t:kb&%*4c)t'QCL!3MXP24bAIpQRG,:Fk!jS8VTs^H2e(#>K_UD\&<HWVPXRqY0c%\$Omcpj\['&D'e_agE]q8eW1)jUuRHCaJ)Ce+V"20anWAki`qH:LTZFW7;%\]79Ei!7I`)a+K%C!=-%'Y(Ye!mA,>g1&a_DG4a(>1mI@@XG#j_Y0cZN2KCBqPq`1:l1p$[FmnYu?<0SL"Rpn+BA?$3kO8UGS5><oNQeS9uhHq$&hS<cF?S<3m2]/M09M\=dDuW231ld(o8<an%BGfiAZr)^&a"L%m'O/6<B08\T_k?Q(:E-)_,&p)ou;.%2a"#4#<_H5f+t)UaZi_MBOIL=G:EN=WL7RGQjWDem%[O.0],3b+9s2fgfIdi=(qf^4dNR;3hlMPD:',cpEgWPs;#AqWX>=<.2V:2E@R2L<=([bm@+jd=,(8,:*$T$&Wa93FL]k#W8(<pnFKOR^+W:f[B[dhH/Fc==IdB",3*;\:Sc]CiS"hkFh'mq!sY"BFsYqh[q\-pt<&'$p)`)DR7P^";kD\m;W1RHccMG;Rq!F-5MFYbQ/kGMr.0\2ZZ3H?W'2iHc4IUT+X10csj0,k1.<<5.F-MO2!jG(s+ZYi&2fj^`#;b2mcF;,;In!-+Rj:!,W1f70+*,"/$1^MNMeZH`CL^DAXo:55>!$bA!HIoKk,'m+:_1laSIkW&9Y]C.^32r\C>.m#X2_93h'N<4>rI=J)W8F]uCKYCs^.HI9lPXE+)&`hDr3"!",*P0hQUX5Q=4>-_\^XObCj!'hXKYp`UkBTq0PBFg,I7&6T6?gqF!+a8U(`)dV>3*Y!_j(TIO(C'$]XP-GO+a%6s.>%\l"TqV+$L,U*M8t;rsa>$j%dEap[9FJ*hAh!=`rBO/+Qs4_E@fQ6H5rs9=_Xn[[)3cZ$]@E&U!tR#((L>o[-Q@`OXNGThcJ;Wu7t;pf)A&s0jKWH'&VM<CeeZs6fIW0$['8ZP&$e$TX:0iZV"QHV*\?-FjZ0b0!FA]'UNUl5fICN39C+cE\T5N+JkC=%K5.**Xhh:G3gQ8U(F0:F%0j0aL"\,#g87o4R/S,-dBkYKPdqi\7u`I^,6a;Jb[20T$NH2J9Y\/du?31'A>io('cbj(.I9Fg`;aV[hi4,0<J\^qB"<[ZI8[)Y\2bC+@]malmr@qnIkg-8@@R,sJKC$.V9j=o>X9.tI:O7?aH/~>endstream
|
||||
Gb"/'gN)%,&:N_CD#KGDWJqH38:l:]a0D2h1JZsi8iiNS%ho1=N-UOW88A1=$^(SUMe(L<1MNbQ`h\p9m[hC,pOEror6X_YPQJM^_lL6\."hL)-mp#2B5lY8Xt@LQk&V>p,A\`85QXIU5r#f'E'<1a/>+,%T*V%k(R,1;#[fX<pSe[WK[EGN!qAG.(EA7(Xs^kDo,ZgFL8HtN4YO<.^[Y*5pB'>3hP$G3(R<qbg41q^*DUG9qC_D=kl()Oo-p3j@p)9b4AXn!.V(A5E64IX#H)nRAJph,%cKt(AWfhfRAh"LrrW.cg/^^.G?i!*gV9`f9U7pa317bI65EY1hXb\+B-Hc)U(8*jV'_6\T),l<N`I$oCEm^W(`D:OO*cslbU)qaOX1e7M/@=]OYP7Bie7.LlUosoR)h$<]V0pTXicG$*#H+mF??iN@iSSX,'7dLT3)f"de9AO'\UJuAD+($$2uVR2NnT/%e@]0=B/8`:VHJ*hWj1$ZI^=qacF`9"bb<S0``!]3l2W^RN6S&L!Vm)\$$hN?DTk/m&kf_Le@hDg`-+I'O_bO?s;V`7Ol\>\EqIO0hl-$]ZV*%AVDLJP82[[3(V;Sk1Xo)*`Y%C+&t:kb&%*4c)t'QCL!3MXP24bAIpQRG,:Fk!jS8VTs^H2e(#>K_UD\&<HWVPXRqY0c%\$Omcpj\['&D'e_agE]q8eW1)jUuRHCaJ)Ce+V"20anWAki`qH:LTZFW7;%\]79Ei!7I`)a+K%C!=-%'Y(Ye!mA,>g1&a_DG4a(>1mI@@XG#j_Y0cZN2KCBqPq`1:l1p$[FmnYu?<0SL"Rpn+BA?$3kO8UGS5><oNQeS9uhHq$&hS<cF?S<3m2]/M09M\=dDuW231ld(o8<an%BGfiAZr)^&a"L%m'O/6<B08\T_k?Q(:E-)_,&p)ou;.%2a"#4#<_H5f+t)UaZi_MBOIL=G:EN=WL7RGQjWDem%[O.0],3b+9s2fgfIdi=(qf^4dNR;3hlMPD:',cpEgWPs;#AqWX>=<.2V:2E@R2L<=([bm@+jd=,(8,:*$T$&Wa93FL]k#W8(<pnFKOR^+W:f[B[dhH/Fc==IdB",3*;\:Sc]CiS"hkFh'mq!sY"BFsYqh[q\-pt<&'$p)`)DR7P^";kD\m;W1RHccMG;Rq!F-5MFYbQ/kGMr.0\2ZZ3H?W'2iHc4IUT+X10csj0,k1.<<5.F-MO2!jG(s+ZYi&2fj^`#;b2mcF;,;In!-+Rj:!,W1f70+*,"/$1^MNMeZH`CL^DAXo:55>!$bA!HIoKk,'m+:_1laSIkW&9Y]C.^32r\C>.m#X2_93h'N<4>rI=J)W8F]uCKYCs^.HI9lPXE+)&`hDr3"!",*P0hQUX5Q=4>-_\^XObCj!'hXKYp`UkBTq0PBFg,I7&6T6?gqF!+a8U(`)dV>3*Y!_j(TIO(C'$]XP-GO+a%6s.>%\l"TqV+$L,U*M8t;rsa>$j%dEap[9FJ*hAh!=`rBO/+Qs4_E@fQ6H5rs9=_Xn[[)3cZ$]@E&U!tR#((L>o[-Q@`OXNGThcJ;Wu7t;pf)A&s0jKWH'&VM<CeeZs6fIW0$['8ZP&$e$TX:0iZV"QHV*\?-FjZ0b0!FA]'UNUl5fICN39C+cE\T5N+JkC=%K5.**Xhh:G3gQ8U(F0:F%0j0aL"\,#g87o4R/S,-dBkYKPdqi\7u`I^,6a;Jb[20T$NH2J9Y\/du?31'A>io('cbj(.I9Fg`;aV[hi4,0<J\^qB"<[ZI8[)Y\2bC+@]malmr@qnIkg-8@@R,sJKC$.V9j=o>X9.tI:O'q_3^~>endstream
|
||||
endobj
|
||||
19 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 972
|
||||
>>
|
||||
stream
|
||||
Gb!Sj9lJ`N&A@Zck"*pDn_.c*l(q##7#_ngM*fZ!(Lmuq@!:e;J`P^4CkqJ0R^PhXJd"JQBAT,'o>VaiHLpDX*WqpUTQS)%]?odE(JI*W$I1_mmg\C`DCBm?SohWR$`r`\0/.*-JKM+hmC##G-Y+tH+=(St[O&G*/e!"2#,-P%i5!4F$)IVK\KAn#kIeh:f;6uKq*EBa56$F7QLNTZGXP%Ul\gAB5PQJ&AQ2GZL\mbUSM;rcJ%<1E:HCo`&%'X@CLJn<'[V!Y&5Fk8SQMB7!Yb?b1X,N&N2ejhc4E%WAZiH9_Xj2bS8^:`'jBNZI%"YjNb282]oLN77Gt?Q\tPkd+:[$*PJ/9?)0FW4DV(\a[Q%8kggsD"k9YAY5'!;jCWIM--.^Y$]80TI]%Q1R\,gRiUrSnL\`@P:TYC+&kF9<&77n^A3/uopC@kIOE0=+=5O?Wcno7uregf:XBQ9DRD0h"`!])[HI+n$6ED&/9LR>atZ/=\$Nf#BADA*c/UB6/U$"D=Gg<"cLKctCO_@GXqY]nQ;=XL6VM@p'PFWIp*9a]-LN/J,/>W#\tQS@$'eBdf8D^e`YjiIIF^904K!Yn-.=IKtWBs4qCMf$ENHPkqLHdHY?K;e-%(GLa]OG0@EZMeC8?LshlGdVkZ;DQpEQDq58BlnqQ5Bm84NTK(-Y^h1G?f98VShHX!4aVW@Hfn\\k6c=WU7%-6m"3rZ5i6R2D$'[ojVk\NogGoM?)n.Y[9c5lg>FO"3LSnQf+6tqK<=H=RcZ`<jJ/I^k1O]ACG;IUd_;)=o^Hj6"o\toGp_uY'<-3V';LI`*a7*q9>qO]80qr49"YO!HK?[W%S_mBj>s]qK!VG]HK28B&h2$8Er=NPkn6S!<T>V:[/`?5@6[%lYNH0?%XX4<HHr[bm^*kHYB$aq2/.='Bn&2i,#*)U%*l4(lRWTfg3iTGfVO_Y%hdoI;HU@2)&b^>MK&;g~>endstream
|
||||
Gb!Sj9lJ`N&A@Zck"*pDn_.c*l(q##7#_ngM*fZ!(Lmuq@!:e;J`P^4CkqJ0R^PhXJd"JQBAT,'o>VaiHLpDX*WqpUTQS)%]?odE(JI*W$I1_mmg\C`DCBm?SohWR$`r`\0/.*-JKM+hmC##G-Y+tH+=(St[O&G*/e!"2#,-P%i5!4F$)IVK\KAn#kIeh:f;6uKq*EBa56$F7QLNTZGXP%Ul\gAB5PQJ&AQ2GZL\mbUSM;rcJ%<1E:HCo`&%'X@CLJn<'[V!Y&5Fk8SQMB7!Yb?b1X,N&N2ejhc4E%WAZiH9_Xj2bS8^:`'jBN:I%"YjNb282]oLN77Gt?Q\tPkd+:[$*PJ/9?)0FW4DV(\a[Q%8kggsD"k9YAY5'!;jCWIM--.^Y$]80TI]%Q1R\,gRiUrSnL\`@P:TYC+&kF9<&77n^A3/uopC@kIOE0=+=5O?Wcno7uregf:XBQ9DRD0h"`!])[HI+n$6ED&/9LR>atZ/=\$Nf#BADA*c/UB6/U$"D=Gg<"cLKctCO_@GXqY]nQ;=XL6VM@p'PFWIp*9a]-LN/J,/>W#\tQS@$'eBdf8D^e`YjiIIF^904K!Yn-.=IKtWBs4qCMf$ENHPkqLHdHY?K;e-%(GLa]OG0@EZMeC8?LshlGdVkZ;DQpEQDq58BlnqQ5Bm84NTK(-Y^h1G?f98VShHX!4aVW@Hfn\\k6c=WU7%-6m"3rZ5i6R2D$'[ojVk\NogGoM?)n.Y[9c5lg>FO"3LSnQf+6tqK<=H=RcZ`<jJ/I^k1O]ACG;IUd_;)=o^Hj6"o\toGp_uY'<-3V';LI`*a7*q9>qO]80qr49"YO!HK?[W%S_mBj>s]qK!VG]HK28B&h2$8Er=NPkn6S!<T>V:[/`?5@6[%lYNH0?%XX4<HHr[bm^*kHYB$aq2/.='Bn&2i,#*)U%*l4(lRWTfg3iTGfVO_Y%hdoI;HU@2)&b^>F#s%m~>endstream
|
||||
endobj
|
||||
20 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 2107
|
||||
>>
|
||||
stream
|
||||
Gb"/'>BcPr&:WeDbY,Fu[S`+t+M(??R^Un5[Vj[\m[fV`H8&B9@R((#h<_?&&R`EK1n42QA&mB#D_BIc1BRdo5IC=t@XsY+*5/16)>%itEl+N"!G?i@c61>>0"6C6_R)E0`3](XA0W<"gEDTt4:8rIM/YIo6&?/E!/C)MQb&8M\9VLZ+Kf4cJccV7G(d1[h]`P?.%1h(EP0it[=1HCk7OWC%b7Yp#_jR;D,c.&EFMi#[@n\[_8f>YcJcGTaZLCj'u<n4a^AAh2.J6YT-#-;H'fCg#]Jct7OjC/;Z$n#>NiiKZ9%d9Z3e!6G8^EIk!3d.57R4pbU+'BcQ@jt%o*An1HKZ0jKMfdf+c0OO?pP.j+`8Z&JfT#"0o[Y;Oo`?,(mGE1qDi*A"k$`$$@9>]ji_8"@dGC:T0pc6T)>8*9Z#%?sBuVdjVH1&YO`6o>mU"PdV+I#0:VV"GYTE&`H0RA3IIXULSRWN/_jVkte_\7rS(_.<hs_7(kfGCZZ5`jGXD<Lhd<$P\YHn=VjCT2m48apeH\7&[m_G)6p/r)g;Vg6m^;%Xq+K8KIW*>])Hiq:2'@&@l_e/\22A"nNmC9f.9p09mA;Q$Ugqjm+=KBIF6GG_pYUnZOHY^C[/K(.X%)qKsW9]>9do(Y_$Rtd9"jW)_Ki29DmA0K.9jG_N@NB8W_g:R3`K+HfsV(:T7"t5KH0k=7@gnhG4B[J.T$GaNmM^Yf+k/`Br.N>f!kY,+4.Q8i-W9*iLnh7d,\iB7KThp9%.Cc;21rpNg12*e-/%REUc=_C1Sh:r;#^1H_Hg/*G$F?=N'Co?otVUV(,Sp/6Amd8W@%d<PT+M'#D\R@5Hi36&("keOfmIPK+.;6I2+?Gb^-\5-\MgGqLG2ug]OI'[T`Vg4tF(ol4!':=J;I$%PSUGZUHY:.pH,hoXraj:"MUE>_]K]fGuUUNHI+.Xbk(,m-%lq9=#8g.>*81se>'AKc.S)J7G?CO9UE^T)E<eK"."/AGAh"FpVhiS5!ob>58a]8k]=kA)(Ua@iU6ITN0.Z\"PRjtqZ]E!o<P:R]5M`gY7\V$0;-aAUn^bY(mQ;oaDBr6X6TEsZRRE(r<4R3%1n].'lk,`dsl#.1F[7tuC%Psr=?"r@k/E.2ELcs%XX*!RkVMC,I@QYYNbuH[4M:=XP$:8bTY@iehQ1Yigfafe(EL)"Y'5ZhEX>_;gfa)H]?,Ff]5U-0/ed;p`N#]/o6V8;<[V0])8UK4F&lX%u^f[V0nnHp>c;ZW"AO5Llgejn)7*08S_p>q5G+@]N[S&hq]P5aYgf9BnI+&qll-:;d=?/!G@?J#0flJ28m'==7I%sPcE7m]2f<Y0lU?O3hec[l]oBL$*@a>Z^j"2nm9Ipp_s(o^LV?q.bcJ[7>k3\8P]Fs6AIYii/55oD91G?mU9_)mEB;(i2)W%Aq%;Tf%LN:Z)4i^,=p[fHtRgr_+&*,jcc-,TC:!3;6R;o`4Adukjai*JSFDkr0jsRuIkEeL>\u,a>VjX#;Jnc::9oeV,cegR">+uO,S46CcA00BbCS<8L_^9XdhH!um30r<,.8?,Bg]LeWghKBfL4*(sI^B?[)G89"0MO.6j8U\HGsX1m8VFVU),J#\'1aWmq9C*@bSuk(gBc5o&cAo)3O+Aegr26?RbC;Be.U#V46,!ZN\JWlrW%;W$lojE'W1`'+jNEbY#EG";(?cQin0OsF6O.0eR9C9Jr["2V.[3&2B'Y@(i"q/JA);.^-5"DX?JS4H"I@"i6fOVAj*$f2+r?"(rMt!+>KH2XfpE2rq0N.Et:h+p6JV$0!FN?MPD4t$r\2!)fh3ZXYcDe?aBMPAMh;P2,S@]R:^n)R>+S`@Tj)Pg8!q=eS.a#2n[F98VjW/cnAtJah[YW70B#fb75@3OJlSiFXS036E-j%^5q>2W$n@X.HeilBbUbr.C7Xq]Jn*UM_W:G.`J%:jms5&VJ`O"P%/m(=S7ZkThH\R%mKR==R1m2%qY;=k.Z:u9Fi#Z@BtKAoQZ!s=J/>YP;EJLOSD[P+X=2/@8T3JN)VJSpO6Cb[0Z)72i,so,%XeS2,3J>F,1QGL%k25k21[*gZ7<^%E2'\f@m8l'9%DA[Ju.L~>endstream
|
||||
Gb"/'>BcPr&:WeDbY,Fu[S`+t+M(??R^Un5[Vj[\m[fV`H8&B9@R((#h<_?&&R`EK1n42QA&mB#D_BIc1BRdo5IC=t@XsY+*5/16)>%itEl+N"!G?i@c61>>0"6C6_R)E0`3](XA0W<"gEDTt4:8rIM/YIo6&?/E!/C)MQb&8M\9VLZ+Kf4cJccV7G(d1[h]`P?.%1h(EP0it[=1HCk7OWC%b7Yp#_jR;D,c.&EFMi#[@n\[_8f>YcJcGTaZLCj'u<n4a^AAh2.J6YT-#-;H'fCg#]Jct7OjC/;Z$n#>NiiKZ9%d9Z3e!6G8^EIk!1MC57R4pbU+'BcQ@jt%o*An1HKZ0jKMfdf+c0OO?pP.j+`8Z&JfT#"0o[Y;Oo`?,(mGE1qDi*A"k$`$$@9>]ji_8"@dGC:T0pc6T)>8*9Z#%?sBuVdjVH1&YO`6o>mU"PdV+I#0:VV"GYTE&`H0RA3IIXULSRWN/_jVkte_\7rS(_.<hs_7(kfGCZZ5`jGXD<Lhd<$P\YHn=VjCT2m48apeH\7&[m_G)6p/r)g;Vg6m^;%Xq+K8KIW*>])Hiq:2'@&@l_e/\22A"nNmC9f.9p09mA;Q$Ugqjm+=KBIF6GG_pYUnZOHY^C[/K(.X%)qKsW9]>9do(Y_$Rtd9"jW)_Ki29DmA0K.9jG_N@NB8W_g:R3`K+HfsV(:T7"t5KH0k=7@gnhG4B[J.T$GaNmM^Yf+k/`Br.N>f!kY,+4.Q8i-W9*iLnh7d,\iB7KThp9%.Cc;21rpNg12*e-/%REUc=_C1Sh:r;#^1H_Hg/*G$F?=N'Co?otVUV(,Sp/6Amd8W@%d<PT+M'#D\R@5Hi36&("keOfmIPK+.;6I2+?Gb^-\5-\MgGqLG2ug]OI'[T`Vg4tF(ol4!':=J;I$%PSUGZUHY:.pH,hoXraj:"MUE>_]K]fGuUUNHI+.Xbk(,m-%lq9=#8g.>*81se>'AKc.S)J7G?CO9UE^T)E<eK"."/AGAh"FpVhiS5!ob>58a]8k]=kA)(Ua@iU6ITN0.Z\"PRjtqZ]E!o<P:R]5M`gY7\V$0;-aAUn^bY(mQ;oaDBr6X6TEsZRRE(r<4R3%1n].'lk,`dsl#.1F[7tuC%Psr=?"r@k/E.2ELcs%XX*!RkVMC,I@QYYNbuH[4M:=XP$:8bTY@iehQ1Yigfafe(EL)"Y'5ZhEX>_;gfa)H]?,Ff]5U-0/ed;p`N#]/o6V8;<[V0])8UK4F&lX%u^f[V0nnHp>c;ZW"AO5Llgejn)7*08S_p>q5G+@]N[S&hq]P5aYgf9BnI+&qll-:;d=?/!G@?J#0flJ28m'==7I%sPcE7m]2f<Y0lU?O3hec[l]oBL$*@a>Z^j"2nm9Ipp_s(o^LV?q.bcJ[7>k3\8P]Fs6AIYii/55oD91G?mU9_)mEB;(i2)W%Aq%;Tf%LN:Z)4i^,=p[fHtRgr_+&*,jcc-,TC:!3;6R;o`4Adukjai*JSFDkr0jsRuIkEeL>\u,a>VjX#;Jnc::9oeV,cegR">+uO,S46CcA00BbCS<8L_^9XdhH!um30r<,.8?,Bg]LeWghKBfL4*(sI^B?[)G89"0MO.6j8U\HGsX1m8VFVU),J#\'1aWmq9C*@bSuk(gBc5o&cAo)3O+Aegr26?RbC;Be.U#V46,!ZN\JWlrW%;W$lojE'W1`'+jNEbY#EG";(?cQin0OsF6O.0eR9C9Jr["2V.[3&2B'Y@(i"q/JA);.^-5"DX?JS4H"I@"i6fOVAj*$f2+r?"(rMt!+>KH2XfpE2rq0N.Et:h+p6JV$0!FN?MPD4t$r\2!)fh3ZXYcDe?aBMPAMh;P2,S@]R:^n)R>+S`@Tj)Pg8!q=eS.a#2n[F98VjW/cnAtJah[YW70B#fb75@3OJlSiFXS036E-j%^5q>2W$n@X.HeilBbUbr.C7Xq]Jn*UM_W:G.`J%:jms5&VJ`O"P%/m(=S7ZkThH\R%mKR==R1m2%qY;=k.Z:u9Fi#Z@BtKAoQZ!s=J/>YP;EJLOSD[P+X=2/@8T3JN)VJSpO6Cb[0Z)72i,so,%XeS2,3J>F,1QGL%k25k21[*gZ7<^%E2'\f@m8l'9%DALiJ>9~>endstream
|
||||
endobj
|
||||
21 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 831
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 830
|
||||
>>
|
||||
stream
|
||||
GarnTgMWKG&:O:SS<li^g2(rC;lQde2JF@<c)#<X8pS6,->N]V!BX2n^9cbMNh[N2H=5mZR@,i<OtY?Mdh4X0iq,Q'3LJ*c4Q0^0_>/3FG9i]o#sBBINMILT&@$##B_#"(57g-I`!VV8721(;+sis3No4k](oe,V@=C=:&7H^!aFf;5+%3r7GZP$._l5fX#=3_S^You3HEd`6m$QpS1DkJ;9i5+of+V'XToWoEUEA+^=1C(I[HXG@"b(S'V2lW<*%/]"l=A\Y]'Uo`2d0-glB8184f/T\O);$_I*_J>kK<9Ore+H'+."M65#JX+E,UnE<sc`,TNc=!)lA2LLrbo(%td*]Rh:FL94e?I"4@ZnTkiC9N[j"A_9c_LJdq.'moj59q/3DmIAAql8_6H!9V3]mm9l0;FpY74EkFPn%BTL][rJ\Y9_n>66Z.:+VsO5VGf9&\<24Y:AT);rZ&Bp1>Jq$;,3Es.=YC:GY^,2R@]_p,Z>\YTp0P87(Tt*0m7W5"BA`Dgh4('*kh;`0?K\4&/3IJEr\&F79m,:cA$l'E_0^7pB04lhOeW-rLA4nMWooh:KXrmLh6g?(e)2cKQ[*(Agl?C".N>1h:@].Y1WlNBH(W/e%S.7BES]CnA+;Igm^/sTBgU7'Z_/8NQu?u--#u?j@AUSf%^GH$8Z=s`neTPt;.2am2qeb>O.Vije(h%90:5k.JtAq[5T.u!L#G1o%RDbmMAPIRAodi?PSn(ZJPIjRW`n%dT^!aO9c]Cm!pM0rjCAV#K^fFb5N-MX*?RQ.N3\C@[/s]03AW'85[Q5^L48#bnS5DsDVb"&7fNH:Q93[~>endstream
|
||||
GarnTgMWKG&:O:SS<li^g2(rC;lQde2JF@<c)#<X8pS6,->N]V!BX2n^9cbMNh[N2H=5mZR@,i<OtY?Mdh4X0iq,Q'3LJ*c4Q0^0_>/3FG9i]o#sBBINMILT&@$##B_#"(57g-I`!VV8721(;+sis3No4k](oe,V@=C=:&7H^!aFf;5+%3r7GZP$._l5fX#=3_S^You3HEd`6m$QpS1DkJ;9i5+of+V'XToWoEUEA+^=1C(I[HXG@"b(S'V2lW<*%/]"l=A\Y]'Uo`2d0-glB8184f/T\O);$_I*_J>kK<9Ore+H'(RHZ.5#JX+E,UnE<sc`,TNc=!)lA2LLrbo(%td*]Rh:FL94e?I"4@ZnTkiC9N[j"A_9c_LJdq.'moj59q/3DmIAAql8_6H!9V3]mm9l0;FpY74EkFPn%BTL][rJ\Y9_n>66Z.:+VsO5VGf9&\<24Y:AT);rZ&Bp1>Jq$;,3Es.=YC:GY^,2R@]_p,Z>\YTp0P87(Tt*0m7W5"BA`Dgh4('*kh;`0?K\4&/3IJEr\&F79m,:cA$l'E_0^7pB04lhOeW-rLA4nMWooh:KXrmLh6g?(e)2cKQ[*(Agl?C".N>1h:@].Y1WlNBH(W/e%S.7BES]CnA+;Igm^/sTBgU7'Z_/8NQu?u--#u?j@AUSf%^GH$8Z=s`neTPt;.2am2qeb>O.Vije(h%90:5k.JtAq[5T.u!L#G1o%RDbmMAPIRAodi?PSn(ZJPIjRW`n%dT^!aO9c]Cm!pM0rjCAV#K^fFb5N-MX*?RQ.N3\C@[/s]03AW'85[Q5^L1/uXX3Ir^Fk^7?r<"3n44O~>endstream
|
||||
endobj
|
||||
xref
|
||||
0 22
|
||||
@@ -173,16 +173,16 @@ xref
|
||||
0000001943 00000 n
|
||||
0000002236 00000 n
|
||||
0000002334 00000 n
|
||||
0000004760 00000 n
|
||||
0000005887 00000 n
|
||||
0000007645 00000 n
|
||||
0000009549 00000 n
|
||||
0000010612 00000 n
|
||||
0000012811 00000 n
|
||||
0000004761 00000 n
|
||||
0000005888 00000 n
|
||||
0000007646 00000 n
|
||||
0000009550 00000 n
|
||||
0000010613 00000 n
|
||||
0000012812 00000 n
|
||||
trailer
|
||||
<<
|
||||
/ID
|
||||
[<047cece75ba73e044622d5b8b8c18397><047cece75ba73e044622d5b8b8c18397>]
|
||||
[<ae3975e5edc34874771cba6bf909c448><ae3975e5edc34874771cba6bf909c448>]
|
||||
% ReportLab generated PDF document -- digest (opensource)
|
||||
|
||||
/Info 13 0 R
|
||||
@@ -1,4 +1,4 @@
|
||||
# Les 15 — Lesopdracht
|
||||
# Les 13 — Lesopdracht
|
||||
## Pokédex opzetten + eerste deploy naar Vercel
|
||||
|
||||
**Vak:** AI-Assisted Development
|
||||
@@ -174,7 +174,7 @@ Het huiswerk bouwt voort op deze setup:
|
||||
- Branch protection op `main`
|
||||
- `DEPLOY.md` met reflectie over Composer vs Background
|
||||
|
||||
Zie `Les15-Huiswerk.md` of `Les15-Huiswerk.pdf`.
|
||||
Zie `Les13-Huiswerk.md` of `Les13-Huiswerk.pdf`.
|
||||
|
||||
---
|
||||
|
||||
156
Les13-Cursor-Vercel-Deploy/Les13-Lesopdracht.pdf
Normal file
156
Les13-Cursor-Vercel-Deploy/Les13-Lesopdracht.pdf
Normal file
@@ -0,0 +1,156 @@
|
||||
%PDF-1.4
|
||||
%<25><><EFBFBD><EFBFBD> ReportLab Generated PDF document (opensource)
|
||||
1 0 obj
|
||||
<<
|
||||
/F1 2 0 R /F2 3 0 R /F3 4 0 R
|
||||
>>
|
||||
endobj
|
||||
2 0 obj
|
||||
<<
|
||||
/BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font
|
||||
>>
|
||||
endobj
|
||||
3 0 obj
|
||||
<<
|
||||
/BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding /Name /F2 /Subtype /Type1 /Type /Font
|
||||
>>
|
||||
endobj
|
||||
4 0 obj
|
||||
<<
|
||||
/BaseFont /Courier /Encoding /WinAnsiEncoding /Name /F3 /Subtype /Type1 /Type /Font
|
||||
>>
|
||||
endobj
|
||||
5 0 obj
|
||||
<<
|
||||
/Contents 13 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 12 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
6 0 obj
|
||||
<<
|
||||
/Contents 14 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 12 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
7 0 obj
|
||||
<<
|
||||
/Contents 15 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 12 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
8 0 obj
|
||||
<<
|
||||
/Contents 16 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 12 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
9 0 obj
|
||||
<<
|
||||
/Contents 17 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 12 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
10 0 obj
|
||||
<<
|
||||
/PageMode /UseNone /Pages 12 0 R /Type /Catalog
|
||||
>>
|
||||
endobj
|
||||
11 0 obj
|
||||
<<
|
||||
/Author (NOVI Hogeschool Utrecht) /CreationDate (D:20260607084028+00'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260607084028+00'00') /Producer (ReportLab PDF Library - \(opensource\))
|
||||
/Subject (\(unspecified\)) /Title (Les 13 Lesopdracht) /Trapped /False
|
||||
>>
|
||||
endobj
|
||||
12 0 obj
|
||||
<<
|
||||
/Count 5 /Kids [ 5 0 R 6 0 R 7 0 R 8 0 R 9 0 R ] /Type /Pages
|
||||
>>
|
||||
endobj
|
||||
13 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 2127
|
||||
>>
|
||||
stream
|
||||
Gb"/'=``(P&:XAWkb<s7i>A9+Q=QRp\Z=?_9,:jr`UP@5'9@!H%tWQjs1U',Ou"o)fHj=(;RRlE?[#`1?amt(ifA66F9V0g5!4/5J8s4+";[.3p><`FrSU=6\E#,uJ-\k<b^m^Lr]trH'G*h[@idGQ<"Z6!#W3i1`u6q_;i3$&%3448(_A!mdNK1H,,s\THpK%@-orW9Pk!o65sK5:MhrF\6T+aj"N(gf0Zp)HOAH^l#kh=RgO&\Z%D4<S9TpNaAIa3u[7QE`=E(G$l'qLtVTG:X/E+/8C@\Z6RA.A"q^8Utho_DGLHHhE%b5k&\#'0Q!,lGVX:kj;4upcC"P<kC"+Ji69_(JP.2Yp%,]Gn!rTJgNH)i&e;?*IAjOf7pVp`;IXFSfPqmM/7E"0eiTi&bp>i-oc:b2g+``V#WEl)'W)GFK#_'$tp:le)ZYV`#O7ZQ)/r,B!Uk_HuoJ4iV(em+m8*8O&*Nhc,[r-u.rJWN4_WU3q&WbJ9Bm5uFZ3FT)2g?om)G1T)E)YLuHZgAMZ+q\=RH,Iu@,8Oe%N+$=JI5F'4M)(k9(j%;m7*NT-1!5ms>_#-U.93YIiir14M(>2/KT7Na7ht#]ka9;Y=X=XTI<iC8&R1]B:f`(6[P\4N!+TaP3`qh#0>Bl:,W0s)F_^It_Zb`B90!hAdfD)r,>$^A0*1HHO'`)kUn.A;n_?*rK$aH1[&j9lcS"EnefO^6#EXrsB:k@9a6/\YC)*LFfai(.Cj$lsC3hoo%UFefO:fgjlhY?HXp_sPKtu?cMR?abXI,o2dPR:nn3[D-Cm0%u>f249I2fH3n[_NW_e_P!=dl'NGD."=,rr'M!^$6t=ebL3d3#Quk02>QYg1sTg19u-9:HG2=uidH,#!A&).:@_rI@_S!S^3=O&stZeo?Cu'ne@1B`_uU54/oE:alYE-+J;00O$i4*97;a-#FgMZcZlp9>!5d3o]P*;FX!F-XJF$D^+J"KUJCl>*^!m%t^&3d.'-8\Tl:&`/`]0.F]Q<G`2&K*<u.;g?G$B0mp\G7<$imb:Qph9OgfeRisXXaIFODF6p]IEh`OQ)a1H4Rm,2IfIl&J17pNB+6`=U4HH1<%O>`LKq#5Yh8q0&H^YXfCg&M1qBJ0E^kk?p/\l\,Z$f0X*SS`#E<"Ed0i[86_8lB/-ft15)0kfbq:\\"8ZM&!*16oq?c'rF^6q,gf1fDcZZ9'2NN)<<C>BjS4*:u2.ViCp%itep:Y'Bn9%j]3/f`Bi4:_7W,m2JWlN]p.2,RI">o4P)Q^A:nI:W^2csO-cALOgP^oZ6S\j"@&R)*L8-[f51UMOh3I+f6nA(&0ci<(FlXu(0)(lSO(GM&:L].m'3Yp2[@a6,Qmpm1`Be,`Do`>08Pf:I:7LWRi#M<.+LYurlecI]:HdlS1(7BU$cfGWZUN>7Jum*jCKYl6FshC&)(9nJ)YNkut#Ub?B+iM3.bS,8'NC'%c28"j/e)l.lB.6/`E$_?Du\S&aC\hN[4o(BD[QZ](a\Q<5OF8Ff<<(443Ls%DGs*@RUr-X,d=Vp7!^+5QD*9%fQ+>P2K7oR+f=jaTJSn"J(KZ,M0As'H*/acnR^TUI_^AXh.)qs25jHfa9R[3848iuDJUK]G>LFeo/n2i2=7;T9)@U7ZG18G7:9o9tWH!r$2a:Bbrr"mc<.adj[9_;H"=89)%VY;jP4u9EU^:!#)9C8ajC.F(!B@7e<=f5XAiNYXkG@0D7U#.c_ZNR\@Q+"^7e5#XA^1nrNUh\VYa"`bk#-!Df1('p,%+=Qt<Hgj^K.AhgEZ2G/K^oT<(J=#8C[/a7QXsGiHQ/p8FdVX"nW,b;"8D3=b0aLd0lH6nLiheuG26t(K![EBmc4a\YW8l;P8me$4'%]P=R84F)t=%HpO_uX&7@\?^K7:(l`=i<,K]L4XDRJ>Z12"^o;5:GbH/]QL1P%X;Y)GRi6INVp[;?>MrU8Yj2Fbo\f>k*I+%X<UX)7lY&[)Lj)-IF78pZg;rT]KMYAt#U-HCR7,MA3<mdeOEE@7YF/WboNZ0'.]W6!i2%"X<6`q/6Y'm`^5'XE!J/>QLP8(p=4PZOTf(mT/T<mP)gT4M,>MRuiWGS+=.<!WD:N#%@BMQ0bEWa.m?-mRY~>endstream
|
||||
endobj
|
||||
14 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1391
|
||||
>>
|
||||
stream
|
||||
Gb!#Z95iiK&AII3b[jX!88,_*8HF\mg[94e/@sNcD(iFR&oB.b7'37E5n<eH4/<ou*_gN@,KCL4br;En50f5j`JaQ\ZikWgK&oK,N5KB>9G.Z4cgY?XHj^3]4H^j!&Q=g2+Gk&ectn:@6:Fkj'*^1N8/t3_0dC\.`5'bQMHC"@Jb=#uJ4,8aYlk]G:rV^f]c`2RF=g(_<:\OfLbEr1,t&3i@@6uu_=.ah][VTa,bZcJ6<KMWq!H73(\#Oa9Ufq%/`=sX1$Q-!/']A!^GnApgUuoI#/?P=.;W:YW]Pg_%BPS\Y8P(8P41k/O7>H((75(ACn3G0K"fa(][FT.=C3ed,FIIXYY$0oWDFc\!F_3=$BmB-II^[l!mEFY+g*1h"u;)4KMQAP+Cj[F%ndQdMGQm>q+<b5P6TJS6SbGKbX5*?+]2,E(r7(FmN7lAQrXd`0I[&mU,\bC9FkP'i%#9#+d`<Y;lkWMiGB(6Bs8&Z]%kho@/3Ybi`/ZD4Qp=q>s]1L\,q%2&Y`c2h0XKq#KB_^Bm1m[pSVl+S$)19ZSgsX?K01jY.Z29CLY4^$'@!'\]=ZEFTImrkQ[:U/7dU)Be.j%hV7kf`S'R5@73GS+bp?-mCKkl>:s\Jeoa_c]>S-gkC*T.Ik("Ems[Z;YN&795X_l4eO9jqQtC7Tpt:t@X\elt<Ybdc0T]@"3L_AAI,(]=ZM&E[+\3k<n'S<S/"IK#H'Or9G6p-QC%<40fZ^_7cIQ&e"?mM]j,mbcbdr-G.3)p`$A?I'ZnC<PO^]@m?/uMC]/i!(+[OK+:#;9O^c*)c"P%?lRcY&+a3bQ7?#%T0D,SU$YNEF,c$*!Pqehgg:)IneD@CdFgodM@s*7kY-qYGlq*IdP6L4if3)<IOG:4Z5V(>uW>6;Rs<`%Eh$LI,Amh`ZmOWk)Fs+A`Dpq3P5rT"B6cA3t"TpjoQX!9St'a4!iA4%BgIp=hmP,PFm6pC<_0cu/?Pl#APYhaAJi-_C2=F@)F[;O%FL+dACMlgj.1I3H1HAgU)s,/B^D"e+uqpb)aLE'OF[FPf_=+O&)&hDNaaEQ5?.j&m0\hMcddgjeMY?eb0WtHjZ4[g%lS7"DgKq$;5^LM;SL60\k_OT"1__RqH!CWmh3o6cJMaK3A.`_Qs66/s]6\mtUiIUutqD_F+_V`C1"n,-M4aS!pI1l'H-?pSg\Hmu^%.t3kd@K9m5CQG$YYcq"p>j[OC!8!2M6"t%m`Y@G24elVkF2'VWMcMdI[/NV2s3q"'o$5iPe+mUjP;Aa`As7T^>u[ujedYsB;R_@]eu:aj8@7jAkVMN[K\RSFB?VhPuR'sK2%Bu?(f/oZbmlk]L-bp^^ZSOMi)W1)b!2ds2D_"H@qKp_uK;<i4f$qJq!d_"+6s~>endstream
|
||||
endobj
|
||||
15 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 2009
|
||||
>>
|
||||
stream
|
||||
Gb"/'=``=U&:WfGf^Y/r=qE;mIV?c]SYM$_b/nbj50sufdH21,ZBJnKhqeMIOGXRj)3<4$=;mB,!daq)Ib5qKMB>n!%hjKN-SU"fJ8ps(!%*PUa`BG3=<B-3*UZN=M"%A43=oQ]5:C,E$FW;ATDK$Zl4VF.+?`1VchDtM4P+-s'FI#dYS[r'TroboGg(=nkK80<*6us=,dub.hp-0=o<`j.EE_hXc/sr,E!0s/10TAWPhE2KP6A=$]R9GfSn'WWL@ZsSiOC@:33V7nEu4PBNqUXO.P!B1"*L<s/5K5KmD.ck-4dJcJUY]eiP'E#oflM(0EHF?nnA[QeZXR-PQi67\mFF.G01f]3pT\)#XMbOO'<FV'"BomOH+E*Z+*Ms>9f%XmLi-g2ir$_*@2#5*Bo_?h3cPE1;%$:@p5-0q)H[/_<;Z9).OZM"<fhYh8^;KVlYA=N?W,=KGNsgM"-7?ZCPgK(doEKF0!<Gr\W@oI\cL4"5"c'$^&960hSsr\,_80KkGc*[`QA"&CrE(\(?1[Vq1;MIT=/D`+D2BG=hhh.`g$-)@?_L$DMd02i'HHcLNI-;PiB:SQ4lmHtq$%P7j>Q1@T;J[*@<%g17L4F8KC3jB8Gha:#Y]p6LYCD[mRVk_.GnA/)qu$oZ]APVj:4jU#kB:+YY@:%fN/Ce9]QM7pu,KL;]6mSMnc@m[4<jV!n?[]EJO18"?sXm)][m]q"tn\@[l<W>GHdIk/gA(iH.]e'[bYE+8.^:*Y1B_pJ!+Xt412hG@k88Xc7bY"?a_JSf5/lOQn/chfk'P'3,Gs9N[F-U;#pocMFeDFaUTL`(3,1dK.VdB_h$I0RmP:TB$?rgg'Jhf!R9'nq`"N`8qT6'(t+>+h-7sTpk9iP+c8*@-\'IPuS\(flO5FT#r4(T.+NAa2\XAEI7Va42J_H]Mc,fa9MZG'K#HZuS@2G2;8D'07EBrRF%n)miJoJ5VI$8;k[75*"hZ7;tmgi?22q^:WGP]Z:eOKNCjpMj.q=e&qAO_62l+FSlsO4OqY6`5(#<7C/`L10s-#gOTQeDaBV`\]jugNua9mV-rNUNEM"[Gjs;p+GEadl7\Y@A[!2D[uLPNXj)X:hcoMC=\[`H--^`T!Wo8D!p$&OL0F16D!K[de<'OOR^+W1hiF$L9uqnp<%&eCVus-kD#4ma(rK8U'dVO\tNNuVV!N+V%CjE$)UX'_10A/5u.fn,f.YPJZYh`0FD96eY!4$UM:8L(Ia`,clMpdG;pJIqU6WZ_`<[9+:4e7%Wnm%(J)5aWp$Ce,/UYok#I\5HfHhESM*_E3^<W(jmi5qn_:r?j#.:dCt6*+cN%f0?^0d6U,2A"Vq7gN2Agc-IhM]LM;HngdG#,X^JdS"@^o7RBp;BC9p"SN_Z;#H>-rb6q9i+qj/*FVjs/oCXpVoU7r&h#lt/SN[-]A*96WLU*X>CsFA]5tcFRVAiiGlk/F&[Vksbo>kO0]d^.+'pV*"?,qa`Iqe0U'&Ki^]dVS_VaB]Qip,M%Z?Ic$/KMm2b9;dH(><YPmBX-r'oq7X]sf8,cC?bC6Y@\88lVc6OP?@Joq=kNj6#k2el@tc-k"H+*9$#Cu@oTkU--";4\Lqe"`j66D5)0hhF3;\*BjQi<#47:c(``eW]CcSruodd"k*BNa?PUam68!8li/*mVpGqm,)KW3Z!LY%nk&>.Z7)qLBYs"``Hbg`$.D$T_TF:qkhRNJEH1_SLmUV3c=f9f2Get:WiIY4E+%d!f#e%/,<eeh<6odcuD->U/'o]7W.>j=6J?V,TP"F7_]T&TS`DK0W..+ZLj^&.>hk60YBik5*sSmfn\C\0U1Oi2;PD*JE=9bqd;-42c2@K206/'uqO/eoS;L%m,c1<e>[(j@@Jkj4p4^NY;[WfR]d[P+Aj1f5V^CG7!.GfSnFi0C;"6V\>oL1)+WBbc8T>;WIj(c9o4pXJ"=Wc`0Go7g4uLJr`D<)LEo@rN$UYgmp/>>9sdFVLCC>mJ$MbTC6k#FUDDE<~>endstream
|
||||
endobj
|
||||
16 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 627
|
||||
>>
|
||||
stream
|
||||
GasId9lJN8'YO<EN-Zt=qJ&*P5IctF7AU?i'RJaO&pL[DCmH@6Ol)2jSHT/$'uqtVj70de!"Vd4n#QTI,e1E#&/*(uKHc-2*q'a8K9=[3W#-4O*]XOI;?*<BYleH0g.<Z"\KP`&PSI`2Z]H?V(h(d94C'WA17B/_5ZYhWl9FhadSbh%'ua@ght&4E[\r:Z:[A/-Ym7M;6;3/<:a8D6`$RrOiV^U6a#gr;GJ;=Z\h<N`COB0)p`cQNp"e_Pg[<hAkBQ<"Hs%OAJ*:2^q1dt)heRkJUa#&f3Q8c-/OY7GeAo3n([+ZZDLY3N2HUJUf,79*M/3`W9Wql*0bR_N*CO,O;>a`W(/uUuLU]^jPVJrk9<;[Hnih%&/QL3:'fXm'S_%CgM8aH_P2LA2RU_Yn$kHt>fM.8>#"p4,Xcnp)E%JWsbuZU5mZfN@Ot":ZiB$)(Vcc5?<j9DGI2bn"FW8.+0'6[lT589*a@RO4U52JgV&`1;gNQ3[*;&uOcT*aodCXG@am,l5_e"P.S*.5\.s1ZkoOn2YRE$3,ptQYb22AVu3VkgoZ(Lla#AF8'E09s@Oa@,SD[N+ba.mQ.?Qr;#ibP)C3T4Vh>EijbS(B(_0:kp@4>=!HCW,V/~>endstream
|
||||
endobj
|
||||
17 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 2100
|
||||
>>
|
||||
stream
|
||||
Gb"/'=``=U&:WfGfZ?fJ:1>FNG_,9Ma#WP<9q4aoV]EP!,Xg$,$&4-"35<08?D;7-X?DQ8i^;]+I(P;Bm'd?0-N;Hi1X#i*:#Y1q$C&AK#1OtX9TS0"eG*bijtb8+J6:U6Hj7NuoFI1kOb;[,f4R8NDL-t_2V=N4c@$02kBS-ATG0),DGVIICO4b?_PuR9pWe/E\;[+pRlIS:hk&`ja0g4WEEhg,c/oPQE!1$;l;9.&R+1XGQtESoiT'/7*6MA_iEXM>^8Oq_Es638H#R`0G>M:2V*kH)`0El)Obm=+KBWP5T5.R3I%/fBq6mbiIk3(B(>tN1U,(r+:P(RJ")nHHT5\'t0UK2iH6t#*AU<R$Xc%(!\2`9L?/((W?k-m'qe)nE4CXa;+$=&G*G#oL\SV&Zl,JBGrsUP/Vc6%VO*hr144%JAZl.=CcohY3_<s?A.))P$QY$b=p/45p>\]D\9s8(h\Mn#+H"bE]3j/*nj8PD6FSsVhlk800aM;ZB,`GZ6!C^7O41o_U+8CQ:AsmRe&+JBnh^@bC^<MI$I>ltsr3o6DndW>%"4]9RhY1@dZ[U^:eV_sF=hc>rq&D(Hl7#p=AtU;"Xk'I0Uqs/,q9BlN]G20:8ttVkMN/UrK'$tR3*c^f/.)];]G-M'#-rdRM)nn3mm=9=:Qoam=:U]n*mM-iXF&XoB9FWF&>V9r-3CTjA>Q)X`>*hiO9l)oAQHlEP[!KrgrHaB.I1;`*Y\c_Mt0b3.PJ3CB0/OgA.XTuZY*K9ZhWRK[ZknfdnW=LMA1qG7Z1(h!ks%GDJ\-<(Gd/ZY,/4HfepGY\DqOp<HCuJ'$$_G&1j'i!gOl3$?TU:b+!6K5,+/MZLPU>3Jau*AHbX8XXh^68K)$1`ml*?T5Md>ak(O:IaMEmPC"C6Hi5&1^!l$dWffIWBp-N(ZRccq,eoVLf$L\@r@T!X$=KCdnn$@`a6^OuD&9)kA)$=h&78MUB^2_gDAM[<0kB0i!3jL5EUC/'NSq+M<o+.HeS8^S6ju,3eW-,tT\*(fRi$m?C%k!&NsA$jf1u;\@Ebne./]5s5rJZW5)=-7>Z=N+[2>1dcF.gcXWNHFbbd=,]nig4!$Ou$2S-2&9N[3?c#(l_O#@o!_VPP5,jAX_F<G3XZ;?D%Kh,:R^cI#uPd=)Sj4.Z+?<gF^U"cj1HVlTFLm/Z`Wta?'c'V6uS)s+Cf/`s2j=LEO2nD/$9:QGT-rFjH!]qQSlf(n^3j&=?rth'U3+j!R&;L.e<Hl;";[Ro$D\*/Vq[AT=GE9I4@Bu<)/DJ&X'\gm)K_8g\bJi$()<7cN6HpUr=JrYhYG<^&AL;G'^6S7O("mg:a\8`GLiL^DcUY%+[@Ve9-t#1[XT5P;T+TlOI'eM&5HkZ6S1qLq$708lIc"'GCDeCiDY-HC',=OcnH2pm:$jr]cV&($@f_p1&B"q:("1#,2U2OT7hB)oCs$2"7P3+=G+VSu<MU=s<8o0"8sFUt]2MuaCLJKQq(.AZW^cbOGC',tat*qk#]cnP-5Us7?'f`;DA&/G;F-bg?47`eKMGR*pq!okLZr?Q^=k3F"m?eH+.g]>D_SjR`$?mt68`FP7Yp4"U9%n9jQSeC0)g21cII1ON+gR(AC6=1SknL;kQ>Y8>3$g.E"SijhG-TnR;*MnLI.5.JjC`)j<`;hAFUUlM6:;q1-("\E<C4cLXYM0Uct&'3LE"#W\?.9W=!RQ;AJjRDIupnkA+!4798UVHo7Le$`mAo"do%'%u1M/1b&'"1":5,[um_fg7D)Fa5UL0*'@GX,ih5#]Q'pBeDFDBT"P8Hh'G*gLH$*bdM<EJc#/E<O[Atdn?ppZBKj[EcOf7.f5o#mVjPHlfKsu7k?'\TT2>h2JG;j)DA/F"bb9:1,dRGt-qJJtg8sC.$Z4EUZK[nF9Lq%VAu:*L5;3V5^Zg>#_Mt5KB"gecI5Xt.O4M0c0`%pmF@\"6gGp6IJoeK4<hS\Ol%?cBHl#MV^#,HRSX2V`c>-RdK((NJFf'_B=QF5+X"OuM?,]k6qIm>Gigk66d\RTLlWk&^]QnjEr:+]g2+MY_R&0YU+Ri/NoKbXJpC:Eh8.j+fL@YI#rWT?e_sd~>endstream
|
||||
endobj
|
||||
xref
|
||||
0 18
|
||||
0000000000 65535 f
|
||||
0000000061 00000 n
|
||||
0000000112 00000 n
|
||||
0000000219 00000 n
|
||||
0000000331 00000 n
|
||||
0000000436 00000 n
|
||||
0000000641 00000 n
|
||||
0000000846 00000 n
|
||||
0000001051 00000 n
|
||||
0000001256 00000 n
|
||||
0000001461 00000 n
|
||||
0000001531 00000 n
|
||||
0000001827 00000 n
|
||||
0000001911 00000 n
|
||||
0000004130 00000 n
|
||||
0000005613 00000 n
|
||||
0000007714 00000 n
|
||||
0000008432 00000 n
|
||||
trailer
|
||||
<<
|
||||
/ID
|
||||
[<35b33c1bf2818e2781e292e6fe49cc5e><35b33c1bf2818e2781e292e6fe49cc5e>]
|
||||
% ReportLab generated PDF document -- digest (opensource)
|
||||
|
||||
/Info 11 0 R
|
||||
/Root 10 0 R
|
||||
/Size 18
|
||||
>>
|
||||
startxref
|
||||
10624
|
||||
%%EOF
|
||||
@@ -1,10 +1,10 @@
|
||||
# Les 15 — Lesstof
|
||||
# Les 13 — Lesstof
|
||||
## Externe APIs + Cursor agents + Vercel deploy
|
||||
|
||||
**Vak:** AI-Assisted Development
|
||||
**Opleiding:** NOVI Hogeschool Utrecht
|
||||
**Vorige les:** Les 14 — RAG + Embeddings
|
||||
**Volgende les:** Les 16 — MCP servers
|
||||
**Volgende les:** Les 14 — RAG + Embeddings
|
||||
|
||||
---
|
||||
|
||||
@@ -137,8 +137,8 @@ endobj
|
||||
endobj
|
||||
17 0 obj
|
||||
<<
|
||||
/Author (NOVI Hogeschool Utrecht) /CreationDate (D:20260521105950+00'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260521105950+00'00') /Producer (ReportLab PDF Library - \(opensource\))
|
||||
/Subject (\(unspecified\)) /Title (Les 15 Lesstof) /Trapped /False
|
||||
/Author (NOVI Hogeschool Utrecht) /CreationDate (D:20260607084028+00'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260607084028+00'00') /Producer (ReportLab PDF Library - \(opensource\))
|
||||
/Subject (\(unspecified\)) /Title (Les 13 Lesstof) /Trapped /False
|
||||
>>
|
||||
endobj
|
||||
18 0 obj
|
||||
@@ -149,80 +149,80 @@ endobj
|
||||
endobj
|
||||
19 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1912
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1911
|
||||
>>
|
||||
stream
|
||||
Gatm;;0/3d&:WeDlq;!>p7b.\"PfK19A<-eD;)Sg4_1FBZ"t(`j8sMYqt7E2(pG"oij8$W/Wb/MPBO]Z@6jA-b]gDo\/<)`f*iLOi<5N8*#QDFX.f48,$]*5EIlb+[0$maYk8C0WKi&cL^87@^o&7D4U2t!&`4+Hi4.)(Qj9%4aU="-nHAN4#Dg]2iJYDB2A)ISCPTDd"M=!#pj=)g5XZ>-L08uP(sZM(W7n9=&B\8(L#E*Y5(*9O%<'crk0Zl%"MPY>N+N7KEpgd%qL"CfEF-^@r$BrM;9OYeMrue,KAd4*X(C1.3,p[cD>Wd5%a5+SaU9sTc/+-&3":GHm!QZ5h&$d;$<5Z:G_'Yj=`ePk-#h\WE]ghdAI8_R!lCq`G?VU3I%*')!Kg@m(paNk?)H43f*&?A(-l_rZ(RUe40,PQ<pOp<<R0k[['<(>B9>V;N!-nrq:1P?ME,@p/3IO]I%T/LSR\\P->@k_NRM>!2O_!9^Q"e2K_j3k)sf\cB%>2l.iNatW3OrUBOd#[cMfbGD9O:Y@m4[Y3J>!q^foEUR!tBenEMn-&@tstZ$98#XUN2VB:d@bn1[7&]qCq4-?HA>'f&E.$uW4hGR9_;/6<_gq'NF=-JNZOR"H:=YWKN%,iDA:L!IDd.3pAMPF9Q$8Ad-6AZ!JJW/,"&_Eo"W^Yolb0aF-+*4_*k4cJJX;8;]m$O_B0R[C=`g(S4YE-X7uVa\ktboU?Te=beY)fF5*fIT>(j_('80Hi;II1VYU6`C?<ro[>/mAL*15J9:0D6n*6O-A5)4,Vd3'Sqgn7)n7HSN[O[YD4,H#KXIYMX;Jhj]rM]O/(oSSF%8N!Sj:"YZbTlq45QHrWhTR6Cj1DGV.D!k8fXD4YF]a[T:KaeFITeI9l1>1JHblAbp]A#'o0B0p6%;&pY:dj7"0.R>rR=ZH#i8o^NJ8;$-Ukncj-i6^d=Oq6]1i-5m[HO8DK*4%.Ok^^b'7@D<cXr!"h2)l!(8!KIFXN^o([0+Tk*m5>/u>0fYN>7E!t;'JjKU&q&7?Kr;!X!S1AW)_=1S8`=p>;`rCRNYjO"q8,+Ucn?(I&A^:>hV0aK*^)phkW$.s3l972$P:"5<+9rF38E9if.=Mhd8W`4i;?u_aFPEp_<H4`Pb4@,=1!2<C1Dofu/3>8#8ECk&sE)<b9ZZjtLBc]eX(kQ5\"0gootLP1`sZ7&D;pZs0G5;eIKAr+b4O]4KiZqM&FI.Chk:_ZTl\Ihh#sLG'u?iDM7n.Q-4ajY@1<):kI#VX9]#O:[LCj.si_F'.UO-ZR[^*b/JMA7:e?>c)3MC:!ad?,r@*[?A<dbi3T;nN`m*F!Q%,FD/-rWIbX^rsXD4I(acSIJEur$ACR.;'q46U:J9WV<]IUN(PVt72X:IR9JR+&%(+:g4*[2i#T4Y)1oJ)Bk`3RW^X%p\(R'd\ZAs:>\BL_Z=.HnMk,P\>Q)LWm,Sc]R`M^8@H*6O0TB[peWn*t)X'h]b#,U)kBe0@-8+/X7PI(\.a?rC)X^T`T-W\C&QDSEc]T-=]nFc_:<%Y8E`%/#?jg\m5_1:)k'=KFM_Ip';j-PC`5AL1K9Tn&?;Kd4d+^#P;3SA4)WN,p?DfTe)BWMQk!@<J0't%[>=_T?ITi6PM[:U5@ruDW1tQd@,SA_0g87m]3^g:G:BHFJ!7c,_,Z%jZ3MQtP3!hRV%leRiM*8ps?'q.G?ul*Og:5kG[um<mR^S`VD*KeDNi&[V4N)td]3t2n^i]IhjMr9H`To,4m_X#`ndp6=*(_3,KW#TX%W&&:&?c>G,8k#f(H]F&L,/ZJ@#ecV4b`;(EuM1eH@S#=._a)BSememMioGG:!YjoTmE;,`D5ak0\"S@"f$Lqq:PPD:n0&cZ[7[Lg.Ct86.Dgi3&VFMh6$/?K4+W_;^I)0~>endstream
|
||||
Gatm;gN)"=&:N/3oLl3SA3H?=Y5<se:?#GYiZof&#?RaT(dLQ(La6rF?b\b!)]'aB/3j4\c#i]Jkru#aJE!&dmq;`@0n_K()))Q<#r%k$0YDt;U%QkYguY-p!"hC0!='5CrISj#V;Sl%%=#\(V]P@k)f2,Yh[b+m\Ba]5#FU7e.uOGu>jD,C&>(tcn*[:o`8qtEgVe*f@!@#6T<H-?Lg*<'@?qulL,2p8Wj+$i6CHjo0O2EHLQC>qiOt]&4IR^a^t0codB%j[c93"LT+CKTc3lXe^Z8QFC:TF?nIgTN0RT^FD:l=7:)j[\g]!2VJI0,a]MOg?ltn_Adh(/dSPQbn[3:l<J\$FF05q&c7H]D00!8D\[c`me9Hh5<5WEoZSW2HLIDO[C$^&sJ(__Q`%b#4JCG$2?$_XcE=A[:XS2F@lCZBSI<R.$`['`A-B9>V;N!-nrq:1P?ME,@p/3IO]I%Lebc7r=P8K&[pj)iqa5a0(V2mIFb:nKdtMk(+'XN"Ca7:U6?%JJokD6;4:g&K'pNB+pcb\&L]RrF,d==\NNl$$8:Dr.3!<u25k(9a`L,D38<R4#KE%n!/B$T9fnAFA!O6>!3M_<l@TYMjMejXS/4hddMEA@jH&F"kKOU=3=3!mYmmkj2N@6DC2.RAmiL1^l0BAnnu9MHH/f/7_WT%B!<e3QMotaE9$U?n@Y$qOKiR=QnMg`.WiP3ME,PLURqG>1D?1pCJRI"r2(/Y[1,!?@m^NcSc#:6>Dna+=\Uj;A&X#c`Nj!UC&^To`"Kjc*hIR9k)lF-uQq"+?hCk)3<g"qD=GN*d41r+R9Lc_ESCMhas2"NM<Ur[Vm,iE-EX:[E;nJ4-/M$&'Wj`3Zi#)>,HKs4!8Nh>`-X>Xcb-3jjV$A]%@$qR"CZ93n3>6)(#[P6Pl-MYTOLFN[5sVa"d8ZnJE+T"S6p.%S?)'0p6%;ht`ke:HP]uVK#H(\<$R$__g``Cm!uhqsDbnGBiYo0YIu)YhbrtGn_.kni1auV`"7uH81T8CHrJl&rDJW'bD\];YO9s2GqTO7Q-7Q\W60gAWmM2*MV)-^p"hN2MW?.Dms>G6X'eA&E.s6RoF"mJ(h!!`aGV<#A;Cu:AIUY]FiBGq^Y4>(O5_%Qq0IETAn_$RQ.6q,UbaN8h!IkFfabP<!m/SElV]u<@Vj^%qDKc/(;M6WY)q^%@bWpR>mJ*A83kk]=#g>9o=PJY;VuY46GqOD]#@>P"Sb=4Q$b@=$c7qpjuKu1UpDBV+Q_.C;#SCBNE`Y[Tcp&7R/#S'?JFmF'.UO-ZR[^*b01aA7:e?>c)3MC:j<l?,r@*[?SHfbi3T;nN`m*F!Q%,FD,l2WIbX^rsXD4I_E8%^AJ"IL!#t0.$I)+nQ]k:&p=pP7\us[,)k[59Wdg&#?pR.mD#qTn;^\h%)Lc'['me;26,6]X1'B[0!!h/f9re9lr`!(@V=Ze<^X,G41W:[-8I,QQoLil9VWJ5F_1*V#5T78Eg3]cq;+TSMi7>1&Id$E8oqMTL'O!g-]*.7";R051ZZXZNJpnX1>^cOMp`OK>=`6.$9\,<cc]TrKQ5_<P(`39%j*;3;NbG#RF(c*[oEWM_pmggN0c)AS^,`"I#t)W-U$4o'[LU*OJ&Os?C[',$6odcZt]1m\)HUT9!VI)D64k$Lh,bB";L;*C;\T.5^hnZN%T);8\g0Hi7oPQlqqZd_IT8APMHIBm:tNb/O;7_9fY5gIV(?P9gc73Lb6kp_;ltpl1BPKO#sq1f/Ird$dWP._sN*>8Fe_c7&9m+?ongOGWh]?aWPrAfE(+kPi;?:F!P8^.<Gf^dr7b&"3cm,nQfbu]Z?=@PWVf%4mOeUl?P]240?ul:f"tFN:p-3A*^0^ENW-a*]1HB-e4gn;4i<tfM#7=\%^`1K(U3Nd"HW~>endstream
|
||||
endobj
|
||||
20 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 2006
|
||||
>>
|
||||
stream
|
||||
Gb!;d>BA7Q'RnB336UYU?s:O409TI]B?IXsB"8T]4QQUo;%g@HAS``2l1DaZO`,5\*>jO)9i='1o]_n7*1`!:=SSWPru_Mj5(p`[$C&AG!n8A'$t$ooYkPOqR)c_s!jRGjq[A:!Rm4uk]`_T$GWt^J#`BA4*H2--6MLU!Y2c$ma:q=>oI(:==^3pO"EcldXf]'h`u&^]&D-OOeb-=t_MI@gYEf[;XPO5;1MEmiMeY>lU+UXu(dn>j]?d\=V4O\LQt[SWV]o'UXFLmm*0+>G*p%[7(MXB!C7uiB`[WDY_sd_^:X!,cI)f[67Ifg+^K*?k(\!S(H;_SNa_@,5?lbd3aCtb;Z!'tA$"DX)7pG=*]OrHD_KJ&^K=Js,;Veck;3,^+=cV^)0i?8;#j!,nNk!?(T\#4_%2G*GW-68&H+jY<[S<e_XT6U2J-%Y';30_?FSV]^!a4nC6-i_,&`K'WaEhj,7S!'C2sZ_mAR:Yd#;;&)Pg8S,;7f?=ACMes:hBeu>[+_41`>]5L!Y_>eS>EI/+J&)f("_i:`oZ0*ra9(Ts@)&dFkQ?_?A_ql[iC&qn0c*?L&&-]=["!"K(;N/.\gnA3u-QG;dE7<<?pG0n_P8*-sUbSfOhASE_dW?m-0h<@j=gi(%?=>Y1@"Kn?Q\,bY04k"/C&3g!9AW3Cfq3A/eF9L^KTN<]@->%]Ni&1`HI#@s:c0Fj?K3nNu(!bU`QHr1d"@=hF@*(IA@&`6sP-'7>13$n<tfh@DN3ooY9g6+D8d+33"dR?dmc]sC-.bVCQ)baLSFZ-\NT,Zs,$pe#82k0IA&SbIX+7(Sb<g]_gq]j8Z<[%!h\J,QR]@T)Oj"kM8cQ&_-%ulpA4"U'hf3q?[Xr7]r+2GKf-&6D<U%AAUL;h@33L&RA2oj7Rast1B^Q+CfYO<_>o0Ji07;._$Akn<Q8#Y`N;TpneL&n;+(L_El6ZH`:3lRT%^/OPXH.++S24ZrI=dZ2kGb_#^<4`kCKmN`[RO>?KUWlD[:cX9P"*FCPLh1aT!$Cb.Bbl`\KR(<a8@b)uITDOkc7kjPZ+S!trcKhZcANQD-k'Xk_Zju1EWl9EYk7ukl)@6jQg3^'UDAF@&<"=*-E7>`S\4YMc`YC`aG-ZN5(.ZmP5%^BN*r.>WM3B-X9nf[ld"$SA]Ug/Y[g9?LC9N(nm"Uu-SN73;1EeC#6lN;^=pfKWRfNh2$o5W^H,+7FfhqOXHMWj/4'Y?Gb-&r.UQgtCCG/ekGQ:Lk7W-*_c.DKXP7),1!_/)ZEb5geAB':qlf]s)5q@!Y[JcX.U;#*_g0eE[:<([&XHS0*,6ETO'%F]]-F&<'D1!5arMZgO-WW0)"nQ3gX(IL/uhLF"RQI]/\d[5Jd^!%fiiu1bIpSJ+dP/k93LTR95U!()k.0Rr6br'VOkXPIRu;;)8bsmErEfSdm^^\HIqqS::<'Cm:lmB"ng'h1;?D4[e,<R.PQ[X==9km,%L9[Em2>@FS$DfpRkuJj`@Vg#p@SsHXeRs_quT?A6;@7;1B)`2<7qiN<8T\<YT9IF>-6_/=D5<ci^oh(9AKA5mMnr)G0D3lp8'b69Vf?DtNh.h=H%6mGs1;IYdrFrt!V7kY!2=<+&dhW%0jL17aF$O5>Vk5l)67S"&Kd??gQdgNE!F<q)M,k#l0g_J[V[^DF]WM;nlX8q=P0F'VPb?I[3T50Ir&BCi-a<7e+p$LG)GEZPt"i[&5XW^cqk87a..*:ENILM[]B1FDO88(mYpma:^?$C;U9mcB#Y))i(DmM#D4*%q6$2&hc.GL$J*@%YR,lRJ[!,G)g-LhDlJ)uhid=*d+.PSMadcP>S+*<Z#?)N/o)8(W$t^VHS\mqhr1$`o?6&lqA&%^@oCeX=p)126!8C[(LrGd0D7rGEA#k%?+iS/A(WRTq99VP4C<a[2;r;Ff%C%<Y'B-"?NAJ^dKh-4\0lZ"@4A0hq2Ol6(&BZZ0E"'HL\5Op<cO-%X"oH44<TXD$'-Y[n[U^&J*YR6H'~>endstream
|
||||
Gb!;d>BA7Q'RnB336UYU?s:O409TI]B?IXsB"8T]4QQUo;%g@HAS``2l1DaZO`,5\*>jO)9i='1o]_n7*1`!:=SSWPru_Mj5(p`[$C&AG!n8A'$t$ooYkPOqR)c_s!jRGjq[A:!Rm4uk]`_T$GWt^J#`BA4*H2--6MLU!Y2c$ma:q=>oI(:==^3pO"EcldXf]'h`u&^]&D-OOeb-=t_MI@gYEf[;XPO5;1MEmiMeY>lU+UXu(dn>j]?d\=V4O\LQt[SWV]o'UXFLmm*0+>G*p%[7(MXB!C7uiB`[WDY_sd_^:X!,cI)f[67Ifg+^K*?k)t9",H;_SNa_@,5?lbd3aCtb;Z!'tA$"DX)7pG=*]OrHD_KJ&^K=Js,;Veck;3,^+=cV^)0i?8;#j!,nNk!?(T\#4_%2G*GW-68&H+jY<[S<e_XT6U2J-%Y';30_?FSV]^!a4nC6-i_,&`K'WaEhj,7S!'C2sZ_mAR:Yd#;;&)Pg8S,;7f?=ACMes:hBeu>[+_41`>]5L!Y_>eS>EI/+J&)f("_i:`oZ0*ra9(Ts@)&dFkQ?_?A_ql[iC&qn0c*?L&&-]=["!"K(;N/.\gnA3u-QG;dE7<<?pG0n_P8*-sUbSfOhASE_dW?m-0h<@j=gi(%?=>Y1@"Kn?Q\,bY04k"/C&3g!9AW3Cfq3A/eF9L^KTN<]@->%]Ni&1`HI#@s:c0Fj?K3nNu(!bU`QHr1d"@=hF@*(IA@&`6sP-'7>13$n<tfh@DN3ooY9g6+D8d+33"dR?dmc]sC-.bVCQ)baLSFZ-\NT,Zs,$pe#82k0IA&SbIX+7(Sb<g]_gq]j8Z<[%!h\J,QR]@T)Oj"kM8cQ&_-%ulpA4"U'hf3q?[Xr7]r+2GKf-&6D<U%AAUL;h@33L&RA2oj7Rast1B^Q+CfYO<_>o0Ji07;._$Akn<Q8#Y`N;TpneL&n;+(L_El6ZH`:3lRT%^/OPXH.++S24ZrI=dZ2kGb_#^<4`kCKmN`[RO>?KUWlD[:cX9P"*FCPLh1aT!$Cb.Bbl`\KR(<a8@b)uITDOkc7kjPZ+S!trcKhZcANQD-k'Xk_Zju1EWl9EYk7ukl)@6jQg3^'UDAF@&<"=*-E7>`S\4YMc`YC`aG-ZN5(.ZmP5%^BN*r.>WM3B-X9nf[ld"$SA]Ug/Y[g9?LC9N(nm"Uu-SN73;1EeC#6lN;^=pfKWRfNh2$o5W^H,+7FfhqOXHMWj/4'Y?Gb-&r.UQgtCCG/ekGQ:Lk7W-*_c.DKXP7),1!_/)ZEb5geAB':qlf]s)5q@!Y[JcX.U;#*_g0eE[:<([&XHS0*,6ETO'%F]]-F&<'D1!5arMZgO-WW0)"nQ3gX(IL/uhLF"RQI]/\d[5Jd^!%fiiu1bIpSJ+dP/k93LTR95U!()k.0Rr6br'VOkXPIRu;;)8bsmErEfSdm^^\HIqqS::<'Cm:lmB"ng'h1;?D4[e,<R.PQ[X==9km,%L9[Em2>@FS$DfpRkuJj`@Vg#p@SsHXeRs_quT?A6;@7;1B)`2<7qiN<8T\<YT9IF>-6_/=D5<ci^oh(9AKA5mMnr)G0D3lp8'b69Vf?DtNh.h=H%6mGs1;IYdrFrt!V7kY!2=<+&dhW%0jL17aF$O5>Vk5l)67S"&Kd??gQdgNE!F<q)M,k#l0g_J[V[^DF]WM;nlX8q=P0F'VPb?I[3T50Ir&BCi-a<7e+p$LG)GEZPt"i[&5XW^cqk87a..*:ENILM[]B1FDO88(mYpma:^?$C;U9mcB#Y))i(DmM#D4*%q6$2&hc.GL$J*@%YR,lRJ[!,G)g-LhDlJ)uhid=*d+.PSMadcP>S+*<Z#?)N/o)8(W$t^VHS\mqhr1$`o?6&lqA&%^@oCeX=p)126!8C[(LrGd0D7rGEA#k%?+iS/A(WRTq99VP4C<a[2;r;Ff%C%<Y'B-"?NAJ^dKh-4\0lZ"@4A0hq2Ol6(&BZZ0E"'HL\5Op<cO-%X"oH44<TXD$'-Y[n[U^&J-0#X3V~>endstream
|
||||
endobj
|
||||
21 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 2085
|
||||
>>
|
||||
stream
|
||||
Gb!#\>Ar7S'RnZ;3%.hO.:SaA,`9am%)&A9ZDL((p7X*87A4QEZK+W`QQjM#h]ZQ.E\;Oa%`+;N&h3B5(S8et0qe<bbl;nln9bLof*iLOi>@qP4;]-UX.f.0+^FNPo7=E7\fh:k](uYhM3EKDL^8:I5gk2(^]R@f,%W0Rj1ZXD!>Gm\:E0Qa&2]Ii&BT;C`JsgK&Y,V0O8)%pfCuK@P?PY]Lm<.^B)RKm\:UiAZDaor..[N_L,8&,4oT[3Dt8`7j(Y*_n97m2GZqq>o)P@&p7IU];HE&s?E0hooD)'keIE#6@/*.5lJR"1-U+Q>Ndmis?p<MFXR^??q_"<_=TiUIk<8[K!>9dVBL!k`>oMX(Cim2IU1:"b#uA@\iBF5Zm9JrGJ5GOQc5`1O<?>S"i8#9c=VEl?%W@_F9LIL4&D)V"=DX>SCTIT^7#VI2pSl(".;L#'$Uh+]fV,D_.1WGBX3K4SNodN%F\GKnhtlOAYBB3!i"\Y__P;0_N"R`\GC^p?.t),lN-ER$YhI@RY8r"!n3b'2ip2D.+i`mfrWcFS<RHS5$#uDA4S?nY']W=rnMJ?7gS.#*C89eC('U+#BMXQSpqq?O;+8Z8'76cfhkqah-o^,+-lRj9CThk_RW-2u-bM?bk'00gkJ!K[*=kl[NU;r^&;!`>#2L0MXGIrZa-a(/.1DH3$]+7c3@f''B4;WZ%I=Ki[0%G3JWu_GZj!5,/00t\[=PctY4f?U[(!LKV$itW"+"0FL*Yi=$OC%V#c0PjhI$?2Hp3q\kA$;qK?m[W;dTb#BVJ$t?JJkJ)Ba-`l['H])CR)MB/,>]=^37u"qt"MX"d+-NB,^DbKX]E,b?A02eW22Ss:$kit@qMoM:]NFVp0cRo+S#?Ira='S*C9Wg]9$"(Pds:Ipudn1n*dC\2P3>/RDE]:5KWT*RB;(ASRuF]%Pb[8>$p9hqHUm=?c9Ke*'icc/gE<J[k]'Ute%QNSr(%JFJuO3QuNL8OB?X7_1H(.G*k7F"NmnZ;f9<U[]V<Yp.Mg[ru))X>)L$N[BA\g[b(o=R%_WQOr&X95n\H?e$KU?6G/g8okeQ7=`g,pG1Wh:]u#5h-GSJif79Y2V8(+WX^TrP7"#T=m=>F7gPKdc>4L5s>OTbb_;%GKQ0.b(hdSQ$"at?::[$^ncddUkE:l_->+kN5Q0KEVaWt[Bf43f8!GJrFLOc'VdTI4,6]%c1%n]R&LEHdj(ejZ'^Jn2Au=@2ZB5'R7^D3N-@7/rVVD3pNO#\c]t%X]d]jKDl%T`K&3CRbEOLM+N]cr0g^43f<6W=03-$&]7;M(Eh)N+Q;g_Ep?.1`ra(cTCr0\h>HWF3`k5u!e98YJbIGk#nNW[$W)G,.3fO_8Ea@7i0gaBJ=rPl6(`Lj3=rPl6ck_SKZ6#CQ0Fo6u(7H<<BMkcEkC'_6oeCh1#QmrQT4Bk+M[EZJmXI)8X16m6[i[*djk.Jk76Z>oKo4mWYXn+o5`IfD<`/LYn8%"J_?dW@kpT[a9:CrJ+=VlBmDN^ucS`Z*F.GdsWa=]0(F2k;=ieW!BtBQQXH>SXrIa/4klj14\0mo$L;/-oo]nR4=t?C5_Wq1m2-$+2oSQhE_NLO.@+Ug:`EKffX)kH6[B!T3M=XLU2q(S%K`0A1H#T_f`&M=XTI4+Xp?)ZNH$"pLQ4U>dQll6mm#L+A85lqah*Gj7a7q(Z8VTqOF!X\VI2NdiF;MqgMR0&u?.5,I(3@`a2q2ij#+=(Cm.#qL%KKLNJj#jD5h,$^fAC[hf*lG^W,!6('F,cn^8hLp%n*R6LH`YIU<<*T42SnSnmFb:B[Q?6`k?Ug=,920_poO&O^buupmA3"eGlMq1PR?+H30N+(hpqu>HgbR!QVZ:5[bXZ@f=]3)@[VPqDbFg;>i15`j9-`2=!;mRVn+UO-sm6B>]DZF-T5JUd-u:oq&,3S>$ee?#TB3Cg4"[qHLhkj5\$#2ZMnI7@]u"!r=JLU4pn0.Z#DK=U[<d.P_1;ZeU19'V0kSR3)'[I"CAs1%_NIXsTMO&>b\3p?"emnbm'Uh8s?S>Bu\?^IB+594'oU@ht;JP+:'Fn!Yler!REUef"~>endstream
|
||||
Gb!#\>Ar7S'RnZ;3%.hO.:SaA,`9am%)&A9ZDL((p7X*87A4QEZK+W`QQjM#h]ZQ.E\;Oa%`+;N&h3B5(S8et0qe<bbl;nln9bLof*iLOi>@qP4;]-UX.f.0+^FNPo7=E7\fh:k](uYhM3EKDL^8:I5gk2(^]R@f,%W0Rj1ZXD!>Gm\:E0Qa&2]Ii&BT;C`JsgK&Y,V0O8)%pfCuK@P?PY]Lm<.^B)RKm\:UiAZDaor..[N_L,8&,4oT[3Dt8`7j(Y*_n97m2GZqq>o)P@&p7IU];HE&s?E0hooD)'keIE#6@/*.5lJR"1-U+Q>Ndmis?nUB6XR^??q_"<_=TiUIk<8[K!>9dVBL!k`>oMX(Cim2IU1:"b#uA@\iBF5Zm9JrGJ5GOQc5`1O<?>S"i8#9c=VEl?%W@_F9LIL4&D)V"=DX>SCTIT^7#VI2pSl(".;L#'$Uh+]fV,D_.1WGBX3K4SNodN%F\GKnhtlOAYBB3!i"\Y__P;0_N"R`\GC^p?.t),lN-ER$YhI@RY8r"!n3b'2ip2D.+i`mfrWcFS<RHS5$#uDA4S?nY']W=rnMJ?7gS.#*C89eC('U+#BMXQSpqq?O;+8Z8'76cfhkqah-o^,+-lRj9CThk_RW-2u-bM?bk'00gkJ!K[*=kl[NU;r^&;!`>#2L0MXGIrZa-a(/.1DH3$]+7c3@f''B4;WZ%I=Ki[0%G3JWu_GZj!5,/00t\[=PctY4f?U[(!LKV$itW"+"0FL*Yi=$OC%V#c0PjhI$?2Hp3q\kA$;qK?m[W;dTb#BVJ$t?JJkJ)Ba-`l['H])CR)MB/,>]=^37u"qt"MX"d+-NB,^DbKX]E,b?A02eW22Ss:$kit@qMoM:]NFVp0cRo+S#?Ira='S*C9Wg]9$"(Pds:Ipudn1n*dC\2P3>/RDE]:5KWT*RB;(ASRuF]%Pb[8>$p9hqHUm=?c9Ke*'icc/gE<J[k]'Ute%QNSr(%JFJuO3QuNL8OB?X7_1H(.G*k7F"NmnZ;f9<U[]V<Yp.Mg[ru))X>)L$N[BA\g[b(o=R%_WQOr&X95n\H?e$KU?6G/g8okeQ7=`g,pG1Wh:]u#5h-GSJif79Y2V8(+WX^TrP7"#T=m=>F7gPKdc>4L5s>OTbb_;%GKQ0.b(hdSQ$"at?::[$^ncddUkE:l_->+kN5Q0KEVaWt[Bf43f8!GJrFLOc'VdTI4,6]%c1%n]R&LEHdj(ejZ'^Jn2Au=@2ZB5'R7^D3N-@7/rVVD3pNO#\c]t%X]d]jKDl%T`K&3CRbEOLM+N]cr0g^43f<6W=03-$&]7;M(Eh)N+Q;g_Ep?.1`ra(cTCr0\h>HWF3`k5u!e98YJbIGk#nNW[$W)G,.3fO_8Ea@7i0gaBJ=rPl6(`Lj3=rPl6ck_SKZ6#CQ0Fo6u(7H<<BMkcEkC'_6oeCh1#QmrQT4Bk+M[EZJmXI)8X16m6[i[*djk.Jk76Z>oKo4mWYXn+o5`IfD<`/LYn8%"J_?dW@kpT[a9:CrJ+=VlBmDN^ucS`Z*F.GdsWa=]0(F2k;=ieW!BtBQQXH>SXrIa/4klj14\0mo$L;/-oo]nR4=t?C5_Wq1m2-$+2oSQhE_NLO.@+Ug:`EKffX)kH6[B!T3M=XLU2q(S%K`0A1H#T_f`&M=XTI4+Xp?)ZNH$"pLQ4U>dQll6mm#L+A85lqah*Gj7a7q(Z8VTqOF!X\VI2NdiF;MqgMR0&u?.5,I(3@`a2q2ij#+=(Cm.#qL%KKLNJj#jD5h,$^fAC[hf*lG^W,!6('F,cn^8hLp%n*R6LH`YIU<<*T42SnSnmFb:B[Q?6`k?Ug=,920_poO&O^buupmA3"eGlMq1PR?+H30N+(hpqu>HgbR!QVZ:5[bXZ@f=]3)@[VPqDbFg;>i15`j9-`2=!;mRVn+UO-sm6B>]DZF-T5JUd-u:oq&,3S>$ee?#TB3Cg4"[qHLhkj5\$#2ZMnI7@]u"!r=JLU4pn0.Z#DK=U[<d.P_1;ZeU19'V0kSR3)'[I"CAs1%_NIXsTMO&>b\3p?"emnbm'Uh8s?S>Bu\?^IB+594'oU@ht;JP+:'Fn!Yler!Q#deee~>endstream
|
||||
endobj
|
||||
22 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 704
|
||||
>>
|
||||
stream
|
||||
Gas1\fl!<6'Rf^W*6hCpFZd)e?LjD^N>a6<2qjTn+"6Y1/H[G`-rQ=[mq!B(1hcquI(B!AEu.IT\n1W]G/3DHMfT3(OK9Q^f17Oa2IX?<=%6=5K1A[)?@i!P]hkh6J_4r%Q'ZI,Eb@8:PMA1eTIA)hBi,&8:7)0n7TcS)SW&Oa:Z<U:PTjke@q5GOnUj$Wb4FBsl:>Oe&/]]6+fQ&2dTjlG`^k84\pFDL!q49SW3]3$k4mA(+knhU.V3UC0gD`)D;Bk\]Erd*05l$-BTA5Q6up^r*T1_8GYIZLj'RNZ1'T=Q;m(H!&*\CEUsK?++/u,a+JT.7`bHumo[F8gV3'P1_8`l9Hs89o($6tm]>oqGC\qS%[[_%Zg;(feG/S?nKfufQ]hcWp0?^ISZ0n:Y2UB(B?$CX7.gMtL_.Y!jBp1@LEphkpR)$YYPqb"Ma_<PG*TEu5VU(3<=>sCMh%.<\4G*#K=E$4Ca?e]eAuQ2\bY;VRf<nUlZH_t([`Vt9&$e%HKN$)qAX.sp\!u>bH&Uuk/8u9&?!>U"@!Qi7<p=JX/<?DFPs&[mE>pA"*+olORo<LkE0o_Ala.f9OV%X*'/PbWI/\dZ2PD<JcqI`=%b]%$MYbqrU)+FoauN13od%_3Zma+7dlS@!F7%TZkLZNqq@qh!2s%6I.uW*TK*7$gIa<M>24_Le&DOL8FE#%p!mdba'E~>endstream
|
||||
Gas1\fl!<6'Rf^W*6hCpFZd)e?LjD^N>a6<2qjTn+"6Y1/H[G`-rQ=[mq!B(1hcquI(B!AEu.IT\n1W]G/3DHMfT3(OK9Q^f17Oa2IX?<=%6=5K1A[)?@i!P]hkh6J_4r%Q'ZI,Eb@8:PMA1eTIA)hBi,&8:7)0n7TcS)SW&Oa:Z<U:PTjke@q5GOnUj$Wb4FBsl:>Oe&/]]6+fQ&2dTjlG`^k84\pFDL!q49SW3]3$k4mA(+knhU.V3UC0gD`)D;Bk\]Erd*05l$-BTA5Q6up^r*T1_8GYIZLj'RNZ1'0%M;m(H!&*\CEUsK?++/u,a+JT.7`bHumo[F8gV3'P1_8`l9Hs89o($6tm]>oqGC\qS%[[_%Zg;(feG/S?nKfufQ]hcWp0?^ISZ0n:Y2UB(B?$CX7.gMtL_.Y!jBp1@LEphkpR)$YYPqb"Ma_<PG*TEu5VU(3<=>sCMh%.<\4G*#K=E$4Ca?e]eAuQ2\bY;VRf<nUlZH_t([`Vt9&$e%HKN$)qAX.sp\!u>bH&Uuk/8u9&?!>U"@!Qi7<p=JX/<?DFPs&[mE>pA"*+olORo<LkE0o_Ala.f9OV%X*'/PbWI/\dZ2PD<JcqI`=%b]%$MYbqrU)+FoauN13od%_3Zma+7dlS@!F7%TZkLZNqq@qh!2s%6I.uW*TK*7$gIa<M>24_Le&DOL8FE#%p!m'UG&c~>endstream
|
||||
endobj
|
||||
23 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1519
|
||||
>>
|
||||
stream
|
||||
GasIg?$Dc-&:N_C9_5'U8*g*TQM0seBp;)dl_q8OIN5!?K@!f=7Nd=7fD5*1?!tJY[OfP91,F8ipYM<L5k2bYs'u6$IL\ji)))QlCLE;rR%M0)mbN/A#<\57&>?%Y306[u5:BT>%XpZpLdqjf%>bE<8B$B_OTLPl@E:b`2-dof(m$GEToqYTo)f_Tk:]BA3DM/_*sBu4rs#)Nn0/K%kR_A)`F*AqR\X1f+UM_/kehcMUXLk4;ts=nFHrqc,(m)2;CCcN>]Ln&nT9.`<GAki9DG1S3\.WXSaYFPr!)<PbZqjV;KCbA]Vk9qF9Tkn]MuN&\dgf[=(r_.hi%(RY%\h'i!n%p.O#!)EA(X(E)5E/-m8[1^rGCuWGgTpk4+O0.TLDGX2[aE('_E9ijUh&kJm"G.E5%02\_rkjF`@B=Dd'uZi^U9D!s0@iEOmHUb34$ZQpUZ:h9@Z5W6n?NF(b(\+VANbbs=oUQ:-kQFm5q%6]#A`[Kf'E<-L.$KWeMAYQXeK[n9Dr7[&Nf_?';ho@[7?kMu'8c2/o:Wjq@9S.[tVXZuc3^6#e+JOl)GPt*PF\GnL`G#o]K*_"shf8mq1VM5i:Nd'qBPT>S36RDT&+L-1HEGX*UfG[dDahCi-(Ia0SmTaV^-A%bH3N&$?`3pd-TD?nqOo0coP</9M@4qqGLr:tQF9m4#d5%Xj2j!VCP3YM4K59!m"Sag#mceQm#S*r-Lok._tkO1?oF5go+@N-cj",bUo]\Gi'oD"pL'@-.b/l?]3r"8bE,eJ3RA7Oj54Fsh%#TL5\.DoLU\:cLbg(Pjs>DFfM_&!#gRS'fB'N`ZUYkM?Dgr;)D5-/KHMI:.`H7XD-8,dX,,'qjND@[H9Al%SkZD;TD\;,&3hGS9co##CaF)37&X:jVj!%\)(^[nllU0[JqSaIg@*:7V'3rYPg>hk?h`TjkGDZi^SJrO*SfpMp]^Lsp.=+ON7f8.gg6I<Wa1Q-8osbas5O6O;mjTdoFEY+-mPj8pm11cXS%SnP.<4J-_@pPjl]bMkZ'^fQdLL>':j^BeXJ$;[V<I%;8fV/8h'Ws?>K9LU7fuoQqQ&e)_r@rO:Rb@aE2jSle/[cP3QF[/mgJMMmP'\CnO1kJ>h;CF'KU]_PT,@=c9LAr@?07Xik-_/i^++PfEKm.*@7pfs56cX_eH,2)67AkL\dcQ,W;XfqlY\8nfG,p)iob.ip5-06qpSRlGi4c_54R-@#73J;Q9P)0R`TCbY+%WZM]NC5e4YeNdr^MM=P;kK+W(c]9bAWt#,Fr9#!;HN7-sUjh6pk+L8u-cKpBB5fl:eK?B*34jQb!0ise!0RrCBDgSYHEjIW<"6kmY-<[eKfXglh`To96`Z,>a'a;;i7r'fYW>;e&13fFjfecNcG7NPSH5>5$`<3@d2iJV_o$/B4WbJKN2I;u9lYf'Zmf`#3kNqNFPtM,]n(kt/Z6(9)"#b/^qU%2RW;9^Vmfdo[P]^Gfl/W([I;+LbHr,0ANdc>06ZmW'*WX\"5I;DC&~>endstream
|
||||
GasIg?$Dc-&:N_C9_5'U8*g*TQM0seBp;)dl_q8OIN5!?K@!f=7Nd=7fD5*1?!tJY[OfP91,F8ipYM<L5k2bYs'u6$IL\ji)))QlCLE;rR%M0)mbN/A#<\57&>?%Y306[u5:BT>%XpZpLdqjf%>bE<8B$B_OTLPl@E:b`2-dof(m$GEToqYTo)f_Tk:]BA3DM/_*sBu4rs#)Nn0/K%kR_A)`F*AqR\X1f+UM_/kehcMUXLk4;ts=nFHrqc,(m)2;CCcN>]Ln&nT9.`<GAki9DG1S3\.WXSaYFPr!)<PbZqjV;KCbA]Vk9qF9P><?E.:N?&+uiX#,mRn&>)9f<bu$n-3Ps'bQ%P\/2>$\0l6(P`UG)@,l7!e@0<Ho6<eSQ)Zd_<F[<]$No6-nQVL$F(9I4'OrJS)iDupo"i9\XL<*Kg49A-[eH31n1Es4;AY/#=V?d=-o-0h+<+s[7PFAO>C2Z7k#63sd7;(p9AY2tL*"#[A!CrO\,_8'L%:Mb1==hm_Wk]]IdP)bD#B+Yn)G?VYR#OO,lT(HVe(u0-G_kuds.QBSKB%C&5brP]Da(c3[QDaij=N?6%jLJDn1JIR9o.E-Td"s['^`:S7P7;LNj%S^"2EPd]-pC[j#2E&l'g(c`^qfhk*Sl]n1+#YLENm':a\GrD8YBqDE+-`<AMt]5(,J93WqUK\$U=nRNKf28Y>aSlF3!G!iEo"GBAcp.&(tPB^u(@Ju9S0H8/oq1qcQBS/)l;V&o4E$H4"HSEYQQ0Q&[>qk!WA]Up`*,(,8naEdJD?n96+L9ds6emYl`#0'co+F5^CoMQ!"R!AOlZ-7kfcuGaYL>%.%2Z*(64a_XQ/X^=[O`&m<CH"snms^>4e>t#c_adY:]>W&L`[8eVN4#L[Z\.*,#g/Fe&fSi%$njGp(+Y>5siD5mJ#bWdZ@ugb3.$qYPW=pF42hE?W,t8%W:qaquZgJq]p)8`bZ/RDQcbYeLj<'V)`pls)EY8WS6?Bq?NC&P`aNWHqX,Bep9grakW56'@5Kco(/paoW"JDbNM9ZM9\B\l:mNXgGE9N-t:dRV3HBJYI/]a;:+QHbbaXn%@N2IaG3G[A@atep$CBl8Tc^>Q`ljb7G8M>2Gg,F5h,5]3Ne<i@FH+1X@:d1rY=V,f&a+j(S',&8n36G']h[ICtUVBf!^:Q)OV,1o5!pBb$oXgm*al>V6gdQq[\"B'os+'QTW!:9q8rUkKl,9'0Q/*5fF\9%(d?:2OO,#eIMlb29*\hC*5E?7DkjYo43iOk=:o1<<n%3rc=(Y4b,%t;Eo+sF3n\!PN"K\1UnFXC600%S6`il!6WPC!6L&]1]D8g]i\8<WeTOG=4kEn663nqD]\H-U".,Z@k^)XE,INn=<41C#a<K4EnGn7B4,99c2^Z+"]KQ[BTE5fiF+R\Sr\d```!3!VRSoNg(^q"S_\$b3cJc'hS@!uQIFSWN-8o(i84ST9t;\@dp&nrgR8q_CcIfOg3;SaAQk&SZ6%oZ(VBJ<M#t?i!QG3#BE~>endstream
|
||||
endobj
|
||||
24 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1952
|
||||
>>
|
||||
stream
|
||||
Gb!;$=`<%Qpg(Yo6\0,h'/QEoMX%DHBt@d,dbAPEr5)"3X]U?Oa[t)k^Q5sS[OI)M[1/%iaR;=7JDunqs'Z9(F:>(n))*#L;d_4t@=/BrO0+HYZ+986*Y:h<-a8.)Nqn3s=W)ISnA#MN#jN)^]AO#cKEq_5Gg?&O%pHgAZ,M7gSGL)+,+-CSh`C3;DVL!$,p)6ck4s`q@E8f^Dl?#YlQ62G*NW\LKBft"1=,]&SAN[s=77g#O*mg^E1Z5!r*=%Pc:aPW[L[!eUU-\NMc*"59\lWm?`#;'+2R^j`fCS3!IWM,M21/o_nT.S0G!YMPkhZjqc_;)9EH<OH%Rkh!HG^pe>ImX%eW[8#6f!*-lCpQguXW$[R]Uk\!C.):FLA)@*KJ3/se8agVXc0h%NuJ)@i-Bb^euE!o+T:d(sm-]r**J>mQS.G+;YChm35-m/YND95)_EM?G:IOj2jFN</4927G')1>c:.VpC@i<6!+<BZstZ1.I*PR-al@\;p&HV)!7f(W'oADa"EqGm-DTp,7;.&M-2Z?%[X@dRC<)cHqd_paM251&hF&o5pB:9#F@(:M%&'l$Sab?SW37d*>%<=$lji[sXF46!UrUX^0W,g(H/BC0ErLWtZ7nY"P$;Zk7O#WtO<VT2dY+e-TYt^5C+g\0t<s-)Dr('^hh17fsY?8p$!P:4],d\WP<HXIY\f]GP%Qea$7OSK-uKTXEqd@(^6-\_#m8&3?'CK_bUR,16*IL6g]Tg'1Z3kt)no(5#5nO>;AHK51W?MG)IYjJYChqV5d[*1a"TnHGH"H)["fMrnjamqD9*06mVQGCMA]ESXIrn,CGG\^'fJNiCY#2;Cf_gaBN"_QD5oS=&uq`bM8n3\:iGm"kOK\]&\]Q=$_V1*00MUfMeM$t/(>X?q0]O"sh9""o1>R,/pg4g$lcVQnPu-HTd4k%Q<OW.5SI.$mSthoOjiDth?,2f\O4A*ak2b#ea$1Xe*J7V=)FA1BmiL3&bk20&c`dk]%QdOO"GjNYD8lT*t:L"\]s_:`Y<lIchk?/,=dO;luMdTTn"oY%^aN%*t/FjBoqJ0pkr1`V3@^5ARK;n^=<*O*j3+MF9[gTbm%'a\QXkn9cV9M1P(_@VCu.U><(mkE5j2P8dP/RM&Z.)?TYTWeL/dLp*ka'dn&>iHl5R^DY^mJe_mgl]jrA-Sk[:ihbb103'76jbr4<#3KrUm.U<(l*9gSKB>4]N=qZ2f-<)//u'Pg.<Y^W8U]&nI-pS<N_VmCS;gqU"j+$RUQr2YtrVPWarZg-B0RQ2Yp+IK'3@)GI5k7q=Q2U$2A^;.;(Ebq$uK?8/Z"Pe+oKYQVm+C)"c-X!EJ=K@V]Z/4]Z=.^0b5'FDH`p$>L(E9ANkV-e,!lE(.-\6EB#*';'9jX[':0!=<SW]%<m3qlJK#;:)EfW.&3E?XJW*CYAlc4YG4`MOk(,e(U>\\`nl2qd0S[9)`p6qeIlARtL#=meCSBC"m8`!W:H,_urG<3-bZ&[-8uXj[5Q/?H1[`e!^O/5iF]@GAMUHa'=oFr"d=!6<moG.W49%S>-g3fO3:L#GcX@^4aEorL!JU$HZoUnt\SBDB;Tsj4?!]%3E1!^^$>J*umbu4q/"SnTd!o!m\C\_2dNV<*8+EZ.d[JGI<Y%MU(3G=q@gd%#^*C?=?:$<EN_kMO3I?$r<^5B"U#X$40H/_QiSd?8oB,F*KqB+<9#s1P`OZ.YbPu&C,Xd3"GI05*?*o%V^9C)Fu#84FBkm%J;rfkR:l0+!*d]4iHuu`<uuc+K,Z;S0"+P$$s'=YQs6ME)L'<I<A8@@>F5"oGfcjIP<mh])((rgT`@rPE8>G0u0T#U>=(galmnE%<f3@^M['JA?ur)5I%p`L9h8h*`I.UJh@V6qT8u-M-ACV2DAs9/Rh$Je]_Rl*@Olc_3J-bm&Al;@$.@s6g<-;qc]mm&7GGE=&9f,~>endstream
|
||||
Gb!;$=`<%Qpg(Yo6\0,h'/QEoMX%DHBt@d,dbAPEr5)"3X]U?Oa[t)k^Q5sS[OI)M[1/%iaR;=7JDunqs'Z9(F:>(n))*#L;d_4t@=/BrO0+HYZ+986*Y:h<-a8.)Nqn3s=W)ISnA#MN#jN)^]AO#cKEq_5Gg?&O%pHgAZ,M7gSGL)+,+-CSh`C3;DVL!$,p)6ck4s`q@E8f^Dl?#YlQ62G*NW\LKBft"1=,]&SAN[s=77g#O*mg^E1Z5!r*=%Pc:aPW[L[!eUU-\NMc*"59\lWm?`#;'+2R^j`fCS3!IWM,M21/o_nT.S0F.)EPkhZjqc_;)9EH<OH%Rkh!HG^pe>ImX%eW[8#6f!*-lCpQguXW$[R]Uk\!C.):FLA)@*KJ3/se8agVXc0h%NuJ)@i-Bb^euE!o+T:d(sm-]r**J>mQS.G+;YChm35-m/YND95)_EM?G:IOj2jFN</4927G')1>c:.VpC@i<6!+<BZstZ1.I*PR-al@\;p&HV)!7f(W'oADa"EqGm-DTp,7;.&M-2Z?%[X@dRC<)cHqd_paM251&hF&o5pB:9#F@(:M%&'l$Sab?SW37d*>%<=$lji[sXF46!UrUX^0W,g(H/BC0ErLWtZ7nY"P$;Zk7O#WtO<VT2dY+e-TYt^5C+g\0t<s-)Dr('^hh17fsY?8p$!P:4],d\WP<HXIY\f]GP%Qea$7OSK-uKTXEqd@(^6-\_#m8&3?'CK_bUR,16*IL6g]Tg'1Z3kt)no(5#5nO>;AHK51W?MG)IYjJYChqV5d[*1a"TnHGH"H)["fMrnjamqD9*06mVQGCMA]ESXIrn,CGG\^'fJNiCY#2;Cf_gaBN"_QD5oS=&uq`bM8n3\:iGm"kOK\]&\]Q=$_V1*00MUfMeM$t/(>X?q0]O"sh9""o1>R,/pg4g$lcVQnPu-HTd4k%Q<OW.5SI.$mSthoOjiDth?,2f\O4A*ak2b#ea$1Xe*J7V=)FA1BmiL3&bk20&c`dk]%QdOO"GjNYD8lT*t:L"\]s_:`Y<lIchk?/,=dO;luMdTTn"oY%^aN%*t/FjBoqJ0pkr1`V3@^5ARK;n^=<*O*j3+MF9[gTbm%'a\QXkn9cV9M1P(_@VCu.U><(mkE5j2P8dP/RM&Z.)?TYTWeL/dLp*ka'dn&>iHl5R^DY^mJe_mgl]jrA-Sk[:ihbb103'76jbr4<#3KrUm.U<(l*9gSKB>4]N=qZ2f-<)//u'Pg.<Y^W8U]&nI-pS<N_VmCS;gqU"j+$RUQr2YtrVPWarZg-B0RQ2Yp+IK'3@)GI5k7q=Q2U$2A^;.;(Ebq$uK?8/Z"Pe+oKYQVm+C)"c-X!EJ=K@V]Z/4]Z=.^0b5'FDH`p$>L(E9ANkV-e,!lE(.-\6EB#*';'9jX[':0!=<SW]%<m3qlJK#;:)EfW.&3E?XJW*CYAlc4YG4`MOk(,e(U>\\`nl2qd0S[9)`p6qeIlARtL#=meCSBC"m8`!W:H,_urG<3-bZ&[-8uXj[5Q/?H1[`e!^O/5iF]@GAMUHa'=oFr"d=!6<moG.W49%S>-g3fO3:L#GcX@^4aEorL!JU$HZoUnt\SBDB;Tsj4?!]%3E1!^^$>J*umbu4q/"SnTd!o!m\C\_2dNV<*8+EZ.d[JGI<Y%MU(3G=q@gd%#^*C?=?:$<EN_kMO3I?$r<^5B"U#X$40H/_QiSd?8oB,F*KqB+<9#s1P`OZ.YbPu&C,Xd3"GI05*?*o%V^9C)Fu#84FBkm%J;rfkR:l0+!*d]4iHuu`<uuc+K,Z;S0"+P$$s'=YQs6ME)L'<I<A8@@>F5"oGfcjIP<mh])((rgT`@rPE8>G0u0T#U>=(galmnE%<f3@^M['JA?ur)5I%p`L9h8h*`I.UJh@V6qT8u-M-ACV2DAs9/Rh$Je]_Rl*@Olc_3J-bm&Al;@$.@s6g<-;qc]mm&7GGE/[u]h~>endstream
|
||||
endobj
|
||||
25 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1559
|
||||
>>
|
||||
stream
|
||||
Gau`S9lo&I&A@[:m,ZO'R0k9+O9F=%e&H8dC#do^Ep3`O+UJbfW$GrnrUjIc9<p.;DEH<NZ63Tlmk&]!D]oHO^1d,+('&9NE.1B0176@<El)8]!T$Pa5<Qe,(@r).+T*?j5a&q]6+QInKFs%RQ;A-A9LR*U$VH(C">F'sa#&NK_>K9_J]*Zm$P#SO0G;cso`9md6Y]B5-qYPan,*jE]nAeEGN`Z97PM3Bh51D+J.nQ0E<t"pc@5TakrnrX(TL)of&lI+?)i!L_s`Q'E:JBt;,t3-<<b[d4-ePpThPDB9NNorj1#Tg3G0U*pE&=D:_h=gE2[M5Ddfj265p7$!R@kcdiKoHSYL2?L^8Eh\Sr^iD299p%sR7?GJ*+*/o",7KF>uVB5*<&-1"UF<Y'usWJ;=ETfAis0&*lg')NA=(a$'L?G-g2a)"<+dZ0fB2"mu;5Dkt!rr>#jUU^6cVFGOXd9R6l9u1:Nr$F5$/(fLH79D+B.@f-l)-L^$]\!9,Of$-Eo-kIDJZ7PZoo'TJB*_Yg&fR$f<cnRDRZ4BuAY@VT9UQ5cMo1o0*R=Dff[rf]a3BamDbnB4R`i(H-.k;\b7Nesa0Y>:Oi_A6*UIkXIqj(6-YliL'kC@93-]c\3oi"+"Du@HR[I>0PJKT11nO2XaAk73c#3%g7i40sT2@BOPa2s4_n]O!H<[Cf+I-Oo;\N<iRrj=e"*uKHoqJftFSB6a;M-1/;sDN0AL[3j'=q*gma7jFJtB^qU$OIb0CVlj2Y5D#=tlQVRAj)R"^Ks#S[IPf,HJk#-lLd?PH(8EIt_nk":J%i)"s#`kp-=1$?!"/'#JMtSRR'kh.$r(NTM5rglTQ%Uo9ZZHH-J.1)Tpn7D?&W;bnSGRh@6P#$3U,Fn["f-bST`Ti4aTC"'M[7c*>=@GSP#^tCe#N[I$K_5h"@^ppX`=nkhO!JG3_;E`WHNA`:S?Jle-rubctl;Jj@V6P%9lo'($ptHUh">O=nd]a;Jdj2e^(rj!u3JI0'T$\,4'.>saa),5nF1K>FmhY>hL?aVOci*WX7eAU<2p;H,!U63fL/QW=>1<P!<DSM0ELe%hO-3V$B$)4Hp^SfC,o:psr4Np&P.dLbYGo#'SogNrlN'0]:V/kY&k6"\N:%CoqIJ+X.OE8[$+3doe_#;(j6>d6n@*K+Nl)5[*RKmU1kYfmdg6dJMo4a4hap)m5fD'3n0I@Z"qQG+Qi,fN."PgHhh1`OY5c!QU4dKG3nkFgcVgo3TjXNGCj-4uV)29n>us%)98+@Pp`;.XL#kVI2Gn-[bTWk7e>:-EQ%:i_D=%Z?Ap?*cY&h_0k'SBiMU^1C&UYX_.#:;"J#W#XmhR=Xf648'CF6Su<Ah5B8kl\/)c!5FIAaku!/V%Jl^_ADcVjs!08t#nG^1^HHAscSrMCo\eNUlMl?oL(7e#$K2M2@?;RtOoo5inj-g`?"es$!-do$l.]JER<(^f%j.a+n;E4rB>DJ*5f0SXb'+"ir5F,Nt`V.1knYB`!3'jb6X=b#:@Z@)$nf=%cG,B)>!lfbo'R+^j*OWo>M(C"&T7K~>endstream
|
||||
Gau`S9lo&I&A@[:m,ZO'R0k9+O9F=%e&H8dC#do^Ep3`O+UJbfW$GrnrUjIc9<p.;DEH<NZ63Tlmk&]!D]oHO^1d,+('&9NE.1B0176@<El)8]!T$Pa5<Qe,(@r).+T*?j5a&q]6+QInKFs%RQ;A-A9LR*U$VH(C">F'sa#&NK_>K9_J]*Zm$P#SO0G;cso`9md6Y]B5-qYPan,*jE]nAeEGN`Z97PM3Bh51D+J.nQ0E<t"pc@5TakrnrX(TL)of&lI+?)i!L_s`Q'E:JBt;,t3-<<b[d4-ePpThPDB9NNorj1#Tg3G0U*pE&=D:_h=WE2[M5Ddfj265p7$!R@kcdiKoHSYL2?L^8Eh\Sr^iD299p%sR7?GJ*+*/o",7KF>uVB5*<&-1"UF<Y'usWJ;=ETfAis0&*lg')NA=(a$'L?G-g2a)"<+dZ0fB2"mu;5Dkt!rr>#jUU^6cVFGOXd9R6l9u1:Nr$F5$/(fLH76j5k'[CQqN%DA"?>KY'85j$3q%Sb]^sm;hH:A7`1P@;n$'!(nX1A?]bska!1/R::VG%/m`F6uS%d/1CCi#rjj6"GG[jU3*c"1)5''pXiAI*@Jj&u2XaCM^V%X'mg5;g$VP;Ooa$8SYW*5&ri*V,R&Ji73_btP7)a^CfS)Gg,gjJj3UB"*#D,E*SJc_q]b8kY$+@:66K]e.bnO@h<sWJR_E9fg/C!POc_H;WBJ\pL\AWBh-SWH@:SZBTWp$/MQnpZPK^6-int:j*\l(O.BES,$c"/XXk<bZ(Rd!j6J"cJ!;nOk&JLP`5"[8_$W3^HsppJd&)E%/WQAF:s-S"ZKL($"5cK:9d$FmP0LO7e;WIDTH<#;H-=h^#K;R)%?MH,%"K<W@&:49o5-8K<#m'\pG!n'41:kd&EqeZt\8h,B%[ZYjPdLi9VI"`tKQai75&0@,0DA/:8l8!(+(jWLdn57[oYd05qDRIh8kJor/M1db)'WG+6*Mr9XkoJs`brBikZ6BbFi?$tJ&!S3hQNcY/.+#o"GAj0gXr\_Q5^G74.D6hNjckC.e<,C5j/)s.4QJFlVC6`KB//S]gLW[GdS\BYPo7nG7"1Z]-_I#!u]P)I"trn`QNakkABf@4#N:V'<Jo`1V?Vd1Dg$)9$i7X#2HIBmSgQ',^iK\@pHC@&[OnT=D+ptN?&a5I2i%VSBeR_f#rkl_B``F3kUmj'#q+Q@'*GS50hK*T;Q9E+E7Pe]!5n%nobf7.$9;*m64SS\boB.;H*:bY]^[Q=Z!;AuWrY,e)%V*^28I#f,=_X\g_Rj^*>jq(I,lI'.^b!;H@[WVfZ1V=SBf=BsSF2!bE7I'0]#X/bj'Z?`"^XROgG70YgCV*W$23V:KWZ'W1V'apS%B%X^^/JDuJ4'R6ohM^]k:$J!(WJKG]KDE_]geIeIT$oiC7eoaFhZ<O,P^S6RmDa0WSD?sq)NGpPP,\!lcK+RBdjB'hO1BY$jCMpQ"<u.\DC7Z\$I[n(dkpO%i7q+\](Pkd]o!rf=W$*$El+gX?Z/0=h]'HCKoB4Ogj`!F`cFNb\VJ&8.iZ7$g`4P6i~>endstream
|
||||
endobj
|
||||
26 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1871
|
||||
>>
|
||||
stream
|
||||
Gb"/'8TWWE'Ya0?]L`WR1(f+l$^g0h`b@>,4fRHkm_ousKI#7s_31&3o[)LP#O[a$=`RgB;TU/HO21Kj]Yt:-ITcUgV>tP3nFA^E`aLn1AeQ,\VsnS=rGE58EmJoZ#YB`rJb[*0TU8q$3%f3!mPBsS,LWp7QAeB!9Am>+o9]c:K%Y4'!V'F[8K3IrN[rpiqZUt"8(KS<>h<??ho[=+GWp+OktoUd&&E2gCR+0^KhWt:49q`4*.@\FiWMI1\LPLNed6`'$5G0C\E)Ftj-.T)=iP$L,'^/+<2/t`A^rT(?GZ9EiAJK]D,)&bD\`:OQ,"BT93LL^"+(g-j"(0j_YK-Km=8Hu$L1J[KV0C_@].$oJVK<(G&8$nM`[`Fm:hEr4[Q,"7l2jQ<An9WbJt<p>8(1'%<%VEbWthH+4p;uo[naQCO-"B6AP\dpPHlY/K8$E*f0Mp6Al=O,l#^ofl$6.(hk$p$`f::o5.b4o"BmN3d=pSg[H&jN)@G<irU(W$L,XcA^8@MKJd@J^Q.g>)W)q?2SP"Rk%!2Li*WE,<!brB:\8iE:ZYl5i;0ek"EX:0q-/hs[$$!D%kMQ-XHBGk(RMAQAJJj!aHN9ckotgPlN08L5:U\R6D]9u^r;ZTjEZT&65c]39(3\)6B`.82iEW=,E[2=nWjBmf4pou]i2ncHgLg9ZL?,Lj1-E.[!pj,XLA`/doj.eJh&l,D`r#C,Tb^1D7>U$g[$V53lmk)bAmVb$8Z(m+U`l'5/c!ljk$UC-.ia&'Al/)qgLT^e0.FNS\jGF*(LT1i&>_(P30?SN.u;3qNc,tMsi_ajU\)bfL+,JdquT!AC,=,$TRuC`d2#tpB%L]p_mm:K)eD[lPSNQiI`Oln"J\<4Sb=:-U'*_1Q3ei5n`''pi:h0Mr!Q5H,FX_khp?f0&L3q%n^CEl>.6^+k':N-`qeY.?C,t^6K$UV(fFUA@JX^)H8FL!diue8'hLaDa0ea5`hYT11[S#G;H^^95MXc)?WI6`*atC?^lkM)Zsoi#]E=3C>#31FC@<aZ#!"V`duXKC+c2<ou7^!XU2,$k4tl?UJ;9KXi%1N*4%p=/k*CNQ_:6!eF6jl"&I(eCH@!nJX:']jIcSqA8V&Og'kG0gB.J*m0C5%47J*Q)973I,E=>YX,D1njXJ,%R7!1F2YVgZ<nee#n=$Z?XG92Ro='(5&B#6PYA@G=quD#9DIUhP9hg;1!98N2'Nc:tMMp<[*)12%kV<!GOr$.t_<YbP<jBqR%_E=blNg<u2io\VU]l_L[k,om"9`(n7#+'+$[o9t`/X:>I";Uls$$3tqdB/*mXrhd@^p</+]ehp/V5NYg_gcse&B8A<OaU^Bb4NNj1Go"I]OVCdh&^LBpDr(<_eTqW#s@2f8IlpAV@[/HADOpM4EP'>pm0n9Z-L6@o(^-1S!Xo7D/ge`?b$RThj`4KaqL4i:Y0J*;'pkPLn2@a.>%F]sKD$bfCV0pp8q3?0KsMg!KDKD+hud2ObhuHnLJ_e-&8od^I&<HhhJ:X)Vk-Y6qD44]=YS/C_j@"U,,%WnQKcE'VOVLX$QtCXU?\Bk3V_92us>MfDnSY>h'`K?i":YHN^HRk\kK0mW%!4DBfH$@]qep@XW]Z5"1g46QXN>Pp(Oi4=`Jju<P$4U<ja*Z,tQ#<V?@$lYJVo<uetQ-Wl@k=3)oRPiB+&#dACl_:JF3LjA7f7V*OaC9l!4\;*I+B"COSo&DLEO_0mVt@dj+JmruiUsk1b:J8*\S:f,,)2eM;;.9f$q^&(-HrYZ;!]*fl/QJ?n2a,#?`W*g/T_UC:]D<55%caL3E=%Gq`-nN+&Tk$kuSCt:GImWNB2hO^<1DBc7>GM7HN$9mkqF-=FUD\9N>[~>endstream
|
||||
Gb"/'8TWWE'Ya0?]L`WR1(f+l$^g0h`b@>,4fRHkm_ousKI#7s_31&3o[)LP#O[a$=`RgB;TU/HO21Kj]Yt:-ITcUgV>tP3nFA^E`aLn1AeQ,\VsnS=rGE58EmJoZ#YB`rJb[*0TU8q$3%f3!mPBsS,LWp7QAeB!9Am>+o9]c:K%Y4'!V'F[8K3IrN[rpiqZUt"8(KS<>h<??ho[=+GWp+OktoUd&&E2gCR+0^KhWt:49q`4*.@\FiWMI1\LPLNed6`'$5G0C\E)Ftj-.T)=iP$L,'^/+<2/t`A^rT(?GZ9EiAJK]D,)&bD\`:OQ,!O\V6'<jJNXD'E>F'EiI"+aG!IZu"nef>6;S2@Z.%Ws5f6-$]=&*H`?!C^p9_ct*hh)L,8up9.[r-<j^X1sXU2,$L,Vd]AtXI5O6_/uH>LEd28&u1+[c@Cqnut=Q45K]%n(asTg]28&q&nsCcD*'N&2'IKiQ0Xq)5C*q;0%b*P="eD0V"E`[Kf/E<-JfKlgkm12#Ya_AY56?Usm/NUIO0)rF$do.b,an1R`QWWXN2-i1H3Vt-uUE.-FFJiS2)r2mst>04S3#F77Qek";qMb@19ZAPtKj@N1mFHJncFTJ,a*u2=9Ti+0Ki*o@eo"7@NTo@H*-$Ti%Tui2-Rmk?/OiTW/GY<\GCUMKKhPjuB]ljBWg%T.7n_=_'>/0KQf%YuSl)`Vm_%iN'\":&\&s$nT[TghMD0?aU*TYMPA\!=AKc)SrO9IoN+6)SGo'9>2''okNM=7.%I6X9?l4>88:1<]3NhZk)n=-sO8TS0:7RK.*IET.K`V1CAnd!QAm%J.6kr)cK1?^^'"W[I\@m)NKHND_iHjqs.6%G`>Fc>e9n3IbqpJC@.T)?d.';(S@)+G@E+Gk"NHoXF)`U<?+]\thjFE"]nQZ'1t#Gj0]FZ,0@OQe0bPLdI=PXj(Jhb&Tf;A`YeZ<L?j%B:6aJN`Rn,NsdA\"?Dk+@sje)7!>M]:%Ej-+;hlN<,eV@^)']Y>%F7N<-IoKJt2*[;=0)]!.cl=LP#;j$;m624%./H=Mj!eq@("o6f#[;5]06f&9U7NnL'/Q_Id89@-TKC3VGGJLBRC2''Kr^rs(iEmT@IZF9W8D2-f)m=>8Pp&j.#*VdS9N+5*5&]YZ=e\sVrne>Q#bb7U3RsVthX6gI"GYQk0ejH1:q:iSU#iZ09=155YIXo(-2_jI9VC'/SJ8r=T$ET3u`Pl_>N[?W#oGE$4aU9,Ki,uC8X&s!dLY[dBFTeYK)p"@;dK2o7>F+Iq!eN'rU;J+QKt^YJil63Z^;'mGIinTuIB`T%pVCJm0jHZSOK/Gs(-r]gmYhIul!iZ1.bkej1^L7bES^q!5Ltm]Bo(BaZq@K$.jmeIe;n8*lc!Is1;[<R]u0mI7*]c$Y*3*GVIB>,Z)?p'):%jHU0`GC@M3tdcmSCU63f2*n9X.`Nd;"qam8/[@o&M^?<S."An2;Sr7USU0(eM7D!:`6[\`%BRn\uK5*nc@C4[ZHC"m(/]mR8Xe[RI'=,#5USuJAd(@#J1Jc^RM<UK<B31sg<6g"cu2/-Wi1pTf@V()tZ`ON#:=/sQk60E!Xf@NB_bnrF6Qot$KT!ZL_"[?ICqteE?fnp0oSb%?b/cHMbE*^C`F.<=#*e]qk%u_$dK,s\0#)u:<H!=jub3(I[F!Furbo5cQ#?5.2F\u2^*6p1,lbVTbA?j#LSg;Q_&?/58caL=73*aSG;gRAEOOA'!n9SF)AJW,PgpDE&&]7Gb..'VCL89)O'B[mh.!?'Do^OaZGTEUMY>oPD(-7;2VuM]UT<k!7S>p&4r>_JbO/V!MoW*buV\mJ<7\)mb?Y)2\kEX>bU2oP-pR9bQXM4emO]>o~>endstream
|
||||
endobj
|
||||
27 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1724
|
||||
>>
|
||||
stream
|
||||
Gatm;>Ar7S'RnZ;35@5`D.A<r.$;YN]<5EAFC!Y3gOOD`A=9lkaHA&Nl*as66cl(`pnBCA*J?2eo:>c4$n-R-o0:n.HoH]$QOF^dfb0Yp!bSXp`Q\5?&KYsA![,4OI`-e*^AU=-no>"&&k4umTVs,.$4r(,V'6'_l(hi&8e&ta*WmTR.[:".=:hM%JDMXskK$hg+:P%BoK2l5'e^ci:-')qrBi8$_0/F2<*p3Z!ZAdi"-YZ.rGi@NMNt?-F\u]=_3?u`)u.LbKP/ocB2t3t7PE\HIAaD\]@"07"LB&74gr!-pd/p4TQpA/YB:""!*h!P/6gc9nLDdnL^#j-d&%g[aEN5.Weg+BM7trbE6h%l-sqWOKT4"SdQY7Ubi=j_.b%jeX5,3jQjie0-g8i$T%h-fVAQX9DC`SF;#h*\BC-Qa5dulKJDG;/0mq1@Qdc%5a!L7h01CU[S<,gAVoD!n`*7R_9\F@MqTG3`G+.=uM;![(^h&H;Xr-na+g/!Me[S9_r'FM$k54HE5A]g6_@Q0R7'HsWFq=V.e@_gEn16;.O]V&MH7TQCLq5RMW<_hJIX%WM/:*M`[*;Z&d,]o+OTg-&4>1`=k&jO&E1Ir].V$[%j!.+G3k9r5)98_-\2M;1hdAK1Z%X,+8[6VFISB?T'?Ac@A8,r>$-_]l>ED"qNsh"E"6%S[o0=,T^;bG^:'gW"Pdei;pcQjY%kr0C1>3^W'YT&da/s222*$=iMX]2$)c'#X(+cq]GsYA$fPe=#((r*q*:Bcn9]G`Q0Ch]QRGU9?]aud2"6dOG,hk[]!k3eYr=>Ae;Q7KJg4ReEQd$f+lTff"GP&R,rSu:!nf_a16'!<iA@Z^(98SN4hNkloJ?2YTY32.B];j%"-%Bj=is!q`"Sh'$"s]0fqJ&5`N_p'NW6\YU7=I+7g.+6`C(CD_lR_q>e=UJ]R5%$g-K6l7;$+tb361BbY2K%KSE><[O>G)`(-'%YHAirB7*nIeO<7DY";p'_r6-T-Os!XSPFH#fN<mKidA5>gW2=fuOTZYV:%imtF^@ei:JfC'gsje(2JE%$&:otA=QD`O.rRq3`JtSQYicEKKt=Q*N8*oMfdK\Hk38ER_.)'\,`RglD=d/WZ3?b!g=4lTGQ%jb%1!>oTjRkm0j@*]_S#$V>Mq\h\u\eFd-*SPef?;t=Dq!iUQL%pA'lC+8/Mp^PiD^CM*M\("M:RbjZ.IPE-`Qn"=3W9\qcEdkg.g'kK/.E8=st2B*jO?Q57o]13&VrFLj#]Irmm!MWArKApQ#IM6[f[#uoY?8,Tu'O4-$NGALIPH0@<Gs)#9\`WfIiY3XMd/l-Xp2d18rd[iC7??ZjsbpD0$,!($dTmerUS/cTGLc_,Lf]dYa"`&naNmf.V$dsY;"tc4db&k&>AK0=91)"p0*p4f=Z#I4V[gO`t(\Z6WGKAgS"C%g#8qm6<X!l9.5]Q<J`S]9mISB2@:$K[^0K5r(0($$URr$Q$=iP)rk$LPirsNr2&(C>e'5u9rLIud8ikcFd-82",)m!=IZMOM'2Q)H[i@g4emCk`tME/TkR,c$60QhMON)a$E>jng+)"XT3_/D4AE..W_5b*%rAos(-gqIOi8]T=W4E`P;e!ic`Y88^+Y(05,D"*a#Cdr;.j)UW'N)+\ns"`Z4!q\&#B!d,[5(9EUrRN]&'lQHCB*L[`<V0KLaO7r/Fh,NXaMN(RM4JJN3s*'E!L(:nUA~>endstream
|
||||
Gatm;>Ar7S'RnZ;35@5`D.A<r.$;YN]<5EAFC!Y3gOOD`A=9lkaHA&Nl*as66cl(`pnBCA*J?2eo:>c4$n-R-o0:n.HoH]$QOF^dfb0Yp!bSXp`Q\5?&KYsA![,4OI`-e*^AU=-no>"&&k4umTVs,.$4r(,V'6'_l(hi&8e&ta*WmTR.[:".=:hM%JDMXskK$hg+:P%BoK2l5'e^ci:-')qrBi8$_0/F2<*p3Z!ZAdi"-YZ.rGi@NMNt?-F\u]=_3?u`)u.LbKP/ocB2t3t7PE\HIAaD\]@"07"LB&74gr!-pd/p4TQpA/YB:#m#@&`W/6gc9nLDdnL^#j-d&%g[aEN5.Weg+BM7trbE6h%l-sqWOKT4"SdQY7Ubi=j_.b%jeX5,3jQjie0-g8i$T%h-fVAQX9DC`SF;#h*\BC-Qa5dulKJDG;/0mq1@Qdc%5a!L7h01CU[S<,gAVoD!n`*7R_9\F@MqTG3`G+.=uM;![(^h&H;Xr-na+g/!Me[S9_r'FM$k54HE5A]g6_@Q0R7'HsWFq=V.e@_gEn16;.O]V&MH7TQCLq5RMW<_hJIX%WM/:*M`[*;Z&d,]o+OTg-&4>1`=k&jO&E1Ir].V$[%j!.+G3k9r5)98_-\2M;1hdAK1Z%X,+8[6VFISB?T'?Ac@A8,r>$-_]l>ED"qNsh"E"6%S[o0=,T^;bG^:'gW"Pdei;pcQjY%kr0C1>3^W'YT&da/s222*$=iMX]2$)c'#X(+cq]GsYA$fPe=#((r*q*:Bcn9]G`Q0Ch]QYnglf]aud2"6dOG,hk[]!k3eYr=>Ae;Q7KJg4ReEQd$f+lTff"GP&R,rSu:!nf_a16'!<iA@Z^(98SN4hNkloJ?2YTY32.B];j%"-%Bj=is!q`"Sh'$"s]0fqJ&5`N_p'NW6\YU7=I+7g.+6`C(CD_lR_q>e=UJ]R5%$g-K6l7;$+tb361BbY2K%KSE><[O>G)`(-'%YHAirB7*nIeO<7DY";p'_r6-T-Os!XSPFH#fN<mKidA5>gW2=fuOTZYV:%imtF^@ei:JfC'gsje(2JE%$&:otA=QD`O.rRq3`JtSQYicEKKt=Q*N8*oMfdK\Hk38ER_.)'\,`RglD=d/WZ3?b!g=4lTGQ%jb%1!>oTjRkm0j@*]_S#$V>Mq\h\u\eFd-*SPef?;t=Dq!iUQL%pA'lC+8/Mp^PiD^CM*M\("M:RbjZ.IPE-`Qn"=3W9\qcEdkg.g'kK/.E8=st2B*jO?Q57o]13&VrFLj#]Irmm!MWArKApQ#IM6[f[#uoY?8,Tu'O4-$NGALIPH0@<Gs)#9\`WfIiY3XMd/l-Xp2d18rd[iC7??ZjsbpD0$,!($dTmerUS/cTGLc_,Lf]dYa"`&naNmf.V$dsY;"tc4db&k&>AK0=91)"p0*p4f=Z#I4V[gO`t(\Z6WGKAgS"C%g#8qm6<X!l9.5]Q<J`S]9mISB2@:$K[^0K5r(0($$URr$Q$=iP)rk$LPirsNr2&(C>e'5u9rLIud8ikcFd-82",)m!=IZMOM'2Q)H[i@g4emCk`tME/TkR,c$60QhMON)a$E>jng+)"XT3_/D4AE..W_5b*%rAos(-gqIOi8]T=W4E`P;e!ic`Y88^+Y(05,D"*a#Cdr;.j)UW'N)+\ns"`Z4!q\&#B!d,[5(9EUrRN]&'lQHCB*L[`<V0KLaO7r/Fh,NXaMN(RM4JJN3s*'E!HZ$NT`~>endstream
|
||||
endobj
|
||||
28 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1906
|
||||
>>
|
||||
stream
|
||||
Gb"/'968iG&AIa;CbHeVWF,]/8^O$mN:V#K2GFid8M@eS,UCb]$&+'!8Uc((+@X^3g!2Q@e^Bfr*oF[qliL]_n\a/^ZikV6L&E5#N5K`I9Fq6RGOT50IIRRRGpEG6^8-5%J],;$K6lKV&;2<fH-AP%Lr`,;OGl^J9Am<4MHC"hK)'JK!Js,]8HD5b+I(imof`[B8'unk@2N?WhruMjH8,^fm82($MdSMsF[l&&^*&XD;#o&Xp>5iJq&%uRKkf&4ecgFV[7Zbi:-"Bnn9B!+1jNS1#-ZRf.eL;OQ$ES_1RLA8Z:=W+QNV/^0&s]F%Boj%d25#b@6Z#q]Lm_%&^X$il4ti0SYd!a`:mu!_:\!lcUZ;P?\BVVdc1@BRseZ&nVC!kjJ\-_DO)Cr$Mh1ZfZm(%^(2/V11m6VXr-?@!VG#.CZk<sCcbNoE8*!-L8/Q%Ucf:VV5,.QZmbE6Y@P,P2e-BDl7G.h.f3pi^OKe9j4G:`g$rPd1I_\;N;LC%f9_&10pABB&D"Ggl>qV#3rGB7lhH'qJAk(79DC1+Ue6uXY-h-+a`V_B&&O_-4Ks/Cg@&U%UQ[7?gT\'@YZ@I2InWaO8Q'3*8h.n^VJ;qW=DsWS4t7P'1<D$JT=(i(;V;8>;K.a7E2FaN$rjbmjH>ZbX,3s@RQEZV:$Xu>/kgU>Rf[e/?K'`k$Ii"XiV2-?h99b:UYjr0[K\Uf)r?=MpC6Riflk%3l#.SilW1Vdo<H'`m@Frtb7'$!#DM_:XYhrXR(QTZ0_l/]-7RP1bVH-ECUZp&&3bu&r#Q&[-!c:A5mGe-0'ILKQ';X,M(u$5%_tZj5OuDiH^:cqN"h=^Ujin"`V18GC8oW]Dq7rA#5?:fa1@Spegq00E*kN'0ecOINP20gZ"P\3fZbMWDK-3!q%'aB0o=R?OP3hH(l\Z3RVq[3DpK'0;$EgkG]aE2\mEVhIBg[?O5cD^*_pu[T=i`OB`gqX`kh#Bo`PI@bS'.pe*!`,!n[)@G[#1u\9t[Er+8.5#i(u-76nU@'*mK+K^G!mdB-%#nKVFdf]Zm00QQW'<FTBZ75[I3+sZtg\h1)QZr_!Ri&jfn_oXO&b,;RjOS,:3oARV*Me$q_#cUo_Fr)cGNOJ!$\N%`+o]`FrA3J#F,@.3^@KSQHj$Lut]iljbB=k6l6K>f'[[0Rs_C08_Y(mCt^bg#(l4jLTfbe!A-HF;*8'qN9pV(@C3gj#;G5CS)#tERjSis^cIogp4]1W!Rmje>];&WAK?,Fp!Q8Hcl@BQh2A&1@LA2$r,.`#S2L5WrTQPgiB,%rMI;&D`a%#/Cf(e59kT&d"GV'i"9I>-&B'qUN:/f_J!pC&4=8B5_2gs/L)^5r(E@3Q1%e@&/GocZaa*B4^]4/pi)mm3o2LZM,Rj_1"k@!%KAkop?Okb)_#I^!EthFJG)@M_ab'3eoYF2j>p$lL/7fEIHNJE'=3kj2<QMrW'#1]$c$+=mq+?GVgi^su\!"(/2?VN#2idX7XeePDO[`XSTGO+tWZ"n`K"eY[4\,JCO9Zh>%$!`E<i3@:dCh8#igH35_<cjp6lhSKVQD/YAPkUtPk<b6E:j9?r-j9YM^At-HSG,'dH&OK+X:]j,aXKYS:n4d'?eTn;M+B.SmIt\4;"_)sBH&"?144Oca@^TbW3(2[ho!<b>OqLqtF+>=Qe0N6#F&]Qgn_D_&g^Pe9')GJ;Ij;m[F,o,3-rh6HQf8N[i1,P:5iRAt.oYWr%Suj`M1!U\QQuk7QTGE0\H#Fe=)MS./EaO^m-D8AD[h`n1WQ;4A)<.PdiDEQSrVZl^n6=gD:3`'YMi/LP4b964&H-MGGZb3KA6%ji'ZH[5KiPlT&jZq?_OuHG3T=V$/HP(eTUO)+NhX#;!-<J?pRgn2DKN0O/l=lnGWM\J,.U~>endstream
|
||||
Gb"/'968iG&AIa;CbHeVWF,]/8^O$mN:V#K2GFid8M@eS,UCb]$&+'!8Uc((+@X^3g!2Q@e^Bfr*oF[qliL]_n\a/^ZikV6L&E5#N5K`I9Fq6RGOT50IIRRRGpEG6^8-5%J],;$K6lKV&;2<fH-AP%Lr`,;OGl^J9Am<4MHC"hK)'JK!Js,]8HD5b+I(imof`[B8'unk@2N?WhruMjH8,^fm82($MdSMsF[l&&^*&XD;#o&Xp>5iJq&%uRKkf&4ecgFV[7Zbi:-"Bnn9B!+1jNS1#-ZRf.eL;OQ$ES_1RLA8Z:=W+QNV/^0&s]F%58mnd25#b@6Z#q]Lm_%&^X$il4ti0SYd!a`:mu!_:\!lcUZ;P?\BVVdc1@BRseZ&nVC!kjJ\-_DO)Cr$Mh1ZfZm(%^(2/V11m6VXr-?@!VG#.CZk<sCcbNoE8*!-L8/Q%Ucf:VV5,.QZmbE6Y@P,P2e-BDl7G.h.f3pi^OKe9j4G:`g$rPd1I_\;N;LC%f9_&10pABB&D"Ggl>qV#3rGB7lhH'qJAk(79DC1+Ue6uXY-h-+a`V_B&&O_-4Ks/Cg@&U%UQ[7?gT\'@YZ@I2InWaO8Q'3*8h.n^VJ;qW=DsWS4t7P'1<D$JT=(i(;V;8>;K.a7E2FaN$rjbmjH>ZbX,3s@RQEZV:$Xu>/kgU>Rf[e/?K'`k$Ii"XiV2-?h99b:UYjr0[K\Uf)r?=MpC6Riflk%3l#.SilW1Vdo<H'`m@Frtb7'$!#DM_:XYhrXR(QTZ0_l/]-7RP1bVH-ECUZp&&3bu&r#Q&[-!c:A5mGe-0'ILKQ';X,M(u$5%_tZj5OuDiH^:cqN"h=^Ujin"`V18GC8oW]Dq7rA#5?:fa1@Spegq00E*kN'0ecOINP20gZ"P\3fZbMWDK-3!q%'aB0o=R?OP3hH(l\Z3RVq[3DpK'0;$EgkG]aE2\mEVhIBg[?O5cD^*_pu[T=i`OB`gqX`kh#Bo`PI@bS'.pe*!`,!n[)@G[#1u\9t[Er+8.5#i(u-76nU@'*mK+K^G!mdB-%#nKVFdf]Zm00QQW'<FTBZ75[I3+sZtg\h1)QZr_!Ri&jfn_oXO&b,;RjOS,:3oARV*Me$q_#cUo_Fr)cGNOJ!$\N%`+o]`FrA3J#F,@.3^@KSQHj$Lut]iljbB=k6l6K>f'[[0Rs_C08_Y(mCt^bg#(l4jLTfbe!A-HF;*8'qN9pV(@C3gj#;G5CS)#tERjSis^cIogp4]1W!Rmje>];&WAK?,Fp!Q8Hcl@BQh2A&1@LA2$r,.`#S2L5WrTQPgiB,%rMI;&D`a%#/Cf(e59kT&d"GV'i"9I>-&B'qUN:/f_J!pC&4=8B5_2gs/L)^5r(E@3Q1%e@&/GocZaa*B4^]4/pi)mm3o2LZM,Rj_1"k@!%KAkop?Okb)_#I^!EthFJG)@M_ab'3eoYF2j>p$lL/7fEIHNJE'=3kj2<QMrW'#1]$c$+=mq+?GVgi^su\!"(/2?VN#2idX7XeePDO[`XSTGO+tWZ"n`K"eY[4\,JCO9Zh>%$!`E<i3@:dCh8#igH35_<cjp6lhSKVQD/YAPkUtPk<b6E:j9?r-j9YM^At-HSG,'dH&OK+X:]j,aXKYS:n4d'?eTn;M+B.SmIt\4;"_)sBH&"?144Oca@^TbW3(2[ho!<b>OqLqtF+>=Qe0N6#F&]Qgn_D_&g^Pe9')GJ;Ij;m[F,o,3-rh6HQf8N[i1,P:5iRAt.oYWr%Suj`M1!U\QQuk7QTGE0\H#Fe=)MS./EaO^m-D8AD[h`n1WQ;4A)<.PdiDEQSrVZl^n6=gD:3`'YMi/LP4b964&H-MGGZb3KA6%ji'ZH[5KiPlT&jZq?_OuHG3T=V$/HP(eTUO)+NhX#;!-<J?pRgn2DKN0O/l=lnGWM3oD-i~>endstream
|
||||
endobj
|
||||
29 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 2014
|
||||
>>
|
||||
stream
|
||||
Gb"/(968iG&AII3ChGdB-&j#KI"@&b`_N#AD8pQ9-1/N))2a(rfHd/@P[%SlgUdS;MN[Y:26K]6SVVk5]DLtJ53sa5/Gu4(h^ARd*Pq4c"j14p%FcO2N'>+^UYb_d@35"\(Pp<f4((;T]D;Ujl/giL`!][4JQk=s^&nkCK_']r_gT6pIF&%u?hGfYhm7^u!9)H#\G'CG9g$GBZpS*E$eG&2rpe.EJ9[&tk[sdOb#![JTN\J+6S.O!/rVRLT7?]`"s6egMJ/_`$=?CWU.GYmN;7F52E3,m=d1+b?c63FC7:!lHjQPe(qlqcFn@aR-]#`Kec/J\5[D0lU/]aPg5@YIGmKXX'`ESK?"ie2j/Hs:@b[30ak.L$SrJlk[c9@hA3K(<qQX=!Hd!k'jm^P6j,K9jW:."ZMS"t,HL2V7:ek`$Wa,s./o[N7D:;[cF^VHcTnA9dZq'Xb])9oi'j7Z(W+R]q8F]F?A@&h#d6SiH-9Y:,ePDb5iOc+79_E^b2tbS?R>9/u(uptk$oE1=aVhKIM'96doD37CJ7f8nKKV0M0]LL\.sJtJKi[^p.]!u\\^5O%b97Jn^2!/IeQ0T^4atfP,Wh:1:)lqAqJTA2(+TU$-JP<T\k^l<Y!\9IR'f'@"6QtG]ZEYi'6p!785L=U`3AshD"?7c]ad7l06;=%?)6(-ESHR[X@CBd\,TUp\W"I=@L+BuE7o[jrD!_$R!lYNT%T&>P$?$-)<SI@)TJK[e!2u!ba*sdBPP/[S/P[?KoSR4a3dBMK,Tg>iMrO6Y`o;bKeAV4;gEG2ol?,ZNJ=nlbKumr+pDMl2q5.iT>ES3j#\-FPKc^]J:+^#]duCl`c-MW7HMK0T:8!fZ7O(-50Q@#K$I/)j&AK%6bbF67)%:G7a\3JJOHOO1F9nSMfn)&]*:=6fPJZBlXD*N)V1sUY6"G!huCd!^!8Jb:;c92SXUe>'4d-/J=e><5Ag!IW+ecX?J-qo\N&@(BJ'3`V5]8^!k"eM4KJ5;A55bF&ZnUc2uJ#TKZ,sXOZaOfppRa03V!J]^@)XMmM>GV/^G]V9B!59VN$8m1@Nm%n["$`>*ep[3RMhka6NL->[r]RIZ>??dc_H:CRq@"l<dEGhs)KDW@l./ZssL/h_!"8WcBX"\/"`AS:CBW2?K:6PY/$\W`k+tiV_<B7c,i4S:3SIqe`01=5DeBoAa7bg3OB4,4[`c<>;;F:6N[r-FpuTi2T"C8r)"09gj(RnfN$!A_-C5/o3[M=K>S6m)/u%Q`:IVa%TsM848p*Gu!X2e3H_/gX1r&(Br%#*$13b0(_X:Io)Hsq[P=3;QIIqhP#bT'H8Z$)8ouJS74:/*088V+lfsgXR]mPs#BB@)R<!]gG&n]5QB@d4kUMDa0D6]=d3`FdBT.VB5-Ul>fC,+)66TS0R/4[f/-M%ftK4h(23%Hd+EorPa7/V4/%d5@Y'57_5[LL^jA.!D2*Y]>bLX(]=@MoYhG/RC*1AP^SbM=?c,,';'@-;B_.[-bRL;cGUClVEeU('j,]Xgo91%#ruZoT3='iDU%g8FiD\guI-]kJ;BD\6,5Y/F4R+#n%;Cebn[tBM^IrTG^pPSc8Tc\S_ij'F9gP"=L9ZVn@5sefc,i8._7c<%!Nt?g'38p(N5ICj//7HD%dG(>>A9';(m$..3$->q?'0)dfXeH0SeqbRfSoBM27D%2<JPGn10(e-S4XEn>pu+^7$J'h:IJ@3c;:@FL/pI"aK-SuC_o;$Lbi%HlnEetBD,&-LZ;EO&14Gb2Qrn=7q=Q-(qD5%\i.$=ZXAkqM`];]8#.X70W&U39sp?]ES!$ifeU$P@##bR@C'YZ5H;PBO2tAi@:ZcSd[GqpL>u6L#tIL-d#.7+I#gg1p0h47qNYXTKI='qbf0k!aG8`,Y;@?Xe46.4=7fAh=KH!Qk0X;B!=gggelL:(9N<6/*/-d8`6$q@-8Sr`hmEeg$pnL<9]uU$AWGBRn\&tWNu*2UrI1,fH1cZ#ae5mgi`=*cR0%^7![57XjT~>endstream
|
||||
Gb"/(968iG&AII3ChGdB-&j#KI"@&b`_N#AD8pQ9-1/N))2a(rfHd/@P[%SlgUdS;MN[Y:26K]6SVVk5]DLtJ53sa5/Gu4(h^ARd*Pq4c"j14p%FcO2N'>+^UYb_d@35"\(Pp<f4((;T]D;Ujl/giL`!][4JQk=s^&nkCK_']r_gT6pIF&%u?hGfYhm7^u!9)H#\G'CG9g$GBZpS*E$eG&2rpe.EJ9[&tk[sdOb#![JTN\J+6S.O!/rVRLT7?]`"s6egMJ/_`$=?CWU.GYmN;7F52E3,m=d1+b?c63FC7:!lHjQPe(qlqcFn@aR-]#`Kec/J\5]+<'U/]aPg5@YIGmKXX'`ESK?"ie2j/Hs:@b[30ak.L$SrJlk[c9@hA3K(<qQX=!Hd!k'jm^P6j,K9jW:."ZMS"t,HL2V7:ek`$Wa,s./o[N7D:;[cF^VHcTnA9dZq'Xb])9oi'j7Z(W+R]q8F]F?A@&h#d6SiH-9Y:,ePDb5iOc+79_E^b2tbS?R>9/u(uptk$oE1=aVhKIM'96doD37CJ7f8nKKV0M0]LL\.sJtJKi[^p.]!u\\^5O%b97Jn^2!/IeQ0T^4atfP,Wh:1:)lqAqJTA2(+TU$-JP<T\k^l<Y!\9IR'f'@"6QtG]ZEYi'6p!785L=U`3AshD"?7c]ad7l06;=%?)6(-ESHR[X@CBd\,TUp\W"I=@L+BuE7o[jrD!_$R!lYNT%T&>P$?$-)<SI@)TJK[e!2u!ba*sdBPP/[S/P[?KoSR4a3dBMK,Tg>iMrO6Y`o;bKeAV4;gEG2ol?,ZNJ=nlbKumr+pDMl2q5.iT>ES3j#\-FPKc^]J:+^#]duCl`c-MW7HMK0T:8!fZ7O(-50Q@#K$I/)j&AK%6bbF67)%:G7a\3JJOHOO1F9nSMfn)&]*:=6fPJZBlXD*N)V1sUY6"G!huCd!^!8Jb:;c92SXUe>'4d-/J=e><5Ag!IW+ecX?J-qo\N&@(BJ'3`V5]8^!k"eM4KJ5;A55bF&ZnUc2uJ#TKZ,sXOZaOfppRa03V!J]^@)XMmM>GV/^G]V9B!59VN$8m1@Nm%n["$`>*ep[3RMhka6NL->[r]RIZ>??dc_H:CRq@"l<dEGhs)KDW@l./ZssL/h_!"8WcBX"\/"`AS:CBW2?K:6PY/$\W`k+tiV_<B7c,i4S:3SIqe`01=5DeBoAa7bg3OB4,4[`c<>;;F:6N[r-FpuTi2T"C8r)"09gj(RnfN$!A_-C5/o3[M=K>S6m)/u%Q`:IVa%TsM848p*Gu!X2e3H_/gX1r&(Br%#*$13b0(_X:Io)Hsq[P=3;QIIqhP#bT'H8Z$)8ouJS74:/*088V+lfsgXR]mPs#BB@)R<!]gG&n]5QB@d4kUMDa0D6]=d3`FdBT.VB5-Ul>fC,+)66TS0R/4[f/-M%ftK4h(23%Hd+EorPa7/V4/%d5@Y'57_5[LL^jA.!D2*Y]>bLX(]=@MoYhG/RC*1AP^SbM=?c,,';'@-;B_.[-bRL;cGUClVEeU('j,]Xgo91%#ruZoT3='iDU%g8FiD\guI-]kJ;BD\6,5Y/F4R+#n%;Cebn[tBM^IrTG^pPSc8Tc\S_ij'F9gP"=L9ZVn@5sefc,i8._7c<%!Nt?g'38p(N5ICj//7HD%dG(>>A9';(m$..3$->q?'0)dfXeH0SeqbRfSoBM27D%2<JPGn10(e-S4XEn>pu+^7$J'h:IJ@3c;:@FL/pI"aK-SuC_o;$Lbi%HlnEetBD,&-LZ;EO&14Gb2Qrn=7q=Q-(qD5%\i.$=ZXAkqM`];]8#.X70W&U39sp?]ES!$ifeU$P@##bR@C'YZ5H;PBO2tAi@:ZcSd[GqpL>u6L#tIL-d#.7+I#gg1p0h47qNYXTKI='qbf0k!aG8`,Y;@?Xe46.4=7fAh=KH!Qk0X;B!=gggelL:(9N<6/*/-d8`6$q@-8Sr`hmEeg$pnL<9]uU$AWGBRn\&tWNu*2UrI1,fH1cZ#ae5mgi`=*cR0%^7!pZS^ir~>endstream
|
||||
endobj
|
||||
xref
|
||||
0 30
|
||||
@@ -246,20 +246,20 @@ xref
|
||||
0000002767 00000 n
|
||||
0000003059 00000 n
|
||||
0000003189 00000 n
|
||||
0000005193 00000 n
|
||||
0000007291 00000 n
|
||||
0000009468 00000 n
|
||||
0000010263 00000 n
|
||||
0000011874 00000 n
|
||||
0000013918 00000 n
|
||||
0000015569 00000 n
|
||||
0000017532 00000 n
|
||||
0000019348 00000 n
|
||||
0000021346 00000 n
|
||||
0000005192 00000 n
|
||||
0000007290 00000 n
|
||||
0000009467 00000 n
|
||||
0000010262 00000 n
|
||||
0000011873 00000 n
|
||||
0000013917 00000 n
|
||||
0000015568 00000 n
|
||||
0000017531 00000 n
|
||||
0000019347 00000 n
|
||||
0000021345 00000 n
|
||||
trailer
|
||||
<<
|
||||
/ID
|
||||
[<2d70597e08491c5e3793c7c8ec02df61><2d70597e08491c5e3793c7c8ec02df61>]
|
||||
[<e6640fbb12dea5618fd4e6a632502f7c><e6640fbb12dea5618fd4e6a632502f7c>]
|
||||
% ReportLab generated PDF document -- digest (opensource)
|
||||
|
||||
/Info 17 0 R
|
||||
@@ -267,5 +267,5 @@ trailer
|
||||
/Size 30
|
||||
>>
|
||||
startxref
|
||||
23452
|
||||
23451
|
||||
%%EOF
|
||||
@@ -1,19 +1,19 @@
|
||||
# Les 15 — Externe APIs + Cursor agents + Vercel deploy
|
||||
# Les 13 — Externe APIs + Cursor agents + Vercel deploy
|
||||
## Slide Overzicht (Klas A — 3 uur fysiek, demo-driven)
|
||||
|
||||
**Lesvorm:** Tim demonstreert klassikaal. Studenten kijken. Zelf bouwen = huiswerk.
|
||||
**Demo-app:** Nieuwe kleine Pokédex (PokéAPI, geen key, visueel)
|
||||
**Vervolg op:** Les 14 — RAG + Embeddings
|
||||
**Aansluit op:** Les 16 — MCP servers
|
||||
**Vervolg op:** Les 12 — Tool Calling
|
||||
**Aansluit op:** Les 14 — RAG + Embeddings
|
||||
|
||||
---
|
||||
|
||||
## Slide 1: Title
|
||||
### Les 15 — Externe APIs + Cursor + Vercel
|
||||
### Les 13 — Externe APIs + Cursor + Vercel
|
||||
|
||||
**Visual:**
|
||||
- Background: CREAM
|
||||
- "Les 15" in BLUE
|
||||
- "Les 13" in BLUE
|
||||
- "Externe APIs + Cursor + Vercel" in BLACK
|
||||
- Subtitle: "Van localhost naar productie — met Cursor agents en preview deploys"
|
||||
|
||||
@@ -415,7 +415,7 @@ Beide branches kunnen tegelijk draaien.
|
||||
| 14 | **LIVE DEMO 4** — GitHub Actions CI | Demo |
|
||||
| 15 | Wanneer welke Cursor-mode | Reflectie |
|
||||
| 16 | Lesopdracht + Huiswerk | Praktijk |
|
||||
| 17 | Afsluiting + Les 15 preview | Closing |
|
||||
| 17 | Afsluiting + Les 13 preview | Closing |
|
||||
|
||||
---
|
||||
|
||||
Binary file not shown.
Binary file not shown.
@@ -87,7 +87,7 @@ endobj
|
||||
endobj
|
||||
12 0 obj
|
||||
<<
|
||||
/Author (NOVI Hogeschool Utrecht) /CreationDate (D:20260521105950+00'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260521105950+00'00') /Producer (ReportLab PDF Library - \(opensource\))
|
||||
/Author (NOVI Hogeschool Utrecht) /CreationDate (D:20260607084029+00'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260607084029+00'00') /Producer (ReportLab PDF Library - \(opensource\))
|
||||
/Subject (\(unspecified\)) /Title (Les 14 Huiswerk) /Trapped /False
|
||||
>>
|
||||
endobj
|
||||
@@ -163,7 +163,7 @@ xref
|
||||
trailer
|
||||
<<
|
||||
/ID
|
||||
[<fdfd9a649f26f3dd357aeedfd55ab30b><fdfd9a649f26f3dd357aeedfd55ab30b>]
|
||||
[<91d83aeaf294ddd69def8dba974bdc13><91d83aeaf294ddd69def8dba974bdc13>]
|
||||
% ReportLab generated PDF document -- digest (opensource)
|
||||
|
||||
/Info 12 0 R
|
||||
|
||||
@@ -87,7 +87,7 @@ endobj
|
||||
endobj
|
||||
12 0 obj
|
||||
<<
|
||||
/Author (NOVI Hogeschool Utrecht) /CreationDate (D:20260521105950+00'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260521105950+00'00') /Producer (ReportLab PDF Library - \(opensource\))
|
||||
/Author (NOVI Hogeschool Utrecht) /CreationDate (D:20260607084029+00'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260607084029+00'00') /Producer (ReportLab PDF Library - \(opensource\))
|
||||
/Subject (\(unspecified\)) /Title (Les 14 Lesopdracht) /Trapped /False
|
||||
>>
|
||||
endobj
|
||||
@@ -163,7 +163,7 @@ xref
|
||||
trailer
|
||||
<<
|
||||
/ID
|
||||
[<9f48df53726ecc7f762a28209cc7a8fa><9f48df53726ecc7f762a28209cc7a8fa>]
|
||||
[<5a6a7779390657fdb2af72e0dd471cd8><5a6a7779390657fdb2af72e0dd471cd8>]
|
||||
% ReportLab generated PDF document -- digest (opensource)
|
||||
|
||||
/Info 12 0 R
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
**Vak:** AI-Assisted Development
|
||||
**Opleiding:** NOVI Hogeschool Utrecht
|
||||
**Vorige les:** Les 13 — Agents + Cursor + Vercel
|
||||
**Volgende les:** Les 15 — Cursor + Vercel deploy
|
||||
**Volgende les:** Les 15 — Agents
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -157,7 +157,7 @@ endobj
|
||||
endobj
|
||||
19 0 obj
|
||||
<<
|
||||
/Author (NOVI Hogeschool Utrecht) /CreationDate (D:20260521105950+00'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260521105950+00'00') /Producer (ReportLab PDF Library - \(opensource\))
|
||||
/Author (NOVI Hogeschool Utrecht) /CreationDate (D:20260607084029+00'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260607084029+00'00') /Producer (ReportLab PDF Library - \(opensource\))
|
||||
/Subject (\(unspecified\)) /Title (Les 14 Lesstof) /Trapped /False
|
||||
>>
|
||||
endobj
|
||||
@@ -297,7 +297,7 @@ xref
|
||||
trailer
|
||||
<<
|
||||
/ID
|
||||
[<ac774e881c346d045e81ff782e65a794><ac774e881c346d045e81ff782e65a794>]
|
||||
[<9f458718fcaa3f6c1b5350766073fe05><9f458718fcaa3f6c1b5350766073fe05>]
|
||||
% ReportLab generated PDF document -- digest (opensource)
|
||||
|
||||
/Info 19 0 R
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
**Lesvorm:** Tim demonstreert klassikaal. Studenten kijken. Zelf bouwen = huiswerk.
|
||||
**Demo-app:** Nieuwe PDF Q&A app from scratch
|
||||
**Vervolg op:** Les 13 — Agents
|
||||
**Aansluit op:** Les 15 — Cursor + Vercel deploy
|
||||
**Aansluit op:** Les 15 — Agents
|
||||
|
||||
---
|
||||
|
||||
@@ -428,11 +428,11 @@ const docAgent = new ToolLoopAgent({
|
||||
- Chunking strategieën
|
||||
- RAG-tool in een agent
|
||||
|
||||
**Volgende les (Les 15): Cursor + Vercel deploy**
|
||||
- Externe APIs in Next.js Server Components
|
||||
- Cursor Composer + Background Agents
|
||||
- Deploy naar Vercel productie + preview per branch
|
||||
- GitHub Actions CI (lint + build)
|
||||
**Volgende les (Les 15): Agents**
|
||||
- Agent = LLM in een loop met tools
|
||||
- ToolLoopAgent — system, tools, stopWhen, prepareStep
|
||||
- 4 stop-condities: stepCountIs, hasToolCall, isLoopFinished, custom
|
||||
- Combo: RAG-tool in een agent (combo Les 14 + 15)
|
||||
|
||||
**Daarna in deze leerlijn:**
|
||||
- Les 16: MCP — eigen Model Context Protocol server bouwen
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Les 13 — Agents
|
||||
# Les 15 — Agents
|
||||
## Docenttekst (Klas A — 3 uur, fysiek, demo-driven)
|
||||
|
||||
**Les:** 13 van 18
|
||||
@@ -35,7 +35,7 @@ Dit document is een **lopend script**. Lees mee tijdens de les op je laptop.
|
||||
`*[Doe dit thuis vooraf, niet in de klas. Klas kijkt naar de setup-stap als je 'm doet.]*`
|
||||
|
||||
```bash
|
||||
cd ~/novi/novi-lessons/Les13-Agents
|
||||
cd ~/novi/novi-lessons/Les15-Agents
|
||||
pnpm create next-app@latest research-agent \
|
||||
--typescript --tailwind --app --no-src-dir --import-alias "@/*"
|
||||
cd research-agent
|
||||
@@ -189,7 +189,7 @@ Stack: Next.js 16, AI SDK v6, Tavily, Supabase, gpt-4o-mini. Losse repo — niet
|
||||
|
||||
**Vertel:** "Klas, leun achterover. Vragen tussendoor mogen. Ik laat zien hoe je een agent from-scratch bouwt."
|
||||
|
||||
`*[Open terminal in /Les13-Agents]*`
|
||||
`*[Open terminal in /Les15-Agents]*`
|
||||
|
||||
```bash
|
||||
pnpm create next-app@latest research-agent \
|
||||
@@ -684,7 +684,7 @@ Voor sub-agents — een agent die een andere agent als tool gebruikt — schuive
|
||||
|
||||
`[SLIDE 15 — Agent vs tool-call vs workflow]`
|
||||
|
||||
**Vertel:** "Drie niveaus van AI-autonomie. Plain tool-call: 1 tool, 1 antwoord. Multi-step uit Les 12: 2-5 tools, 1 doel. Agent uit Les 13: 10-50 stappen, open-ended. En het hoogste niveau van **controle** — een explicit workflow. Code die exact bepaalt welke tool wanneer.
|
||||
**Vertel:** "Drie niveaus van AI-autonomie. Plain tool-call: 1 tool, 1 antwoord. Multi-step uit Les 12: 2-5 tools, 1 doel. Agent uit Les 15: 10-50 stappen, open-ended. En het hoogste niveau van **controle** — een explicit workflow. Code die exact bepaalt welke tool wanneer.
|
||||
|
||||
`*[Wijs tabel op slide]*`
|
||||
|
||||
@@ -780,6 +780,6 @@ Als studenten verward zijn over "wanneer is iets een agent vs tool-call":
|
||||
|
||||
> **Tool-calling** (Les 12) = "AI mag tot 5 keer een tool aanroepen om je vraag te beantwoorden."
|
||||
>
|
||||
> **Agent** (Les 13) = "AI krijgt een DOEL, mag autonoom plannen en 20-50 stappen doen, en levert pas op als-ie zelf vindt dat het klaar is."
|
||||
> **Agent** (Les 15) = "AI krijgt een DOEL, mag autonoom plannen en 20-50 stappen doen, en levert pas op als-ie zelf vindt dat het klaar is."
|
||||
|
||||
Het verschil is dus **doelgericht autonoom werken**, niet zomaar 'meer stappen'.
|
||||
@@ -1,9 +1,9 @@
|
||||
# Les 13 — Huiswerk
|
||||
# Les 15 — Huiswerk
|
||||
## Agent uitbreiden + prepareStep + custom stop + AGENT.md
|
||||
|
||||
**Vak:** AI-Assisted Development
|
||||
**Opleiding:** NOVI Hogeschool Utrecht
|
||||
**Deadline:** Voor Les 14 — RAG + embeddings
|
||||
**Deadline:** Voor Les 16 — RAG + embeddings
|
||||
**Inleveren:** GitHub repo + `AGENT.md` in root
|
||||
|
||||
---
|
||||
194
Les15-Agents/Les15-Huiswerk.pdf
Normal file
194
Les15-Agents/Les15-Huiswerk.pdf
Normal file
@@ -0,0 +1,194 @@
|
||||
%PDF-1.4
|
||||
%<25><><EFBFBD><EFBFBD> ReportLab Generated PDF document (opensource)
|
||||
1 0 obj
|
||||
<<
|
||||
/F1 2 0 R /F2 3 0 R /F3 4 0 R
|
||||
>>
|
||||
endobj
|
||||
2 0 obj
|
||||
<<
|
||||
/BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font
|
||||
>>
|
||||
endobj
|
||||
3 0 obj
|
||||
<<
|
||||
/BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding /Name /F2 /Subtype /Type1 /Type /Font
|
||||
>>
|
||||
endobj
|
||||
4 0 obj
|
||||
<<
|
||||
/BaseFont /Courier /Encoding /WinAnsiEncoding /Name /F3 /Subtype /Type1 /Type /Font
|
||||
>>
|
||||
endobj
|
||||
5 0 obj
|
||||
<<
|
||||
/Contents 15 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 14 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
6 0 obj
|
||||
<<
|
||||
/Contents 16 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 14 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
7 0 obj
|
||||
<<
|
||||
/Contents 17 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 14 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
8 0 obj
|
||||
<<
|
||||
/Contents 18 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 14 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
9 0 obj
|
||||
<<
|
||||
/Contents 19 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 14 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
10 0 obj
|
||||
<<
|
||||
/Contents 20 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 14 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
11 0 obj
|
||||
<<
|
||||
/Contents 21 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 14 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
12 0 obj
|
||||
<<
|
||||
/PageMode /UseNone /Pages 14 0 R /Type /Catalog
|
||||
>>
|
||||
endobj
|
||||
13 0 obj
|
||||
<<
|
||||
/Author (NOVI Hogeschool Utrecht) /CreationDate (D:20260607084029+00'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260607084029+00'00') /Producer (ReportLab PDF Library - \(opensource\))
|
||||
/Subject (\(unspecified\)) /Title (Les 15 Huiswerk) /Trapped /False
|
||||
>>
|
||||
endobj
|
||||
14 0 obj
|
||||
<<
|
||||
/Count 7 /Kids [ 5 0 R 6 0 R 7 0 R 8 0 R 9 0 R 10 0 R 11 0 R ] /Type /Pages
|
||||
>>
|
||||
endobj
|
||||
15 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 2437
|
||||
>>
|
||||
stream
|
||||
Gatm<CN%rs(B)NcEFGLJ3H_4ji+(uF$b4s@0i2u$M)P6"5XA=YM_RZC,S_[9dbhcOp_q:U/D%M"+d0a2F75[s3[6p1+45P8CSDp6o\IiFKV\DY$(q#Ms+Oe(]j$Q>:e#n!9PLY=8M!p9O/d!!THIcR/7Uu77ncE:q-#JS@ndU%U.@[O)7k.Q$"?cQ,OH/n+p`>d@(g$CPS!5g+:R<-l[/T;<A.rmY8u-ZrW.`kU,QgT<BfFeL]X$KC%gjWhd+Upo%MUXW[r5fG>joOe^-Y*Ls@VZT%.sa2eGWGR1CVt2eu>Ka#&9Ao+tHY"Q*8]o+d=0nUE8NM1AoNZhhsH2]_>$P3]2?85+P__kmo7U$OWGQ!dH/-og87*VVn%>C1f5FPG"ga$\&r&+,k.p4lgCpDd)rN=S?(`e-P/[;IO+.M=IqBL9YnXARV0P'W>D\^q3.8%:qH:0?e$W0-,PTAO#B."]fMH13U'>"]%R-"9<N;5:B8s$,87!i1_Ge92]aY'H\2m5"*BNP`[IC]!l\g-1O9LW5mhs4MQ'(9g%0/Y$65PC\OP/45HN:R;FGr<sR;bn^GJm*fMY_FSYY.B+_IMO[2A$XqRSmL[FN.F8h:d2!&]-uR7<.BE`(4hF05d5Gbm/!DPZ6/U+f17P'pD]?%!;nB*#E_Z>7:M8joI\!h<nmKa.=Cd="Eb7@@9`Mnpj+LWt\$(SSJZ?@?6]RFL=O2QF/V/W3s)*6NXBE1%*qpdo\X^?+DGGD?Sn\ub[-WN0'jL$6+"gC%i]&Cc/0fU!aYM0LF4cXA^dHHYb1SIG!P;<s't'1dGEMU]ll9=jlV"QhB#SokLeX$sbGL1Aa-K`&3,I)C-/<RfH.KXb?6Tt?jWoF,/#Xr@a1N[iA^EPd^O1VbcSFTX8_\+T!;s<Q6H1hjcip78h7Ar-D?;<>0]=/cG]Sn]]=,Rj>*C&J?#`5OV76?ng@lWGXnU):6'%ih\]bL&O>`?cfuB0_gFc==_m*LS"[3?ZhJF',L$fPOmK'FQT0,P=hKL*24*98U=KAQg%T-H4q^(#AV7*\f2=Do7hn7JqV%rsl"VolQVH?$dKuH1**.*F/)PGrn\75_kB@%<-?K.Yo#>_LHn@OeZ;E:-,ZL$oVf@^IF7qqNPE3)2%IcfC(Ef/(i/@Tg4I6]Z'#^(W2-oZ:Z=]S,;b%?p<9i@ggQV#pqetsTZ%@C@Z$pu&jr1i$_bsf=5$,/B**&G/SBUL`b)Aq*f8T*b*)+&TQ&KOoCBBut):<@m"Wh]_[U#i0r=_DH,rA#s_VCM0N1?_dd_m6^6fl>*S$sl2&R;QjV2Pu'G>+%+oB@ga,9[96$7_T44":FqS1fCUGpTZnQ&JZK_.mNYnYU/@:G<:h9Z[e`g?Ve\;mUt5H*QmV;0[*,%E==cK+t`I,LQJqOg5jnE*UT@oJRK[TK#<$)$+q#@,p.^5.)h@I^hM,cP5XCfN/?XZVn1326lVD!VtqQ\M&@/3Pa:JfV)0#o93rqtA>7i@qpu.'bIKlkpM_@]OcHU3i4g0tOT)[p-M?YNb0fA/TT`>LNBBJdg>j,l@W?dO&Lg\S+[l<Mh1&LplSdIFe#Cf\L;:sS%?=,m9cU0rNR\A[8D"+ITB)ko(ul/!&o]>Q>$GO)i7J2)Jar#?RHHY,CPdL^O69]lcL!qWjB+V+5*)QcHC2$+s*^bR(%'@tA7!?*]<VO*8p?Ig%E8uF\Ha(eOk,`JgjsGmb6G1o2K5R0^YW,RDYF>hG]i=,^-@'.b)J'O7!C%:+0EEd<NC"\ip)<Ma,AX6rC>WTMf\%P\;cjnTh*dLQ#2tkgn@Vm(?-m_!][Vq89?[A92nef/Q"&H0njpgW]s*s;if>Fk_Qr9!09Z@T_f5ugg!n7m&'.M$$l`3rH1%%Gos%3\Se?:P):kdh'<<<lmVZ9i^1BhALGdsX_#r5Z<q-SHT+5pQDS(\-O138rbU"+B#SB:]M2I>SXe+MXLrqAk't`>_FG_^iRC2$b8LabCdFu"`=-T</"61Cc3gpNH]rh^bTqK]>FMU'S)\Xq3'O,kWc;jS9IK,Ki<9:R+QA#kk+bMWNB*i2r`#[ACS*\"/JA$OG<07`&"!V)kO1$t58/F+TGLZE%M`=^e]D(ud!E;q/sG!O%N;CV=uoJ(G#agn`U%7\+2:l_^)ZMSh`Y'i-7\N4$RSu`a]gD>A]kauh4!WX$)NnYE/+6QBb!I]$2_HfEXGt'oE!qSjoi;Xe1#Ve%Ss!EL#=n5=!%YX,%f@?;t/?]Mck6arr-m;E:ES!NF@6Y"fJeXJ3tj9Co[Vp[0*>_Krn'T,Nn=7!GJ<3Uhh7sY^8@qlN9d+C:aB&E!Xnp5s"t0ileLHq\pCh@jATK5R7"RiB$\[f'_4lXFBM$3hCNAK-4&[J+6SKm>c['jbchnBeDdfI8reA[dGNBkFFH-rQ#WFLZd`Y/X,p9k>aYg~>endstream
|
||||
endobj
|
||||
16 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 534
|
||||
>>
|
||||
stream
|
||||
GauI192jS!'SZ;\'k`piK90WW]VO"30LHpY[js?XkMj"i%qJOlIp^0<d\MFHCMC/<n%%=9<rtK:0qMqY][(S@+Wr'$HO.S)nnWWsPK/>J,H]C%WT.\>_6S1S_,j29D4&FU-K)CFc714iQue[JN-3\Y$W"8s8HbD<gc>W$KJq*qeYgV^)-\VgNQM1&TD@7H04SUkMjVtR@dss`S(aj=MK,>l7c%PCq9+gL>]phkjf7Xtp`;P_X+38\/^COpc\J28!\NqnIaPam)f!8Pj?Jd!CjPL5X&Lm?EdOa79`p'gj\n<)PCJsA^D9i*(6El02_if,;B%E9R]AE,Gg4:paj`9c5)r)"L9dqB3V062+(O"Lk>3,KZO==o*!a0e'@n3ImR*k'Bd'#!of<kYAH&5W3H&85na.XBg7\1Gdg$RU>>\`9F7;U5A&^<%4GpQnnd'nh7HFWZD^%X-s3^PKe]uXEg>Ys+;r'ptD1!#Eck&qoT?+d?U89N#HAQ3-=NC/Z97?!@JDfan+s2haDT7Ck2`Z6A"T~>endstream
|
||||
endobj
|
||||
17 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1697
|
||||
>>
|
||||
stream
|
||||
Gb!;dgN)%,&:N_Cm-%#9/Hc%S&p0VejC0L.VFf78I>RM[e$.&N(R_)cVN1\i$XQ(j[Of&83)dq/JkP%g!n_RM'a'>#<r\4YJEKjUI)(8PR%=9k7)8F(lqa0.LN&=O63;-AFTW+!E6SWF\W_U:L_oQ2JYG>*^&XiD;(>DXELcJR*srH)NuSABpSb7u&B1HC]PHP5ic1!]"d,AmXH.;[;^T/-G\qO>B(LdcfRpSqZDaoKPY#6!1kkJSGCLULl[5kYkVUU!pq8/!FBZM>F!$to:7d_^>ZU\<?KuU&jGQuMeIG:QK]s`ACOe'C8VBb8<W"ee"=E+#1+k5%n[ZL724V]i#jq]V4YCK)jRG-+T.8h=a=+`E`>oar7_-AL*i':4UhO":ic(Md.b)8R<SL.Xk'MJhO^4U#Yr6DP`L)4^V?$Js&hLK7RQ`W[c4FE7>s!$C5%X[[C4W>V&im=[,/G3;A38F=@kdMq3HaV_1>c^4+!6m2WO(2$Wm-U@ScsePJ9(l&EEskj]k>Xrqa+Dkbj3j]^/s>"KO;b9S4FE'ii_2m$G?]QrLqXIW,d<Xlab;K2Eoa3,)J&OAina&_[EEfN3f3J>UncdePrZm920XJ>k;%@@Jk2*8QgD=j0(P'dl<970MGm:8le.rpT:Oah8,(Z=_`c0;X^_UH?61?\i!O=`7f(Yjs>fQ]1!HMGg73K^&4%IBcKF-+7!Ha+;,tc8lRT6-Ur)c:k7o?TiFf7<%PnUNCt;Nqi,i'>N,oWc+r1H(!\%':k*.U?(]3C[X\t3IHf9YS]rIpX*c1'$QdBtPE!@]&?<K"N:N5P4Jk7Ym<ojMWI>>aO0p"cc_bX;81GF-3p5bPS-h79*i:=t67KX?np:q6?a9t/r=Vq0(N5Z)OY1f#eR]Vm%`?h5#G+&3bF<(OK9nca_KAuj%hP?U?k3K<E=uWn>#:CGCgN[,R;mo;Jh88<>[OncJ8^ol=_)L),ha=#$_<"ACcn.>WeneeLj8UQm?"L(&>M&kk1/k43Tc!?e$ZkNs4a&c=#9,VRtO<HgPua#LmG]IjT4Y`A?M!_U5NN@)ODi5G'[W3&rI9LIsNktV/[[2OIcm<;F4"-dZ`VtXR9UDYSKT%HXl;S/[PbX]rq[<-_lhY:Pud3o8]V7g#4\_@KS'/H3/:u+0N+hW-t4c@8t5/H>:lB%mH!d4IQ/F(O8lCUKn^BkbAYL/>CV@Vlb&G&Z;aQgnHYc/bpJVASkJ%%Zg.1W:)EuD^$[srlae92lf"9Zs.VG`G$A`H4M^:ZXmD*j3cH!m\N=S$nUq`OV53a'"uAm9)hmcWZk4.J2?(86JO9$5#$KM&Rs1Y)->)hN1!?rIQA(XF(a=.(ST,PMbnWHMbn&[4W*R74g53okf!`<]'$V39g*6ohJ`h3"(Be<U1_]``56m_s%'>rq2ll3#U)+5&l8LQ2P)T`g\J4'5:QF.*BlGoQ=ac6MQAZm(t<YMArZQF;J2Kb&6nlb1%\''a'H,sKam)9-]W)W_LkE!k2m;(6^S<p?&O\TbkF%#M+7ZiYk5?;mTJ!:dT(2oL=ISNBbOFA_-G`XXpJR-/eW#MbV2PoNF=9kW/$jhn&s#C7W>dC^410tUC-uYQ1Iii((b*ij]S!!HBR@\bpQ;Wh#gF??d7slK4hC]hbHah%*Q.Qo\B@DE1rKA)QOG@WqufLE6``T/V<`i(S#sT)1R(X~>endstream
|
||||
endobj
|
||||
18 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1699
|
||||
>>
|
||||
stream
|
||||
Gau`SgN)%,&:N_Cm.a.I'*MAL9PSne2]'f9:=H0/6^6gh'I5Ep73O*mg._LZ$XQ*@[]I'(E@d/A/V155fKIC]",\2OI)d,?dj[D,c@Bo%/q?M;@JU>&9ta=DiB@dJ![9H9+U8VeqZl62b<bsB%sc5]dt$XIK%,`m*GXLl0*kY[V1HTKNr]Q7)JBFF1Z`EPb'ZL&cI'$Fb4ifso/hETdL1ohYsXuI5D%i"eh,%<$:uXEJV%S?POmD@T>A][BrZDX'Iir\QR6%h0]P9G-YEs]<)liHAe%%n$^2@lbiJF?9L$DdT(OtXQU295BX!Krb#H.j]\Fd_B2ef[ir0QBP<8n,!d]Kgg*?F+@iA0<KS>Ak)gC'N\2.;Z?i#k0>`na2fi!k9KMnd>2QjYhP-Dab@uKWm`1F<o%F^8=-t`m,>c>GH$eC>X"F<Fo"T/)GA,)8t&#fZ*c:dNOJOPG\*6E*(>K1@<Z+':mUp?UNp(*eMjCtpO-b@K^;9VAD=NJ#WL:BQ#h8JZ%'GnX?D8(B<iVO(58GH24abaIM-LNekVQ,O_n8%tF0(O9c-O+1H$WF4W"I!bI\1]T7OLiB7@YFH)45k22XLgs<ZrO>A3-cIHb2hRaN6/m]9Dj6s9MSe978@7efbh4IMXlBSl.k?\[cgsl#k%sa=%TW.o7q;OhH$#V?JGE<AZ]"1`EssAn6n+[RX.1/`G(MGNFEaD]uM&OY,u^_`F)Oe]T#YJaWP9_PI%*WeC7559Wj3IKM!/A/\3#;Hd9W-(0jJ_5WN%>Uf%8?E/#QM"uun5Jl'>q/"/`hd:54fdD;1"N?6Y9#Hln\@5Ysi[CQq]2CV"sQVGO=7kmn1R'2qa:QfO"PVps?Y75m4:+>rFM\7iF+A*+b?XGsCaA="]:cFKJ8)]10,r&c.A!BfDIVkZ=D:7Lm[eCjqV.,!#MR5F!,F$mu'VAN0n9&m[8&t,\AkkO-[+(O'h>hkOFd+(P"%5a;ho'+b\J[pA`3Ntq&0R0OPMM"oV1JC1K=-h9'eRZ:Bm_`=W8Q_>kj7g<bmpNn^'M*`V`,,&JcrrV^NTPAE)1F4k-9=8GN2=pDp#`IM.7+h:J0lcpi]_snFc=c3[[;_jSY"[$?+,1$^2B=$!"5Z@sg^TmJSETYhJIt0gapt:+>o892*E_idp[@,pouBeUd0]9W5NgNe+Oh''"GN'&tNb!2G1M4"`6lg1ut/OkVEgDqi?]CTUs,B^;o[d2[Kkb`cB%M_qG`Nn1NCWjT[VSLuF%$(aV#>+LaDP1HM;:j(Q6XQ/I=3G'NV*?Ds^:Z)5F@j-*kr[r<[<_ZJU0C'>m++a9cneN(u?:q\E@nqsK6^!oOqj5OV&ERuGLVBC\r^5/O;%[ZWq7W%5K_Cp'eQBre.KigJa]`e=*!9iY8p3FhP+@::@!(m\a%G2dQL0,#=CGtOmr"m?/&'JAPLjHtCa/Sf%ke5te0F=JGY&LJW1%m]SP9Toked74Cq#%C]RR-jC+P59q\6kXkYh!#T#8S`J[i$]'8=Q7Uq3OLGNWD3a$+5/\<!`?*-XpQI_Nf\@5$E,8(/J8a#]fs+P96ugKhd[grS+7MF;g@g?qGt6%&E063F-0\$!R!Xk*0^`,5<+jh*$l>KSqGf7Z<%@9\qka`:sUh0f_bpC::%^D;0^_ikn_cDMqW_^;?]Za>M=cVY/CU#<i$\E8>:VYPc:0B1>Kn,~>endstream
|
||||
endobj
|
||||
19 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1837
|
||||
>>
|
||||
stream
|
||||
Gb!;d>>O9K'Roe[380^R$AOu=gl0acJ7Z>`/+u<P^?!8c6SLKCeom]Zec4J^G%*NE_F8-B#U3k9o:>>TkF=6!pgWpRBEGCsK^JLB(l.&f0L5gM5Jk7`qsG'!\/#^5Dl=as+G'!1TGW"n84?Ln!sXKp@^H,D(bm?k_"!rG9LE7IlrT5Kd>DZ`J/BVu;0U=_6ue6]"d)C\\'NCr)+Q>&C<d<'2STNP44mf;(=a4S18uQ.-SROVFE.X/o!'dAo/oh-c`44sGm,G<2=)B%m?V<]<]5\Vp<'9.FCMRk",7UGr7/pSi<s!*iD[FKs3[.J,^bt*jg?Zm)r/cu36=LK4eOHAe-2#pF/GBEi]G4pZI\$,O-VN7:dW":j,u6[m98dp9dgaR\&Q[?QQSsPhHuD'4d"@!i<(lp3N.*M^jUce(>EKHSsI0$+[Ud=kL=#:.I00n/J)cq6lt_tV"d_YEdkMuUSiCuSU5KU\Q@hgmIr5XlKD6dbi>J]Z[a_FE,L1LY&C,8IJ0i,(W%(HhgY%QWu=2Fr%>_A7'ZdpG6rcnO+X2NRD]["dEDbn=="_PK.C/"dfcFa[.-t'W.;==iNa&ahrTYaZT3;R$I^>U*Q>j'LA<XM[u*;O2W6-r3.oXKaJ%BlP.OmQ5'<%W8n58s42]ro5StKm;XnRo'gp3[ndu!-J%k3cnC4<hYn_p@>Zdqp9Jl]L)ogXiMPRPQ%Isc7=:AQh#eVn/EKs>/b,P^t4&5.U9\Nr&AY0:25@29?X#k7cp>W^ch^f1\Dd?LW:VLYk&_$S_P*k3k@6V0+<Z"FcL0@F@\J#0LGGk?6/?99(dGS]Fd9*=UcYW7VU2[[M8+7H/EkfN]`h>Umc%W5HWjt>EX*i>D2bU1#Nn<Oe'@hA/L@+/f;nUmj87.-\O\bBNqJoqD8ZlA\X8Ku=;lk1O@?3.9i6ong*g'PkWRm>9:\<$nRpK:>Vp2WUa0ta;p7?d"f(ne+kc%af%_#N(4"%JP2DduKb-Nj!m8f[:96XTWhrIpVMoV`YnBFV(P%[bX,gVBICX[O/Qt6fcP_,=dhq"F;9<^;Vf9';45-r4h9o+]]9]28Z-D5MN)G_rpMrHJ)$V159``:hj1Q%_@:*AqN'+K(KN?\hi:$4G)K\"E?d]TF<0[q-0QJ)p@&LsaIYF*;#aD9Cp(;qW?C8c:b)elF&=F`2ERS>AdFp4SNIp>XKNTkjb4##C1Ea?*;FJ'Z+q>!dTmVuf>m6a^^M6:`rKA+C?EeMuNCBn4:o60':\$1IRj<B6/!k)QH2D1/N96?gG[W(r_iY%C_9)r%3hlIm+>'tn\%1=0TRU%mO"BmZ6l3i.1^pQ<g[UBc=Ns:(mEJ;nc%q/5K8UgjB//?*'d*111ecZ0W>JGg/`k%\:f[/C>J[8;gVIY`'gVLd9N3f4#XCanYS?TPL"HgJiDZrUP7"h@<7*iaP.Z;k`IiJR;QNFM,jhdY970Q'b@sA7@0A.:A*eKKB3'+-n&:Ha'5S0),?^hNjmU4psA\[6W;cHL<"F4)ch^@-%j'c`TU'<T9GAsonJ!OSF].Y\c8*Amf$$_MJ',InuS2qNLGVaD5[sW;Y2:gR8Ae0rVSGI)RH_I_uS$IMtng2I%5:p_ljgr'Z4"/*[O3A7u.&h[P7GZ(3d`qD5_dWL)FPddlEuW$LijCUl];GCK"`<5=4J+s!50%F).Po#L)91JnX^4:tke:)r[E9+%qlakq]QKY"fPI[!s7]jii9Ujc'X#;hBtCiph]JCu-[]"+H^dGnp%k[3g8].:H9KB.8^i!.'F-;urrV"V/u\=j$r[6)Gnq.G`><^+S%*<o\,@12?q5KhN!JfYk2d.`~>endstream
|
||||
endobj
|
||||
20 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 2009
|
||||
>>
|
||||
stream
|
||||
Gb"/'gMYb*&:N/3%"cI<BcBO;.#Dul"d66,!sIFsj)eZ+:g%CIV7K*iS6h;,hk@2j@Ri_R^24il1.<80+_T(/7DZnQXhKE)i+N/s-PRt]aX<aOE1!03X,1h-&EY[5gH[;u=rme*=o&["KopoQ&BA9%"_"u1\/`#O6jQQg_f;hP?-"=>H=B\nY%,%p!tj%+KQCe=73'<dC//TcnSXD+lkA)8O#W,ABP.4(@+^)iUcMJ5'9h.Q%?hVuDu]fU$?+@H/:qH%7W>&A)(ZLr)0=d+FT8Qn_Eu@)]TaoaV-,>_[0MmgQorc;Xl4?E-JUB4+7[Zf!Rui_AQW3\r,[kpO1tr6+.P3]GIXS'P/A22>uM;-6O*(o.rJJ!1;`#\G9Af2:$UK9/M`\d9TtCB2C=l!S5@gGlRd;7-SW+i]V0pT%Fm=]f[$mt_mX77V_au_#ggB\4u+NMV>Wcf"#@Jk!lOB,M"!oIA2C`jZ,Sm[Q:Bt8qGZk]_23?,b'P-Q)ZNpo1QU08B1r:o>YE_Dg9Xjrqa+u0bdXckpeHP3&U"t_1La8n*VTg:UGOD-R#]TgKkV`B1u0,A"@niM-X<e"J4lXlBgo2&]A;gsH<Rr?`@8`'5npIITV#l9&!h%?`>Pn6f='TqR$B8)q:ChFQF"445=7<Q_26_7)>OXK/5fmJq=/RV/4bgVJhVa,npONRb"i"abM6/sG9q2JKfBuMRc:f851`b!ao"34N1e%BH1(R'+qNUEYt&,9<j21A3SU`S=f#gBKo]]Kns,B[YYc5Z`:cm&OofBm;k\GZf3/e:.6t9eXEM2-i3$8lDq>aB**ijUp._)=42g3W]A=ac5(V*s3+IUL_()CdNME&9<r*`)0rOHh=jXQ!<<#=dJLe[mA$ZCrqmj'VLn97PgY.VTg%;`m"i18DMH=l**dEW!PS_doh"7W6*X-7U-n*4tp@IdCbi&^NnerjB0$_m%44H>Q*IZh8'j=!T"DWqX<JUWp3g\52dS)!:3$%B;1:>HWrA[KfSa#";!A)hg?P'ld.__Xda(*cti%+S$qE_+AoCe&=;^\'WgN4._0IrnhWe0RGc/\<9qjMda]V8jDh_Fs'F%g!TDMA.-L:cJhL8m*-G:A_q'qWH[RAeSD3jOJHF5/?5CI<!:Hd;r.@iFlBVjd=N?53!sCO2KD\753,@Q_<0VG4"![j:-=8`X<Vm*1he>ka0NBCu`CXgr)<p\&qQ-<[=nK;FP*0mk51lr"&Afq?P6h11(p-AtJ"Ysi$YAoKabC+YpM6Ig.u02fF))#WB/&jV)PET"fC0YlQ8#d5GZ`WE)?;?r&.NI&2P2l%8W!DqMsg-45A!b?QpB5.hscPtCS_]Rd`baXXqA@YDSb7u&IYkqN<E@kH1ZpSl5auhu1YIT$$6V`mDU>TV`M4m&sK!dl_$CCIt_94e#"NTnM_W)mkX%lVIYq"GYcB$t9kp_*QI_o+>@LEp'<P\p.@ocslW="r?Tk3rMO3k@[$\'J[b:LogmY1dOY&gV'2>JPV_B>(8@TuLd>FNc5\f5"+VMh%3eCo;]lgZ_>",quj>[E\(0'BjUV]rW96)dW]&g:+M%q!(t4!F,6Xte^u=AGu/Nou6Q_M7%N'aGD3'`DD%s/nCiGg;j@s5Z,jq56f;LW1<>ngPPMFAL-VW7F=ENV_OX_ps9G[j$9<*NE-'9c.gA_X:Z&D/3upZ[1ETDge7`mM.uK*ih]00m1+oDDAQ=XH[-][g*8;s8#.>cd[fl7VMWCo]o>e.;,U>=^#BG%,%C<>V&m;q17<^/QTfN_MgX.RIbLD3orY"RbiLbVWo3hr)!`&%j8f?NmL3Qp\!j<.%D;W"Xh,"?[Y6m<%\+(O/R;^GSGW)!W:TRo;g3M%DN=\cd1^`5.Ee1TYt;"Xt&R\fKKXFqZ15WNb_q0m["Z"m@cu!5`2TJX3<QRn(B<>,bZcm,q+6i,KuacR7qM3&CEDLgQjrNVP.>)I^'7F<>mGW10O2qE0Woa<+6.7cI;%7D(u4S5?RmR_#~>endstream
|
||||
endobj
|
||||
21 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1570
|
||||
>>
|
||||
stream
|
||||
Gb!ksbBDVu&DcY&As:e;/X-7mmE0EH-TsJ('!',D)i0.q=<t]_TRG7Yr-JYkorr74D)YbMH;GjkpC7B`(LmdQ^8V&a)M%!,q!f.-Peh/B1a3OUhS@=fjR\&/KV_NS,g:ioB0c%7rIM*u/]7reEgBYFJs9e["AqW[QK8u<S<p*0"YF-XCdN]K8W[NrOGq1NQ9:NVP(YQcN_#Zcq;M8!^Wa6TP@X:qh&P8WL)+l9e.sp#83l2lL04UkDh%ZZ)IBC8Qsumk%DQ+!MNrlU@jtZqSmE6YN>3bP&@\B7>pEPM'P99XHfhj3n=qZa;&H,'n_XTS1ko)F1j;9i#MaO9OtDH2&*Q.\oms#\`^gjM&T5UfR,bh)gBDoGU2>kFCL\#HO4fWM"[@[XlXgn?:*SlC^Aq$^8_iOW7@h5*O03M]ldH'E.e%/s`jFFRaoo24q<bfDdL%T'k/a,!is'Aeht=)dm@J=U/N9I>o"X*n\];41n!]E/e^%'%l?s57dairl*Xb14Y:p'P&e!MgI.2OdL!l?pa0KaOiJ>c#[mU""aOoZ[qG)s/CN42[LW"[5XG[8F)T6[l2u#kPUO3q",.sbam#>!S>[,`aWj\-mWchM<$*"U%-rZZ4nJ>E,MlW1_B;?t2FA5gE@A1M5$jN%EKfMFX_M-%oYU'0*qMcs^kL+rqbGeK?]YOHH&u()6<boA3^,>M[-Q#?AHAljrfpT.9f-d3q;]>"j3T9cK5;s6BZ]'U:0FTg!o]hs?k.lbQ$&RVY.j<0?]\I?5f;N'FmqGn@2B%lZ&lY5Z%=;(8U*SM4I%EH'#h2>JHr18jBamK_4*N+2/EBNhJN#jF-q2OE_[M-D-VV#t755L'^'::#[C_E<J^Fs^#2,$Ph%Vj+?0`*Rr=6:-!Y8Dk2+EL3Zl-R[mr&4Wq",!KaV2/RLMOd%jsc4`*)Ad8p7:%EqkE9A"p$g8Ooka>`Kn)U+6'ht"/r[mO/P:_]`M(:5j30I*+!akB-2i+DjAadKa1s6i0N!\?Ikmi3@?!]_8\FZEET^@mVGYIoU_4Z@=+!!dE8j7Nl)e:NPYbpqJ@2dm5Y[:P9)`NZ5'46F3"I?-l)NbLSkh%Rao(g:hs&s-Sub3c;>:.VMOIWC02np&;P"CJ;AdBe4N[B:9bGNg5gVb@DQudq3SoZlZU`Z/Y-W-%fig1`H9IAh!n\i\T(8#kU-.3MU&B?YC[SVWO`gj=fXX1/p&=Vat_%#baFZRBqYq:o_;S#79PUebJP(h#2)k^Sb9AJh7[.4(#mVuNFG@j)R?+Q)e(n;1&,*U/BNN,6P1V)_fcd\2BOubs/9grp4IT*aNj^i&q.*Y4@A,/eu2a`9WS!B<u_e-3EU*\06pimo.e.sc(BSER*DkN=qLI=d8s7ZG*op%m-=*>q<eaL-!q#jDa4Sf<qA,(bT,C*nS$^O]Ma0g422U&#->"mTg?QloWJ)^jLbX>gI(@QM2sL^>ZV*p4'lELLBUi(b2WF?:])d8"heVH[BMfu#Dd8/joFtIW[f``[4jh]LPm[a44,TI=j"0.">3]\:k$1b#-_?;$fL,t*%=RKr!BZ6AB=~>endstream
|
||||
endobj
|
||||
xref
|
||||
0 22
|
||||
0000000000 65535 f
|
||||
0000000061 00000 n
|
||||
0000000112 00000 n
|
||||
0000000219 00000 n
|
||||
0000000331 00000 n
|
||||
0000000436 00000 n
|
||||
0000000641 00000 n
|
||||
0000000846 00000 n
|
||||
0000001051 00000 n
|
||||
0000001256 00000 n
|
||||
0000001461 00000 n
|
||||
0000001667 00000 n
|
||||
0000001873 00000 n
|
||||
0000001943 00000 n
|
||||
0000002236 00000 n
|
||||
0000002334 00000 n
|
||||
0000004863 00000 n
|
||||
0000005488 00000 n
|
||||
0000007277 00000 n
|
||||
0000009068 00000 n
|
||||
0000010997 00000 n
|
||||
0000013098 00000 n
|
||||
trailer
|
||||
<<
|
||||
/ID
|
||||
[<323c7ae53850c32e02de0259196e5e57><323c7ae53850c32e02de0259196e5e57>]
|
||||
% ReportLab generated PDF document -- digest (opensource)
|
||||
|
||||
/Info 13 0 R
|
||||
/Root 12 0 R
|
||||
/Size 22
|
||||
>>
|
||||
startxref
|
||||
14760
|
||||
%%EOF
|
||||
@@ -1,4 +1,4 @@
|
||||
# Les 13 — Lesopdracht
|
||||
# Les 15 — Lesopdracht
|
||||
## Setup research-agent + eerste run
|
||||
|
||||
**Vak:** AI-Assisted Development
|
||||
@@ -279,4 +279,4 @@ Het huiswerk bouwt voort op deze setup:
|
||||
- Custom stop-conditie
|
||||
- `AGENT.md` documentatie
|
||||
|
||||
Zie `Les13-Huiswerk.md`.
|
||||
Zie `Les15-Huiswerk.md`.
|
||||
@@ -97,8 +97,8 @@ endobj
|
||||
endobj
|
||||
13 0 obj
|
||||
<<
|
||||
/Author (NOVI Hogeschool Utrecht) /CreationDate (D:20260521071303+00'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260521071303+00'00') /Producer (ReportLab PDF Library - \(opensource\))
|
||||
/Subject (\(unspecified\)) /Title (Les 13 Lesopdracht) /Trapped /False
|
||||
/Author (NOVI Hogeschool Utrecht) /CreationDate (D:20260607084029+00'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260607084029+00'00') /Producer (ReportLab PDF Library - \(opensource\))
|
||||
/Subject (\(unspecified\)) /Title (Les 15 Lesopdracht) /Trapped /False
|
||||
>>
|
||||
endobj
|
||||
14 0 obj
|
||||
@@ -108,52 +108,52 @@ endobj
|
||||
endobj
|
||||
15 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 2307
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 2309
|
||||
>>
|
||||
stream
|
||||
Gb"/'D/\/u')p0`0it#uP=DV/jkI(+JLIMPo@7fM>4Gl!!sVJ:Ct]T&OHa&JfAEn[[A;mXgr5mp)'\hBR@2m!B1=D-j!1#]A5;c79&ne3#t`Ul,Wt5:FI0G6c528X5_bk+bZ3GX,dGEJIoN"#3V`[`+rL\b4Cfr6aA[[>'e,;J(PX-0;Uag\NZ])A4B*@V-2^"3\(8/BO:n9Njp+2Z\\?Ng)>,0hFP9%*p)d\0+ZcALWp;Alr6VA+S@8,T*:D0<Mc3n-B17s1Vn1C"=\VCaL,@R$9r]\FC-A>!oqfrk`E_U!/"3'YoX0f=_"XYFAE8I1pq+*]i=[3N@TLJaH9XSfo9dGrlQc+G"W#0Sft\=RN-lH)n_g9+!S5L90D+"ik*2PO1!'MR1,shM\[$,YPW6)pKZgmo$a[;1$^_ljLb+u+;*2r.ZTX.$(s\XHR-iiq)XiA+%Ykr?^:X3s_t:eVSMLL@c%K!CL$]N@i\lglYT*U,gSG9K2cN0!A]VC@^?TR%;)cZ*ZTZ<OgT\-@*o<[^?J,9o])hMk08'tO@;nVA7#710R$g_h%HH=g,;9-#a-'`H%(mES/j`XN'LG76_eA8QNTUdVGs)]WWXoV>\.:nr/<[ju!TX>g0,N!AdW(\FNT*mT(]?a*Q\[[PQhdBW!nbk]$j's!_1oQDE'*$:_jfW8?9fsr-nHsVXk%Q6<P&CB[/]H>!lm&3QjrFJ)LC1"N%]Wd;gPBB"@"Z=58@D(@m<^Zlf-hBr2YeOFh'%F\)OCF)cjJ)ehgab3i=eV-!=JQ%pAC%"ru-4]r[f56Ap:3Z,PsM+3:@^BmMtlGssM`)+#SI>S]=\g&RP[E=$AE>Gfr9/h^n+egI:h0n)cbNuM8*YP*C?3e`sYnEPISkLp6Oe**F=U[tKo#=W_)JuBt"&/-)>*@>)0>/2f:O!bkAM<aj]6PSg]VBeeN-8umD`T4g4D*s>7n#CN1Q#=r-JNBH0@2@O^TgGpf!QeMe]I-g>8(JhAK\e<>"t@C+a"Zs/[,8OD1SHW$pM7pB+*BcZAIFE@UcA&VAE8@n=k%'6N`C^_qBIh#.Xa(#^jX.,^'4?S31&t;oDZso:b6_>30'-aD7ZH]Vd>Lf8Y"7tY">P\8%bD>\H\JaA3<_Y^(%*]+e)o2U.'G*n!]eKR'S3t&3)jK!EIR1laMSj<rWBecrE7*ZIJ"/S!@K%!T[^X)kd7d[%tdD!o"c/po<V(Z+u<f<9NW4Z/>eCKrBRjN<N)^89g8CZpo)p*m4-W00m'u[+W1I4sY!@B^VicT2aVtPIprWm.".u'$'_)"dum"I;B^/c\;'.)i;%l@hi*g,Z&IQSiHkIU*&G3Lg)=*HLQ:KH*:bffU=P!]IPHiMZV;9(<SFU8*8s,#(auMJEn\L0ICoQCKDk:D;KXMn=--SQ/E[JJL=T)YH6\)C9T$_h0gS7?dQF`q*-+A.p<Yk%lhfI;U(=0_gCt`Nit%[H<JS:Q$W\/8FiD0clui@hp?(`J$oU."tsUc0C)aF*@r#s8R-fZP,)33JW@2$nL;!-7VA?%lV2\sK.\WgC/-K!o'"U+(AEO4\$u,_Mma/S]ZCXXp35^e?c1_>Yj)s\"T7>6YuuC%!J:hiJi9%B0-<$\YIVB\_(/[_=%Di,l6sA?Zg3mm2Ks9mW\'B/bIC:tW`,^[@Y*TVQE[0P@t+XE&<)iNNTY;OcQ:r((Yk%S3r[#!H>eC[9^e<Z<Kp9THnn$^j)OlXYJ"UUPM\@'iMXd!K2!3LV0[E`D;g3Fkcs$W;M;-^!]*Rp38d[5gLjm13aR:F@.$M$NN3)$c,%ZA^8nHZ)>AA8lqsfDK,^!SMMT(BL,UH1q/%33=+2`G.(VuN"5<pV^1$p`<,+,2HSF="19R<s)gJQ%\%]>KJ%a;g>`+u6j*,dglAEIM=`[AKcHRVB8kL,URW9D##cI>RMbP)%=]HOah0hf'Joq[XY*:Ljd:cKd06EJDl(U(q36eU&^uH.Rn=:AjW_>mgZpZ.008^CZZS\iKLUZ<q5<LJiib6Q<Bd5-rD5d=#g>Pb#@t$P0;4Q(h3#u#*MfF<tL?;2bUUO6ifZ1%Zd<YDP1Q0W#)1<mBQR+Wc,m[8S"Ljq/VIbmZ>:R4Cb;;E1ftA,Kmh^G_nr%/D>>mhmX?c`7;?B9%6ckjik!c9LEV/Pq$R%%4]a+(Zmf`O9"T)VWHZ-32N4SQSO6s]2W@gZ!Z"FX4FE4mtqj1Sq?Y7oN,HT;QhY)Gra8;LcmI%VO55;KLGrIb955t3;mOr3q]r6B$Nrc_a2\`;g-dOl*-[Qs/)GTnt^Xi)Uk`GCCnUVR8~>endstream
|
||||
Gb"/'D/\/u')p0`0it#uP=DV/jkI(+JLIMPo@7fM>4Gl!!sVJ:Ct]T&OHa&JfAEn[`MMYigr5mp)'\hBR@2m!B1=D-j!1#]A5;c79&ne3#t`Ul,Wt5:FI0G6c528X5_bk+bZ3GX,dGEJIoN"#3V`[`+rL\b4Cfr6aA[[>'e,;J(PX-0;Uag\NZ])A4B*@V-2^"3\(8/BO:n9Njp+2Z\\?Ng)>,0hFP9%*p)d\0+ZcBE<7bVbpn:L43Gn/338C3W(8n`9cAEg@:N`Y#Z^QoM$u*"'RT*9jeTs^"l:[Z_Mn..!=#<(<l"_MZJF?'jaiFkAnTT+E_C%I'`N5#Fkl(95c!q@gXH2#c'j)S?AHQ#<0_/M>a+KlL"B[U,][1S@RT"r1`$>l;aP[1&j\"8;-uo*<&2*"W0?dVS(GIc^&bTg(7.%'^=Po<%KAk&=K_7L`U2_\7EB)IhnD2@X*i9a&kaXXmC*o1./o6kn(UnB(L#)P(fe-Pq\tL%r/jmVnpQ`-l7bt.P=PmV)mi/t-I1Nf#g^<qND)Yido7^#X)?r_(7>,ngKphbDd4kP/1'/+CE%K[2beT,KjW\fC9-I9q4H-?X]<16+>^8ID)QF>X<O`Q+7kBh?-irB2>q[#@ZdNi]S;lN,`#&A?>*k%+.[Tt+!<Up#O:22$32$k,5N)Kn0+MoT=*jtEGb_M0R;K@'PH3C`Ybh;*k7]h@Z+t0h#L^uZemWsro:")pXWmP&1&\*(@NG>c6<Y01kMT]Y`37?qq7%/8"lHQ$7C8rfZIV%4q'aAEWd;a<Y;5%/NpC9L";=u2gP@GAeU8R4[\i<b9]m/81h?rPpiBU!k\('/(<7`"rG7m&=1Z&;AQk^j3lUkGD*DiNeU+^m,Ln6]r.\;-$(fmI\=H+hr#M>0%6Gu,P8?V=0n>YTi9i;h_QX:Cir"%qOe8S4:GP>3:23D,FCB3rTit,"HE(i'1%8JV::8LZC_N`Lg(e3sh_J0p=V-[2O,ir;C[oJ,`.lXN-/9UhGk`-<h1YKk2gQfm7fRp3\auTAB=D\c&W[XHSq2iJE$^FrXP0po0Mm7P7SBRRV@U1t\BD?HhZN&)*F[fsfb'*qc5O_Xo"7[u2""lhfp]i>S`uSb$@g"K$(YjnBhlY][HZG==ragcegXe0VuNpQH%e8:iXLJ!itP<9*P$W'W,1-G3/=[%d?g[^YMZE$HOCr4bM3@,0Vg!`?5;,d35\fta,:+5gnZuD:QGZ4:b5!DFDi^T1-i^7e>"ma$hmK#(O,u'"f0E:[I6K27Z-?")Y?VObqdBkOM`,h2(*D?5.i!O2mlH=L"LI?I?0B+gW\ms=EPlcE:oe_!i*UBnfEV];G?cA>OAt$Z<Q+R0sJ;@.Q31ddC9t71Nc4Mk+Dp0bUnA2.[2V6FUr7h-JE=nHk,Y8U'$\=*L21'=^/)2i?)g=-;rZJ-%IT2?$lRsaRG'f7DT($o7U(a,f9'-4G2[0M_cmL=h/RV5SQfhdi2KOMtn;Q:%-F%i7[&M%'m11A^J86&YHuV-m;0>,oGiZCEB+".rKJ&)7JCtk;hb#U8I&e@j-n>4^bNHUqXO]?Wjaa!9[("BX5B?(]#'DhLJV0:aFsH-]H<uo*ZCO#SXSeFFO%Y_7&M&p'.^2h-V2E40,.O1<lt'#5>[/92TPgFBZ\,>#Ch7]bCi"B=!7;`>nb"3/:n;N+tJ9j*^RiI_=T^I+@a/*mf6I`++,./?>LmHK(,#$6>2Nms4:ho:#TsGmuu4()Ul)?n^'R/);"JW/i"s]dlOmRO^)P'S6E.ja[<;-*6.[CB/E7&oLq`Qtm1L(>:BFP;DXsE7gpdEs=QM!>H,smgX2/!qY/1Cp*\>n5+4jH4B]l5hUn^MbpCh0XkHFatg,nX:<tMg9%j8f[i2j_kj:l3I[<-XKEs6T/H@"k1iW3VPM^]XXV;ANGr'>Ze1MYRoT./dG9#".p*U=m7Q'k&rfBRog2_OR4`7'Lst\t"[$*7!oJ8XWlej/91q+iq4]8\4A4^lIX!r'rPQOY,`]n"RPqI7fnQL;Y8uKL2!2ib)9"&<NRL`^],2>TD.qc?1O<8JM1*$_)4aii3O9!>SC)P4HWbrA?\73H95rY]AQfk[\YZ%D\4korS_[Mt>JK[FQ!ZX8hjOn0AHh?(PS,CE(eWr_1bVK"O/#eN?O6>1gNsJbpeJ%H9s>`5\+_42a/Br<s4I>:Qg/%u(jcIL:+(fY]79M>lc\YkEJ-2qgtVhSoQ^Db]A9%P`s871-grAegW,rch#6?9Xr#X7j"]ImoS-iJl/[+;n7;"*?DFL6rn"`Q+!#D$$RPWeMu~>endstream
|
||||
endobj
|
||||
16 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 627
|
||||
>>
|
||||
stream
|
||||
Gar>C?#SFN'Rf.GS<lhg;I/&I=!$UlDJ4i(.IB$-&q]%.W^'Z!nb[O$KTDEYZ$g->j5Y3A!2h0t52-,L.IJ8]KLGY@TpS/-6';`W%@B!#.Ld.R*lSaCNl$E`4kN%>AmuVc3,Y.j$H`\;>jNR^cWXaSH+XRk!mDR#SH<k!)eZ>E,A*aIUD;7t`1QXJIP0!*RH`B:c0cl3g*-;cSPUQM\Bn8$h;WVSoK(!QEp`1/;jISnR`]94#(NJV(lduRFe.-D?f@J=pnHP^rN>sJoH!0MS99CdUgc)[p*9RTf+8O-./0cWEIsc6f(j1aH%GW^\mCLVZ"$OM7J3>8S#*#>1lGr(8V=*1<oj-#).dZYXQaih-n$30F;0="r?H@n26q9gb_qB-VUDD!LmD[qRV.jX6d[.,PTNhK5g!ce[*8CV?-c`H))h7I`,9PSGH7dVO=+Kf[>N'>:.Dhh'Q4j/g"fNP=b*u5Fd6jXb$2'lP>dO"$5NQK.UEgK4r`c4>&3"[P1N)%@&!8akHS3GOu=`_D;i?gWnf?*QSsM;SuLL/c'%=)4<Mhfo:O,Hj>FY!aV<4bG<2A04A<b%kJPRYgQIY6?QFN:=6D)pAWa_Lr/Q1Z8[-<XgG&C5!^GA0~>endstream
|
||||
Gar>C?#SFN'Rf.GS<lhg;I/&I=!$UlDJ4i(.IB$-&q]%.W^'Z!nb[O$KTDEYZ$g->j5Y3A!2h0t52-,L.IJ8]KLGY@TpS/-6';`W%@B!#.Ld.R*lSaCNl$E`4kN%>AmuVc3,Y.j$H`\;>jNR^cWXaSH+XRk!mDR#SH<k!)eZ>E,A*aIUD;7t`1QXJIP0!*RH`B:c0cl3g*-;cSPUQM\Bn8$h;WVSoK(!QEp`1/;jISnR`]94#(NJV(lduRFe.-D?f@J=pnHP^rN>sJoH!0MS99CdUgc)[p*9RTf+8iWPl"Ig3'kk+l[60l]YJh??*D><fJ0;7U3b2Wc-fN/R`2T%Ud<QS/+S+MN3]lgeoWro'GQWS3XW^"rfK3r)VI+nk/Bb';ea`!7*@AIbqmM=U$*)&b)[u6+D!BC>3>d<Y3.C_$lf*_@Q1ge]@GG;a:khD>/fP/-R7GoMRO"Sm-Z:c/APK+\k9G<jfMVGaf.d!KaN<6'ebG6T+,oUXgRU>a_N(#0[]^lo2r+^8K3ok[W(1neaAe&9,g2XcW"eSB$#-OSr[LDq9S+4nf$DLA;Y*l4.X](*[]pNo3pg=D+VgVY7A:XX7MUsZH1o6I`FX>,hV1gD&E0U#4^B>~>endstream
|
||||
endobj
|
||||
17 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 2004
|
||||
>>
|
||||
stream
|
||||
Gb"/&=``=U&:W67f]jc+lG*B*n5(K,SMZbGof-ikAD0Kj%8FYS*F9n_3(bOt]aKpR.-G"0P.m/E8?ID\Qb2,r?pO7;g&FVRn8J_i:Dbbqdn=)##ah4!j6>e#LiAsk63?[Dl9u[`jI$D@X&/oG-[ruY"sFFH(^LZr,@MFC^i<]mYQ/DAQZkq.8Dqr>'L4u3rQtRX^IN[s;7.OppS6L?48V?S?:=_:3]+2A75.u_\sIH9Sfj9>5f,@5^!in*O5ZGr8i=_r/2MOJCR$G.bW$-kkkO"3e"ht($i!l<;-@&`WmLVs]nYcWUT9/'\0*mH_(P_DC4LS[\$B2eZ%G5uYL4U!YD;d4qK2o&o?Q!=L;`[sJFWE/dmkH?-hN'FI)nf_P4m;FZ4RTQV'>9JGhB,2KEXR.9B9\Z13,-t?m0"ab)%<I(J/Su*c'@e"#b`6%GX'Y,DP*]m?c<';5Y]XdB+-$IW.c"S)%lPhE2Z-8![6=V[`[b'>knb@%W)m7=&BPPjjcS%iF;PTaYej6n^0G[;N^,n)=-Z59g#8I)1YM&TW(#s'3SZ)K)Nn^8g1N\5ApZ$^D/56AgRqmeN.[N$:)jOh8*@Y_9g!,J7$IO$jPd)<bVa8;,K/gko@*qLf1ooHiI.9ep`E-5iLT1(32S*jX;i?j"]MC_o)>S-5Oo*t0NK0^O3^[pX<YbKqHg^'!3Fg?me3c1^[k[.#3D;59am778?F3-#Jm(^7XX5tbr-CE'-E@0LCF>UR^?XfA\X%F"N0>o+Ip_^#P%A>'"O"h<kB]kUN;`Yh`uR`G(>?E*V6!$%8Wq,2<RY?)(?[?jp42&%A9Xg2aC-:/Nl.,;TpX5*"?=r<45-Nthc#?.ej"=p+TY+)`,J;(Rn=.+e)04*M'9WW%1dZ91q@E:OOf(k5LXO4=1=,i73b/"kTc"q=,s(+S9&7ZrkLpR%%^:[W?id65Nf?Z,@4;)n/[n.TQ>1K7?LFQJQGlsIK-.&T$<Mt.+?j=Zq1/4su^oGW,A.@RQb"F-5<K*V&5#OBPq!R!bpTgkDc8*`m`!'VPR^BRk9'^f"B)?P2l6R]KQ+V.C*sN)fongV-oRH'#VO^A/Mp<X&c8ERtW<&NZlLaq4.Y\dkg$BRG\uuEGA?_Jm0C?\LNEKpoqcdFD?C"n;C86iW>&1M&W/G^iGfZ/)C&B=&erq*n5%t2<q$a1$i4j3'8-W:[q@1pf=A^?@ap-Y=3b0$e$_5-l;"qd`:a_r@0Y5g-N>ngOgp.&AgduQcR,C,p5f*c9XNMU'EB5/>JN3ZB.3l8/o$/Dk.i1Pa4Ml+k4h1sJf$d,lMGq2Uql/faZGXr)^$B8A5=AS2JSr:+N3_BD&P6+^)E')'rf/^#_Z][LXJ%p]]rS`_DVG_&]HO26s.%B\Sio1rIPa9=G'<NIkksuKfcMU!%CB=l6:*g^s"3<Zl-n,WDiao:`:\M`kqdrTQ^]cFVfKS4N0B6tlE(M,lca37\8NfSgNu/XO&@08[$c@YGRCP$8uH5TJaqWoHA1/iQHCBb/9_h"dq3UZ^do3Km]>[^^5&RVX%I(]*h(e@-*S<iMe]*7Z*EH]"Q#:3i`[WFqtKJ;B1.`^YnNV[#!U9)LX6->\_COf]u:RNWsQ_h\k'Wq)C2im,7HPeq8/HA%LkHHj85Tuj-r$YE2drbSF)<&>$&u0n1_"CU2;XU[/o>p]7:m9sBHNN._JT:(_>[S8kSt8^_]dg5jKe2NV?`J@El=PW>5(6HH(bL/S\usO"+lfT>q'e414uAJe(d8?WkT9o<RCuj5J:9Y2HJ6=d]j)*=mFE/J^!LJ7SG+Bm3B'*IIXL_<r93M",h^e?"kq.Sq>g*]mC]8H3^\APBu!ukXLg@egFWMQIVZCL:hp[/fPq:Y-71d[iNf^EfGh>(kuD"k4OUq@"-U\>@dV^5&&l-)JAHd/%KW+b0]+6S'>,@D3CIN&I'O7fRjqek8^"XFfBjP"3nL':%j&NEQX=edJ3aD6a8HOXVfs!V"12sOJH~>endstream
|
||||
Gb"/&=``=U&:W67f]jc+lG*B*n5(K,SMZbGof-ikAD0Kj%8FYS*F9n_3(bOt]aKpR.-G"0P.m/E8?ID\Qb2,r?pO7;g&FVRn8J_i:Dbbqdn=)##ah4!j6>e#LiAsk63?[Dl9u[`jI$D@X&/oG-[ruY"sFFH(^LZr,@MFC^i<]mYQ/DAQZkq.8Dqr>'L4u3rQtRX^IN[s;7.OppS6L?48V?S?:=_:3]+2A75.u_\sIH9Sfj9>5f,@5^!in*O5ZGr8i=_r/2MOJCR$G.bW$-kkkO"3e"ht($i!l<;-@&`WmLVs]nYcWUT9/'\0*mH_(P_DC4Jmk>?NQCfKl.K=(r8!f>IG*rON%$H"UqY6fNAJ^j(7Skp$_0'7.M353*q@8c.^^fn]ld;A&V54R?)T_?-A(-$$==)*&QuY`LRAj[9]`M^18uO0rbn!?4=V#&^$=&]8P?p.O\$W7-ogkgkV"5<'n"c0dH8Dk;oR,KhV/dt[nlM;aLAYYW,r,/(388pJFe#7PUc:kglEU)+W_=uY?Qp[ETh*teK,^>MDb#e@R"J$.f=%C]:r?WHVbgaLP>L!#,U+[ndIpO#U>7M-QFaPC'0=@-EL&`0P57j85m%!8dk,XQ6(DFH0PI6n)HqN>g(-5ef]PDi<eR>#Z:%pA1EYQ8B7[YpXZ:4c<s%u(``)"t\@>;3Y=AS;ZnhgoZ^mIkJUB)D?p>'LV3W6nDG+sIV3*4^fGMumA=TI%"'[1-'3YQ?[3Y*7t[<`N;g#%i4SXpY_s@?LaMZ;:Pc!o.p\?8\`Xis_qKc/X*ZYLNDV!00[gHmq+df.2R0g.SKU)N#1-<`q<\';:=q'Q.<I<GqJZ/I]YVP6-rBK.0lEJsFYef1fCQ^d;>HX%^F%(GG5N-<<#)ksn-t0]X6blhn^aenA3TX%(-Tj^=#;B!sYQs"^;WLp<(F`7b,#?X><0n\)`8lfT(0*XOsSgSBicXm46[6PZ`9]Re;6&nk7MW`-SP0S<kIRASSK?r^fQZA.m9jX$.V.`P:#+/p4cI!9MBHWeo2B,TnGiW?Ac9j1dFV00ILZ[K>Tob*Fa8mXO2%tfRnqF"dQqS.*"e'98S7HY;#kF1DKe,W6=FaF!U'gmqqCj(b^h:I<41>'grQZhAa`[isHrN38202!r.[F%K<XYngNeA\sE4QK,P1k(X#lcG.rT<s4/I"kR"nD?0$,_I[>r<DNnX=+][AHV@/*O:Tn"\rMFW;GKkW0>R[(u=KR`XUEbDHVQ1m\IBB9^j)s+Q3E-en#?O3#rOZ5b*=\PS)XRH05aqQ&?dk*aq'qT%o$5lfk/q`Mq^frR>okg#;)PhK:W1+/5gT5e#YP7To63LnlR?%3$%$J&dqM@01d6f$L(jhGmij[r$pNhN64,Ino0>cQ8Yt5FS3/4$.b5FT-Oam#RA!#21XF+e]s@rtb1ho]bW<\&Wt-id*fAoU3OebKUo^;`Wc*`lZ4up""l'Flp+Vgp[uemCaUg7k#$,g.X^=49a;MV:2`;_"d@r]u'1E94a4lQFdL"BsTd=@&+-6G?/hjha:><<M_Mi%o$o1'%dYE7CCS,fN@`i!q/[*ENKk4rVLc.1SR@jfSRjh"!;.P6g+QZh!HenhVs?beHFlD>pS?I%2.Ir&I+cCHsoZ[LBa<5nbpkKnP,Ng\5YLlcM#7NXfH&SGSjL2dC'UMUs'A(H";:VW(D$24b7R@^pnPj/hdWF:X>qk?56Rp65K7f03,Y]FYgiZ+$V4_N0_1:>utd"OE":Zr"PVS+.>cC$m13<oT'%/b[)nU5eimT4mc^C?EOP/G3]R`?KeaVcMNfrS=:Q_5<emYIWTaLP3hM[!psPdI/nQjG2?+4SKYc91gmIpf%lenm?W;c^GXbaW3qG(m'qa=',-qiE7rk]lj[4%oVsMp*pI#1!Qj@/Z1_qVLLT(O^gOs(LOdYlR-t]e$/Q0]*256#51t^D9bf@FUugB^lZS:!Sa4Y.#7ob3bHEoB^`\:,j8OhgdlWNf!SOcaK)~>endstream
|
||||
endobj
|
||||
18 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1601
|
||||
>>
|
||||
stream
|
||||
Gb!#ZD/\/e&H8h>EUY?RE#Fh5hE5mG[^BeWTZnCa5Z&<u.l4G6]p5>@Udb:[Nfk^ADE>bS0[)FKlca_DGgDK_),P^eqE)t&I[S%21BrfUlk5[.!bSA"FQRso#krTe4<SN4h1u/i>l+SNjlG@q`/f/]+J]#E!s'TV,RgFZ3;NdZ$U?5PI,lt(JPUnp!"#(VL]2Ms0(CsBd"6MV+78p.o*]D]&b4K+@@GFG_/KT_0<.B^"ej-J4IB\6Ie!!R#s9lD<#%'E,)+W<X*A>dc?TE1-]a=h.]JA1^i/LAV+$fOg`4,r,Kq4^=<%$e$c4,#Cu_.f$CD2\']h[)%f/k*-+O/`Jb:DA[0?0t3n_=A8a'$&I+2__k-M`X$Gm"J\Y9O7[MEATj8oE40Y"LS<iC@tH'Au^.(@"uUFbtuTl+\6[L>/e.H)?%,KLi:":_u6/TjHPX^c;7>/2LbcsY<8[W>oUD\UKR#X_ocFZ+er7^ej+E6eDo;O9[^6)ac+FVkG%E8tljK@)k`m*Iqa'HankfDb_`qOb%!FQuo8mtR.GB.cS0%?uP3VVGQ0+q\JC#>Q][1odMoX.-EA#3$i1%!9-FWL96:^YRdf/J8FYiZUB@'#4R<=XU%;ML5c+k>J0jK'OUTeKV9STKZeGCRKfQ3P9f`$:RNUPCXR%:V8(ilPN3"Y0;1(<108n=&OG@W+(C9_Fg`W:`5hb=7bt[J=slAE&TuuMW'K)'A"tgNJ^e,9gMghGmnJ1MZZb(L7t&\*(^OlI%`'-KiOCFA7FIpR<U_6O-[eMeb&?-Q3f;:3_=6]>\&WT`o)S/UWHmlJNS]=l9YM^at/GS<r_OJq/!:B4=!e^M[f\4G(A#k'Y_EIf-3.ul9(ZoQ>2)7Z7OHMQBpCFO&_='i,0qC$O@4*AqD+^`U+@g5C`K<9iZ4Z45=Ju,L#m?'*Z1O?$oNU<pCl0<CKl99kMFa:/9\Q*1rd,r:0FH5^JQNS#L>.k(QLho&&EqI_ZuM#M0V;5/$i4X8*>>oqlYud,h1?GOY`D_m#\l>"BmMQGW>>Q4r$B")u+%^)M_eBQ6Bt!a8i\GcT=n8)t\=Img[AEm[WA3eGam+GB'D^u`4iTp8dF*9qr/Bk'll+/Hcf;Y)W6TFt(9\*Q?[N^pEUjE6!H5&<_NH`,`plB)?@Val)l?R;o+.oi4A&!T<(n@IShhZ#k?4LA#!95MbCO)i(LW0]_B]UmWr?YcY&YC5WrYI2^uN:sOUC\bl;:"p(\lF0(7"80ut3Tno(8,n>?QP5^2h>S7^Vm7)W,0/a<COngOn[Q!+TL?XO.Ob9FdgB$u8pi=F]"+[.5M")m"<QLm9'P)IS_[)V!NK.ca^#I@-$XSf]D;3MC;_W')UEnk-af8=-4aJ?Y#`H$Y7X-9IBUU:0r`m1<kEsBLXiWX[`CYj[^3*5pY9q,Q7"7_PIAC?]E*F.X3LA7<\)>rPh(PC]2#r;<@L/R9'n4=jAHd3?DC>tPgo6o6J%^9)U/fde6p3enk*UPYkUA()IY.]er>K6<+-<5l5p:REf$UA<Q"BO8m312bs4%ss4D\qODb&"R%)g#i75*`s(#Og&DMQ^'T??-6iWX=%*i4>!Sq2~>endstream
|
||||
Gb!#ZD/\/e&H8h>EUY?RE#Fh5hE5mG[^BeWTZnCa5Z&<u.l4G6]p5>@Udb:[Nfk^ADE>bS0[)FKlca_DGgDK_),P^eqE)t&I[S%21BrfUlk5[.!bSA"FQRso#krTe4<SN4h1u/i>l+SNjlG@q`/f/]+J]#E!s'TV,RgFZ3;NdZ$U?5PI,lt(JPUnp!"#(VL]2Ms0(CsBd"6MV+78p.o*]D]&b4K+@@GFG_/KT_0<.B^"ej-J4IB\6Ie!!R#s9lD<#%'E,)+W<X*A>dc?TE1-]a=h.]JA1^i/LAV+$fOg`4,r,Kq4^=<%$e$c4,#Cu_.f$CD&X']h[)%f/k*-+O/`Jb:DA[0?0t3n_=A8a'$&I+2__k-M`X$Gm"J\Y9O7[MEATj8oE40Y"LS<iC@tH'Au^.(@"uUFbtuTl+\6[L>/e.H)?%,KLi:":_u6/TjHPX^c;7>/2LbcsY<8[W>oUD\UKR#X_ocFZ+er7^ej+E6eDo;O9[^6)ac+FVkG%E8tljK@)k`m*Iqa'HankfDb_`qOb%!FQuo8mtR.GB.cS0%?uP3VVGQ0+q\JC#>Q][1odMoX.-EA#3$i1%!9-FWL96:^YRdf/J8FYiZUB@'#4R<=XU%;ML5c+k>J0jK'OUTeKV9STKZeGCRKfQ3P9f`$:RNUPCXR%:V8(ilPN3"Y0;1(<108n=&OG@W+(C9_Fg`W:`5hb=7bt[J=slAE&TuuMW'K)'A"tgNJ^e,9gMghGmnJ1MZZb(L7t&\*(^OlI%`'-KiOCFA7FIpR<U_6O-[eMeb&?-Q3f;:3_=6]>\&WT`o)S/UWHmlJNS]=l9YM^at/GS<r_OJq/!:B4=!e^M[f\4G(A#k'Y_EIf-3.ul9(ZoQ>2)7Z7OHMQBpCFO&_='i,0qC$O@4*AqD+^`U+@g5C`K<9iZ4Z45=Ju,L#m?'*Z1O?$oNU<pCl0<CKl99kMFa:/9\Q*1rd,r:0FH5^JQNS#L>.k(QLho&&EqI_ZuM#M0V;5/$i4X8*>>oqlYud,h1?GOY`D_m#\l>"BmMQGW>>Q4r$B")u+%^)M_eBQ6Bt!a8i\GcT=n8)t\=Img[AEm[WA3eGam+GB'D^u`4iTp8dF*9qr/Bk'll+/Hcf;Y)W6TFt(9\*Q?[N^pEUjE6!H5&<_NH`,`plB)?@Val)l?R;o+.oi4A&!T<(n@IShhZ#k?4LA#!95MbCO)i(LW0]_B]UmWr?YcY&YC5WrYI2^uN:sOUC\bl;:"p(\lF0(7"80ut3Tno(8,n>?QP5^2h>S7^Vm7)W,0/a<COngOn[Q!+TL?XO.Ob9FdgB$u8pi=F]"+[.5M")m"<QLm9'P)IS_[)V!NK.ca^#I@-$XSf]D;3MC;_W')UEnk-af8=-4aJ?Y#`H$Y7X-9IBUU:0r`m1<kEsBLXiWX[`CYj[^3*5pY9q,Q7"7_PIAC?]E*F.X3LA7<\)>rPh(PC]2#r;<@L/R9'n4=jAHd3?DC>tPgo6o6J%^9)U/fde6p3enk*UPYkUA()IY.]er>K6<+-<5l5p:REf$UA<Q"BO8m312bs4%ss4D\qODb&"R%)g#i75*`s(#Og&DMQ^'T??-6iWX=%*i4[FkpR~>endstream
|
||||
endobj
|
||||
19 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1809
|
||||
>>
|
||||
stream
|
||||
Gb"/%bAu>q']&@2DS52S)%-L2&-S7igH:qU*D_j<9!Zhg0Ek+V.?Z#$4)$&AhTIk>GX?&,DIRrD&d$?ApPHe<i\.A3LKf;,$^eV8^c3mjJI*N.E<:V@S1BA6aaN+KE><Tu%O?#:+3<&/!hLYmhuNpKIA2)i68>36TRc&_he,.6#0n;O%#?R9Y65EU4K7CCk?T8l8(3'7;?jVV2uHWH0-IQ/LG\<]"N)7]EN2BK"ej034]lN/o((>CA,%Q[Rj-X`BaeosDShBe-0IHS3M&D`MQ!ak"jbH$M:69V&pjnB$WoMBD%5t<(PE%1ho@r9"Y^b^,L'9"m\!qQFd-S/#$Cn5>[&o()mVY-`-&&?q=nRK*>a@'>TnfSXi!;"5B^hI_gOkN:kLX.RU(M!?h305fBrs9D@I\T@]Y7JQ3,hXGgKm2XPVD<BGWu\fKR=c_f&]X-1-4rB-hY5cQ^AqNb!4@F(=-Rk\QchY0,W_rNd;OrDWqOM/#XnO>]Q7=,ac,&D'pRWmW4!Gp07!oBjj)^9$f+_S=),S9QU#g>0Y2[5nDnWNnD4'WfN(PXN9Rh)9_HRq/TQA3dc<.,,@!^\s>9TU"*.*i=&jQNS[UF>hUE<FUm^Su"Mc$-si&5\3rJN1r8`\D:e'McC3qV\<B`]6/eqf1k/)`K!d%4P2<0P<fg2W'=Nam@M\hk6L0<.)d^8DG;8"TU[bp39RU(e1p/f&?:4/bKs=*n29ULBQ'rQ7+M0"H`kWhhOFN7c:W1%W3S\W.`?i?S8kWG8r93,Q+9Jnc-kCaB3=)23_@f%.[D<pOd&"%GDSI8i!Z(<knXbNFR\M^dF:K=V20okg4rEZPN\rtq-?M>@Wa]3QU`3IM7'$pZ+Vl)Vafk.jp3?B?K&+EaB;l>2l><Vg*/>2IMJVIUo6nj2"HW3*li['2&5_f1)-TW@?EoSZ)KhP0dPmn5G63Ak7In"F/E%[3IktX1@`#6gi@G>cKnN+dk,b4_=I)/":I_)i(MI*'q[1JgGsZVgV?t6c^:M<4Os-'K<5LL9n!C00&SdMf60>eK],JqBhas,G\Z`^JZYp10?`!YYte[eEMjkJmGcdN@X1L6:oQsPoP3Z]^n9a?haNl[^6)Wg6^gNd=PLoUhutb,93XPsO4P.A%C\+.V_4,k<A%d&XV5L.m@0;K"<V90lNs*3-,(L@)K,-0ik1.7U%'bMf%*=4)A!K7HY)fb%GG'TA-?'?6r`3?K_>s<elWG_K_n(`E1DUOY)(:^AhH!GXrTq(7CpZ01Zj5NPEJ0-G3'*m8Ct%`Q?O\U(EH'kbU6(gK9^S$qF4]!^p$9HWm66V3O?eRD)PS</+R,EG$UI00'B76h$RY@T8"H(jZ(IWC"N'39saR5PK\f7DE2-I[(4o:''II/nBolO.[XH7a\R?X,P@?%,P77;o[W8;aO?\;A$pgfl>#:i23lImREhO041T!hanlAq-@7KA;dfPg!c)-fFCJq7C$"dq=813;NC_I9V^-re>nYj>:#P]Fe&??jS#\Q^0ipHLoTk7dVG@C'$0PqQHThP'c9J!YO$V[eW4Y6ra@24<bK9`s*)fe_$`REJ#B5<_&c?9^D%2@Oa=qq.S[SaAXUXpQ]p2N6ln2'f84A:"9]Of.UkZ_lnAguY8@8)LPV6P;D5`"XJF\RI3eZdXCitIeSeO[+@IbK>$DY9-U_#d!4GRU'c^r.U&!ki<1VE7?<C+3_hca&=]I0U?N<@O[cbY>Nn4OHmk[TeCCpd;,N=[.GRKaK7AFsIUMOaOm7Mgt4Gn1r1pW;2BnT$k#\!5!Z.IS^I^"EqAInc#i5l~>endstream
|
||||
Gb"/%bAu>q']&@2DS52S)%-L2&-S7igH:qU*D_j<9!Zhg0Ek+V.?Z#$4)$&AhTIk>GX?&,DIRrD&d$?ApPHe<i\.A3LKf;,$^eV8^c3mjJI*N.E<:V@S1BA6aaN+KE><Tu%O?#:+3<&/!hLYmhuNpKIA2)i68>36TRc&_he,.6#0n;O%#?R9Y65EU4K7CCk?T8l8(3'7;?jVV2uHWH0-IQ/LG\<]"N)7]EN2BK"ej034]lN/o((>CA,%Q[Rj-X`BaeosDShBe-0IHS3M&D`MQ!ak"jbH$M:69V&pjnB$WoMBD%5t<(PE%1ho@r9"Y^JV,L'9"m\!qQFd-S/#$Cn5>[&o()mVY-`-&&?q=nRK*>a@'>TnfSXi!;"5B^hI_gOkN:kLX.RU(M!?h305fBrs9D@I\T@]Y7JQ3,hXGgKm2XPVD<BGWu\fKR=c_f&]X-1-4rB-hY5cQ^AqNb!4@F(=-Rk\QchY0,W_rNd;OrDWqOM/#XnO>]Q7=,ac,&D'pRWmW4!Gp07!oBjj)^9$f+_S=),S9QU#g>0Y2[5nDnWNnD4'WfN(PXN9Rh)9_HRq/TQA3dc<.,,@!^\s>9TU"*.*i=&jQNS[UF>hUE<FUm^Su"Mc$-si&5\3rJN1r8`\D:e'McC3qV\<B`]6/eqf1k/)`K!d%4P2<0P<fg2W'=Nam@M\hk6L0<.)d^8DG;8"TU[bp39RU(e1p/f&?:4/bKs=*n29ULBQ'rQ7+M0"H`kWhhOFN7c:W1%W3S\W.`?i?S8kWG8r93,Q+9Jnc-kCaB3=)23_@f%.[D<pOd&"%GDSI8i!Z(<knXbNFR\M^dF:K=V20okg4rEZPN\rtq-?M>@Wa]3QU`3IM7'$pZ+Vl)Vafk.jp3?B?K&+EaB;l>2l><Vg*/>2IMJVIUo6nj2"HW3*li['2&5_f1)-TW@?EoSZ)KhP0dPmn5G63Ak7In"F/E%[3IktX1@`#6gi@G>cKnN+dk,b4_=I)/":I_)i(MI*'q[1JgGsZVgV?t6c^:M<4Os-'K<5LL9n!C00&SdMf60>eK],JqBhas,G\Z`^JZYp10?`!YYte[eEMjkJmGcdN@X1L6:oQsPoP3Z]^n9a?haNl[^6)Wg6^gNd=PLoUhutb,93XPsO4P.A%C\+.V_4,k<A%d&XV5L.m@0;K"<V90lNs*3-,(L@)K,-0ik1.7U%'bMf%*=4)A!K7HY)fb%GG'TA-?'?6r`3?K_>s<elWG_K_n(`E1DUOY)(:^AhH!GXrTq(7CpZ01Zj5NPEJ0-G3'*m8Ct%`Q?O\U(EH'kbU6(gK9^S$qF4]!^p$9HWm66V3O?eRD)PS</+R,EG$UI00'B76h$RY@T8"H(jZ(IWC"N'39saR5PK\f7DE2-I[(4o:''II/nBolO.[XH7a\R?X,P@?%,P77;o[W8;aO?\;A$pgfl>#:i23lImREhO041T!hanlAq-@7KA;dfPg!c)-fFCJq7C$"dq=813;NC_I9V^-re>nYj>:#P]Fe&??jS#\Q^0ipHLoTk7dVG@C'$0PqQHThP'c9J!YO$V[eW4Y6ra@24<bK9`s*)fe_$`REJ#B5<_&c?9^D%2@Oa=qq.S[SaAXUXpQ]p2N6ln2'f84A:"9]Of.UkZ_lnAguY8@8)LPV6P;D5`"XJF\RI3eZdXCitIeSeO[+@IbK>$DY9-U_#d!4GRU'c^r.U&!ki<1VE7?<C+3_hca&=]I0U?N<@O[cbY>Nn4OHmk[TeCCpd;,N=[.GRKaK7AFsIUMOaOm7Mgt4Gn1r1pW;2BnT$k#\!5!Z.IS^I^"EqAIrV3J6N~>endstream
|
||||
endobj
|
||||
20 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 2065
|
||||
>>
|
||||
stream
|
||||
Gb".=gJZcqoNbgDL51MZj(3GBP#c\%*Lc+W_?9omD.]0W..Ui#F[M<dS@8ISZaq)l<&,-]-.j@)B[?Xg$Nl8.<rVb:J7$@$pQ>R;0YRZ:Lk,"-]GMSH#2qIaKE];Ye9!\^f@3$H9oTu@S(K?;)+a$(km.i`&Lgul*:Y#(3KP]"HtG&TN_LNCJ4O;*d_:KT&t<rQ/VmummTo`o5,lMBM-Wc0@THh]L+?B.<(kaUKJL`U?l[#N]ArKMGb%N.mU%83#eq1DnuiD1i7rm9_pLcA#C3!in=*U[0M*K((JeIe%HD)i=-()RJoFdNX7VHP%a5'g,j?TG>1+eT1l+<!HaMY)>oR62YD%+t,c4-RoZ)SR2bZ&g1kdMtL^\0`lF)D##'U?L6M=eleuJp^Nm7G4X'+I%/IZQbA5&2%5q]<]/SJjfXBO'[ciAG-Ydk8RL2U5hP.$$WbJcDR-Uih%XcPD\X%#m+hmbGa\C."lrHg2?r0.4u'3U)]cY\UR/f?U!+^J#MZ?2T&q1Z&qb]g6RqK>Hf-2]rT_26-9N856FB8)\(;h`(jjTPcA'Io"p-GlI<Y[,t;K[)ua^8oYAp<noBoVGRaC>!dN2%sBp.t#oh&iRSuXFcL1<!+qb]iIF$"s9^%iK]jo+WRE&p(eD^6;ifqJ_H9;*!CE\&D=/TN>?-sP">1tA/J@DL8p(Rgb:U.'F9-7@HL*`JnU'02(]hRZBL;l;Ud+cSDESdi%i,#X\79bQ:kK.\D:K!kL2DM@%nEh?H,BHD#a07k5W9@QGA_pPlLbi[N4?]gCepAgY-mIfgI=L%]^DR'!r5;q"CD(Ig_qj1"u0OE\%KSfVVSI!Ip\p0_uGXNmG^a<>=]shHlTE??har`P+nmh=K'&02oFP1B.\60%RM'L:1e/a5jlW%PW2<43s,#^m6hr02o7h?CHV"mhJ,$mp5*J]JE*AUDn=$D+IF[a^7+gF-S>$p0m+pYCJ:BFc6>1T2b$ndk&##@DC<o'0Bnja`V1TPhWt>r:=H\><bsbreBa.Tes#Jg'7#jRae8KU.^SS,/N]Xb&2>phM4%&a6t-K"dJql/$%dDL&,'(Y_L(K>jSI5`bqBF8QMKV._^[n2G!EsLpnk(.4B/baPg02'1DN?Car(WMYCecC;hA'V[:)OGY3]H=@eWX0"&G)$!SD_gi#;#]EiNmDb,CrR^J[:pGW:.?T1[5Y/&f.]tp&VMDi.ZA&PHa212g^>VO4O(np.TMkR%0Ark0_;jA[j:M0:PHoK;N\nOCX^*N5:AY?=[amtG^8T=M!N6q*@<&5mO?BDHEPSM=K6\R%'C72u#\mUV6:^#6,aj^E=@aEetSfP")l$50_]h_spe^;9@;O,5Bo4GrDC0C9(eEV9A9!&3_0=*2)ZTC1\WfS[=VbkG"E=,E[TE&eX?;TRcI.$k]a*r_WQ@m!Ug@6b\S;u3r[!SQU2NQ#j=kU]4^/7U'hUJtUdWgZWJ!I`$\k*)@p:O;p-5Gu(ID9J!0q!aM($^5i6,(_P@\Yed4km0!#`O5m)<>&%E02F!/;\>7=-.%9Vbfh"EsWLT)\<,7KnsBbDJ(rgU-0U"m8L/"@bhs^l@VH'p<L(^_D3f5fsSSHYep_1MR?%cd,f&N]GE#tF'V"*J6BNG@p2>N<ig!5Q4&>P3aZQd+/`P1k<V5tXhQqm\drcADFnGfE.3'(iT%briQ&D\5/8.jjt_bCA4VRrrD[2;_G\klFqB#1]ipBE,hR)(MQCN7eiNL?6+@%`fatJ.iN6;#AMPpsLM5]/=$OMP8HXZVA!4i_Rbr!lLrHeZE&4^$ENW.#9@!u)#hcMd;,<7u+AHf.^'+I.q6NecXD6d$[G8DcdK4B/]th'4*FMiVl5oX]_1m-#?XU:Wc0FM*=93FFDISYE>+J^Z7d+EO[tIQeZECI(CW548@0l&fYTRL=*C\Ur<eG4B@hf0rZl"X1'ErIVP=4LD-O$Hp5sAgc\&\:]47g:^*gGX6a`o)Hdt:8B1SDqB)uRChdO?J$Ys*.t$FBZFKZ&`OVlpM<_/3D,U+SJ!@gH_:>9YjTI2lb^$M`HXj'RG%Y\!~>endstream
|
||||
Gb".=gJZcqoNbgDL51MZj(3GBP#c\%*Lc+W_?9omD.]0W..Ui#F[M<dS@8ISZaq)l<&,-]-.j@)B[?Xg$Nl8.<rVb:J7$@$pQ>R;0YRZ:Lk,"-]GMSH#2qIaKE];Ye9!\^f@3$H9oTu@S(K?;)+a$(km.i`&Lgul*:Y#(3KP]"HtG&TN_LNCJ4O;*d_:KT&t<rQ/VmummTo`o5,lMBM-Wc0@THh]L+?B.<(kaUKJL`U?l[#N]ArKMGb%N.mU%83#eq1DnuiD1i7rm9_pLcA#C3!in=*U[0M*K((JeIe%HD)i=-()RJoFdNX7VHP%a5!e,j?TG>1+eT1l+<!HaMY)>oR62YD%+t,c4-RoZ)SR2bZ&g1kdMtL^\0`lF)D##'U?L6M=eleuJp^Nm7G4X'+I%/IZQbA5&2%5q]<]/SJjfXBO'[ciAG-Ydk8RL2U5hP.$$WbJcDR-Uih%XcPD\X%#m+hmbGa\C."lrHg2?r0.4u'3U)]cY\UR/f?U!+^J#MZ?2T&q1Z&qb]g6RqK>Hf-2]rT_26-9N856FB8)\(;h`(jjTPcA'Io"p-GlI<Y[,t;K[)ua^8oYAp<noBoVGRaC>!dN2%sBp.t#oh&iRSuXFcL1<!+qb]iIF$"s9^%iK]jo+WRE&p(eD^6;ifqJ_H9;*!CE\&D=/TN>?-sP">1tA/J@DL8p(Rgb:U.'F9-7@HL*`JnU'02(]hRZBL;l;Ud+cSDESdi%i,#X\79bQ:kK.\D:K!kL2DM@%nEh?H,BHD#a07k5W9@QGA_pPlLbi[N4?]gCepAgY-mIfgI=L%]^DR'!r5;q"CD(Ig_qj1"u0OE\%KSfVVSI!Ip\p0_uGXNmG^a<>=]shHlTE??har`P+nmh=K'&02oFP1B.\60%RM'L:1e/a5jlW%PW2<43s,#^m6hr02o7h?CHV"mhJ,$mp5*J]JE*AUDn=$D+IF[a^7+gF-S>$p0m+pYCJ:BFc6>1T2b$ndk&##@DC<o'0Bnja`V1TPhWt>r:=H\><bsbreBa.Tes#Jg'7#jRae8KU.^SS,/N]Xb&2>phM4%&a6t-K"dJql/$%dDL&,'(Y_L(K>jSI5`bqBF8QMKV._^[n2G!EsLpnk(.4B/baPg02'1DN?Car(WMYCecC;hA'V[:)OGY3]H=@eWX0"&G)$!SD_gi#;#]EiNmDb,CrR^J[:pGW:.?T1[5Y/&f.]tp&VMDi.ZA&PHa212g^>VO4O(np.TMkR%0Ark0_;jA[j:M0:PHoK;N\nOCX^*N5:AY?=[amtG^8T=M!N6q*@<&5mO?BDHEPSM=K6\R%'C72u#\mUV6:^#6,aj^E=@aEetSfP")l$50_]h_spe^;9@;O,5Bo4GrDC0C9(eEV9A9!&3_0=*2)ZTC1\WfS[=VbkG"E=,E[TE&eX?;TRcI.$k]a*r_WQ@m!Ug@6b\S;u3r[!SQU2NQ#j=kU]4^/7U'hUJtUdWgZWJ!I`$\k*)@p:O;p-5Gu(ID9J!0q!aM($^5i6,(_P@\Yed4km0!#`O5m)<>&%E02F!/;\>7=-.%9Vbfh"EsWLT)\<,7KnsBbDJ(rgU-0U"m8L/"@bhs^l@VH'p<L(^_D3f5fsSSHYep_1MR?%cd,f&N]GE#tF'V"*J6BNG@p2>N<ig!5Q4&>P3aZQd+/`P1k<V5tXhQqm\drcADFnGfE.3'(iT%briQ&D\5/8.jjt_bCA4VRrrD[2;_G\klFqB#1]ipBE,hR)(MQCN7eiNL?6+@%`fatJ.iN6;#AMPpsLM5]/=$OMP8HXZVA!4i_Rbr!lLrHeZE&4^$ENW.#9@!u)#hcMd;,<7u+AHf.^'+I.q6NecXD6d$[G8DcdK4B/]th'4*FMiVl5oX]_1m-#?XU:Wc0FM*=93FFDISYE>+J^Z7d+EO[tIQeZECI(CW548@0l&fYTRL=*C\Ur<eG4B@hf0rZl"X1'ErIVP=4LD-O$Hp5sAgc\&\:]47g:^*gGX6a`o)Hdt:8B1SDqB)uRChdO?J$Ys*.t$FBZFKZ&`OVlpM<_/3D,U+SJ!@gH_:>9YjTI2lb^$M`HXj'T-aY\4~>endstream
|
||||
endobj
|
||||
21 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 721
|
||||
>>
|
||||
stream
|
||||
GarnSgMWN8'R\fAR$U@5.-oMn%.pAgeYJ$?V+jT]WQGU"P?h@0"`G%Hl['',-&i8Qk$ZLhShg_:D`*JV"h[KIEiu&t,S*^TBI$Y=94kqO_D>Ms!sh,SIdBA=^:V`DB/K`89^K_*OUOYmC?S3F.#K6oN!hufU*Dc?bnNQZA/K$:8-L=qYOK7[T#\Us+ttAC(I./BS@hsk8KGto+"$"gC-'k1e^m-f+:O?2QsY?S]u3@GUcr!?9o3esUMOL]kBS4G0,LO7?hBY)]Ve7LS$o'F*[:E:jN.:8O'd6;Gd.`cnm>6)jb'J.c+A'jrAe.!Fc(.!l\9h9-.YIf7"NkC%phH0-\fI7pEd'LR71-lXg<s`'m++YT-[)^fTO$o`P2Adfp)TD?"&s"D(D5_UN\!'m+D+s@k:F;`5o-&"-JTmj!int3GfU'3U"\k_Y5;)ZNI6!=(`,MN$CNiLcpbdbk%4++W5=IZ-g)>@LRi.C`E77,ZYD3osT/%po:^u3dA3e3XK0(DQ+f;-g.!ZjTtjXEm-b6C"g8>/Tj'rW5rGU0)?s\ILRlO.eLe:4Uc@jhT;6om"'-5XIh$bS#3N*>3,=2d$%bEDa;XW949iP4mqGYkOAqf]W](34@\(&Rs+GS;Ti;.Z(WJoa2liFD5p=Ak$59OXJtg.(3BtbEVeY\3Y>AP]ZJ_WeL@[-r$]X?<V_Q28XX8`#Os"8/uU_HNS.Z7Gm[^~>endstream
|
||||
GarnSgMWN8'R\fAR$U@5.-oMn%.pAgeYJ$?V+jT]WQGU"P?h@0"`G%Hl['',-&i8Qk$ZLhShg_:D`*JV"h[KIEiu&t,S*^TBI$Y=94kqO_D>Ms!sh,SIdBA=^:V`DB/K`89^K_*OUOYmC?S3F.#K6oN!hufU*Dc?bnNQZA/K$:8-L=qYOK7[T#\Us+ttAC(I./BS@hsk8KGto+"$"gC-'k1e^m-f+:O?2QsY?S]u3@GUcr!?9o3esUMOL]kBS4G0,LO7?hBY)]Ve7LS$o'F*[:E:jN.:8O'd6;Gd.`cnm>6)'nE3Zc+A'jrAe.!Fc(.!l\9h9-.YIf7"NkC%phH0-\fI7pEd'LR71-lXg<s`'m++YT-[)^fTO$o`P2Adfp)TD?"&s"D(D5_UN\!'m+D+s@k:F;`5o-&"-JTmj!int3GfU'3U"\k_Y5;)ZNI6!=(`,MN$CNiLcpbdbk%4++W5=IZ-g)>@LRi.C`E77,ZYD3osT/%po:^u3dA3e3XK0(DQ+f;-g.!ZjTtjXEm-b6C"g8>/Tj'rW5rGU0)?s\ILRlO.eLe:4Uc@jhT;6om"'-5XIh$bS#3N*>3,=2d$%bEDa;XW949iP4mqGYkOAqf]W](34@\(&Rs+GS;Ti;.Z(WJoa2liFD5p=Ak$59OXJtg.(3BtbEVeY\3Y>AP]ZJ_WeL@[-r$]X?<V_Q28XX8`#Os"8/uU_HNS.Z=0+(q~>endstream
|
||||
endobj
|
||||
xref
|
||||
0 22
|
||||
@@ -173,16 +173,16 @@ xref
|
||||
0000001943 00000 n
|
||||
0000002239 00000 n
|
||||
0000002337 00000 n
|
||||
0000004736 00000 n
|
||||
0000005454 00000 n
|
||||
0000007550 00000 n
|
||||
0000009243 00000 n
|
||||
0000011144 00000 n
|
||||
0000013301 00000 n
|
||||
0000004738 00000 n
|
||||
0000005456 00000 n
|
||||
0000007552 00000 n
|
||||
0000009245 00000 n
|
||||
0000011146 00000 n
|
||||
0000013303 00000 n
|
||||
trailer
|
||||
<<
|
||||
/ID
|
||||
[<2116caca3db23abc7cc418256d9c507e><2116caca3db23abc7cc418256d9c507e>]
|
||||
[<6b5e377fd0647992621660653a695082><6b5e377fd0647992621660653a695082>]
|
||||
% ReportLab generated PDF document -- digest (opensource)
|
||||
|
||||
/Info 13 0 R
|
||||
@@ -190,5 +190,5 @@ trailer
|
||||
/Size 22
|
||||
>>
|
||||
startxref
|
||||
14113
|
||||
14115
|
||||
%%EOF
|
||||
@@ -1,10 +1,10 @@
|
||||
# Les 13 — Lesstof
|
||||
# Les 15 — Lesstof
|
||||
## Agents — LLMs die tools gebruiken in een loop
|
||||
|
||||
**Vak:** AI-Assisted Development
|
||||
**Opleiding:** NOVI Hogeschool Utrecht
|
||||
**Vorige les:** Les 12 — Tool Calling
|
||||
**Volgende les:** Les 14 — RAG + embeddings
|
||||
**Volgende les:** Les 16 — MCP servers
|
||||
|
||||
---
|
||||
|
||||
@@ -34,7 +34,7 @@ Drie ingrediënten:
|
||||
2. **Tools** — uitbreidingen van wat het model kan: zoeken, lezen, schrijven, rekenen, anything.
|
||||
3. **Loop** — de runtime die LLM en tools afwisselt. Beheert berichten (context) en stop-condities.
|
||||
|
||||
Het verschil met Les 12 zit niet in *of* je een loop hebt, maar in **hoe lang die loop draait** en **hoeveel autonomie** het model krijgt. In Les 12 deden we maximaal 5 stappen — kort en gecontroleerd. In Les 13 gaan we naar 20-50 stappen, en het model bepaalt zelf welke tools het in welke volgorde gebruikt.
|
||||
Het verschil met Les 12 zit niet in *of* je een loop hebt, maar in **hoe lang die loop draait** en **hoeveel autonomie** het model krijgt. In Les 12 deden we maximaal 5 stappen — kort en gecontroleerd. In Les 15 gaan we naar 20-50 stappen, en het model bepaalt zelf welke tools het in welke volgorde gebruikt.
|
||||
|
||||
### Voorbeelden van agent-taken
|
||||
|
||||
@@ -385,7 +385,7 @@ Niet elke taak hoort bij een agent. Drie niveaus:
|
||||
|--------|---------|-----------|
|
||||
| **Plain tool-call** | 1 tool nodig, 1 antwoord | "Wat is het weer in Utrecht?" |
|
||||
| **Multi-step (Les 12)** | 2-5 tools, vraag heeft 1 doel | "Hoeveel jazz acts vs rock?" |
|
||||
| **Agent (Les 13)** | 10-50 stappen, open-ended | "Onderzoek X en schrijf rapport" |
|
||||
| **Agent (Les 15)** | 10-50 stappen, open-ended | "Onderzoek X en schrijf rapport" |
|
||||
| **Workflow (code)** | Reproduceerbaar, audit-trail | Order intake pipeline |
|
||||
|
||||
### Wanneer GEEN agent
|
||||
@@ -162,8 +162,8 @@ endobj
|
||||
endobj
|
||||
20 0 obj
|
||||
<<
|
||||
/Author (NOVI Hogeschool Utrecht) /CreationDate (D:20260521071303+00'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260521071303+00'00') /Producer (ReportLab PDF Library - \(opensource\))
|
||||
/Subject (\(unspecified\)) /Title (Les 13 Lesstof) /Trapped /False
|
||||
/Author (NOVI Hogeschool Utrecht) /CreationDate (D:20260607084029+00'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260607084029+00'00') /Producer (ReportLab PDF Library - \(opensource\))
|
||||
/Subject (\(unspecified\)) /Title (Les 15 Lesstof) /Trapped /False
|
||||
>>
|
||||
endobj
|
||||
21 0 obj
|
||||
@@ -174,94 +174,94 @@ endobj
|
||||
endobj
|
||||
22 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1870
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1860
|
||||
>>
|
||||
stream
|
||||
Gatm;?$Dbt&:N_CbY-8RgR(S7K]lY:\N-/8VQI=UaU8.&AcmhjG..;6G9ekM4!E,>36/I\FD%agk)N,di/=&u-j+]MLK>QG:^6Lp:tKl!IKf3'edor9SGB;m[NgSA0X(XLs$=3&Eq$T`!u=]E`4(HhJh*cO6m.$=52W8%PS+`b/./i3M(`,<"nfC`#Q#O21PVc4gZ(EKhr"8X[!RAK>OTq`jr_EY"`6hRW/bX,lM2LF1H>:'e$i!F9eBokXcuH:YI]tGWeMJ4I(6\V>uXg%eM;l'E[+L_A2:?\_u+G?^X0Cnpo_eV&)H!Z^QK=.#OnLgeY7W.%[Ta.!Zg3H`\ZEPERm1n*GYJ&k?oi1&)?0S0=+p@CJL9_MM&]VK^1"<e*"SVrKor_FTY5VRs6")Hi#g@4$F+H6_cJO<cuEnRE-:/:9E)L2a_mJdMn)qJo7CZhQCc]oIT-t[B_L12ALg(aIQb>3$r>BT#U$)1C#'D?OXJ$h^3r"U?BgRG#`1VS'g$'6-$[.+[$b.NW!e`)U,NN8d4U=\Mj%mJ@2[71&Yi:iRJ1?_0*"j@^3@F"rW@7:47mXi1l3`pq\Y:Rt=aOqH(<)D\RdAKlBLY"$9migIKWb15Dp259S'6in%//!]!nGNAXfq[_d0hEhtO]X'p_.ma<d?+fV%a)mngEftjs30'EGRA,V!$(,:lZ-\VI3_hE5:\(shf]*2n,s18Vjl))Se@r=Sk@%McSmp>HB4nL5>m*_de'q=W#5:oaEjp3$G;'\=?WD):s?Tq1qWeEScO%AdH'h964jnCU5Sn9\lS0!:""l,V.Y[3[#pfSp6mMo](WEEIQ)k#SG+/-WoE@E6XNCoP1MPl;*26fZqkQ#C5F0=Qp2G@&nLG:R)EBtd(O!UTB6C9+RG_h=5OSNqe&RL(5DIop@]/hYAH-^T11`gfs-;^9-Pbqf<(SL/I_op>lO#VE'FBh'8/e8j,`te_`+-nPGT,li#le/DYRfq7"D(8EOUDfj`.J+'A2b!(3]PED%NH*8V]1nDJ]H8>45G6YFdc"$3/[pM/HKWk0*^mMFJ#4g!r_C%Q_uN81IrGR*f/2s7p`%$V^;#3RHA97#i+*'<&-U;hH\dI5bmp1h:tl6>ON1%UReA[CgbB[[Rn>d,6OD9Le>/'q<R^4S^Q.R6P%C_*.W^eFg8s&qku&4;IeE]1h,*!!q-G=l;C<*],=X.5</sS2h`"um,t$L:iD/MpNrl*RkKC;D^,.FK<>HjCDD_?ZrVj$AE""\X,FXqO4Nc*tK[>$&_\.a6p(XHTJ;=F3Tr&m59B@>e9anlU6A[@Y%NBj&)Klb's5c4Qr%<jaoWA$ab;59R(C-0''&ed.E*5o6@K_GYhO'QiSH=W>XYPn<u>_^pWe;mA`tL8m6R4I:Q_4e-_@?8K8!M@_L7/.@6R<OIOuc;L"pW*YfO6?p^G*f##hO3cfD=?YA\)Wj'&!?Q),(F^[T"pTWO*>Q5JP[,9CaGZu\LMD6!1D-Vs_XJS>ct"*29kB^9,!7&4\6%eJ,$"@Xq<7tAi&;a-,!7>?%ccAsd9g`P8^BJ(2F"<GUR@JE9!.,D"hE)1]T3P=:9Hi]&`NYVT+CZ,C-V!Y9A6"M"<a2nk&)-?W[TO'4k.r$6+2'K5kK2Xb1o@V5&c-jR#Y_^$6Ijdq-i1PO?0e03[LNOO"ab'LLsH)AJhX`$1P[oiX'Y2_6glm)_i.0S=D;>[r"_IHil8[s"D\<,a&2:R'g.P:%aQ>k;j_IA2TC".`1@!ADK*&OH'18b]lIfc#_[:6KbNY":3@#,--guF2rN&Kc0AuAL`?imYZL#T[CnQNtIVDb`mf=r&dUTljSq]umm*Co<&-JLo@f%c>%q@@e`3r&~>endstream
|
||||
Gatm;?$Dbt&:N_CbY-8RgK9^D#j>Lh\N-/8IX0\7]F^0A2Lm2`B=kp-7fie$CI5^pF)4K?GNR20m`5eb^6j2,14WGIGk$dpj"Og?F,0qi)gFHR^0?6umPum2gS]51JHWF\K5t\fi!LY0*\d)_7srV`a(N?b"!9Mjo/u/$.:Mbj@R*%A4l6;"1KXA2@)#D=k@iQmXq8GKrmj;@],)%+HA?Arrs4?0=A,Y][2hT%la\^qi8W&n?a&EI[?O[u;C[C8l;C*P)K%S0i9GW3<E2Ujb8B*WND*?7ah3'0o=n`59\UKD3t<Vj]!mTI,:d.Si($eJ70EEA>UF_%Ck2*`A%DgV]QI3+N-Knh@kL4QD@,*b=cVZ';5TH7+<[0]rF?IfiS2!e$](m%^mIiplS?/_T+f0:=9'?[@mRH$1Y0f=f&1O_[Docqg8!'P=Cb9N,K9D#IJ]^NYm.=qKkVmXpUQ:=3L5P>MT3\MS<#b@&^pCN+a<>dl;Q='\auJ"eJ[[b2"tn7EURLQO%+J+s-pV)F,A)-c['%1i@YN-XDErbIPiM3`B1FMoO5SQipCFt<%sn_k1SMo%pc!\$\fDO*/Go,J$iM\7Nn-r#^[7C+9?-/5(^M63S`Ef!D*b6^SXU<ONADU4G-XD.pU[U=";+u)HQY"4q5CBP3UG)K,-U%4*YRr$T\<-H,&:L7Esk0K[=(@\F<8Z[ehLi[iirXIog'_gb_#3jqbl@k/GsAroK0h6a$Qm/fg4VfPDB$EJ`C,7kkE"On_bK15V3Bq)FY=(A=[HOl?s&[XSpThp\fUSAeHHFpJRZE-l$2H<nDI8!V0m98I/VAoX5TA:FDtKG(2\Q'a*].U@WU*[`kr`#^Y."&<nq5@;*ZkO:CAPHc`sC5gMRI#s<2@gT-)OK+-q*[N(m'Df(K\l0Oa],LE@U%d'6?\"K9m=N4`cfb$^q-^SbLC>.71bt)."MXe=^9EB9JD[IVG7ng-:ks7o7*Ud-Lsi*G[j^&LYucdb0q),i>he.QN8,3I&5i<*_hO?bLUqUg4Ufe$[g)II_Ys<eD.3*]g?kX>0[^km.qlPlH)J[>#ZgH^)<B?^9`>&?'%"Fl(d%(//p92e1j>Y%(U>3FR3"4;E3d8h0sJ*NG05S;V@0=O)cNc6h&X7nl.V;3XCNf%;b>]Ee*Q<k'Qecrr`n56cU/"G,^E98'!NlU.P"JYC6%11@FHYmh1=NkjuADGUO24r[VJ&cD7!:Z%Gj@qn_jp@0YJD-)-.J'j^#Dl&4JP9!rH_<)%3K!O0c&cQI91.+am'q$$_F]As(5Gm:Fgone.j3nQN'dqRX7+QqCS2*N&'I2Jd7/*R^rg1;8ETN=abaFA^1)/EI[96'qS9[Ge2d$1X'=b`W5e'h^r1W1)XP>lL_sE8G!8ApOn#+_$[\0GG^4eJ8Y,93n]qH<oeE@@36@%eKMtT>bZQHF/`IR-,k&(tqk?;Ck40$j)bV.sNEj]0(J,=&FAPebX/q1/o9ii>Y+WaYn^>atT5P(a;+f;!%X"<=^,GklPDU2\1Bb*#0TcMf-Ap0=RLH(S*1JT3&\Qbj0YQf'uU'mPG:>U][*M:EZZnDuZ8u5OT\Q*;.^QmE`+iWF+p0hng:i\j)0E/Kl'Q(,gOI)fZdc2mQjH1O!f&K36]5P)bZFc9f[F6>C<$&9"Vh><5,_^"Cjte)BhuDZk`;Gl0pWNlMFrZOh5U&EKa#mE:LsO)^k+iSmVk6;L8*;#<te['Z0'_G.WKM\19u;%#+0h2,T\d#^`<S4>-C$"Qf\MU?l46L6gdiD1TYS4;j[Zmh%i4-*8B':>=='H]s_YB?FKC*Un,rEE\jR]H%e?TNbcBnTf$Z2LcXRem\!rrMW'42(~>endstream
|
||||
endobj
|
||||
23 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1565
|
||||
>>
|
||||
stream
|
||||
Gb!;cfkq`f'RcUW\-NXF0l2U*m!Ws@"uYDK8Y[UcI\C@%M:$!++mGj!qHe1XNNFK7$3RPD%7u\;G<+iL@R0J&r+E8=pgjdc?SPq.VK6,WM-tW5^J0>V!T=>\UDQOhd4j`Ko$I>d?3E.(#t]0/1WX6%Z8@.]@jK7g$okC_;jN$$0L#j\O>NYF('2NZS7KaeqN)tmj44g!P9bXj^9]J6k2dlQX@"eu2hKusei>U\L(U+1:1KZo@IiSgmk<YoAg'mRCmk_1Z!%o9$eLoHE.3(UDN$>OQ>e!cA^tVJZF2Doq@TSPDQaY$'QFb\Gn9GKU]D545)a@@/aOF]:pg9e_Kh%om=>o,)4K!4KHX&E(InQKKG^(-N05T?FhhM82M\Oei$k?Vb!ol'lXiS=V$S6)`;Q2M(rier1<(<`0U1V14GEkuAF5o'J:=.V"8d6V0`75R^SCrC*Hik5]!\9Lc<t1lG]70RGnDS0cRJU';ucERj,PL*6F)UmUQdK*GfFt6$us09c@!de-ng7]@=J+oi?o[2-[Z`f0nSN.gB[KqKEYpPar84X+e?V0)#0P-X/Ee3i;$%jHbbMA,uFl#Kq_HaV]&gJL+#c"WDTUuK;s_pf,7489X`aoMJX_5h4gU0UH5/%8BeR,fIh+p5,o))S$ZNh*E%HL(r)s(K_CUU3t#0-LD-V=kHZ^aHm(Mp1Pugj3EChRT.T5SEM20KhSqA<['bG\Yk<9]\b17,6cg70*k>,ib>G;/5BYXf^;fue1'_c#G;-RhF&a`k,[=-j0B(a+CFG[h>efbGF[ebN7/+\Y0$dbf-I9sX!=T8+iTf\="*TO^\1nUI(*`pKBE;,^Cp4GE.%9h+;J(at1Fkha4^a<1cJ.ct;bE2Y.ksgTkP+r^:5.MW7tHN:ETp1>4#ORq(^!bkZn.KOBlY66@G@faXFK(]FGJpsb!u8XFYY`Y]-TrSjK:F*^Fc>WCN@\JoUq=KWa^^:C"V`jGkf#B?tKX5FGXoHJseH_:94Z*PfNi7`<Pal!2YA'VF#$*6PPPgarIbu,u(!a"T;Za(kS`^oDTlf-p,mUQ,k&KLps,P+]q>El_]m]X@.K\pEt(]qi[$*h=%kfWNB>s.$YT5T_GSR`V`IK,:iZaqMq=i,bO+pf"Ph)LSR-Y-h!nObE/`3NB-M&(Oe%t>6F**qSBHj(6H_NgBacc@N=e]XMqkV$W5l.iH2?@;'32GUTFpS65E:4F]1l29*.7C#R_e<5V7XY\t6mJ#<;,,R,Ifm_.I_?qcNVEX#Vf6<djX`;cMQ^3C,PA"hB^NIA9i/HoWVSR/4S'dPQ7sAQ<mtnQ1K%.ou5F4GN,>dI@%5CRdMX^A>OW;.+lH,D@b9UW_/Ie35g3KmB2Z!n,''`a?N218fXjfBVB91_KqJFemC^!9_S0N@UaDio%L'OS,MJC*=9nBe5"t[ZMKjl5oCINW-1YRQ$M1CT7(*^VMT%`VW]oZ/Q6o]NWP_rl"Ds\jc'hnjX^`e.6NX]Y!]=#-/J:@=KDW9&L67q7g<;Z'+epX/9/H#@'ugpX[f'DXhIY2GJ&LJV+5[rr@,3_[Z~>endstream
|
||||
Gb!;cfkq`f'RcUW\-NXF0l2U*m!Ws@"uYDK8Y[UcI\C@%M:$!++mGj!qHe1XNNFK7$3RPD%7u\;G<+iL@R0J&r+E8=pgjdc?SPq.VK6,WM-tW5^J0>V!T=>\UDQOhd4j`Ko$I>d?3E.(#t]0/1WX6%Z8@.]@jK7g$okC_;jN$$0L#j\O>NYF('2NZS7KaeqN)tmj44g!P9bXj^9]J6k2dlQX@"eu2hKusei>U\L(U+1:1KZo@IiSgmk<YoAg'mRCmk_1Z!%o9$eLoHE.3(UDN$>OQ>e!cA^tVJZF2Doq@TSPDQaY$'QFb\Gn9GKU]D555)a@@/aOF]:pg9e_Kh%om=>o,)4K!4KHX&E(InQKKG^(-N05T?FhhM82M\Oei$k?Vb!ol'lXiS=V$S6)`;Q2M(rier1<(<`0U1V14GEkuAF5o'J:=.V"8d6V0`75R^SCrC*Hik5]!\9Lc<t1lG]70RGnDS0cRJU';ucERj,PL*6F)UmUQdK*GfFt6$us09c@!de-ng7]@=J+oi?o[2-[Z`f0nSN.gB[KqKEYpPar84X+e?V0)#0P-X/Ee3i;$%jHbbMA,uFl#Kq_HaV]&gJL+#c"WDTUuK;s_pf,7489X`aoMJX_5h4gU0UH5/%8BeR,fIh+p5,o))S$ZNh*E%HL(r)s(K_CUU3t#0-LD-V=kHZ^aHm(Mp1Pugj3EChRT.T5SEM20KhSqA<['bG\Yk<9]\b17,6cg70*k>,ib>G;/5BYXf^;fue1'_c#G;-RhF&a`k,[=-j0B(a+CFG[h>efbGF[ebN7/+\Y0$dbf-I9sX!=T8+iTf\="*TO^\1nUI(*`pKBE;,^Cp4GE.%9h+;J(at1Fkha4^a<1cJ.ct;bE2Y.ksgTkP+r^:5.MW7tHN:ETp1>4#ORq(^!bkZn.KOBlY66@G@faXFK(]FGJpsb!u8XFYY`Y]-TrSjK:F*^Fc>WCN@\JoUq=KWa^^:C"V`jGkf#B?tKX5FGXoHJseH_:94Z*PfNi7`<Pal!2YA'VF#$*6PPPgarIbu,u(!a"T;Za(kS`^oDTlf-p,mUQ,k&KLps,P+]q>El_]m]X@.K\pEt(]qi[$*h=%kfWNB>s.$YT5T_GSR`V`IK,:iZaqMq=i,bO+pf"Ph)LSR-Y-h!nObE/`3NB-M&(Oe%t>6F**qSBHj(6H_NgBacc@N=e]XMqkV$W5l.iH2?@;'32GUTFpS65E:4F]1l29*.7C#R_e<5V7XY\t6mJ#<;,,R,Ifm_.I_?qcNVEX#Vf6<djX`;cMQ^3C,PA"hB^NIA9i/HoWVSR/4S'dPQ7sAQ<mtnQ1K%.ou5F4GN,>dI@%5CRdMX^A>OW;.+lH,D@b9UW_/Ie35g3KmB2Z!n,''`a?N218fXjfBVB91_KqJFemC^!9_S0N@UaDio%L'OS,MJC*=9nBe5"t[ZMKjl5oCINW-1YRQ$M1CT7(*^VMT%`VW]oZ/Q6o]NWP_rl"Ds\jc'hnjX^`e.6NX]Y!]=#-/J:@=KDW9&L67q7g<;Z'+epX/9/H#@'ugpX[f'DXhIY2GJ&LJV+5[rrA0Z_[l~>endstream
|
||||
endobj
|
||||
24 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1637
|
||||
>>
|
||||
stream
|
||||
GauHK997gc&AII3bU%cuKc*'C.Ye4B*b^(@RNQKgnO4sJD'cLK9!jfSf6=.uV;8P'RiZ#X(.iM[H17:HaaiB;FoU,)i3sF`H-LkZ=Bu#m7)J4%?EKs:,JmrnV#hhL'aY,.#lfHf'31]7&goeM@&PDA99=l?@hJk`jg8V<)@P/X,6gQV<#Z.^0GU)PNk?JhkGVPs(!"F5q8#8TbtCSi=GLM^56SkACiCks$:uXE>/=qYMmn1bHiq.8)r"uZ\h;qpf@Xp*@*Q6:kAQ[4gU:ddc/GK^g9TT(Cum9Wobgek]ri6ePaj-YmjA%1D1N#/8*fI+*qimN.B4*#%-KdnF9IKs@&TrW#XL>N`Ou;5"9ujO)9Wk?&QbcHL9WMnRSYKYClFilQ6]/EHp4:E3E['9Ye^`X*\%RE3%n,?YQa@U"9ZYp$k432A]4'iRpOMC7"^dVU6?<<G(Pj/E,]=LGnt7lN`5r30E%*dSi[s<@q#Xgba+2b_@>N,(ubmt9XeP[[P!7+@D;]1iPusf6MOi6cNogZDf=RK[#f0e7a&*?pJ=hN>F-,e6YqPl)VEs]&Gk9YP%1H'N\5*]T=*OW`B2g>iG=^h_EPZ,l(fr.BG]6[H&SI.R&],u1U(@1ju223O1Rqth5>N8.jJc,(S$4H/Vj^u<6n(Y3%'X$(diUh.9Qlj`Y'J\&hnnn,Z?WN=:dq5C?g'7Bk(bYklaI'?(QOXnpsQE%e>fB;tD:7"=2eQcr9R08AZ67;H$"dXLa[$HrrO]#B-6+Xtc\>,#E&aH3lj;i.F*2)V?*g]\$?=@C\[a[8<]6".,@(g^f0k'hT[PHT4d5#c*a_>1ZL:&C*FH:lI])`pa#&qkWNcE;#c*elDPER3,T2$6A<7'^j:Hd1K2hi[nV\^afqO7=(AuA[u-Sl\fBsEg&hMG2A9-'o@W&".UM'lC6$.c?:n/JK8\;lbu&)&D`YV_bHgU5(?^BglEuhd=Us%=q^U4gJ)U"A(sB8H6'0.]MGT42YWtejLX77##n%L`R\X.]$PlZg1m&+<F0&k5<tIlfqZIghA4ZCCA07:K@eT>(\U\u;1aR\nAEc]/)IZ$^>^.@X@F4VoT?<%f;#Q]95I>VC%lpIZ(R#1e&a"V&7IEjm.P_IIX]cF2:ME'O]Y3i_egpf\dR0.9X(kmi<^cP#G`>E(KJk#4#N4#MuLZ!X)hesDAosg[W,SVq)Ifc1j(AiO]EV[c5LF_R%G1S;:c=JA)oQglS?M&3?=0]iq&9TSa?>EIAkqjG.li+7\\a_S^X4oqP`]b?!mF!k<G?bQlEK;:;1+PCfB*%4VN[bY3^2$3o&JjqqV4.hZ&)g.r4_ldf$nZYr%to\2uafYt<E(K0sDn?O<ooAqrmG]#"N?k*QXHbtl^FrRq$6jfH0Y]!?QG#FAb^(2k+ZK<-WtraLIW4$7&lr?6e[M&j6R.,d8Z>E4N;Y(CKT8F;*t0>S$XS3Rd\d'9.8/3_2W&Y!kVTcPZ#LVhYbR*bl^cHZj,nEDZ,d3DlWGC75:>b\cl$/W<'(M^IjdE[?k\g;OrMq3B\\@BQF'EOT8`;nIDi9]^^mhs_+m[\n3nht(Wb0JXZV\n>UCl>UOCi,<DS&SJ\Q;&V81l!RZRXX_6Um@Mo#t4dp$'TE`~>endstream
|
||||
GauHK997gc&AII3bU%cuKc*'C.Ye4B*b^(@RNQKgnO4sJD'cLK9!jfSf6=.uV;8P'RiZ#X(.iM[H17:HaaiB;FoU,)i3sF`H-LkZ=Bu#m7)J4%?EKs:,JmrnV#hhL'aY,.#lfHf'31]7&goeM@&PDA99=l?@hJk`jg8V<)@P/X,6gQV<#Z.^0GU)PNk?JhkGVPs(!"F5q8#8TbtCSi=GLM^56SkACiCks$:uXE>/=qYMmn1bHiq.8)r"uZ\h;qpf@Xp*@*Q6:kAQ[4gU:ddc/GK^g9TT(Cum9Wobgek]ri6ePaj-YmjA%1D1O.O8*fI+*qimN.B4*#%-KdnF9IKs@&TrW#XL>N`Ou;5"9ujO)9Wk?&QbcHL9WMnRSYKYClFilQ6]/EHp4:E3E['9Ye^`X*\%RE3%n,?YQa@U"9ZYp$k432A]4'iRpOMC7"^dVU6?<<G(Pj/E,]=LGnt7lN`5r30E%*dSi[s<@q#Xgba+2b_@>N,(ubmt9XeP[[P!7+@D;]1iPusf6MOi6cNogZDf=RK[#f0e7a&*?pJ=hN>F-,e6YqPl)VEs]&Gk9YP%1H'N\5*]T=*OW`B2g>iG=^h_EPZ,l(fr.BG]6[H&SI.R&],u1U(@1ju223O1Rqth5>N8.jJc,(S$4H/Vj^u<6n(Y3%'X$(diUh.9Qlj`Y'J\&hnnn,Z?WN=:dq5C?g'7Bk(bYklaI'?(QOXnpsQE%e>fB;tD:7"=2eQcr9R08AZ67;H$"dXLa[$HrrO]#B-6+Xtc\>,#E&aH3lj;i.F*2)V?*g]\$?=@C\[a[8<]6".,@(g^f0k'hT[PHT4d5#c*a_>1ZL:&C*FH:lI])`pa#&qkWNcE;#c*elDPER3,T2$6A<7'^j:Hd1K2hi[nV\^afqO7=(AuA[u-Sl\fBsEg&hMG2A9-'o@W&".UM'lC6$.c?:n/JK8\;lbu&)&D`YV_bHgU5(?^BglEuhd=Us%=q^U4gJ)U"A(sB8H6'0.]MGT42YWtejLX77##n%L`R\X.]$PlZg1m&+<F0&k5<tIlfqZIghA4ZCCA07:K@eT>(\U\u;1aR\nAEc]/)IZ$^>^.@X@F4VoT?<%f;#Q]95I>VC%lpIZ(R#1e&a"V&7IEjm.P_IIX]cF2:ME'O]Y3i_egpf\dR0.9X(kmi<^cP#G`>E(KJk#4#N4#MuLZ!X)hesDAosg[W,SVq)Ifc1j(AiO]EV[c5LF_R%G1S;:c=JA)oQglS?M&3?=0]iq&9TSa?>EIAkqjG.li+7\\a_S^X4oqP`]b?!mF!k<G?bQlEK;:;1+PCfB*%4VN[bY3^2$3o&JjqqV4.hZ&)g.r4_ldf$nZYr%to\2uafYt<E(K0sDn?O<ooAqrmG]#"N?k*QXHbtl^FrRq$6jfH0Y]!?QG#FAb^(2k+ZK<-WtraLIW4$7&lr?6e[M&j6R.,d8Z>E4N;Y(CKT8F;*t0>S$XS3Rd\d'9.8/3_2W&Y!kVTcPZ#LVhYbR*bl^cHZj,nEDZ,d3DlWGC75:>b\cl$/W<'(M^IjdE[?k\g;OrMq3B\\@BQF'EOT8`;nIDi9]^^mhs_+m[\n3nht(Wb0JXZV\n>UCl>UOCi,<DS&SJ\Q;&V81l!RZRXX_6Um@Mo#t4dp,lMd=~>endstream
|
||||
endobj
|
||||
25 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1844
|
||||
>>
|
||||
stream
|
||||
Gau`S968iG&AIa;m.eq)1,]Pk+94IOKA.Xb[7Qk+8p\m=VBC^%7EQleVoe#7G6'm=b@]2eUlm9k+RncF^GQ+NDs"do%DXVQ3.9)&EL8>/#pNdN&t[@\/!"YkPmDp8Ree04')M;*`QH@HO@4gcA>#nG=pYb/&ZnD0*7$(Q'GLb;O$*\88ZK,tU0/VH]Q;pWP&h<h80DJgqg>02[d&Q72VOjno`r<P#A]:`:jkVX$WI,4%8?croDKA0j==0KlT@u%>ud8:?,<%P"m=?uo<M'4at2JM\Me09h3b9i"LAUmHYd7&n:fdG5kXj@?^_Up&,9((q6Ga'*NbJU!\qK9K0F.',]=As<"n/e$=iV!_`](^UO=;>KT4"S;I=T_WQ,aI<9V.:f?Gp6R$)j,'"!!pY?SmPVAZ^:h,9(+_>lW5T@J9L"knYI'l:'PO5X$g5GT;2mA.ZAmBoLTVGjc\gmKn$4SI?tb:3=k6\"sfk)N)@8T^.;K9.f[\7XM$L:Fr-ZjW9dL^RY!RrA<:n>4#5$,;C:1P1=J[sRm+bd3X]^-,h30#:>Q79$F^^r!mpK]o_CMC>V?1R9"YaY#TVL-kFVa^M>U?2[[%+t?]EMA8g^)<AD`_(n'D_St!]iS"uWK"6bM:`-Nl&&r@KU71T)UeB@-$;`SnD._p/70!?bh4t0PJ2%pZ?6jN$$RJQCZ92pQG:mq,p[*.MHfZSbcea9iMng\aPg#BpUWd'<^NE\hEkmDsGjY9c-^:WX:UcX96;r68?g8Po,ZISt>g_r1f^%9/-;L5=P1/A.-S"cUaVp[Z_fVA/%D!:-l>LK-.'3`8Bb*[[=gf`#DZfBLD9hn,oTof@_M?M"/3QrG+UM",<gqSb5bGWP9fCb=W8J'M`UF]o]KO9I0\]t+>ujZmp^51ghnW*R*'H=;-T_?r^d3diIo!lC%cMKC(kn'gjbAJ6?rqm(Znu:s`HbKb80=[bMKiEni6RLQRsicJP:n/T"aWtNg-#G*HstGZ36J]WMiuQ>[Q5#rdI@JHp:F-md9r2gUE_]'nsb2'X-]rh<n!82-DIRcUTb.gZD+I92FcdG](X-K?9##r7#_u'63^p9?(8=C3WJC^/e&)M6)SUcDuX"1ltdO=q8B3&7jC9mO6P=erp0L08<gBrr'4Z=I5&f!,XQ1hpS5AoD0VhF.(L(7JmYCjL,Bn65S5N;2.gb]3O]_mklNqXnmPZk.G?g!k1E.?7nmeeKZeae;jt5=Mm8A#J4O&3Dfgg('BO;<+*Iq1`al!Dc67IJ8=HaEPM.[c_FBQk!+2Y%Yf)YL2%X?L9qE/ZOU*k[pHdPm-u3XPN`$!4/+etG`b8*)o[#MlWtG3q):,/-JF-WLS%Q4bR.Q]kU"Ff@PXD_*4`9"cb>F4Bj)99NK<H4gn"7qodBpo8,X%POV=%=r-`)@P>h$m,$eTJ_5K*5uOpma"ZS>$GYtZt9Dj,*&QEG$NYG5p=M5k)ti+@rR:@&7*YA-U3oZ,YBb5+m1?^TiYfHhUmUSp.gq8-P5-O--[4rpC?gico?kHCd27D>gA0KR2#W(=@^]t2pcSLGZOaq&U:^[fK8P-&Otk.;fqJH)!E'ebd$@JA9i<3q!u>]\`+li2L-\K<MLDUMm'YYEB_43G=KDm]+aoq,7_Kptuf5.E5=mIK;d,tF"GUppAR\dU=#>Qo.-?&#fLCF-UW1(9UGSHdo-SM%ODDS#18BFdRZ=[./Bggb,qLhA'h6trt'7fM*$jF^tbh'VrP\7(n6#A!aL*,H(g>QaLWW_VDFc^Olu0F&\cFGHTGAiKm-T^Pd.aN]F<G!uTeiTK[,Y=r(CFBp/19t<]lkam4P2]d5D!'+(NJH~>endstream
|
||||
Gau`S968iG&AIa;m.eq)1,]Pk+94IOKA.Xb[7Qk+8p\m=VBC^%7EQleVoe#7G6'm=b@]2eUlm9k+RncF^GQ+NDs"do%DXVQ3.9)&EL8>/#pNdN&t[@\/!"YkPmDp8Ree04')M;*`QH@HO@4gcA>#nG=pYb/&ZnD0*7$(Q'GLb;O$*\88ZK,tU0/VH]Q;pWP&h<h80DJgqg>02[d&Q72VOjno`r<P#A]:`:jkVX$WI,4%8?croDKA0j==0KlT@u%>ud8:?,<%P"m=?uo<M'4at2JM\Me09h3b9i"LAUmHYd7&n:fdG5kXj@?^_U0!;KJnq6Ga'*NbJU!\qK9K0F.',]=As<"n/e$=iV!_`](^UO=;>KT4"S;I=T_WQ,aI<9V.:f?Gp6R$)j,'"!!pY?SmPVAZ^:h,9(+_>lW5T@J9L"knYI'l:'PO5X$g5GT;2mA.ZAmBoLTVGjc\gmKn$4SI?tb:3=k6\"sfk)N)@8T^.;K9.f[\7XM$L:Fr-ZjW9dL^RY!RrA<:n>4#5$,;C:1P1=J[sRm+bd3X]^-,h30#:>Q79$F^^r!mpK]o_CMC>V?1R9"YaY#TVL-kFVa^M>U?2[[%+t?]EMA8g^)<AD`_(n'D_St!]iS"uWK"6bM:`-Nl&&r@KU71T)UeB@-$;`SnD._p/70!?bh4t0PJ2%pZ?6jN$$RJQCZ92pQG:mq,p[*.MHfZSbcea9iMng\aPg#BpUWd'<^NE\hEkmDsGjY9c-^:WX:UcX96;r68?g8Po,ZISt>g_r1f^%9/-;L5=P1/A.-S"cUaVp[Z_fVA/%D!:-l>LK-.'3`8Bb*[[=gf`#DZfBLD9hn,oTof@_M?M"/3QrG+UM",<gqSb5bGWP9fCb=W8J'M`UF]o]KO9I0\]t+>ujZmp^51ghnW*R*'H=;-T_?r^d3diIo!lC%cMKC(kn'gjbAJ6?rqm(Znu:s`HbKb80=[bMKiEni6RLQRsicJP:n/T"aWtNg-#G*HstGZ36J]WMiuQ>[Q5#rdI@JHp:F-md9r2gUE_]'nsb2'X-]rh<n!82-DIRcUTb.gZD+I92FcdG](X-K?9##r7#_u'63^p9?(8=C3WJC^/e&)M6)SUcDuX"1ltdO=q8B3&7jC9mO6P=erp0L08<gBrr'4Z=I5&f!,XQ1hpS5AoD0VhF.(L(7JmYCjL,Bn65S5N;2.gb]3O]_mklNqXnmPZk.G?g!k1E.?7nmeeKZeae;jt5=Mm8A#J4O&3Dfgg('BO;<+*Iq1`al!Dc67IJ8=HaEPM.[c_FBQk!+2Y%Yf)YL2%X?L9qE/ZOU*k[pHdPm-u3XPN`$!4/+etG`b8*)o[#MlWtG3q):,/-JF-WLS%Q4bR.Q]kU"Ff@PXD_*4`9"cb>F4Bj)99NK<H4gn"7qodBpo8,X%POV=%=r-`)@P>h$m,$eTJ_5K*5uOpma"ZS>$GYtZt9Dj,*&QEG$NYG5p=M5k)ti+@rR:@&7*YA-U3oZ,YBb5+m1?^TiYfHhUmUSp.gq8-P5-O--[4rpC?gico?kHCd27D>gA0KR2#W(=@^]t2pcSLGZOaq&U:^[fK8P-&Otk.;fqJH)!E'ebd$@JA9i<3q!u>]\`+li2L-\K<MLDUMm'YYEB_43G=KDm]+aoq,7_Kptuf5.E5=mIK;d,tF"GUppAR\dU=#>Qo.-?&#fLCF-UW1(9UGSHdo-SM%ODDS#18BFdRZ=[./Bggb,qLhA'h6trt'7fM*$jF^tbh'VrP\7(n6#A!aL*,H(g>QaLWW_VDFc^Olu0F&\cFGHTGAiKm-T^Pd.aN]F<G!uTeiTK[,Y=r(CFBp/19t<]lkam4P2]d5D!*[*-K)~>endstream
|
||||
endobj
|
||||
26 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1640
|
||||
>>
|
||||
stream
|
||||
Gb"/&gQ(#H&:N/3$j$QOJqV=:8?+osdV[D8#e!In2F-Rlcna3R<u4Ai2f6=D6X;*cf?'lqd_<XX/;YR3%QS0^L(#JZ=neO(!8f?dlo>0f@<i/Q&dc`_n8&uUN<iTjb8?$h<$WGS,5_]2D,`j'Le;p/^edaaQ66V]`ZtaJNmjG2W#],,MAQo,W&>9E@BhTQep'IpkP/^^@\o6Wis1%Qdn>K8fHJN=LLAbe%?h-t65%FM*Q,15`PqSd]S%*Oehu]pWcImFX^/MR@E#d3V_=Z)D47P?h$1T9f.O9#Ke(o5Yl"ThO8Q=rpel,F,J@Ub=0;QN!"Ve.?1tKefPOYmLhA]NED8qG`<W-+)Bo=7(lJnWGU.6:N0$X]-mB^rr\V"D&_D\6BkD5;%)!op>4Hl24SD@Ad"Wpl0]o&q;hFt2(]q-RI@ic4Ce0]HGb.D6n$;1)%6ua4-&q-,,0,U,EYodn0q3G,m@m?SrnE5-m((_C-XK6c+HK[H(a[rk/q>+J0X9k/->.<AXC(+Z`u2VVn.WZWj*O5!"Ef'Es&3.hT;5JtakFrrGDSR&)FX(<%Z[ULiE/%BBr:?3$k!d?rk(:VmE9+L\6(o\j]L/"Zf4f3[:O,pBNi%*]CLd0BkC]8g@XrH'ISe6*0.^+4*dP$&Df'.&P9*O0*lE?,]Si(E,#`7Ta6o_cWeWG-]LH^i#Tm`KeNouCIAmco'rEjlU:T%(SWgbCSG5GoiPOLAn"7X(;l5jkB)#JIKG[-*V>Tm&s@4R<B,;ATLnM-ls0?$*5sD)(b@X."+ME*GL2On3Y`s*rYQsMgX,t\]lDCsBD/\kHd?p+9mt*cf%/D[o*2@'Q=nsCb;RVRG%F%f'JJhsDrL"l\fBst]*/lf1T0r_<4g++A9PGfMk+^NkhkP]cW?#?cRs%m<Y%EHKLFL4A\P,<F/\j^/GC'0m='0SWc%:]#gK?aE"N0CYD):*(B1Hp[0>_c=M)8Sq8Rte#%W_f\ui"`LC$B,KgdZO_KAl/n6f0TfXVdS\bZYPBTlZ!p5`Wl9=W,!'cqaUZ=OZp\:9r]B?dKWg-<p+XP(//C,+Fc<T:*AAGZs\A3s`W^M*POB`(8K]N'IUm+DR'=cp,\;>O7R)A0jX2S-YH=<9eEf=Ad[2f0__Zb8#MEE%JsV"t7hOQ-M1]s7&Co,?Aej*2G/3XZSlK>Nnhnlnj38knMoT&Nj7j9).IX$7#d*\#&qN48&uU&V#2cP1Qljq3j*I91<(blq+6BHG>"l[H`?4R=##a'`HP">BU,T6:T#7Ohq0&%ds#cUm#?46Hb4P"pb-@s96T)bbA/&KKY=jgGPhIr:mYP7`?Vl9o=U/(SgFmUD1\EeT6V\%#_Z9QaM$0H5,$/Qr[9Vg7]YC$X@L%?"j&Nj*uBK>q6/mD7AC#$-YhC>)u_O%1'>g8o8DTfr(/IJl>;&90h]fVcDuc`:NGPt6%j?.\eR]1n)sgrrVArdPSZRV8R-3O^3oF'Ej8eK.u%Ti5>1>.cMBMr7@(Khc#tHIdR^<AGmnBQM(kIQP5c*<unpDS^T_$>u3'O(%sZ^YuW[F;]B+R!1ERecYE$Wo1*NH/IrH&K&"!IFJ*GrF,W71&l](@DVor$psmQ<&igq(?!Aqo6s22h:t"VoFG?\m6:~>endstream
|
||||
Gb"/&gQ(#H&:N/3$j$QOJqV=:8?+osdV[D8#e!In2F-Rlcna3R<u4Ai2f6=D6X;*cf?'lqd_<XX/;YR3%QS0^L(#JZ=neO(!8f?dlo>0f@<i/Q&dc`_n8&uUN<iTjb8?$h<$WGS,5_]2D,`j'Le;p/^edaaQ66V]`ZtaJNmjG2W#],,MAQo,W&>9E@BhTQep'IpkP/^^@\o6Wis1%Qdn>K8fHJN=LLAbe%?h-t65%FM*Q,15`PqSd]S%*Oehu]pWcImFX^/MR@E#d3V_=Z)D47P?h$1T9f.O9#Ke(o5Yl"ThO8Q=rpel,F,J@Ub=0;Q>"!3o>]'NjTYhQ7d&C5<%j-kunM@W*42+._M0btj9n4;KS(a5/D:ddDmrForg,H_?Ld`gFT)1"lk[,U\CGjLV`Taaeb@E_)mV?HcB0a)=/qEBJGfT7;nnN;jLhIY/1)LuLG8fH*67?/18j=iPe@lEp8g-qR0r3m48flO?f::uIO5p!@o0hSra>Q@,r@:I]>9[;Wa=MN'=O#)16i?s<9`qP?u$0q3is/3<Z5=qnrPI6fomLk(+1l1)W*#r&!_m+)cdnJZF(`"O\rHWN6gR$0"ENsiBbH\:$B#UGDCWk;kd'Ru2GNBF?e',JO[HZep-r(KJ3?3C6G4J$'+M;';,*H.(?4bi]8E(V/i7&GL6P1fIT!t)l:E"pF_)mbK$=OcteqbePjPrU]f89,)019YNf0mLnlES#"bf#N:/;>;]cft(tque:93p8$c,p_H.X)R^b5a0j8ft$Z(3/U^00j&C<#6$f2n";&gF=Km2r@pq$\"WgBHfLcqcKo7`p7Ca4S,/4PXf\_AjpbS-/C1adQYi1.mE10V.:1^qhSRmbF?.bqG7,fWAkq`GWHO26aR!eU(H^A&dD+"ET!&n]SmC!cXWDoo$&PtHb'[(Vk>:\G=RJ'?gAU7/<ScND&XlXLi?AEe?OPJ4/GrdjC(&=PY]bA/o8NjU%*0@UF^%pK%MOZ6$]A?(L$Pb=iPDC3Y]DD/F7g:+cmH4um2s6cQ>i+!.QmJ3A]l?jEW7lEcC.g7[==d5=gN1=eRGoQWl/$`an?tCaFqK8IaRq'dJ/OuH)pr4fs;(-ZQa2BU\(N.2'R_:D019pYWRTiY&fA@DV@FGB7!u$j/<"q8G*?Y+iasAHXl"fju'SSa71p>F;?.a#DF[ZjgUaFPa]th4N4RMa9P,p=+;&R4]7/m(iRls6iTqDSgj$abp+X3ql\`0RL?,Jd6*^$f):>]Gh=t%Nkrg)$"!7854',%N)[l?*d/d%Ss-n]G0UEF-(PH9a6lR22jig=,<3?Zb&%qYs4fe<-R/[7e;;Q3=01Xkh8L?Cj9c@6DK3:=RHh*'@5d='>I5FQ:\3B=dakQ!)]$a,*+Aeb#E?E=gOlUe%BL=Ze[3#I*fi'[Zru@f6[S)=qtb^V+Q@XCYto_uSl`ll/!9*^]<:O.GFK/q\='*ar;S+>1so"9Ec+=gkI0gPW]dk(6`7^B[!5pb(VuY/$_>)soW8)FWanefd,p'_rH<MQ3Xudih1G6I'\k<,+2dk>J&?-@kq_l60^ia-XU!c'<P`+'o"N_n,;=#!qkj0nqSW)LA,cG0_LhZm)2.e,WGoYl/\m\lkP^FD]")m6kT>?)m6L~>endstream
|
||||
endobj
|
||||
27 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 944
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 942
|
||||
>>
|
||||
stream
|
||||
GasIe?#S1G'Re<2\CskCMJ##256fk!`[3$,^fZ*lMGTYND4jHmibkEgs.,X?-7tn!WFG&5pY=eMO3N47_l@pF!5&Ztk_]E$&5I`^+s=OLbL$.N&MCU,!>&U:hf'^X07T'Z]bCN>Uu@&ZVM]%55\NWo2B"R;.E*"^(++eX"/7&@=ocr$OBVXImh<f'Q51a-deoZnnC&[H6Y+(EC"@b:_\K9+</^#L6<Tr_#SZF8IJ;tEhIKPh7'eG6_ag'JB]`^D\UsG=kN>8G(XA'"[=,:NCm!B"oca5CiF,l)"()=/!i3;bIq&jo52]8ICf80b+&1d;"EFV-(,]A"8_t!fKMN#slmVB0UWc7CX;u*89>N_iR.(+9"qj][<K#\Qk+9r,9^G)_7jOd[Wm-?+YDKnM`f)5m4KkF/]qc>i]'O;Dc7,q5[1(ap6?OAkNtI)6?%dB/[&XpeZm.BIO-XRFhsI;17c)@iS5hb\!KO=10U79q7cTVj^6ql//qGHC!eV30[`-?4b8i^]S]_cb=ZVRKS>?;nd3Ekd_$VN7QGC<b5'ZUI41)4i<:)5FGH;-2mRbsJUF[u:3%S(F$$(9tpNLeF8$`6mIPaOkfDu\]#Q)></6DW*iaNOqf,B8<8;U5^[Z;-S`$i/fl@(ab>'KcmZ?C')a4p0tFMAV-9jTP=7I%eI'B%hP'X/MLiT(]Ep<[9+:dlm<4b0pM5AXL1;'D(WNgGkKp@]WVJ1qjs"ppA`YtS!%RKq-s=W&I-!nBCX/p!e5=B@OF"$5cZJF5$uI.Z4J03Fm^7rpdO5+ZH&=eAp-bgZ7Q:*H:f.&D8EU`i'<bq"b'T#H7)ANdK6aW_kU=1U^lm:0_#Rk.d6:[t="#4AYQqaC7MlXj'qk6JUt38Pb=/`*;][CGuoZfs2l.3!Ys/Q6k!%"!HRK5JAOh#k>3.s89>EpJ;N#P)c+NW~>endstream
|
||||
GasIe?$"FZ'Re<2\C2h(\D?!-B=7-Vg5_`gW3oJE`,THm+:8E%9<6P#^O,Q<!-J8YP2+`;mb)YVQ3"rXX8_,s^oIa$Xr&i&d0Q*^!hpXDN.RZ&iJMCoJV8c4Q34C#q13o5U`^CLQ<OQJC1=OM@2L`=)W98G2:IXK(``ehLfRIo!Q6[kN;BG:,`6X_/VmBKrnZK$1F51W<5T2[eis;T's-(fM])phRFDkD)0F`LqfE9cZEYq>8X<*0UX*4.n^-H(_tiuso:eb_mtU>c4h,2aT=NHq+o2\r@6&**?O0CPdbDdVE<S$&GU\"uWaXcq`^r2k[=NCWR]_/TDhq!t'$FF6?3GpYAeb[(?>JLm_#dT'E/A]FZTr20Mqus]JM=HI>aJVa'VU-Dc&,Z+M1`7VX<AuSYFnp&;MmE1FLMJ;Ph1gs#&OO;edp5[&WN@I$=/;3orL-GCGJh9BXp&"leSX\j'WL!aXY&J!043KYZ69p7[&rDhe]8H=2;0edNXCn[U_;BEXtrbkHjtQQ4=S#A8)PubfH@HY_5lFc/;uk*5)&r**QGj.Q^;U*NLI+4m@9;S>CoEO/!%A5n8tDrltuDGgaLb%u(oCf7RQ%i'+Z.jUrY_;N)74>!m6N.8e74p6"?h=KOJQh(OLmk:_>(c4/V!G[$c+rqG2Va=HDN8A3o+!do:U"YBOV3&u\j4g^S'<7?_*#@OCG&!rSK<(J9Y_aWqgSNTMC&uMI<O8u6oM]&Nqo>#]t<n>?d5W-lDchq/heW\;(JG-T<TY!_H&2Uf<$P)Cgd2_&5&Du]U=e@djaOA]-:-m<HPgV]3aq>kVi>'@QcXNkF3KNPc=\,8RD(<KR4]VTpag1a<(f*1LE;,;F,Wb#A1n1M8n*P#OG^bmTGgh8bir&DdV8r)%2#&8!V#IshGJ_LTmC[l'"229Hl>.D[)aNltrHt<#~>endstream
|
||||
endobj
|
||||
28 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1615
|
||||
>>
|
||||
stream
|
||||
Gau`SD0+/q&H8h>Z/Z?g@%>Erl.uPs%cq7oLES7ZHti@p8/GK!QAhW80HL.>=)TJ>A>1dBJF1;+lLqdEgO5YT0qe;RmJhD=nB2/6Shjao<p.7$&[6QfcW7m&J8iK8O?c-"_h\DO_WD$`3ljT:U*:X50N8^\"UN#%0p)KsITeN:V1\Ad!<]&2eOBNn9IcgOndgT:*2aQ?.MX!#p[OXu]SNLM3Xi@l+;g,HI8V+D'SJ6@-*4Ooo]l)9$i%,3].2YO70\7mV2I8iS8k^jnVcGJ<L$Um9Ale]FBPm']"G`bX1r(cYF00X0*EX8_qW4]kpg'ai)`npk8ipXG+Ib2oE==f>gi^EnNKcD%1,D%YnkqDGS&lOQr#3)?lO&V\t@iF"^D^5KpgT'ksl&s[,P#B*6,pJ\)@j0(i,eW.Dg(e"HOS/DN#*60Z4gdn2h!phIY_Al@Gn+,nB,U7>;UBaPPUJ1!)Nf2F6(rc+>M)an)BRg?)DRo^+@^)5Dj(`^=-i)]EGEP0$:$#j[fPn9]bj>5X3GYOS*B?kN,"*r`<a4'T9T[G/NgD.9Qj",MlJ0!Y@uY(Wg`]=HKh>5?`_fEg;G^Z4jfS[%91m5Wl(H1\WCSAu2q/:2<q&!3RshO^=Q#+'aWmIZL)ett<Uh].$RaD4=1kB<==7poOH/mCZ%A>tm!`P/cO*l-WM9M[Q8)S70h,AZnAXX][$]nEO`8XO3af.QugU$*-]F`+7-oHml,[_=0Gr3Se"knmJRaV`!;Tdom,Nbg;h:rWe0b..t7et&O\>8@K3)op@eAPWmfW1I2:0I@:BNG1\;;QPTC2Ir0*+Um:&Rr4=K^fq@b]P)PeNLAS!,8_HaC8baa*9\5TmltD?rk+D/+[g/NkZ(<78CT7IP8n#=3$c@hY\d1-*W:>m\p=@-pkD3h!"@]9^J7O3F-.g6]!K^*U"Vn<M&lslIeW,:qqdU]%Z)7)H/_#uA-RcGMb9`N9Jm7b8`ns:.+>TiDU-$p8XPZ.<!0n$"!#=Iir8$0QF492AX=pKO_`Q97j6G:1*-"RZb,_r&^7=7[UCQfd]SM*FNCG/c:LGm#\/,Je/.B4q`kEi?LK@$Br5C8CS1Wd]S.U\eAaT)\5"^5W_k8<rsJkabohZ_d37Zt`2IB/MLZpgRhJE_s5h'j7JcJ]+EN]!E5rrOlF-Qa[$C6mDk5$^%[X3:kLD?+c+P^U%p-r1iFtqX2-%hu.A,#1X(<RR5s>?gC"1R<Gd[/Z3eGb!Y4&HXHVD"S/baA1n&@:rpAs#H4J!URE:=,mgpuH28`oSd]g4HL#X<riaMgG+\sBr=$_,b;ZIl#D8Y"Il`#VoJT"Fh9:\ouPiZ.I[b;Z\H#j$PI-]bV^`bjD^.+[p6RanA0q78^&T%iN7B,N$B4r<E):JQWT"^Hl^UC<acKp7dr9I"5qT^aEd=PBOoE%rDF"q)HfkW%2g50?QCl<//aOHOs;o[f?*kok`OgcO/r-fgc`Lq"T\rc.Da3*XCl`Ok5BX$_&rmc-`>\n%Ci#J9pC'k\cso2E-FQ@ng%B+o[DG)LS%7o0]YYO&*4m<1p$0:&h5MVR#sS\IaU)G]okE*G&CJkr93;gho;l#qu*FJ(r3r!.]!/,]~>endstream
|
||||
Gau`SD0+/q&H8h>Z/Z?g@%>Erl.uPs%cq7oLES7ZHti@p8/GK!QAhW80HL.>=)TJ>A>1dBJF1;+lLqdEgO5YT0qe;RmJhD=nB2/6Shjao<p.7$&[6QfcW7m&J8iK8O?c-"_h\DO_WD$`3ljT:U*:X50N8^\"UN#%0p)KsITeN:V1\Ad!<]&2eOBNn9IcgOndgT:*2aQ?.MX!#p[OXu]SNLM3Xi@l+;g,HI8V+D'SJ6@-*4Ooo]l)9$i%,3].2YO70\7mV2I8iS8k^jnVcGJ<L$Um9Ale]FBPm']"G`bX1r(cYF00X0*EX8_qW4]kpg'Rn>iRIo+(J<]2!DTH@k_nY3>q^GTWl]L4g`#=Gpr24:#q89IQ-%YRS)fh+qt4!j2j+_G"e$oV2Ot>4JR\%V+M6g[GG(N&=Gg']HPmK#\@(2oZ(V(h*nmpmhQsn$;I1og%$Q&dNN;,/Xd1AFJm6Qt.6CS"T/Jk1u=%jE]39D=]5dqY$;@N)@G$iup+p%?32]alK6MKQYIcpcZGp/Ug+_fD&'1YR(,L%t@ZlSLrZeg?mhD2R1fp!Q7E5Qe6aK=$fpAh-=_DXaFn@CkV5_hspKncId0)FrYCO4F17\c=;ZIQG'ct#=q_tDbj/9K?HHgG'Z\OCX\`fD[ns9j>A3TF1Y//,Hra4QS"n#Z;aKL@UE=b%q'<7VC.iWNSP0EOgY#1<gCkM?:%_k,g8*ACDVHD:im$?3k&*QHBYLQ>@3V4ITdo"FH!8dA;k!.:mLs&8%+^o-t@pSjkL&,lV>j?/IR6*NT4^CZDRsC<)5)X(_[/2`j?jX.Fph2)mW-&&-d*N9fL-`i%53l?8Odn`_::!&WD`k2,lAA%WmZ;pE-^ZIpP^S&>HT7oI?_,,\e-`8WL#Y*"q3ofX<0RNrH^q>s3^'I)DZo!/>CX?RI5*\O_p+h:ZG&:i.DY7$!!F^O(+.IIG<iLI@3P4E6uu1'>F_7A\B7VO@^B,]dp-Pj-nE2eV'I,YZ<'We"O#!=n-_EIW"SbM(b*ZHF!6aL1?-UCc`-R1B):fj/jt#\I*VgG"inC"GdP3oj7(kG0:GKJC,`lAP<+I3=1oYBQ8#1t/_W[EnkBhEhhiC?(k%>c3p+eL21/s+LIAAe;h@k`GBJ@aqb(7DP%obmC6@s70Qp,5l^iO?(E!\76"8F^'9Ag<+]r[nc$?LJ(Y.o4f0&k2$m;LT>")n?f$gR]9rKPg=%)eM<<d+<Q0D1hu8.]NTUh*Ppr!f6:9=4XOI:Q@$4)GN50tqg`N4*`%hd3-YQGmbI?*,]idmhOp96KV-(EjPh:&?-D&ZL!ApX=mXT3,gPaFif:&`cWtsX-iM"8E=R6ijdT@4K^um`P=O=?j0n;j'^PNVc"bc)I,1A#cY[fWZOE$1T*t:P-RZfe!\VFj;$PAB6H[DIV@g1Id!1cm/F?;H\/:8^K8#=nFI_ZD+(_<2odi+A8BJP.qJ/_&oFSlbmN(ZJ'Cnk@7,/=is1%fAS1WdGin\X\eKI"Ip[KFZ>r#3pKAD!2MDLEJq5IS3b<^HNZO&g2]>_DN,:J?==8((UG.XKM(J@jU7IG&ucJPEe%4?HF\?-T2_'`1UWBRK.FLst%3`$t*rWAgP/,o~>endstream
|
||||
endobj
|
||||
29 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 742
|
||||
>>
|
||||
stream
|
||||
GasJPgMYJ*&;KZJ.HWCfd`J'k78tagMFnTg@CU#t@@:sFA1&NY86(q!BC,Cm5`$Lmj2q;XcMfV8!M"&THtNVuRfm=^!ec6f&VNU_aW8#efM@7M8uE,knlu>)(fYq"DSan3/D;5!!7)[3Va5Z\h?ORSFNt0t]*OJ\9E7,sS_&Bu)!gQRHA,Bl>$@]+2Z0[qoCI*N!H";HV0VhIN+Rlh;a",pjMEkY8HG"c+2?XKqop=NflFF@iG5iZfs64?PRaj70<WK=<EAWO]T'[9^=a9A?(F:P"-W8%XV"oUM2'H*ahN`[#R*&Le`QCPrKJp8lP08Qo9h`.5ZY=MRNTsjE]#?a$8-oV_trn2Hu0]FLJ\tI#:Ps_mU12[bF/(:((R%P+r7`ODB/3&S;d+q@0CU\7"ac7MQ1)"FDt[4@8`^`+!K/'O>DI5qpF;KJFR'MN:A'ZS0%N3>Q(dqiFg/rXQch_4uC(A7R:]KR%nSHA5p$g5mh>*b<6&BF]5a9/oK-Dr)1N$-)BYO3eR7h)%%j'9"b<'q&-iZK'30C6B;fj\`9AL!j&@"P7E.h>VE*'>_1r=4%8-5Kf-Ff!?H^Uf5?"/(<BJhr#gW@$^Yg^>YB3?:%o+N6%.'$VD,Sn1FSmZS.s#32PAXXb83i?lqJr#<>Ob]$UL@XCMKH<'lh?Gj(.2=UEW1gLZrf82JABI]jh$,pjApb.4I?prqL;$a/"/e[BmJkSQ_g.CXrF'$Nes&[DG.!~>endstream
|
||||
GasJPgMYJ*&;KZJ.HWCfd`J'k78tagMFnTg@CU#t@@:sFA1&NY86(q!BC,Cm5`$Lmj2q;XcMfV8!M"&THtNVuRfm=^!ec6f&VNU_aW8#efM@7M8uE,knlu>)(fYq"DSan3/D;5!!7)[3Va5Z\h?ORSFNt0t]*OJ\9E7,sS_&Bu)!gQRHA,Bl>$@]+2Z0[qoCI*N!H";HV0VhIN+Rlh;a",pjMEkY8HG"c+2?XKqop=NflFF@iG5iZfs64?PRaj70<WK=<EAWO]T'[9^=a9A?(F:P"-W8%XV"oUM2'H*ahN`[#QloJe`QCPrKJp8lP08Qo9h`.5ZY=MRNTsjE]#?a$8-oV_trn2Hu0]FLJ\tI#:Ps_mU12[bF/(:((R%P+r7`ODB/3&S;d+q@0CU\7"ac7MQ1)"FDt[4@8`^`+!K/'O>DI5qpF;KJFR'MN:A'ZS0%N3>Q(dqiFg/rXQch_4uC(A7R:]KR%nSHA5p$g5mh>*b<6&BF]5a9/oK-Dr)1N$-)BYO3eR7h)%%j'9"b<'q&-iZK'30C6B;fj\`9AL!j&@"P7E.h>VE*'>_1r=4%8-5Kf-Ff!?H^Uf5?"/(<BJhr#gW@$^Yg^>YB3?:%o+N6%.'$VD,Sn1FSmZS.s#32PAXXb83i?lqJr#<>Ob]$UL@XCMKH<'lh?Gj(.2=UEW1gLZrf82JABI]jh$,pjApb.4I?prqL;$a/"/e[BmJkSQ_g.CXrF'$Nes&^/.$d~>endstream
|
||||
endobj
|
||||
30 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1781
|
||||
>>
|
||||
stream
|
||||
GauHK9lo&I&A@[:m._i=C`!.<!d)K3E>,6m`_Dmi9b157'Eu[eq&tr`SYhVNh?E]=`%od_,0;#4@NXH9h_*Ig.)),H:3(lWk&BsU!TPlK"=AqTq$!;5]j$QeO@p/cnJ1^A%OCW4$`^U95S0)4iXl8],uIQj:lHe;.H"ke-'M/>\:!En+>T`j#p>*/TaJQ?pIWFd/hKU*L=)@]/O*h273l^&+jK/%?oWeH:A(R"+I!$bJ9_X2f5EjC__:+Tf?%#qB(3F3FE1r#_7>6Jo>B%g:2?V+n3Z$sXPDmJ0`*Q=LA<X;ed,Ug:'.6c&H>)K^jNpjD9C$+p:#:;(,83%S@?#+*Djg]U67"cqc%#UT%n;2a,Ns1#Xo$0`rjcFp1'N2-)";:d25sP/4#X3q041Kjs47tL,Vd\Atf'p#j4VWo[l?Ck4AefJHQ:&pR0(k.2s>V*f0Nj,T[t.AGDoIfc'U&N''nK/'hqP^73Ik]sQL5iXL`ZjY7)[UP(/;I:.lsX$F4WKql-henjrEf+EJqn0>fb`j^h5&aK&jren)/LW53g'-!^I@S-m!%!s#MNq)Yc5r+do/lel^K3Xj@[>*B319]Y#c/;dC.Q.jA;8R9u0gC0\!q+JRZnB/A6%s2[jY,*K]<\N(>%]?6F)-Qn=5(GJ2**<i3_QYp1rP*Ya*F`2Kc)5#WO@Z:<a&QT]<3:fr-Qp\?W,l]`[[NVgbUJjrO#M8;``JB_OE^54X"B8<r0)F'8fu2@Ap@m+eaM1nVHJm,i2@k,+h7C1H$25Kc#"T5R5RZfhCZKoHOW!r30Xs8rXn@!K7M(=hUlP#<Hg@m0@QagILr)6fd<!+-V%^=6#Z2&fhXu.8WT=eAfJBL(j@Fn_2Pu#'f<(B*`I[Qg]'%-!(=RO5gt@215III&Gld9j*m:#qVbUoi]XnXY;8c*KS0UMM7*qLtBWX9sJqEl,KN1E=@3_9"fd80&SoG$5=YJW7L64WGg]AMrP/m)Gos(]WiaLYB#8qc"p^J]d_ALpRfp-?TTht>Ot%hdWp3KT1HN*eqoggJ8m?SDI8`T,%Ss4SZaSBZ-AWH>0IcZ;j8[VJjs2P<c@RlY5Yj`R#PgbrWX4:'F?J@HC3%--<QUd8.@'k*Pp'7B<OUNeB-9T3.s=uUL+iAF6q$W`X9#Wge7^'_A.e@p`#S'*"tb!9KrJ10j.n-.-AmKR"^;m,XX:YP,<8k5b[XTN^CEE7o&I(A@ret6W2@XTtJ>?M,Goa\qnh1ou7u/E_:Y:#)%[r\(`NF-VUbYn54_;an)Pg9eaug.Xep'/%sXuE,fr`i7Bo#F,2W9?E]eB!V<8,I+$!_$Xon("+fX0g],7l6j1A_#b_r^3WajX(6a_%;!E:qfau*rES:VMi0UTUUG3+[WQH4,Y\=Fg+JCI=#hp,fkAce2HF"%B:2J@s7bWmSJ'u(Y5^f7qTCW7E`GTVFJc84,G.ruX%4<MNY\2#N(Aj<g((7P;GhW4%U1L2n<iu[@i^sbrF+2R-mckuReTprB_0"l2m6i`e1aPn8UYa077C,54EkK9)[>b]uos3;K2nIYp,4o/&=(<`04ml(YY4#f3rs,C,=5^-FrU(/A#Q"_SoiAC&PB&$Blt$9RSa0sk^&`QpS37")V-TkW3jC=V.,/N[9c!#.D5Z/h.5k[*Il*)^SXcqKT\n)c@BKRjp]kp,VT_PYWS,k1/ljsg[\KJMnI;HUp7OmY!KZMj[p[SOn*'KFo(mX"02nrT(s6*Q*G$,#DAV<M[_/Hj[bd#D[KlhY#N!$NGlIhVpr7g~>endstream
|
||||
GauHK9lo&I&A@[:m._i=C`!.<!d)K3E>,6m`_Dmi9b157'Eu[eq&tr`SYhVNh?E]=`%od_,0;#4@NXH9h_*Ig.)),H:3(lWk&BsU!TPlK"=AqTq$!;5]j$QeO@p/cnJ1^A%OCW4$`^U95S0)4iXl8],uIQj:lHe;.H"ke-'M/>\:!En+>T`j#p>*/TaJQ?pIWFd/hKU*L=)@]/O*h273l^&+jK/%?oWeH:A(R"+I!$bJ9_X2f5EjC__:+Tf?%#qB(3F3FE1r#_7>6Jo>B%g:2?V+n3Z$sXPDmJ0`*Q=LA<X;ed,Ug:'.6c&H>)K^]M;ED9C$+p:#:;(,83%S@?#+*Djg]U67"cqc%#UT%n;2a,Ns1#Xo$0`rjcFp1'N2-)";:d25sP/4#X3q041Kjs47tL,Vd\Atf'p#j4VWo[l?Ck4AefJHQ:&pR0(k.2s>V*f0Nj,T[t.AGDoIfc'U&N''nK/'hqP^73Ik]sQL5iXL`ZjY7)[UP(/;I:.lsX$F4WKql-henjrEf+EJqn0>fb`j^h5&aK&jren)/LW53g'-!^I@S-m!%!s#MNq)Yc5r+do/lel^K3Xj@[>*B319]Y#c/;dC.Q.jA;8R9u0gC0\!q+JRZnB/A6%s2[jY,*K]<\N(>%]?6F)-Qn=5(GJ2**<i3_QYp1rP*Ya*F`2Kc)5#WO@Z:<a&QT]<3:fr-Qp\?W,l]`[[NVgbUJjrO#M8;``JB_OE^54X"B8<r0)F'8fu2@Ap@m+eaM1nVHJm,i2@k,+h8nq$sDH$Sh'3J.A)>ZC02ukXQ2!pgM,oPo;f_!uN'0Z?fT)%s6a`g(3$K[u]h1LWIT"4sp$FY/W2C,W[8s;kT;ZW/Z^b%4CYkj0c"u%.MQ/c4Jo?0Al**9!/Z.*lfc^C\e%rpeJTQS$FdS'3IR5lEd,e>@CPP4!'=5'FQ"l&?h':RUYfidZ$iAiY_CGQ$NOP>ekbm'IZ9r;6ABH;W#8a(<7/c25&s0G[j>!?f_JlS(YFsHW-_#mQ[U8^NNds[cW!YV=XI!5*9l2XV3MX!TR^0h7bN37*(gF4'u-d@[f#n[?rQ>V^PD7"HC>*XPW)b>lAMJ0H8JMr=(GS.2$$_oe<#99s?5ROW%7a3eF!Mc<c/&W0=@2E!UTt7_^Vak1Gq8N"ol7\X<F-Ke!Q`n2E$-3$sN!R!emA@^<f9:s>Ut0aeMe8;:T<,YdA_JO883*//]iNh"h.a`oUrLSU`:6[=O]';\lMF:kE@l]!n=jcoBS%1!>oDRWok:7,F;iM-BUPNQ"YRUDlW<Vgm.<dM/ti8WlI_67e&jq)/P]j<Qd!p3@6q4rqH(W&f/#6N4?\,VBbM$SbH&OIrGF9DY:/1)<)T[NKkZQY.nj0T7$_(T*57Um-?;jBA7@FGoY5XJhX&[j8Vcf6QDoO\ubS_0`pNO0_0s.k-=JGMHl53EAiMV[-j"9"A7m<fr;)GX%&@*al%/bURX/J`*Un[8J*7*A8fXBZ:_`0DInk5;%8h:4r/Wq5_bKB^\CgPKNUBM+fO7_P-MMIq@Fj`lK1CE"?tlXdIuDfi7j7Hh@,Y/XG>Heb0<?/NPErsq_7YJ=3kqqW:b%e^@/l`Fb,-KS!cfZOI-44hk`I090k3-tr19"RR7F^e]7:q#!@ROlt;g.o2Z;Ja@3rb*)E4#p`u6,0&P_cm)^nIOj79pq(=;R<K@?*&"XD+?h$iu:m5lp6V;"!6"_DS`"'hpLikjn84#?`$r30U0++43B=%h(HX$D0\d^D7pngD%HX=%_Qq&nGWTCeAd(~>endstream
|
||||
endobj
|
||||
31 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1937
|
||||
>>
|
||||
stream
|
||||
GauHK>Ar7S'RnZ;3%0Ntko,;P,`6Wi!SQ%u!OAgD2gb'^AXR_+aJ,\-dO*%bhkBI0m&68DEF?m&q47CCT,:E&Yj+=*!;nR(K3&HuLY3$%6QDI6_onJ@aWau/cZ+NgP1i))inNT+ZF,sJ.u<]*cTkBh8C%<,1*WPJJ`Ac:@if.f<_k:O`"UXa%M6`e+iV.d2A)ISBSX)apik%CqFRHR:ILruW`f?H)"(dk;&u\(&B\8(L"QYWs874a"L%K%jl*2i0mkB)'qQ0pkM1^-U]&(mO7GUhi@f>I@\%C9;XD6d$t`:pX9$%F97jTs\+,MZ%a5-ijFppjY]#,9PQ\ec!9c!q[7(_@dF=qSfJ`CV(_:rJZI(JVG(_)J@r[jb\(t5(EK<r]aMAd]bq=c*:[m>#g[5BMD@LNOAB[;]90Ve8?0JM0<q#8eBGX!7Ye?)LL/1tPOENmrP7h'+f-83VSW_7VcA[>9Tlk*M8S().ljmEjjJfFd&D?-b+D-QF/fD-L+g*D&=iJT(`.bGLc$->nHr8l"K\sgo3,t@IM0fX19cPEMPcWh&bi;^)_BMm>#">C&Q&OgXOL32f:F#/0Y+?XYGi4S((R63ALLIIfY#YYePBR@`chD<kZ!@l[9+O_;l@4Rsj6F44<.\JW"B(eVE=c^$nj6moPYhHS"`]41Jtag&ktWhA>'><Kd"5;ZgX($tH.TLYo+J+3<IAF^m;V"1%RtWAkg617[$'jpeK@$=^km2M.e);V8_lR^2>/0.I[*?7WreO.Eq>83`?Pp?:oM^Z:;*k<5Dn_'.no-`B0'Y_6^D(mPng^3-=ng(!"*Puq#_s.MT,9j=T!RO2s'dqdHAp1H%D+&b4RR##Vc5YNhU0Z/qUUO'Y#7S\%=-A(!`IaDQ1e>:fk)"f:u%Y.l.>2lrm>ODHO7@(S$U,82IqN0c*'PE>1mB!564H=#d75*:rbG1U[j>NDDHYWFAtE]Npu;a'`3Vad%`bXW`lsP[H_W>(Y=>m>SHpo,nLJ6:$D=OQ^8_hAr!?BNmT&gO*?\p8b.Y::X[`'0k%pS+*2&.asTX6LIc*#!nDdQ($eoYA.Hha6XMWGt2,3MMb=dMUMl7=Egn5U>ckXgBb!\f>_hnY@_b0>&62YM==ofeBpBEW'e8WMJW$?<_io[-]XG(K'Lo,eC-@@Ym0Are=/K.\eTn`Ii)AJ8ND#hHSF0s1<`)Y2UGd^k'V)AJ%LtKf\fi)U>(KX:OLGIne=]Q6iALIP>EXZWUk/:$*rbeAafa6FU9i4gbEF9TaC"3EkS#M[YRULiaS-%7&]Eb$;WLU5nG'<dph4^qjT!jSidqmncU:kF;gg`KG!GOS'.ub#g5OtDm'IPW^U+?euJ8-\p%R[`j%"61+GmU<VA;EWbstRCLfZG'$7A0RkXo0@s#@Yf0ZD8SZ64XG:NPiQUu1]cR8F6D[Zji[?RanjCZ.#Ht5>0;;W%PfEZRS,etJo\&I!%BB"iC2HGl/Qb%hV[l&8aY9d>9(6M@\aI"=DiSAJqKdI"6+n0>Bk!%KrP*X)an5O7V.9mIu35bQEg-M.GAg&f_,cL=VI#m3C\\cUiGHls@f>0@Kb>=gr8Y.@6q3N@[#2S4QMr.s]&],nj<Nn=r5j_ZP1VmW6%EjQ8h&+/17_S,6`9>6&:hW>L'L&+q1Na&>>bdlL+%NDT>U!u[G$*ehAD>&/3U`#>W[O#)?8olOR6j@OH%VRu,`_9?]EpMfA*)0G[q,I2)<'<*N;1e/H(oG9/II\!+!6smY@mi2K5]]@[X8L`2eS_k;b;@VFW%ojG-\iEmEP:69(j(_EijL]^<TYrAQ[H-XJ3XlIB7uSDGPbRq5p`:2#i!(_C158g^qO]q[N".bWf3F[62JiQSmiDXVP%WS_n^(^>k9Hk`5-&`nu)F]`jHW!r6`-E7uU/L3#_IiDf-nZ?j$5qLeH*`LX,H~>endstream
|
||||
GauHK>Ar7S'RnZ;3%0Ntko,;P,`6Wi!SQ%u!OAgD2gb'^AXR_+aJ,\-dO*%bhkBI0m&68DEF?m&q47CCT,:E&Yj+=*!;nR(K3&HuLY3$%6QDI6_onJ@aWau/cZ+NgP1i))inNT+ZF,sJ.u<]*cTkBh8C%<,1*WPJJ`Ac:@if.f<_k:O`"UXa%M6`e+iV.d2A)ISBSX)apik%CqFRHR:ILruW`f?H)"(dk;&u\(&B\8(L"QYWs874a"L%K%jl*2i0mkB)'qQ0pkM1^-U]&(mO7GUhi@f>I@\%C9;XD6d$t`:pX9$%F97jTs\+,MZ%a5*hjFppjY]#,9PQ\ec!9c!q[7(_@dF=qSfJ`CV(_:rJZI(JVG(_)J@r[jb\(t5(EK<r]aMAd]bq=c*:[m>#g[5BMD@LNOAB[;]90Ve8?0JM0<q#8eBGX!7Ye?)LL/1tPOENmrP7h'+f-83VSW_7VcA[>9Tlk*M8S().ljmEjjJfFd&D?-b+D-QF/fD-L+g*D&=iJT(`.bGLc$->nHr8l"K\sgo3,t@IM0fX19cPEMPcWh&bi;^)_BMm>#">C&Q&OgXOL32f:F#/0Y+?XYGi4S((R63ALLIIfY#YYePBR@`chD<kZ!@l[9+O_;l@4Rsj6F44<.\JW"B(eVE=c^$nj6moPYhHS"`]41Jtag&ktWhA>'><Kd"5;ZgX($tH.TLYo+J+3<IAF^m;V"1%RtWAkg617[$'jpeK@$=^km2M.e);V8_lR^2>/0.I[*?7WreO.Eq>83`?Pp?:oM^Z:;*k<5Dn_'.no-`B0'Y_6^D(mPng^3-=ng(!"*Puq#_s.MT,9j=T!RO2s'dqdHAp1H%D+&b4RR##Vc5YNhU0Z/qUUO'Y#7S\%=-A(!`IaDQ1e>:fk)"f:u%Y.l.>2lrm>ODHO7@(S$U,82IqN0c*'PE>1mB!564H=#d75*:rbG1U[j>NDDHYWFAtE]Npu;a'`3Vad%`bXW`lsP[H_W>(Y=>m>SHpo,nLJ6:$D=OQ^8_hAr!?BNmT&gO*?\p8b.Y::X[`'0k%pS+*2&.asTX6LIc*#!nDdQ($eoYA.Hha6XMWGt2,3MMb=dMUMl7=Egn5U>ckXgBb!\f>_hnY@_b0>&62YM==ofeBpBEW'e8WMJW$?<_io[-]XG(K'Lo,eC-@@Ym0Are=/K.\eTn`Ii)AJ8ND#hHSF0s1<`)Y2UGd^k'V)AJ%LtKf\fi)U>(KX:OLGIne=]Q6iALIP>EXZWUk/:$*rbeAafa6FU9i4gbEF9TaC"3EkS#M[YRULiaS-%7&]Eb$;WLU5nG'<dph4^qjT!jSidqmncU:kF;gg`KG!GOS'.ub#g5OtDm'IPW^U+?euJ8-\p%R[`j%"61+GmU<VA;EWbstRCLfZG'$7A0RkXo0@s#@Yf0ZD8SZ64XG:NPiQUu1]cR8F6D[Zji[?RanjCZ.#Ht5>0;;W%PfEZRS,etJo\&I!%BB"iC2HGl/Qb%hV[l&8aY9d>9(6M@\aI"=DiSAJqKdI"6+n0>Bk!%KrP*X)an5O7V.9mIu35bQEg-M.GAg&f_,cL=VI#m3C\\cUiGHls@f>0@Kb>=gr8Y.@6q3N@[#2S4QMr.s]&],nj<Nn=r5j_ZP1VmW6%EjQ8h&+/17_S,6`9>6&:hW>L'L&+q1Na&>>bdlL+%NDT>U!u[G$*ehAD>&/3U`#>W[O#)?8olOR6j@OH%VRu,`_9?]EpMfA*)0G[q,I2)<'<*N;1e/H(oG9/II\!+!6smY@mi2K5]]@[X8L`2eS_k;b;@VFW%ojG-\iEmEP:69(j(_EijL]^<TYrAQ[H-XJ3XlIB7uSDGPbRq5p`:2#i!(_C158g^qO]q[N".bWf3F[62JiQSmiDXVP%WS_n^(^>k9Hk`5-&`nu)F]`jHW!r6`-E7uU/L3#_IiDf-nZ?j$5qLeH*lA_o_~>endstream
|
||||
endobj
|
||||
32 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1856
|
||||
>>
|
||||
stream
|
||||
Gb!Sl=`Y6:&:U6Yd4\H&eeTLTV0U9#JVD>M!AA`?Ml`'.M8tdI,6<8l[cWU2GbMRE@Uj&rmT,re[nOWW&$:n5"7Z0rT"h'd)9`j]IH&02&h[eAB8<^Q7=G6Tj/s1S+L,SZ+C@/JJrkX?M^`U(,!>G4kEKp,F(!'*75TU$_;^kMJOH1NE?>Ia6--r,IZK/@iR0mr_D'j.DtW-k]pOJTG,T$E7:A_Q>GHMDSkiT06ikLiE;'"]Vq:En=fOfkN61#H108Kr_@9ueSA1Ye(I_Ml.Y/E$:1\%L;7_,^ZWie[ZYPQ]q]7+u9Cu'[V(."AJ>]+uMam&[YtVP*8k4K9d&ES3OL:NH/gm7R7Mq(S4mmRY)=I<o+2Z$+!GO1`B:6X]ijq;q4_).$nd1:B2LZ9\1t(W\i<A>->#G6n)!U#[HJ'?VBR0in#8.d<Xttjm><9E=HU2PaMKIW>M[XNM-!TNgN035M=ZLV&fhW:Yk:^]CeCbcRhWDj,B%/,c;s%L>d*Xu6Fj0V//qc-#hE?q\LUI&IY^Q=2,6<cYE?E7d?XaYa>lc6`gf0.^ZT%V*?S=0UIj?K>oF:SW'IO5"q3X6Chj!qbiO(kT1i[brKZ(;AdGUR:b7q4FEddohEgcs+gs5)#mILE$`sctdVR"Z4-*"kj9&5"Oap-j@Ts[eo@;6QeWa]<.e=V]Ak=T=-Lu,7j3u'3_a#-7V<m(;5UjC+5':Q@'Zt>]`)kkH%e0?uIF3Aceec@DTinIlg/H)NEri=2aFGdT;Kpr:`fZhkY$F[$P)Up5P<l`.W,BibV[;9d"[r8\^E[00Y9r6%mR#[Qi6P[#oGph-X\YqS!>UW4Lh'tPgK?'t>M)sb<QMlFcPfVqnEYMpPUOJ.@Vmdt3>"Y!WP<-_N)Va$mQ,JL'KubVaW['a5;QjHFqCYS/0UH7N7LU&$hVeDc_AVO\6b$OVFhPBdEWcsKnB)mTgin"I)2]!o1AHZ%FEP)`"VIIf$b:td_ZU#-#sOusduG<^_qHnumi&jN15/dG(N2Sj+84]p_g(E9hIulD1>P6ZJY/]jP7W(/j[NiF/Y1_E-p"@Rp;!?#Jp+8EJW6$_/@Lu/RkNaeKdp*:8Te3Q'PN]+bBg/(Yd7s$=Q$icV4,2:Q)@32Zd&\3WkM;kLf,5COFtT'Sf>8K^=*OXU/Y<F4`#J9-EpJ@]Lpd%L^XWm1@X)Y[n!N3ma&5N>O+AQ[U#iaWba;l8ZiMs[=6=%)ca`TIBXJ*P,cZu9$>Gqi+((-M8&a.='R/%B+QAU3%]4se=ITn>+I:MX'rHh0cnaEdm>"]gf*MegA-3eT7bhi`T:eJo>9^@Mdl,r2W;?bj_`J;^c"QPV0Y.Q7*VbYDPQo8pIc[]-^--%L/VLP>clBYLHVlXkok\ig'Wt-n4dJP?Q6R/KuR"rA,"Ej&W<nLE0a?TcOH1sSd\Cu"T+JSlFcnl,ufR".1149"`ki(7_l-oj"RT6`:$r>r6pWd$!7:I\Dui>a]pFbSjU^XKu.@,1/#+M-Ptj\Te?bBU!L]Gcc<jS$p8kmrr'hUm1oec_bEZR;h*uhB^$$o_JkTsf+N?r4'=HSn^?f,>UrD*.DXPQ9@+[7>#,GT\:+Y9H"+InCC?!TR,^Ai`/Fo1o-SGjr-!Q-N]4Rpe*Jaf24e8Vl(O2cF=64XM>=CZKX7`%PR>]C_oERCi]]pD8`9'7MiIB#Q[Y8Aou<m0g[uANqN>%Z"aXWnmT%!"E-""B8t6+Y2!N&u16i!F=4dPgRL6:d,\VIh>2N'DC9'b_7oP]$CfJ1D3kJ22'rWe?/<qZ1f]Y(L=l!U9:&Z'37\s[a)I5U&?Bf^]b::P$\fWe;.n\;[(Z\-PK(BL^o"sq~>endstream
|
||||
Gb!Sl=`Y6:&:U6Yd4\H&eeTLTV0U9#JVD>M!AA`?Ml`'.M8tdI,6<8l[cWU2GbMRE@Uj&rmT,re[nOWW&$:n5"7Z0rT"h'd)9`j]IH&02&h[eAB8<^Q7=G6Tj/s1S+L,SZ+C@/JJrkX?M^`U(,!>G4kEKp,F(!'*75TU$_;^kMJOH1NE?>Ia6--r,IZK/@iR0mr_D'j.DtW-k]pOJTG,T$E7:A_Q>GHMDSkiT06ikLiE;'"]Vq:En=fOfkN61#H108Kr_@9ueSA1Ye(I_Ml.Y/E$:1\%L;7_,^ZWie[ZYPQ]q]7+u9Cu'[V(.!"J>]+uMam&[YtVP*8k4K9d&ES3OL:NH/gm7R7Mq(S4mmRY)=I<o+2Z$+!GO1`B:6X]ijq;q4_).$nd1:B2LZ9\1t(W\i<A>->#G6n)!U#[HJ'?VBR0in#8.d<Xttjm><9E=HU2PaMKIW>M[XNM-!TNgN035M=ZLV&fhW:Yk:^]CeCbcRhWDj,B%/,c;s%L>d*Xu6Fj0V//qc-#hE?q\LUI&IY^Q=2,6<cYE?E7d?XaYa>lc6`gf0.^ZT%V*?S=0UIj?K>oF:SW'IO5"q3X6Chj!qbiO(kT1i[brKZ(;AdGUR:b7q4FEddohEgcs+gs5)#mILE$`sctdVR"Z4-*"kj9&5"Oap-j@Ts[eo@;6QeWa]<.e=V]Ak=T=-Lu,7j3u'3_a#-7V<m(;5UjC+5':Q@'Zt>]`)kkH%e0?uIF3Aceec@DTinIlg/H)NEri=2aFGdT;Kpr:`fZhkY$F[$P)Up5P<l`.W,BibV[;9d"[r8\^E[00Y9r6%mR#[Qi6P[#oGph-X\YqS!>UW4Lh'tPgK?'t>M)sb<QMlFcPfVqnEYMpPUOJ.@Vmdt3>"Y!WP<-_N)Va$mQ,JL'KubVaW['a5;QjHFqCYS/0UH7N7LU&$hVeDc_AVO\6b$OVFhPBdEWcsKnB)mTgin"I)2]!o1AHZ%FEP)`"VIIf$b:td_ZU#-#sOusduG<^_qHnumi&jN15/dG(N2Sj+84]p_g(E9hIulD1>P6ZJY/]jP7W(/j[NiF/Y1_E-p"@Rp;!?#Jp+8EJW6$_/@Lu/RkNaeKdp*:8Te3Q'PN]+bBg/(Yd7s$=Q$icV4,2:Q)@32Zd&\3WkM;kLf,5COFtT'Sf>8K^=*OXU/Y<F4`#J9-EpJ@]Lpd%L^XWm1@X)Y[n!N3ma&5N>O+AQ[U#iaWba;l8ZiMs[=6=%)ca`TIBXJ*P,cZu9$>Gqi+((-M8&a.='R/%B+QAU3%]4se=ITn>+I:MX'rHh0cnaEdm>"]gf*MegA-3eT7bhi`T:eJo>9^@Mdl,r2W;?bj_`J;^c"QPV0Y.Q7*VbYDPQo8pIc[]-^--%L/VLP>clBYLHVlXkok\ig'Wt-n4dJP?Q6R/KuR"rA,"Ej&W<nLE0a?TcOH1sSd\Cu"T+JSlFcnl,ufR".1149"`ki(7_l-oj"RT6`:$r>r6pWd$!7:I\Dui>a]pFbSjU^XKu.@,1/#+M-Ptj\Te?bBU!L]Gcc<jS$p8kmrr'hUm1oec_bEZR;h*uhB^$$o_JkTsf+N?r4'=HSn^?f,>UrD*.DXPQ9@+[7>#,GT\:+Y9H"+InCC?!TR,^Ai`/Fo1o-SGjr-!Q-N]4Rpe*Jaf24e8Vl(O2cF=64XM>=CZKX7`%PR>]C_oERCi]]pD8`9'7MiIB#Q[Y8Aou<m0g[uANqN>%Z"aXWnmT%!"E-""B8t6+Y2!N&u16i!F=4dPgRL6:d,\VIh>2N'DC9'b_7oP]$CfJ1D3kJ22'rWe?/<qZ1f]Y(L=l!U9:&Z'37\s[a)I5U&?Bf^]b::P$\fWe;.n\;[(Z\-PK(BM04Mp^~>endstream
|
||||
endobj
|
||||
33 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1724
|
||||
>>
|
||||
stream
|
||||
Gb!TW>Bed\&:i[:/*:\_)dLR1pT9eSCsLIEB_R2s@12*</D$%VZbLrZ1)QoSDVL@,%@ggb2)id-)Mrus04OpY97U)RGlF!/EFCs3inHYU7rUMt^0.l`\re(bmDY*P\6p\Ure!8@8dIaF9\b:dlpQ":q;B<3NoMAh(WSrVM4eH7HYO.sUX4j,+7,?t@3"]op[$7L;71<I@@6sPIViGnbtIDBD&o(u^/5_26.SeR;E`o\8.YqY?GbY!LTb@[VoY9"k<a._U2$">'hhjkJsU,fQVnSsYmfKn(#u#lZ;Ni:nHFlDC0a!u^),Pf96=J=Le/^1i.k9@er'Dso:i#tet/O1(t=P@cs9io3O.ss:5"gNA&Kr0,85EQk_HCLgq[e\]6i=R,MR59\9H8Yf2)3#M*e\$-eLPF>2;?S+>G$C<-Kk/kE5g+fcFk"kmZ5"8C>5t27Ekj9"$rFSKOiZP$6/^$BAIS,M.Q02gV'nf%`#PV-iWF5C]_ta(0+%a6WZebo(M;2^Y[4"QarL&=Y[QHLkU02U"C7p>guuIU]q$npT+"8:l\F:&`1:A50'22A@ZB?S]i[S<^Q06Pqmj146^Q0%(K?Y;Q$j@"L*-941M]0P-SmnUp!&]#28M>m80._6Cf(C+pFj]?Xh=nH^j!n1%OIPp"3ub66iC""ltF$X*UdUf<S"1lXB#pd;p8(i$r]Y)8/(`Bd//iXR!<B;oBihTXNi3oY<&gPh30Mq<MC>\=9CgWD>b(edI7*AeBb4s66MSZ]k]o_&G$6W(N49rZG!AFP'=`$j?N2#tcF8318G$;t%JZi`>T4J&l`?(EKmKp1i>?T/87-(HK:5*oEG$@tcIJJ+?T&s/rXi1/@c]$qn6ak92Vog,a@7'7+%'rsXH0h_e<N%Z%E.ej=o"YMrsY<?5gHf'cXLWVN2r1A_&&]I(1YARuA&6r.[^JLG0l+>6f7"HNrQ(IQZ;F=eVehjc9cP_HI8=!^_BJOrMU4u.CH8qZK7e$tIn<<?c@)QC(Sn%deQR7\;Pa'a\E_TQXWAQ:dBGm34g<pCs%!HWr-e"*5+Cfu@W+qIHfR.g!,o*OW?s?tsHhm!&K4Z#Bk`oV]A-u!X9,2p)/*>YjiJ6r!A&X3Pf&MW_$XTbn&B"8&LD'dKfn&`)[I7CrdlhFf[kWr0$X6p2$H9QQB%\`5XM,jUKCJCNg$6.ej`9]q34:WhTI?l'VWIdVJFZ)*5mfJSF'-seR:<^=`t)9g89!t8L#f0MHD%T)Le>u$+2/[TPnKG>68s!:h7@-5g9g7>3?'Z1Z@m^bM\=0aWF<d\X-Z7X86$ecmFuXG3BrSc?PtU]T<i!N-.tSblT#JClOa]mn%)>3W;?bS8\B>&<5KqVaV.e)Jn%`>HS<(hRO+>LYBZ0FWbkCe;R%28-V".jgk!_-H:c@.m)rP$\OBfa`h\p>PV]!/4@:/KcTX.R%7SCBE"cMh;t1l@)=)?t1G1.&h<30G<'jA4gU@VR,33T9TLASWgVeK"Lb[aLK?ISqdmhS>X3>$qG<EIgNaVi*J&Vo%=6@!0L\SX'\W=@@a`o2]"cPq>G0YHYMP2^lE7&Q8,]Fn9K4Yhl2k)P::.=$goCJ,GE\<Sr;XX:Ois&m;3+lBV1U@N-Wg]gO";"<gj2K!3h&$Haj_Vc%3b)R-okS\%pC,=2MK4df<pP=H8G%0r93B`UVnga3B?`9(X#<t4P'q,Mn(@g1[^*aG(DCWQD?~>endstream
|
||||
Gb!TW>Bed\&:i[:/*:\_)dLR1pT9eSCsLIEB_R2s@12*</D$%VZbLrZ1)QoSDVL@,%@ggb2)id-)Mrus04OpY97U)RGlF!/EFCs3inHYU7rUMt^0.l`\re(bmDY*P\6p\Ure!8@8dIaF9\b:dlpQ":q;B<3NoMAh(WSrVM4eH7HYO.sUX4j,+7,?t@3"]op[$7L;71<I@@6sPIViGnbtIDBD&o(u^/5_26.SeR;E`o\8.YqY?GbY!LTb@[VoY9"k<a._U2$">'hhjkJsU,fQVnSsYmfKn(#u#lZ;Ni:nHFlDC0a!u^),Pf96=J=Le/]ii.k9@er'Dso:i#tet/O1(t=P@cs9io3O.ss:5"gNA&Kr0,85EQk_HCLgq[e\]6i=R,MR59\9H8Yf2)3#M*e\$-eLPF>2;?S+>G$C<-Kk/kE5g+fcFk"kmZ5"8C>5t27Ekj9"$rFSKOiZP$6/^$BAIS,M.Q02gV'nf%`#PV-iWF5C]_ta(0+%a6WZebo(M;2^Y[4"QarL&=Y[QHLkU02U"C7p>guuIU]q$npT+"8:l\F:&`1:A50'22A@ZB?S]i[S<^Q06Pqmj146^Q0%(K?Y;Q$j@"L*-941M]0P-SmnUp!&]#28M>m80._6Cf(C+pFj]?Xh=nH^j!n1%OIPp"3ub66iC""ltF$X*UdUf<S"1lXB#pd;p8(i$r]Y)8/(`Bd//iXR!<B;oBihTXNi3oY<&gPh30Mq<MC>\=9CgWD>b(edI7*AeBb4s66MSZ]k]o_&G$6W(N49rZG!AFP'=`$j?N2#tcF8318G$;t%JZi`>T4J&l`?(EKmKp1i>?T/87-(HK:5*oEG$@tcIJJ+?T&s/rXi1/@c]$qn6ak92Vog,a@7'7+%'rsXH0h_e<N%Z%E.ej=o"YMrsY<?5gHf'cXLWVN2r1A_&&]I(1YARuA&6r.[^JLG0l+>6f7"HNrQ(IQZ;F=eVehjc9cP_HI8=!^_BJOrMU4u.CH8qZK7e$tIn<<?c@)QC(Sn%deQR7\;Pa'a\E_TQXWAQ:dBGm34g<pCs%!HWr-e"*5+Cfu@W+qIHfR.g!,o*OW?s?tsHhm!&K4Z#Bk`oV]A-u!X9,2p)/*>YjiJ6r!A&X3Pf&MW_$XTbn&B"8&LD'dKfn&`)[I7CrdlhFf[kWr0$X6p2$H9QQB%\`5XM,jUKCJCNg$6.ej`9]q34:WhTI?l'VWIdVJFZ)*5mfJSF'-seR:<^=`t)9g89!t8L#f0MHD%T)Le>u$+2/[TPnKG>68s!:h7@-5g9g7>3?'Z1Z@m^bM\=0aWF<d\X-Z7X86$ecmFuXG3BrSc?PtU]T<i!N-.tSblT#JClOa]mn%)>3W;?bS8\B>&<5KqVaV.e)Jn%`>HS<(hRO+>LYBZ0FWbkCe;R%28-V".jgk!_-H:c@.m)rP$\OBfa`h\p>PV]!/4@:/KcTX.R%7SCBE"cMh;t1l@)=)?t1G1.&h<30G<'jA4gU@VR,33T9TLASWgVeK"Lb[aLK?ISqdmhS>X3>$qG<EIgNaVi*J&Vo%=6@!0L\SX'\W=@@a`o2]"cPq>G0YHYMP2^lE7&Q8,]Fn9K4Yhl2k)P::.=$goCJ,GE\<Sr;XX:Ois&m;3+lBV1U@N-Wg]gO";"<gj2K!3h&$Haj_Vc%3b)R-okS\%pC,=2MK4df<pP=H8G%0r93B`UVnga3B?`9(X#<t4P'q,Mn(@g1[^*aG(I[!FDu~>endstream
|
||||
endobj
|
||||
34 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 934
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 932
|
||||
>>
|
||||
stream
|
||||
GauHI9lldX&A@Zcp6]I366@>,UXM%u:GY_od,pK!`j/<kOTWO9s*^50PB]E+I'E,X=KV;1\%>g"TQma<2r4O>K]$/k?l[$00TUGi?Gi,VH#a1W>^8LETrA;WO?cbeaB)+@^*GJl!<Z%2dE2Pe1ST#bJ`AqjR"F,/o%[Y=Pb^ou5W&)/Q3[9jOdmZ'7slb<\,0BY\tTuPfs3u6bnl#+#AZd$;2%Lgo9BjF#0ss?r1:`+].ugf[PihHAT$LM#nNOVR*I&-U.C0i/E"tC9PV$UPEha_qubo'Kf+\T#u+6SH6*%>'Yjk0XXNSB$2YrN-!>o`6(hFUC)9J4QDpUI#XK1@@l35+^s$KN8Pd4CiBCrsHX#cS74@j$^rCN_jUn@8+'STf-['eT4tt5`'rj1rkSO$@`tkcHkm;Hd(^YB3WP`\?m2'IYM"W7%6h`-0I-F52RsQ"Tjfu.8lDCSaVY9FXeNA!K8tt)>(t;5g2?V5^0T7NhYNqW33[bDF9qL8!#6;%6#REWtn2Tr@J=ZQEi$,X5B!QX'h`%Pg]tXD?%]u'Z=O]lW=Pf[lDEk-e7J377VAYK6oN&>6/PXUgTV"A$V-\-]ZGc>0%#_Lu4,hh1fosA`2;`cbB@@aR?%.Fj$;XV%2`m5l'(aPAO=6M2Mat',4*P,n_Mr:Xf="HCP,\j\:FNmY4&5X[[9NEBZSKS;1T!6&a%>&GNbCqJ-^3Cq*N/hp3Ct#Y[d'kW-@XhJ:7CnhrV0001Ar6EEVf-qkL%>mMp?*+ZS,+P\\gI'o=`BjQ`5CaD,cfJcc3B-[,,<H`<iH43,Zfkd4S#j_7c8SSVco^%FZE*7X/&hOk=P@,k;UD1OeC=bK=sF[n5ArlArAV/koRt3s-Q_nHnC0EF\=4RDpO2magH9fB.RH*O5F_NTPr<3MV67ab'Zs\+KpMIgbq4T)~>endstream
|
||||
GauHI966RV&AI`dp6]I364]0rd:o&KVjXDrBQM9!A(d`qa8t;-s1Z\*,bC)8+)F%DUt,4l?-*L'?EF-c2ZOX;\5s(ULN!RD,9DNin0N1J*5X"'Se"5&.KU)*&Ch$VQ'6bPM%"XE5Z:+Yo"`_5BH:dE\5"KM+?-MeG8Ll;WR;h!c$ZMP_0SBmk=FtP?cq<oqGs5kj97r[l;2*a750[.Xf3@AG_@hZq%.H%m/,&r)18hB;oEHe;tsAT-=3&.^q#']CbdT"UaXIh0$V\;G.TJ3q$Fo&&=us."+3mXJmQrBr+f42o)WbuBpT:qO(aeh&MPp>]#CIg8<UGS("G\XWj!>8)0Z3q7LN"<&iL6o8b:SqV%-R[;GRhC\8J'(_Na-!&\j6\SULthQtEFOlA#G"$[h0C"`%Rn!Sp#"!k[XF@5uI(PI(Rh4\P.g]o!M2HBIUShT!?Vm&ZbhWN*"u]mEa::Yi^IkdE\[23XEPJ9)/.EJ=+/>r+qTKd!P>o@s.m5h6&=iJ.OW-U%pBF'fMaj>P1Tp.kG\7eNV0QiG1$olN]^*be?lq`WW77lTY1?8L"d"-Ju-8lk>U!Ne<Wf`P1<Q,]Li/>(7m=F7>@`!0j-(,OHfo+dciB5i(j%AkZ2;$GbA9YO0D9=%![A5Xs"ahmE"KoHI!We4R2#/)Oe.O70NooAAulds^*iNpeO*"SVqh^Jb)i[/W_41[PBooA>tk82H9\k',,=8alFo/:d?]T;j.J!uSsn$nDLJ+l'd5'C7S;'VZ\Grj7lf5[DND>q%=m0da*Z8?hbmeruA*qM!ZGfkm'%_4:I-0[Y(2flJb;')oLqIA(n0C(&"gWbOCI_sQm+*j5bjZ9m*,]7Gk>MC]q-8(LQJIe7FK]gp+a4=$BND"*CXi]>#c2T+P@e5j(bmTkZ7L9fm#6t<JlO06_+8_4p~>endstream
|
||||
endobj
|
||||
xref
|
||||
0 35
|
||||
@@ -288,22 +288,22 @@ xref
|
||||
0000003306 00000 n
|
||||
0000003598 00000 n
|
||||
0000003742 00000 n
|
||||
0000005704 00000 n
|
||||
0000007361 00000 n
|
||||
0000009090 00000 n
|
||||
0000011026 00000 n
|
||||
0000012758 00000 n
|
||||
0000013793 00000 n
|
||||
0000015500 00000 n
|
||||
0000016333 00000 n
|
||||
0000018206 00000 n
|
||||
0000020235 00000 n
|
||||
0000022183 00000 n
|
||||
0000023999 00000 n
|
||||
0000005694 00000 n
|
||||
0000007351 00000 n
|
||||
0000009080 00000 n
|
||||
0000011016 00000 n
|
||||
0000012748 00000 n
|
||||
0000013781 00000 n
|
||||
0000015488 00000 n
|
||||
0000016321 00000 n
|
||||
0000018194 00000 n
|
||||
0000020223 00000 n
|
||||
0000022171 00000 n
|
||||
0000023987 00000 n
|
||||
trailer
|
||||
<<
|
||||
/ID
|
||||
[<11be394e8ad147cab02e0a1e4416f65a><11be394e8ad147cab02e0a1e4416f65a>]
|
||||
[<fb3f05f6608a2d955517a71787b2930a><fb3f05f6608a2d955517a71787b2930a>]
|
||||
% ReportLab generated PDF document -- digest (opensource)
|
||||
|
||||
/Info 20 0 R
|
||||
@@ -311,5 +311,5 @@ trailer
|
||||
/Size 35
|
||||
>>
|
||||
startxref
|
||||
25024
|
||||
25010
|
||||
%%EOF
|
||||
@@ -1,19 +1,19 @@
|
||||
# Les 13 — Agents
|
||||
# Les 15 — Agents
|
||||
## Slide Overzicht (Klas A — 3 uur fysiek, demo-driven)
|
||||
|
||||
**Lesvorm:** Tim demonstreert klassikaal. Studenten kijken. Zelf bouwen = huiswerk.
|
||||
**Demo-app:** Nieuwe research-agent (from scratch, los van Polderfest)
|
||||
**Vervolg op:** Les 12 — Tool Calling
|
||||
**Aansluit op:** Les 14 — RAG + embeddings
|
||||
**Vervolg op:** Les 14 — RAG + Embeddings
|
||||
**Aansluit op:** Les 16 — MCP servers
|
||||
|
||||
---
|
||||
|
||||
## Slide 1: Title
|
||||
### Les 13 — Agents
|
||||
### Les 15 — Agents
|
||||
|
||||
**Visual:**
|
||||
- Background: CREAM
|
||||
- "Les 13" in BLUE
|
||||
- "Les 15" in BLUE
|
||||
- "Agents" in BLACK
|
||||
- Subtitle: "Een LLM in een loop met tools — autonoom tot het klaar is"
|
||||
|
||||
@@ -76,7 +76,7 @@
|
||||
|
||||
**Het verschil met Les 12:**
|
||||
- Les 12: tot 5 stappen, korte taken
|
||||
- Les 13: 20-50+ stappen, langere autonome workflows
|
||||
- Les 15: 20-50+ stappen, langere autonome workflows
|
||||
|
||||
**Visual:** Loop-diagram — LLM → kies tool → execute → resultaat → LLM → ... → klaar
|
||||
|
||||
@@ -343,7 +343,7 @@ const costLimit: StopCondition<typeof tools> = ({ steps }) => {
|
||||
|----------|--------|
|
||||
| Vraag → 1 tool → antwoord | Plain tool-call |
|
||||
| Vraag → 2-5 tools → antwoord | `stopWhen: stepCountIs(5)` (Les 12) |
|
||||
| Onderzoek → 10-50 tools → rapport | **Agent** (Les 13) |
|
||||
| Onderzoek → 10-50 tools → rapport | **Agent** (Les 15) |
|
||||
| Productie pipeline met validatie | **Workflow** (explicit code) |
|
||||
| Wettelijk: must be reproducible | **Workflow** — geen agent |
|
||||
|
||||
@@ -393,7 +393,7 @@ const costLimit: StopCondition<typeof tools> = ({ steps }) => {
|
||||
- Done-tool pattern voor forced tool calling
|
||||
- Wanneer wel/niet een agent
|
||||
|
||||
**Volgende les (Les 14): RAG + embeddings**
|
||||
**Volgende les (Les 16): MCP — Model Context Protocol**
|
||||
- Semantic search op grote datasets
|
||||
- pgvector in Supabase
|
||||
- Embedding models — wat zijn vectors
|
||||
BIN
Les15-Agents/Les15-Slides.key
Executable file
BIN
Les15-Agents/Les15-Slides.key
Executable file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user