From 3cfb74df517d497ef9e0902863da8b19fff8eaa9 Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Sat, 9 Aug 2008 01:32:10 +0000 Subject: written more --- LaTeX/chapters/implementierung.tex | 19 +- LaTeX/diplomarbeit.pdf | 3813 +++++++++++++++++------------------- ROADMAP | 3 +- 3 files changed, 1856 insertions(+), 1979 deletions(-) diff --git a/LaTeX/chapters/implementierung.tex b/LaTeX/chapters/implementierung.tex index 25dd82e..1350f45 100644 --- a/LaTeX/chapters/implementierung.tex +++ b/LaTeX/chapters/implementierung.tex @@ -65,7 +65,7 @@ Auf Abbilung \ref{fig:PackagePrefs} ist der Aufbau des Pakets \textit{prefs} zu Jede Variable besteht aus einen Datentypen, einen Variablenamen und einer optionalen Beschreibung sowie einen Wert. Einige Datentypen unterst\"{u}tzen auch die Angabe von Minimum- und Maximumwerten (zum Beispiel besteht eine Prozentangabe aus einen Integerwert zwischen \textit{0} und \textit{100}), was mithilfe der \textit{VSPrefsRestriction}-Klasse implementiert wird. Da man beispielsweise bei Prozent ein \textit{\%} und bei Millisekunden ein \textit{ms} hinter der Variable sehen m\"{o}chte, kann f\"{u}r jede Variable auch ein optionaler Einheiten-String abgespeichert werden. -Eine Variablenbeschreibung wird f\"{u}r die Darstellung im GUI verwendet, w\"{a}hrend der Variablenname eher f\"{u}r die interne Verwendung vom Simulator verwendet wird. Zum Beispiel hat die Variable \textit{message.prob.outage} (Verlustwahrscheinlichkeit einer Nachricht) die Variablenbeschreibung ``Nachrichtenverlustw'keit''. Wenn f\"{u}r eine Variable keine Beschreibung existiert so wird, wie auf Abbildung \ref{fig:SimulationseinstellungenExperten} anhand der Farbvariablen schon gesehen wurde, f\"{u}r die Anzeige f\"{u}r eine Variable der Datentyp und der Variablenname verwendet. Variablennamen verwenden die auf Tabelle \ref{tb:VariablenPrefixe} angegebenen Prefixe. Alle verf\"{u}gbaren Typen wurden bereits in Tabelle \ref{tb:VariablenDatentypen} aufgelistet. \textit{VSPrefs} stellt f\"{u}r alle Variablen entsprechende Zugriffsmethoden zur Verf\"{u}gung. +Eine Variablenbeschreibung wird f\"{u}r die Darstellung im GUI verwendet, w\"{a}hrend der Variablenname eher f\"{u}r die interne Verwendung vom Simulator verwendet wird. Zum Beispiel hat die Variable \textit{message.prob.outage} (Verlustwahrscheinlichkeit einer Nachricht) die Variablenbeschreibung ``Nachrichtenverlustw'keit''. Wenn f\"{u}r eine Variable keine Beschreibung existiert so wird, wie auf Abbildung \ref{fig:SimulationseinstellungenExperten} anhand der Farbvariablen schon gesehen wurde, f\"{u}r die Anzeige f\"{u}r eine Variable der Datentyp und der Variablenname verwendet. Variablennamen verwenden die auf Tabelle \ref{tb:VariablenPrefixe} angegebenen Prefixe. Alle verf\"{u}gbaren Typen wurden bereits in Tabelle \ref{tb:VariablenDatentypen} aufgelistet. \textit{VSPrefs} stellt f\"{u}r alle Variablentypen entsprechende Zugriffsmethoden zur Verf\"{u}gung. Im Folgenden werden nicht alle exisierenden Methoden aufgelistet, da diese auch in der Quelltext-Dokumentation (Javadoc) eingesehen werden k\"{o}nnen. Die Methoden werden nun nur anhand des Integer-Datentyps verdeutlicht. F\"{u}r alle anderen Typen gilt fast alles analog. F\"{u}r Integer stehen in \textit{VSPrefs} folgende Methoden zur Verf\"{u}gung: @@ -104,7 +104,7 @@ Im Folgenden werden nicht alle exisierenden Methoden aufgelistet, da diese auch \label{tb:VariablenPrefixe} \end{table} -Hierbei stellt \textit{key} den Variablennamen- und \textit{val} den Variablenwert dar. \textit{descr} ist eine optionale Variablenbeschreibung. Es k\"{o}nnen sowohl Java's Integer-Objekte, als auch Java's primitiver Integer-Typ \textit{int} verwendet werden. Ein \textit{int}-Wert wird intern allerdings als Integer-Objekt abgespeichert und macht somit keinen groen Unterschied. Die Methode \textit{getIntegerKeySet} gibt alle vorhandenen Integer-Variablennamen (\textit{key}s) als \textit{Set} zur\"{u}ck. +Hierbei stellt \textit{key} den Variablennamen- und \textit{val} den Variablenwert dar. \textit{descr} ist eine optionale Variablenbeschreibung. Es k\"{o}nnen sowohl Java's Integer-Objekte, als auch Java's primitiver Integer-Typ \textit{int} verwendet werden. Ein \textit{int}-Wert wird intern allerdings als Integer-Objekt abgespeichert (f\"{u}r eine sp\"{a}tere Serialisierung, mehr dazu aber sp\"{a}ter) und macht somit keinen groen Unterschied. Die Methode \textit{getIntegerKeySet} gibt alle vorhandenen Integer-Variablennamen (\textit{key}s) als \textit{Set} zur\"{u}ck. \textit{VSPrefs} bietet auch eine Reihe von \textit{initInteger}-Methoden an, welche sich von den \textit{setInteger}-Methoden dadurch unterscheiden, dass sie eine Variable nur einen Wert zuweisen, wenn sie vorher noch nicht initialisiert wurde, was durch \textit{setInteger} oder \textit{initInteger} selbst geschehen sein kann. Eine komplette \"{U}bersicht aller Methoden (auch f\"{u}r andere Datentypen) gibt es in der Quelltext-Dokumentation. @@ -131,7 +131,6 @@ Die Klasse \textit{VSSimulatorEditor} dient f\"{u}r das Editieren der globalen S F\"{u}r Protokolle gibt es keine separate Editor-Klasse, da sie bereits vom Prozesseditor aus editiert werden k\"{o}nnen. Dabei iteriert der Prozesseditor \"{u}ber alle f\"{u}r den jeweiligen Prozess verf\"{u}gbaren Protokollobjekte und f\"{u}gt deren Variablen zus\"{a}tzlich in den Prozesseditor ein. Somit erscheinen die Prozess- und die dazugeh\"{o}rigen Protokollvariablen im selben Editor, womit dem Benutzer eine bessere \"{U}bersicht geboten wird. -\newpage \section{Ereignisse} \subsection{Funktionsweise von Ereignissen} @@ -144,9 +143,9 @@ F\"{u}r jedes Ereignis existiert eine dazugeh\"{o}rige Klasse, welche die auszuf \label{fig:PackageEvents} \end{figure} -Jedes programmierbare Ereignis mu, bevor es vom Simulator verwendet werden kann, in der statischen Klasse \textit{VSRegisteredEvents} registriert werden. Da sich die Anzahl der verf\"{u}gbaren Ereignisse bei Laufzeit des Simulators nicht \"{a}ndert, gibt es keine Instanzen von \textit{VSRegisteredEvents}. Alle Methoden und Klassenattribute sind hier statisch. Wenn beispielsweise eigene Ereignisse implementiert werden, dann m\"{u}ssen alle neuen Ereignisse per Hand in die Datei \textit{VSRegisteredEvents.java} \"{u}bernommen- und der Simulator erneut kompiliert werden. +Jedes programmierbare Ereignis mu, bevor es vom Simulator verwendet werden kann, in der statischen Klasse \textit{VSRegisteredEvents} registriert werden. Da sich die Anzahl der verf\"{u}gbaren Ereignisklassen des Simulators bei Laufzeit nicht \"{a}ndert, gibt es keine Instanzen von \textit{VSRegisteredEvents}. Alle Methoden und Klassenattribute sind hier statisch. Wenn beispielsweise eigene Ereignisse implementiert werden, dann m\"{u}ssen alle neuen Ereignisse per Hand in die Datei \textit{VSRegisteredEvents.java} \"{u}bernommen- und der Simulator erneut kompiliert werden. -In der Implementierung wird zwischen drei Haupttypen von Ereignissen unterschieden, die jeweils in verschiedenen Paketen liegen (siehe auch die leicht vereinfachte Abbildung \ref{fig:PackageEvents}): +In der Implementierung wird zwischen drei Haupttypen von Ereignissen unterschieden, die jeweils in verschiedenen Paketen liegen (Abbildung \ref{fig:PackageEvents}): \begin{enumerate} \item \textit{events.implementations}: In diesem Paket befinden sich alle Ereignisse, die ohne weitere Spezialbehanldung im Simulator eingesetzt werden k\"{o}nnen und vom Benutzer direkt im Ereigniseditor programmierbar sind. @@ -191,7 +190,7 @@ Jede Ereiginsklasse hat zudem Zugriff auf folgende Attribute, die von \textit{VS \subsection{Beispielimplementierung eines Ereignisses} -Im Folgenden wird als Beispiel die Implementierung des Prozessabsturzereignisses \textit{VSProcessCrashEvent} behandelt. Da die dazugeh\"{o}rige Klasse keine Attribute besitzt, verleibt hier auch die \textit{initCopy}-Methode mit leerem Rumpf. Jede Ereignisklasse muss in \textit{onInit()} mit \textit{setClassname} den eigenen Klassennamen mitteilen. In \textit{onStart()} wird das eigentliche Ereignis ausgef\"{u}hrt. Hier wird obligatorisch \"{u}berpr\"{u}ft, ob der Prozess bereits abgest\"{u}rzt (hier eigentlich nicht Notwendig, verbessert aber die Lesbarkeit der Logik) ist und gegebenenfalls wird der Prozess dann zum Absturz bewegt. Der Task-Manager \"{u}berpr\"{u}ft bereits, ob der Prozess abgest\"{u}rzt ist oder nicht, d.h. ein Ereignis wird bei einem abgest\"{u}rztem Prozess gar nicht erst ausgef\"{u}hrt. Die einzige Ausnahme bildet ein Wiederbelebungsereignis (\text{VSProcessRecover}), welches vom Task-Manager ausgef\"{u}hrt wird, auch wenn der Prozess abgest\"{u}rzt ist. Mit \textit{logg} wird eine Nachricht in das Loggfenster geschrieben, welche ueber das \textit{VSPrefs}-Objekt \textit{prefs} bezogen wird: +Im Folgenden wird als Beispiel die Implementierung des Prozessabsturzereignisses \textit{VSProcessCrashEvent} behandelt. Da die dazugeh\"{o}rige Klasse keine Attribute besitzt, verbleibt hier auch die \textit{initCopy}-Methode mit leerem Rumpf. Jede Ereignisklasse muss in \textit{onInit()} mit \textit{setClassname} den eigenen Klassennamen mitteilen TODO. In \textit{onStart()} wird das eigentliche Ereignis ausgef\"{u}hrt. Hier wird obligatorisch \"{u}berpr\"{u}ft, ob der Prozess bereits abgest\"{u}rzt (hier eigentlich nicht Notwendig, verbessert aber die Lesbarkeit der Logik) ist und gegebenenfalls wird der Prozess dann zum Absturz bewegt. Der Task-Manager \"{u}berpr\"{u}ft bereits, ob der Prozess abgest\"{u}rzt ist oder nicht, d.h. ein Ereignis wird bei einem abgest\"{u}rztem Prozess gar nicht erst ausgef\"{u}hrt. Die einzige Ausnahme bildet ein Wiederbelebungsereignis (\text{VSProcessRecover}), welches vom Task-Manager ausgef\"{u}hrt wird, auch wenn der Prozess abgest\"{u}rzt ist. Mit \textit{logg} wird eine Nachricht in das Loggfenster geschrieben, welche ueber das \textit{VSPrefs}-Objekt \textit{prefs} bezogen wird: \begin{code} package events.implementations; @@ -215,7 +214,6 @@ extends VSAbstractEvent implements VSCopyableEvent { } \end{code} -\newpage \section{Zeitformate, Prozesse, Nachrichten sowie Task-Manager} \subsection{Funktionsweise} @@ -272,7 +270,6 @@ void createCrashAndRecoverExample(VSTaskManager taskManager, In diesem Beispiel wurden zwei Ereignisse (Absturz- und Wiederbelebung eines gegebenen Prozesses) angelegt. Das Absturzereignis tritt bei der aktuellen lokalen Prozesszeit plus \textit{500ms} ein, w\"{a}hrend das Wiederbelebungsereignis bei einer globalen Zeit von \textit{2000ms} stattfindet. F\"{u}r den Fall, dass das Wiederbelebungsereignis vor dem Absturzereignis eintritt wird es nicht ausgef\"{u}hrt, da der Prozess noch nicht abgest\"{u}rzt ist. -\newpage \section{Protokolle} \subsection{Funktionsweise des Protokoll-APIs} @@ -503,7 +500,7 @@ Der Server benutzt in diesem Beispiel keinen Wecker. Dementsprechend hat die Met } \end{code} -\subsection{Erstellung eigener Protokolle} +\subsection{Erstellung eigener Protokolle (Schnelldurchlauf)} Hier werden alle Schritte zusammegefasst, die f\"{u}r die Erstellung eines eigenen Protokolls \textit{VSMyProtocol} durchgef\"{u}rt werden m\"{u}ssen. @@ -522,7 +519,6 @@ registerEvent("protocols.implementations.VSMyProtocol", \item Mit dem Befehl \textit{ant dist} das Archiv \textit{dist/lib/VS-Sim-Latest.jar} erstellen und verwenden. \end{enumerate} -\newpage \section{GUI sowie Simulationsvisualisierung} Das Paket \textit{simulator} (vereinfacht auf Abbildung \ref{fig:PackageProtocols} dargestellt) implementiert die eigentliche graphische Benutzeroberf\"{a}che des Simulators. Ausnahmen sind die Editorklassen in \textit{prefs.editors} sowie \textit{utils.VSFrame}. @@ -544,14 +540,12 @@ Die klasse \textit{VSCreateTask} wird vom Ereigniseditor verwendet. Der Ereignis \textit{VSLogging} kapselt ein \textit{javax.swing.JTextArea}-Objekt, wo alle Nachrichten geloggt werden. Hier werden alle Loggfunktionen (inklusive Loggfilter sowie tempor\"{a}re Deaktivierung des Loggen) implementiert. Die \textit{JTextArea} wird dem \textit{VSSimulator}-Objekt \"{u}bergeben und dort dargestellt. -\newpage \section{Serialisierung von Simulationen} Der Anwender kann eine erstellte Simulation im Datei-Men\"{u} speichern und/oder eine bereits abgespeicherte Simulation laden. \subsubsection{R\"{u}ckw\"{a}rtskompatibel} -\newpage \section{Helferklassen und Klassen f\"{u}r Ausnahmebehandlungen} Es wurden noch nicht die Klassen der Pakete \textit{utils} (Abbildung \ref{fig:PackageUtils}) sowie \textit{exceptions} (Abbildung \ref{fig:PackageExceptions}) vorgestellt. \textit{utils} fasst lediglich einige Helferklassen zusammen, die vom restlichen Quelltext verwendet werden. @@ -583,7 +577,6 @@ Es wurden noch nicht die Klassen der Pakete \textit{utils} (Abbildung \ref{fig:P Im Paket \textit{exceptions} befinden sich lediglich einige eigene Objekte f\"{u}r Ausnahmebehandlungen. \textit{VSNotCopyableException} wird von einem nicht-kopierbaren Ereignis geworfen, wenn versucht wird es zu kopieren. \textit{VSNegatieNumberException} wird geworfen, wenn intern negative Zahlen dort auftreten, wo sie es nicht sollten. Wenn ein Editorobjekt die Benutzereingabe einer Integer-Vektor-Variable nicht parsen kann, so greifen es auf \textit{VSParseIntegerVectorException} zur\"{u}ck. -\newpage \section{Entwicklungsumgebung} In diesem Teilkapitel soll ein kleiner Einblick in die Umgebung, in der der Simulator entwickelt wurde, gew\"{a}hrt werden. F\"{u}r diese Diplomarbeit wurde ausschlielich Open Source Software verwendet. Die einzige Ausnahme stellt Microsoft Windows XP dar, worauf der Simulator zus\"{a}tzlich getestet wurde. Der Simulator wurde jedoch haupts\"{a}chlich unter dem Betriebssystem FreeBSD 7.0, was ein open source Unix-Derivat ist, programmiert. diff --git a/LaTeX/diplomarbeit.pdf b/LaTeX/diplomarbeit.pdf index 89967aa..e8c2ee2 100644 --- a/LaTeX/diplomarbeit.pdf +++ b/LaTeX/diplomarbeit.pdf @@ -243,7 +243,7 @@ endobj << /S /GoTo /D (subsection.3.5.3) >> endobj 168 0 obj -(\376\377\0003\000.\0005\000.\0003\000\040\000E\000r\000s\000t\000e\000l\000l\000u\000n\000g\000\040\000e\000i\000g\000e\000n\000e\000r\000\040\000P\000r\000o\000t\000o\000k\000o\000l\000l\000e) +(\376\377\0003\000.\0005\000.\0003\000\040\000E\000r\000s\000t\000e\000l\000l\000u\000n\000g\000\040\000e\000i\000g\000e\000n\000e\000r\000\040\000P\000r\000o\000t\000o\000k\000o\000l\000l\000e\000\040\000\050\000S\000c\000h\000n\000e\000l\000l\000d\000u\000r\000c\000h\000l\000a\000u\000f\000\051) endobj 169 0 obj << /S /GoTo /D (section.3.6) >> @@ -748,15 +748,15 @@ endobj /ProcSet [ /PDF /Text ] >> endobj 255 0 obj << -/Length 1937 +/Length 1958 /Filter /FlateDecode >> stream -xKs6!V)]ɘbz7.j{7grVlSS^Un/;?(f6Tw* -76󇿎SZ5d*f:rdPJ;+i3X]ڗPjE< }{U"$I!sVaLR{CDǜ-${ 8%A Bl5IuIlj|u5l;3d*YChzq 8>z֞𿇿=_T)4h-_jb :0E %vb+X/Cuߔ6F8:Fԩ1F 7#|2N6ml&Ly3()" uPv:]'ֵԚ~_`BţvFlUz0Ð6ml-&401$W'ley029$,t+W-BH00':'0Ec;ILQs<9^PA)k@Ey M.fSsųx!PzAg/<`ylfO3y=9a[MC_T['׏ַŕwl^a5wq"<(KgK-6&D7U9}sٓ ͐\}'I- BYlݕW-Ѯ&DYXܫ9 1zi' şw0p¬xJ;T~[w:ڡ.B#QD(]:3Nn(k K9C&Mf%B̫k'KS`t.endstream +xYoF)(v1A64KflUH~Β\r%g(@&0`_;~YQ +#N `>-'봫 ^'WZ,^\s¬âW7-wzբd𣺾=(N՚?))b {$NQ?O1ar٧.|,WZWU\qc϶mmYroceF%(b[AqI1ȜSfV 1)!c+A&b dp1h#;M'iS|_?A#C#OW+P1' 3mӴĹpwE}|S]m}sgi{[Ne +VDDSvƎ96rS;o'd1NwC7W dŮڽ-{!ZrI +UƝ!?Ve2f~?>ZS* 9WCJf IMHƄם*JΑ/VΥSXS> >> endobj @@ -1152,14 +1152,15 @@ endobj /ProcSet [ /PDF /Text ] >> endobj 343 0 obj << -/Length 1201 +/Length 1202 /Filter /FlateDecode >> stream xKoF<㘢z)re%!EO!Kܡ8ׇ}kp}Ӵ*DKK2I 1N8u2+9a^BD@'0a{d2 '059 q_>yޗ.֟J - k!rX}yk-p̟#.T)wtwINQ9&f6f!x!$777c"{wUXK WK`5?s8c|LlLlT[ ΃E5%O)o网[}l۱E8¸5/X_.7%8?4\Մ '%y}%.".g:xp#O߰r~nەy},]o ]ǃ}:OiwJ VÍ*:zRLRT[K)SEq(XJN -_{#Oq.SN68MMd/W-cXz_O5E7o{#ަ5-Fvj"1UoFFOxyk-p̟#.T)wtwINQ9&f6f!x!$777c"{wUXK WK`5?s8c|LlLlT[ v~7GΚ÷ȃCkAgm&Rs{b~ďFOd<ߎ{} 3r2r%IFBJ w] +vԒ( Q`S3ͤEj$"_h#Hendstream endobj 342 0 obj << /Type /Page @@ -6263,7 +6264,7 @@ endobj /ProcSet [ /PDF /Text ] >> endobj 768 0 obj << -/Length 2484 +/Length 2486 /Filter /FlateDecode >> stream @@ -6275,7 +6276,8 @@ Wf `]* pfAKD|kE]~vJQSzTބM@ `5fz+Pҍ"R)$} Z|YC_3zt"c$|XFJ #w7(ҿG,:ĄJ)E$35.~d*; JJgp[\vߡc0YHVw2[=Kn{ #>x__AN>H'h#X6/8 &[yt_`*]%uS%ǮK@if;R~g(THadۻY t|ARb'=NHҐvOєX,@$,doȻ/)Bۼu#}G.r@W~5 ]{^$)'pcdjyR``6UIjB.+IXͮ1 \%B9Y}3qg3tZv~.%P"TkWOe06CF6n!aOR 65~*k'R\_Ÿp)PzŲZHhACmP{rnpW{Bt7W#$D])SJDYuz|†|G?~C „ۉmxxE.x9:)ڭ^ =1 Q1>y[Ҏ>w5/h}m3 ?@$C]!۸Dd՞!CmP X"s¸-uҪ8[$?ڗ:aTnBCn ~Z_1 iNܼ8<~. E𾧉R6(-}>:"@Ng<p{ѩCZ]l. Df6sPc.dUv'IB?l 4z>-`е]H=x!RR%$* [ n8"h=2DBbXGq@lendstream endobj 767 0 obj << /Type /Page @@ -6376,26 +6378,23 @@ endobj /ProcSet [ /PDF /Text ] >> endobj 780 0 obj << -/Length 2944 -/Filter /FlateDecode ->> -stream -x[Y~_UxN$U%%*r@r -Xuz\+J** 3Ӄ%+ UǩX) BV+:³v+u[_뛫/_Dd4vE@4Ulilg47}x,,\֛-Sy|M_P(O3qū-%(ؗvRxňPg:+{)]=\q!L1uwhJ93/b^v 롎x -oA =IhX$2f~:l!x]r}-`Lߏ%"EI" %i>rdlx7r)eW62m(F(rf(J8gc1`Ȃi;!֓' -!uCn1Ҙ' B_ٹyY Lb#TjP׺@:cR{0p TE&3T5N+f3&y 8noj4v_8,7ړb^g^Tݞ -шE Ն;WƆ -,xLa$h= P5a!Azߚ[;wY远=g.xZʣe_1}kaA٪94QDԋ9Op(0/>d;+SZZ*C4_Q汣4°Z:LL9MwTrVe}Tݤtͭ^g6 eJT2&;(ñ]WgR׹g%sIL'8CAF8֡AL7`H -OD - P.l -2p n_#kS?C6?2X>W^5榭Hg4,yn7yj 8hV/ fX9mã}̋ֈl^XUtS r 40 J2˃Q@Bi'wE >V[:'X蠀XƗIĊ@*#S3!F4aN\밨`VUnGl-/*`4Jۘ -sq6L`I0tb`k\GgC@6)0TNl 3^l_FdBE ͠Tf'Չ-;:uvo b-IPrb((Πk  S/lj-3:D6/еl1z^7D!NЅi֗ -Չ-uuaEsO,VGbaKtbk,9BYXxB!l"=#3z*{yizI7ϞgA^4 s/bƉ-Rs3:Cy|#)bXXCR!"{!={c3Z6Ïq{ B Y+;&%GQDubKDvDi&j#0QO_kͅG.DpAB,X8 ݀.F& -H5i\;>Ph':Z F6|<zİ6*[*4˭RMt1GLDOfRM8yj۽nCE6@RB{PTLڣ$գ239v0okD08xWYsLx߹5-xZFdr1%k>j;VĶzN=ʼ4ԌS4q0?e(p|\"=ADp9.!pɀ7F1O-je9Rĝ9H,f- -}N٩Qc6:/43Pʛ3qsaObphupB:Nm0 q Ů~T;S-ܒ~z*ϻ4ERzѶK-.Gg|ݔRFPD194OY/`21'zo۸a4yD-g)"$J)D:w*Ϳrendstream +/Length 2877 +/Filter /FlateDecode +>> +stream +x[m۸j1wQ@ݦ.B^e%_^~}o%K(Ē8 gfHdY$qE2 d}‹=%Nvס7W)BTJ]P&Ut~Z&/Wk%Cxo!"?D,O~ͫ7~A1RRҧ˹D\dIPK#*g؁Ы+=`DҔ.8SLꇰ+RNtgE ~gԒ6a- A$RD(DHYI̎EY,j110D)% 4ec9XȅvAKva_&~#p"АM֜[ʭvf`) ;'"WhDP{؛ƹ +,xBTU|jl@ I.>#.1dMX|K>4&/l"_ngC?uWm Ovv gD@d4 +^i8a^|:϶wNf{9u7Vb htHGsBFG1:,dg|J-3M4(\\ A ?l}{"d@p$!#y{kD>u0ͱ]}F8&,/*5 d'e8Ѷ y<7y.;5YJ&zQΐ`'5bjH]R |-/&RR63M7|ȯv)x^C~txYi6ee뵢6KտݡN,`<]2SF{흽*k;ZxUVtdr-6RU-2*%=3@"RV1$ _#K?\9ڛ VfjesXVڶ.?5 esh5;4m@~|luϺ^eYPE< hшQxm ҞH[n xۃk1K44 &THxu1 ,4kBZI3$Zk +W8>o> KH t41!HJ )a Ћba8:aKaκpcs3NJEnjm>:pO%.]r1_ ϋ7:_K۝S`H?svB1h,*{1oQnn(>4" +byYbZ;Z'@ +Et:8Nj d$:5E.TsATC))@8R(+EL8\=,VTŗL ֓:|Nj _<0P9f C֋Ba;:n>PTPL=жG١RLU qf &PK۞+8Qް\*1fij /?e~k/ե!XcT¾MTٜBK1-IC*S(E^uѧRQ 6(0amK.E""?nBfe3RTRW +8C$J:YWe +Fʘ#&9Ts,v՚ +2/ғZSznpV]HQSza\췶gg r,EO% Z9Qm6Y᮴"jk+˰+[YDlizG7@ٗ_ jƩDKGKikEWFK"%)X^eHDPq+0iGHv)&⸳WЃ/+@bq[[7~̋])n2AνQ6?wG{>ܱDe3u +a#įi{~V S8 +}>h|9pM>VdW`H|M;GL(bb,Z*"*LbHG9Hl4a6sdYUjw@A颤Bm$N騽~8at:@AvmTo'] +L ~̋;wi QBm(KR:> endobj 785 0 obj << -/Length 2103 +/Length 2023 /Filter /FlateDecode >> stream -xڝXo8_GYK-⺗`asrl$+nᐲd |pf~3$_b*"% 8_{ۛjiI\8nz_45ruth6>aE̲$Mف m9KT8eҚ5xQd#rMK@u{cLI*C7\qR l^8LCt$s"(BBYt޳k6^g4`9W^{ռ]KP>-yg`$gɣկK0gjr J K)E8e^Դ؄Lk9gHXfc=PyQ -WYT {ڂ N c5˲8lK KAԭmYO\XXCc93Sl}#~I0 ϶5PДޑ{ w\ e"?,ك+awM*h͹4X1ZAdtiI4gtSЯKsii$&347yڶvvz:L-YIw) ^5M`]a?L jM [ö5EǦBءLψdN4cZ R6T]7w*!F1š/d]ؠOȔAENBS-*$#4ἃ3(G3]]dl>#lE("g`4(*kK/$-*ݶa,bÈf7.~bѶԇ9>S2X0TMrl1z﫩 2-#Q#Wp  F5Q8Դno; VM6lt:c b#)/tn}2y}+SZ4 Eb55бC w>b_XpKwT+JhcfŏmR)H  -aCLXHX1 rI<ڊ羒rq:(D2*t (*j $ #]ϡxCi` &\^g98uf oVȻF6G +A{3,he<ښ8V_MihԘ%wh/ݦX{w5ڮǐj Q*y }>f_ TPp&2G3`h-'Ջ);bP8e*5x0K1kRSTc}3L!"tt=izf* np%R3 -Jݱoq̩th]wSTӮg$Dhz &g-I*5TG\NjEMɕ'BTK{'|WֻѺ7(%~ٺp2.ZCQmg8XC \}:j}fbr!thfc{E }#s`%O_zujC~8ztzP#9oFW>.gA|p2rO -a<vf<H wqI w:|~5I")F P2J:Vqvj)7?U ဂp3= -svrb#ЯD >ttt5rmҵ$NOMdI ܱs][qs‡,e\J+$OBJhSe -O's cppP@sz -y/8zEHK}r!O*]O!;Zi>< YYx!iCɅ2Y˧[p7>:{ói@Bǐp2#GaEYƛfG3%T To9"SR8roL"kq+&\'e$:Qe^u3dGڿ!3)`G3' h@+1cdϒ_;)[C&ߝ(fY楙奂VpW4ԯ9Yg3 ?2/,y4&[3Wϔcp0u^KS%(ce]Q> +*gm{Šq#clPSfLŐs9HFIlUcoIf.)>k<7էH3 L'a[ I;P^)ڮ/U$پ +(5@\.ƹ<\EQ3;R㌂n*\Z^<7e"/%>Oݦui˴]HjnU#]V!P{}}3M^UM9Qg>&PJfAŌ:A=9DD*\ 1tSl=AW!HDh}gYz<)>o  ¤"f۝WE . ݫ; QAQ1վtp_Y8T2Ž{PrYRĆ7w']{A}d:dp`+^vG0#H@ňEs!iSbWe ,KΛk7`ZPYip&U;^㔵ih őCq?eSPx(*98Sb VLDqARrJ@tP,gJT9A3P4Zy5}o|w(9\;I"t,{ڙ$@O0 36|\zvz SB2ew=Ł*=&匛^BjŦ^QM4,vǾ;҉ |:!xR?YY a83y"t&/,3H6ecSTendstream endobj 784 0 obj << /Type /Page @@ -6434,7 +6433,6 @@ endobj /Resources 783 0 R /MediaBox [0 0 595.2757 841.8898] /Parent 753 0 R -/Annots [ 787 0 R ] >> endobj 782 0 obj << /Type /XObject @@ -6442,67 +6440,60 @@ endobj /FormType 1 /PTEX.FileName (/usr/home/buetow/svn/vs/trunk/LaTeX/images/prefs-editors.pdf) /PTEX.PageNumber 1 -/PTEX.InfoDict 788 0 R +/PTEX.InfoDict 787 0 R /Matrix [1.00000000 0.00000000 0.00000000 1.00000000 0.00000000 0.00000000] /BBox [0.00000000 0.00000000 392.00000000 248.00000000] /Resources << /ProcSet [ /PDF /Text ] /ExtGState << -/R7 789 0 R ->>/Font << /R8 790 0 R /R9 791 0 R >> +/R7 788 0 R +>>/Font << /R8 789 0 R /R9 790 0 R >> >> -/Length 792 0 R +/Length 791 0 R /Filter /FlateDecode >> stream xMS0:=P}ؖt, O/L!8@';˒LxBx^d捲+Nuד>OS|ϤbQ)a%cGg/o'6~ra8eN({֒={Uzcܶ.+Ӵsy鄺!xP[ vzR r* 7!CS86lnNa .,\*^:u1a Ƅh9z)Cbʓ&t:kvx"/T( Tc~~B'"*Xڑj!D4=ivx8YӹN8Xa*u3en/rsǘ..g(yq ثHRc^/eta!sqg˕lY{I㽕v</+2~!D2$kFX IIyBgZ>0?. 2|e}ܹ#"Qendstream endobj -788 0 obj +787 0 obj << /Producer (GPL Ghostscript 8.61) /CreationDate (D:20080809025806Z00'00') /ModDate (D:20080809025806Z00'00') >> endobj -789 0 obj +788 0 obj << /Type /ExtGState /OPM 1 >> endobj -790 0 obj +789 0 obj << /BaseFont /Helvetica /Type /Font /Subtype /Type1 >> endobj -791 0 obj +790 0 obj << /BaseFont /Helvetica-Oblique /Type /Font /Subtype /Type1 >> endobj -792 0 obj +791 0 obj 672 endobj -787 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [212.6999 153.5425 227.1554 164.1248] -/Subtype /Link -/A << /S /GoTo /D (figure.3.2) >> ->> endobj 786 0 obj << /D [784 0 R /XYZ 74.4095 793.4011 null] >> endobj 126 0 obj << -/D [784 0 R /XYZ 74.4095 486.1569 null] +/D [784 0 R /XYZ 74.4095 425.3757 null] >> endobj 361 0 obj << -/D [784 0 R /XYZ 282.3592 222.4224 null] +/D [784 0 R /XYZ 282.3592 155.0474 null] >> endobj 783 0 obj << /Font << /F61 259 0 R /F28 209 0 R /F26 206 0 R >> @@ -6510,78 +6501,91 @@ endobj /ProcSet [ /PDF /Text ] >> endobj 795 0 obj << -/Length 1633 +/Length 2637 /Filter /FlateDecode >> stream -xڝX_o6$DRǦI6,YA,QmQ#/w4_WyƲԨUn$oU kOdQ89}櫂JHD!? dq4tOvp}[~zsu;W"enj_[+k(<XoytQGkmOܫv]U3zWV<{NWʙJݨͻi@hnRi]vJ l^P3ه~Aј, rW_c -1D*א=EJNiL2ɠ*g;n,xwv akEZ <_ B@yAui {eHqoOW!a  3WF>YH_%DhɌ*̔f׽v]1)3)σam<<AOQ9go0i%T˷18/X#sv~ 5!Hcd_8uO#+2KslO']?LW?+ 6rgɅ#n7l#%2m?,k׮~K,Jps:"֘v$B -Ȟ6і.Ε4նa6#}NP*y68l/0,vt*=ﻵKz!^WwRhDL!@+>Q:9C -J*Ǟ'9q1-@ ,7%xyOi&S5)=Le. d~%߁]URbAD۵=8Ǹs!e*g" mߟ5*`^9tOtd ~k>a_ BzHvwMCe3NY"Yju#x/H񓕯1v0R΢GtmedE[7l\CLK0 f>ÅyqlHq%8m1ԛ`Z#F \tՄL\/vOLMsTBI4"(CeZAid (G!\qS"wBe,h巽vMگb?4)~QpCC<1H8s~0ԂqY s^F(5*s~a',^ZKrO- ?""o"Wsп>AxU al 2? ]$5aph GdUlU4ҴHkNJ f-5˒C /M%c= FlbD$Ms 4 ->7 Cu\GД6!A,*4uۺ!0;L\`! qȋeu| .,,<goj䅦Ei=)Uc rOwSx/0* FK3-~G0%`Z =O,?\Bendstream +xڝY_o8@ImnAY,,o3%[nE #b'D$q^eW7Us?_ɼKϼs{[#rQ\=^) ++yngK,*#-4%‡[KFZ㛛p~b^'l>V#iBdY\$їEG%Tƶ8ª4j\Ua$b|^82_4XCO\+T ^gIGlYn5*ﳶg\Ȩ?uK/j)3Q(V_Ӏ2َkdۅ#pzU7)) yRd2'ҫF kE;/:B!Bq/GǪBHcɤu)޶4:f=ʗCe7]LS.}'teL5H;/`auyDTDADЊle (3M1ް^c'y.l̢we_edٺu K=}3گ+WWt|ًJ԰_> :j殙N]i]vd9TxޯNGE0Er봬T]9+=ZvJĠSMci[V5 Zaɜz؀. ֳn-<I dzKg̀LДfW$w <"V B j]~8`y)Gnh!Jߴ'13l+oAn5 ˌTp*1Zi^kvOݮ"}?(P#?B;r8 .FRA廅CBL*x#kǨ3M ?5f{|%V{gzju[-tn6 R u뺺&ʡ'4pIlte#GK.s~Pe`uܖΦ'I!y dJ] 5*){1<{D8f-g5Дpy!OP1uN'U[dX`\/D1Yυ!WNar-cvLMc(Xa +mxF7pT=]L?8HNc==ogH7ӂio0n"dV)ߎl++Wͺ \[0 b曳58Uc| TP'?81}r}IGAEH 9aeG hiբHĺa$nMf Qe᠁|8څp|u<_,2{,݆l$D}0 W}m끉&5{L0vɒ(tLy.el6 vsooqҢ6:b&9u8x+H.wyKgϫ6F"1B@Ts@Ȅ4E:U_(o oVԈڛ9)PR$2&H8S%t:/d)oC6l략 UڋwiDH@S/zmihw _AP8CUCϲgq•3|;Wk좲c͕M48#TFvxc.Bf/`^~*۲|ŏ@DNvE8fg_%lAʫ>3"I[FS +7͏*7Ѿۍ| N#EVjIJk^9'&w=pts;qNR7_ i2P2`bz_>fu!9a/*KNZe'%ʡMd44MչĭmET=Mb- ?qGfN) 욈\)Y~E|z,M["})e}+蘷\h';lvk<@!Vsy0𪾦<*KO75!A> endobj 797 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [73.4132 570.2907 92.854 580.8729] +/Rect [212.6999 738.8587 227.1554 749.441] +/Subtype /Link +/A << /S /GoTo /D (figure.3.2) >> +>> endobj +798 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [73.4132 499.4889 92.854 510.0712] /Subtype /Link /A << /S /GoTo /D (figure.2.13) >> >> endobj 796 0 obj << /D [794 0 R /XYZ 74.4095 793.4011 null] >> endobj +130 0 obj << +/D [794 0 R /XYZ 74.4095 397.0616 null] +>> endobj +134 0 obj << +/D [794 0 R /XYZ 74.4095 345.4408 null] +>> endobj 793 0 obj << -/Font << /F61 259 0 R /F28 209 0 R >> +/Font << /F61 259 0 R /F28 209 0 R /F26 206 0 R >> /ProcSet [ /PDF /Text ] >> endobj 802 0 obj << -/Length 1715 +/Length 1656 /Filter /FlateDecode >> stream -xڍXKs6WHu,x$ssIhMIu S%Hɺ.(31bǷ (?eH@pݮϒ_/<s>{N(g*L ?ۦ3\dy,l&I|ޮخ1ٜqo^"aUJ3, δγ1ĕ22)p%#.X; vJ epW,4m+ߨYtJ$ey_y^PG^k] `L⍥*ɻqq(H8IT}w#3ޗ\MeZ"B8Jc۴(*;25DUc_ԚBʧUs0IlV˰Dٷ[)3@A̢*kc3V.]iIJPs&0H͌ǖf]uN]0v0noRZ@{55j4:rPvu=e{O n;: x[R;b=\ڲ6fj3w Y.(^(sڢz'^uo4iQ-de8L(asv Q; -:4P-"P(_e1왏7ּSs+uq5\/{"ExOJs|s DSI -"%K{{ B??a^?K +S%1o~u[yWś_b Ȼ{Wޭ?dћٜ'l.п.41oeSj6g?쟻/n}@11g("'ޜ UҕRJ +dbho^$VK7ay»]|>4 4A4%|()|) D]؈9)bBQlV:e="@2{]CO9WO(}htV"Pap;=}ƥPxߜ +$bFPFT$"%UBe?Da&* 4{s)s)+ѳbQI%N% +;hwjEsQ/~Z邨߲þi۝6;,FW+=c~yiԵL>cbSv19#hVuaB~eد蓜TBIEUzUYK'+yaZyA/1@H'N:cv B$ؠ]\vfEl* NMG&dEC}mjaK?k]9p(lżm! [-ѽ#B?!/WڈrMTh=]:D֥LS@^f +si#ubKomM*b,KCk2WO"K/Fdl wlϢUQ駦=^]W+xnNUuQ/D2NjkkIHJU,&,8=a0L"yư1O'oS[TolIU/&*Š]cDD|QT V,W!k, + %6*E<$]NdHRNGl2;V|v& sjt|\ZS9bQ _z#36iJN +_I&gs qH6#8 ݼHFӓ!7XnH5aOTVup)90\ruҝYp#@j`{\C_LCWl +Y|6a`xzvo)p}'aTƝ!DĄHJ&-]#xQ7#z9TD#wi$6!Bz\`(ap(.@US 1Zh'GV$ƏdzŲoMT>C:۪F2ףGIjk'ĹB9<Ң 'V{&y{ (a d\ZuG<:C5h$/wңG)\:DS2 S!5eWl)٦6r`x){vo?͘.m]PN_Qr(툤mGMNKuUt(B> endobj -799 0 obj << +792 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (/usr/home/buetow/svn/vs/trunk/LaTeX/images/events.pdf) /PTEX.PageNumber 1 -/PTEX.InfoDict 806 0 R +/PTEX.InfoDict 807 0 R /Matrix [1.00000000 0.00000000 0.00000000 1.00000000 0.00000000 0.00000000] /BBox [0.00000000 0.00000000 544.00000000 374.00000000] /Resources << /ProcSet [ /PDF /Text ] /ExtGState << -/R7 807 0 R ->>/Font << /R8 808 0 R /R9 809 0 R >> +/R7 808 0 R +>>/Font << /R8 809 0 R /R9 810 0 R >> >> -/Length 810 0 R +/Length 811 0 R /Filter /FlateDecode >> stream @@ -6591,202 +6595,174 @@ J }|9-p?sQ-2_zmD~xwwx pdKCJYN54Zfx׀%GfoKwzص۷SBH%I#n;>}ڲ p57T\J'aj9F Uk(ϯ-rcao@ʊix8r &,8$vV]0?of8&gMaװ)b^:ZYJƓz:;?(&[hBE*9& =t⴨HgD#ᜠhGت M{TGX 2w@ }";)ͦ꾂v'Bi2``BЋ>]` ?ioi03pr 2tUcfxqh}LXjfVV _fC,0*tfWXQ3YP50KxuTX4,8쭠IO a3`tq#S.:ɢ4iU<ҡ),P*8<^TX(qluΚpk(_m=vwKq>c(!zɆYaPwTEaCљY:k1^B6SwGyv>c$1iq&*j,$!Yjӱu ovl+(7M1h_7k;!>g `eRɯWt_Ͼ7cgC B!$$q ,":T/qf~wJ8CkGȪ'WIl4v9ns,t' eTgaA(Bx.P}Xendstream endobj -806 0 obj +807 0 obj << /Producer (GPL Ghostscript 8.61) /CreationDate (D:20080809025807Z00'00') /ModDate (D:20080809025807Z00'00') >> endobj -807 0 obj +808 0 obj << /Type /ExtGState /OPM 1 >> endobj -808 0 obj +809 0 obj << /BaseFont /Helvetica /Type /Font /Subtype /Type1 >> endobj -809 0 obj +810 0 obj << /BaseFont /Helvetica-Oblique /Type /Font /Subtype /Type1 >> endobj -810 0 obj +811 0 obj 1167 endobj 804 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [331.9551 197.918 346.4106 208.5003] +/Rect [197.3896 428.8283 211.8452 439.4105] /Subtype /Link /A << /S /GoTo /D (figure.3.3) >> >> endobj 803 0 obj << /D [801 0 R /XYZ 74.4095 793.4011 null] >> endobj -130 0 obj << -/D [801 0 R /XYZ 74.4095 771.7323 null] ->> endobj -134 0 obj << -/D [801 0 R /XYZ 74.4095 746.1189 null] ->> endobj 362 0 obj << -/D [801 0 R /XYZ 266.5136 365.8579 null] +/D [801 0 R /XYZ 266.5136 498.6761 null] >> endobj 805 0 obj << -/D [801 0 R /XYZ 74.4095 197.6162 null] +/D [801 0 R /XYZ 74.4095 426.2277 null] +>> endobj +806 0 obj << +/D [801 0 R /XYZ 74.4095 308.3105 null] >> endobj 800 0 obj << -/Font << /F61 259 0 R /F26 206 0 R /F28 209 0 R >> -/XObject << /Im33 799 0 R >> +/Font << /F61 259 0 R /F28 209 0 R /F35 221 0 R >> +/XObject << /Im33 792 0 R >> /ProcSet [ /PDF /Text ] >> endobj -813 0 obj << -/Length 2558 +814 0 obj << +/Length 2650 /Filter /FlateDecode >> stream -xڽZݏ8_>lC{N1psNqIG9N -4MHH)V!VD*Q(ZU o8Zcb\,eQKf˒t̓VCrg]7H/e_}% 49+$T1/^&B -$a~M\(PR2\Tꤊ(1DU_԰lfT X"vn_Mx}6y=* -4`8l}j]eaN\iKKd\ySܽg^7'&vL6{’bt,36Ftv}t}@b܉JAQ胮ww3r+TG٦a7ĥiS9O!"gW/^*>,01<qS?a< qPRHS8V{jCu{LR&ab:"; ,0ZרV2״pX+9&e@F]EQn^I.+(٥E׾sgBQJJQŖ]-eþ('r`wYipa SՕ#O+G$]9"mcFkS]5q)/-/Idxdchf;%v{w~yhZ 17j`~ Q\^=g/F,Aq5 ScGQ -Em|zjoHڑ)8$J朝ICk"`Dʴt"mG2tEU.Ȟ[.CgB8G 2MmT#c2xaX#LV^тʹMhĥ( z71u00&IuuG!g(+;8ty(=3[VsӺaqggapsCKmTRQagJ |I! a!}DkJx`ʝq ~3꽩ˏUKl +N}ifiE[ySo&]iR&9:F/ =n9$C6=LtKrnD%ާ>x7}b.t8MΛ. Rfw[U6f +:%=5;-ߗW>?--ЖZgq7MbaI%޿SgkbFo6SIT(ؗ$c<)<7|(Z79&ssZmkPOjlgT +W|W^] wkBxw *=Äg'&Bхm]̊DУUG9 <f>H(dnl2q`bOtP)C29Bkve*xTp#PP !,[F8GL8BA`w"@vZ7EҲ d|%(Es؇QL~z$ Lf()plAIwr6m\b܍e3FAU{; '6ws*,T'=ϚLgRF` quAmD~q>yEO :%82WD IOtC:0a4p%NϚMx| Cx +9!De`Sz6bn`)L3/Pffb:#GM )'.?9dHپ94$4ii@]Cxd5Uú ,ߕijp\`T+yC|@݈>=z(ET?_t^׳$E~ 詠5;L}X"!bL¡lID/o< +L;=Z5"G5 $kpق9*Z'N*L.yNso * lP;m r>DФz]3u.u>tFF8.k\Y?C>Ə"W"B"?gf"sKs8EcR|NOs9@=׆o I+X@vkl.wd"3YέN|F6oCRaJEGkw~.N\IqjWwLy9:p'kp;^ly>n^/bI„xcp2i N )|t!n-(oax2aT"ű7ъ>@;՛zJ~jvt}5gca +guXWlC{ƮRllBuT6&U<1Th9mW^G}`{}fl;‾ٚ}n66m_-8FޘswkeZF_.[k|w|pi:-s*vwql&9Sv˦Fq +0 +1jgr)"8rPy1'a 5 +mendstream endobj -812 0 obj << +813 0 obj << /Type /Page -/Contents 813 0 R -/Resources 811 0 R +/Contents 814 0 R +/Resources 812 0 R /MediaBox [0 0 595.2757 841.8898] -/Parent 798 0 R +/Parent 799 0 R /Annots [ 817 0 R ] >> endobj 817 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [451.4247 225.2515 465.8802 235.8337] +/Rect [451.4247 478.4932 465.8802 489.0754] /Subtype /Link /A << /S /GoTo /D (figure.3.3) >> >> endobj -814 0 obj << -/D [812 0 R /XYZ 74.4095 793.4011 null] ->> endobj 815 0 obj << -/D [812 0 R /XYZ 74.4095 725.3863 null] +/D [813 0 R /XYZ 74.4095 793.4011 null] >> endobj 816 0 obj << -/D [812 0 R /XYZ 74.4095 278.4629 null] +/D [813 0 R /XYZ 74.4095 526.3397 null] >> endobj -811 0 obj << -/Font << /F61 259 0 R /F35 221 0 R /F28 209 0 R >> +812 0 obj << +/Font << /F61 259 0 R /F28 209 0 R /F35 221 0 R >> /ProcSet [ /PDF /Text ] >> endobj 820 0 obj << -/Length 2118 +/Length 2487 /Filter /FlateDecode >> stream -xڭYQs~_Gj愒L&v3@KX"=$ HQMw36,>,dd, -$YmO~+q›Pw^%J'âG_ʗgy$z#8Xitz9ꓮJM"s_{_Jo3K_ZZY,˸1xDVW:cg*;+;T}Z8* $:\_ÔGyԷ LxWtly~Jյ"Vsu;t/W6n&jh ƮJ=~e[ʎ\FvoG"a݈̖9gJ3{FK)$ PU y>6*ݓl&a¼waz69_sS*=c<tYz t2cܦdm}Q1L)aJbnLHB$PP$aV$,OE>,zi11a(-#ҶhJG<AkKz?t(^?!z!EaL*$N1J-`̋EcZ16:@o1!e1m껾NZDb CY7ol -֑f컌{;V>ҽܠsWܱMVe_|\~jP(IhXsBoymQ 6::2yizgޯF*?:Z>V Yȃ9ȃpځqhx󶵧W0Bǚ Y'(S旔 }P6*m3OZzQV-jh_ zz --tFCC)g _>PߡvxzrkuK^h4U鴞ZreLR boazQyLz5!s~yB ·T]zL"3*!}^Mxp?^Uӧgg(ksxԯ>,py"s&y/=Z{+Z}/}5{& -9sy̙KXt0FDF@`%ҟ:V{b,;EMLD >[ꪃ>ٍs.Gũ@/FP_3%K&TzU Pendstream +xڭ]sݿBTBG|/wi@03E"k뻋%Jvn^H,8X1SS / +p+bpH,FZ<<.BY'=0Nɖ+y4q{mi˕.<}됳$¯V)ŋ, +e:ĞNYaw%BT +(,:4'.⩐ij1w#r)RpX!,%{oD)#ԧ5;|jjM߬Vtf)jBIPSf{tgd Ҧ p@#:ϴ8PTAK%>.bqy{pիc0.tb優[2:I͖]@M@m.M!5D ;w:s= _Ͽ CӠ36a(Q˧,$Lb +QS4{۬%H75 }Ui}c]vO3 Ҩ.qg/gq$|%ă9ݍ֊3j2ĺk1}k'\czb5`[*19GK7OBk9H@hL +?XG@$3*m4ןSPp1uA5M1hYU^6|DKir¡Jvb]{/r~u#C$9y6t{GGow Oq?הUYPLCzQ/LD6OϷ(bV;ɜ>q&YxGXZa6b0;F6EybRXrȒIY{S6PmaSBsCևyͩX$(:4&PI.(\o-j* FMm<@(;e7cqf{Bή]])6xjڰMngX8ZX)̗[49W8-4e^F?k<*v((HifYs?,u̧pʀivn4$Kd:4w6i"[;wQVʹFA@sFqa%=P9Lw 4(S lS_kvq FBX- ݷ/p""~ eT-[C_=)ʱ)#V܏cPd9pCσgq2|$':y>zօiZpxii Ef>Q~FD|`a_CFM.nQɚ.!nz$\*fv, sp㒦]7V<,NCVgΓ#^%o- SU=6r4su MRi5@h ' 4*~Df?+bS=^5κld3S]X<>BUۯf?AW nwMhH _ai#+9sUG=Lz ȖG`}А{1G"l !IFl8kK+ ^kmQ|9&^˄v4k̸I<W _Scu2Ƽ0dQҽ|vGcr*#jru|C +Zg"MTWW(C$ƮyZt-cRУ+cE?~p*я@Tb> endobj 821 0 obj << /D [819 0 R /XYZ 74.4095 793.4011 null] >> endobj -818 0 obj << -/Font << /F61 259 0 R /F28 209 0 R /F35 221 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -824 0 obj << -/Length 1644 -/Filter /FlateDecode ->> -stream -xڭXYs6~`$uLS6I( XS*BIN{w EtX. +ß҄%J0N`RTRcZC ]]-זNЮw~dne$Wd9(m}UY6ob᳒϶;$\c*)HYQV-J9԰uDBg&L<~\p}X9ZjL0]UyNPWPl - -j8zmY0m}EiKH_E{&6:V7vTh0R5oh0LJ\X:,Bbw_MQ؅(*`9Q|$s Gw|[K-)CΪD^K0" -GFdAœ>WPɮ ɪ?<\xK1{hM,ze`R$}W);{Dv"˜vF!̃gi7|V@>QP>prPMoX39{pLFƑ\$4ź-ˉ&Ѻ!+|XC( }LPKtWŃ(TosN/.z w 2XxN+Ly:?Lh:;;JLaqjKD4}}\bYA7xL96)i:>3uєlISb4 dM<548MQpÌɳO O/shZB}o"#e7"ݞendstream -endobj -823 0 obj << -/Type /Page -/Contents 824 0 R -/Resources 822 0 R -/MediaBox [0 0 595.2757 841.8898] -/Parent 798 0 R ->> endobj -825 0 obj << -/D [823 0 R /XYZ 74.4095 793.4011 null] ->> endobj 138 0 obj << -/D [823 0 R /XYZ 74.4095 771.7323 null] +/D [819 0 R /XYZ 74.4095 460.3494 null] >> endobj -822 0 obj << -/Font << /F61 259 0 R /F26 206 0 R /F28 209 0 R /F83 828 0 R >> +818 0 obj << +/Font << /F61 259 0 R /F35 221 0 R /F28 209 0 R /F26 206 0 R /F83 824 0 R >> /ProcSet [ /PDF /Text ] >> endobj -832 0 obj << -/Length 2387 +828 0 obj << +/Length 1251 /Filter /FlateDecode >> stream -xڭr6БAܛIv2+H SBR-}vh{j**?28KV&p]ūގnfJwo4_,ZnWB&L.0i$zqxvgzÓДpv䟈ZV)Tj#8:5S'Όj|+.Xƹ7zJ2fI l5ܯE.Mor,\G'95b,=:^YfD i6S LJxN*^)oPMb+xSd LHtu ,ͤt¼Fq}\+P#(ęǪ#GB_nKP~=:kuk=CuU9٪&!kB-: v/9>x]IuK{frP8mnRtUȇR7- -<``O,]\($ -,.1P NRC|n'U{SRbj\F2(3*MROPKb_8)KYK\6fKgd'TnS(ؗg$LY%j1S+#ٚC*41dz<nɅPB)dz]9۪HSP?ZXO9N!ʟ|@-\6 򦴥-`ɣ.\>ttE 7j\  >GSXLe:,Fmޕ"#& ?,եSGŗM=Sy@]kD6 Čͯn\Nr RBShma7XxhyMm>K\'Ek3ކ5dID X-_:6.gAOb].gUYC~TQgB7Mɢ'Iʂ7E_k -fX dQ`pQ| ]ؾa쒈:crt\1>f+:Ԕ% QU*:  l,t{C7. J^\7)ߊg -۹dÂYd$& *1(R`T 0G c[ilj&tW"`[˳ :" ӉKZ#U4Jq|T`F]ή,!AG%?N\m>M@Tч^~G;Kzq5p٠pQP]4#a&vgis4f1TB] qNT$Ghx g2dܜ0dƐC8~:w%i) Ӊ4g9qPJ@Bs8aONy]/fg1J9r1Zbz>b{AT =@^8QcN %K餬 -lUʩ˥<q:V/%P(V*|o9Ixt1i@rg=$-Ű]XGW`" 5Α{!YzS_0Ӕ -"6!^X ȂBWF~cp?Dendstream +xڭWr6+جș`rG;nɢIɬ)R!)u{ $*v\yI"i(0`[g['l8[3{ugHnp.MlA# R"nz۵-VAȔ-V盷7C~)1Z灕Rt*A/%"6{/8z68u3zb,FSt0H!X7\ؔF@j6%1i")b"-<AEԵ~ʅ*o_""g&Umol>g󺩒Eɬ?s;25a c|evQ8in`h%[Y|0$zms|ڢ]u}0ҔM~kc &UBt&Ɲ>\tCnNqMe5rE+p^<v(RG7_΢>PevlB$$< \{1"IP+0PNgY 8TWN\FNyv[)Y'Ȇ[DP?"A˕ W''(>icbJ"1"l`u\n&+݉`'b"uRQLn4:T"Y'ۥKr6ǃgy:[9\[*V^/.xGs8B 81\ 8 {0z"D17ܦ +r?:w(X8$"Y΂]SV[[y7%Sy;9|r4'* <->jL[8(0W:]7J@]@CVnl6P5`~ CXK9AsWYec{&\ǡ;9mdqkҋct^=8s(³qlt7pTk<m_;ZHf ¨7񵁎))8Sw c_8$`CsxޓW +fX ٞS)듒9-f1xW{ȠKAj*kOs +F`