summaryrefslogtreecommitdiff
path: root/LaTeX
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2008-08-09 21:26:58 +0000
committerPaul Buetow <paul@buetow.org>2008-08-09 21:26:58 +0000
commit8a9b34513b277dd1c6da5ffefde9431ed6a700b6 (patch)
tree0a7a7bc030af5995d9b65c6a975ec5cb62c110fd /LaTeX
parent0a18dc94f2bde02b00eb1f36514dfe1aee2041b3 (diff)
writte
Diffstat (limited to 'LaTeX')
-rw-r--r--LaTeX/chapters/implementierung.tex44
-rw-r--r--LaTeX/diplomarbeit.pdf6493
2 files changed, 3384 insertions, 3153 deletions
diff --git a/LaTeX/chapters/implementierung.tex b/LaTeX/chapters/implementierung.tex
index 9b69bf0..86ed5da 100644
--- a/LaTeX/chapters/implementierung.tex
+++ b/LaTeX/chapters/implementierung.tex
@@ -507,6 +507,8 @@ registerEvent("protocols.implementations.VSMyProtocol",
\section{GUI sowie Simulationsvisualisierung}
+\subsection{Funktionsweise}
+
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}.
\begin{figure}[h]
@@ -520,15 +522,47 @@ Beim Starten des Simulators wird auf die Main-Methode, welche sich in \textit{VS
\textit{VSSimulatorVisualization} ist bei Weitem die kryptischste Klasse des Simulators. Die greift auf die Java's Grafikbibliothek Java2D zur\"{u}ck und ist aus Performancegr\"{u}nden mit dem Simulationsverlauf stark verzahnt. Variablen, die stets den selbe Wert haben, wurden stets als finale Variablen angelegt. Variablen, die von Konfigurationen oder Einstellungen abh\"{a}ngig sind, die sich nur nach Konfigurations\"{a}nderung oder Vergr\"{o}ern beziehungsweise Verkleinern des Simulationsfensters \"{a}ndern, werden nur wenn es n\"{o}tig ist neu berechnet.
-Die Klasse \textit{VSMenuItemStates} wird f\"{u}r die Synchronisierung des Simulationsstatusses, der Toolbar und des Simulations-Men\"{u}s (beide Letztere auf Abbildung \ref{fig:Toolbar} zu sehen) verwendet. Damit ist gemeint, ob die Simulation bereits gestartet wurde oder nicht oder gegebenenfalls schon abgelaufen ist. Oder ob die Simulation sich in einem pausierten Status befindet. Abh\"{a}ngig davon kann der Benutzer bestimmte Aktionen durchf\"{u}hren oder nicht (beispielsweise kann eine Simulation nur pausiert werden, wenn sie aktuell abgespielt wird). Alle hier m\"{o}glichen Aktionen wurden bereits in Kapitel 2.1 im Abschnitt ``Die Toolbar'' behandelt.
+Die Klasse \textit{VSMenuItemStates} wird f\"{u}r die Synchronisierung des Simulationsstatusses, der Toolbar und des Simulations-Men\"{u}s (beide Letztere auf Abbildung \ref{fig:Toolbar} zu sehen) verwendet. Damit ist gemeint, ob die Simulation bereits gestartet wurde, noch nicht gestartet wurde oder gegebenenfalls schon abgelaufen ist. Oder ob die Simulation sich in einem pausierten Status befindet. Abh\"{a}ngig davon kann der Benutzer bestimmte Aktionen durchf\"{u}hren oder nicht (beispielsweise kann eine Simulation nur pausiert werden, wenn sie aktuell abgespielt wird). Alle hier m\"{o}glichen Aktionen wurden bereits in Kapitel 2.1 im Abschnitt ``Die Toolbar'' behandelt.
-Die klasse \textit{VSCreateTask} wird vom Ereigniseditor verwendet. Der Ereigniseditor (Abbildung \ref{fig:SidebarMitEreignissen}) wird in der Klasse \textit{VSSimulator} implementiert. Hinter jeder Ereignisauswahl verbirgt sich intern ein \textit{VSCreateTask}-Objekt, welches definiert wie das jeweilige Ereignis anzulegen ist und es automatisch in ein \textit{VSTask}-Objekt gekapselt f\"{u}r eine sp\"{a}tere Ausf\"{u}hrung dem Task-Manager \"{u}bergibt.
+Die Klasse \textit{VSCreateTask} wird vom Ereigniseditor verwendet. Der Ereigniseditor (Abbildung \ref{fig:SidebarMitEreignissen}) wird in der Klasse \textit{VSSimulator} implementiert. Hinter jeder Ereignisauswahl verbirgt sich intern ein \textit{VSCreateTask}-Objekt, welches definiert wie das jeweilige Ereignis anzulegen ist und es automatisch in ein \textit{VSTask}-Objekt gekapselt f\"{u}r eine sp\"{a}tere Ausf\"{u}hrung dem Task-Manager \"{u}bergibt.
\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. F\"{u}r den Loggfilter wird intern auf das Java-Standardpaket \textit{java.util.regex} zugegriffen, womit anhand von regul\"{a}ren Ausdr\"{u}cken in Java-Syntax die Loggs gefiltert werden k\"{o}nnen.
+\subsection{Threads und Zeitsynchronisierung}
+
+Ziel vom Simulator is es bis auf jede Millisekunde genau zu simulieren. Jede simulierte Sekunde soll relativ zur echten Zeit fortschreiten. Die Simulationsabspielgeschwindigkeit l\"{a}t sich bei den Simulationseinstellungen unter ``Abspielgeschwindigkeit der Simulation'' (Float: \textit{sim.clock.speed}) einstellen. Damit dies gew\"{a}hrleistet wird, mu folgendes ber\"{u}cksichtigt werden:
+
+\begin{itemize}
+ \item Das Zeichnen der Visualisierung ben\"{o}tigt pro Aktualisierung einige Millisekunden. Dies ist der Rechenintensivste Teil des Simulators. Hier werden st\"{a}ndig mathematische Berechnungen (wie zum Beispiel die Gerade einer Nachrichtenlinie, die automatische Skalierung des Diagrams die sich automatisch an die Fenstergr\"{o}e und der Simulationsdauer anpasst und vieles mehr).
+ \item Das Neuberechnen der Simulation ben\"{o}tigt pro Aktualisierung einige Millisekunden. Hier wird insbesondere der Task-Manager beansprucht, der \"{u}berpr\"{u}ft, ob Ereignisse auszuf\"{u}hren sind und sie gegebenenfalls dann auch ausf\"{u}hrt.
+ \item Jeder simulierte Prozess sollte mit selber Geschwindigkeit fortschreiten, und dies auf jedem Rechner wo der Simulator ausgef\"{u}hrt wird. Da Java-Threads nicht komplett platformunabh\"{a}ngig sind (Threads sind im Betriebssystem implementiert), kann das Verhalten auf verschiedenen Rechnern minimal variieren. Ausserdem \"{u}bernimmt das Betriebssystem die Entscheidung, wann welcher Thread arbeiten darf. Ausser man synchronisiert Threads manuell so, dass sie den eigenen Anspr\"{u}chen entsprechen. Letzteres bedeutet aber auch mehr Programmieraufwand.
+ \item Die Simulationszeit ist stets in Millisekunden angegeben, welche in einer \textit{long}-Variable abgespeichert wird. Somit kann eine Simulationszeit immer nur eine ganze Zahl sein. Berechnungsrundungsfehler wegen \textit{sim.clock.speed} m\"{u}ssen ber\"{u}cksichtig werden.
+ \item Der Simulator soll nicht st\"{a}ndig die komplette CPU des Anwender-Computers voll beanspruchen.
+\end{itemize}
+
+Es wurde folgende relativ einfache L\"{o}sung gew\"{a}hlt, bei der lediglich ein einziger Thread fuer die Visualisierung und die Berechnung der Simulation zust\"{a}ndig ist (alle Zeitangaben sind in Millisekunden). Der Algorithmus verl\"{a}uft leicht vereinfacht in folgender Form ab:
+
+\begin{enumerate}
+ \item Die simulierte Startzeit sei $s$ und die Zeit wo die Simulation aufh\"{o}rt sei $e$.
+ \item Wenn $s > e$, dann $s := e$ setzen.
+ \item Neuberechnen und Zeichnen der Visualisierung zum Zeitpunkt $s$. Die dabei verstrichene Zeit sei $v$.
+ \item Wenn $s == e$, dann Simulation beenden.
+ \item F\"{u}r einige Millisekunden den Thread pausieren (schlafen lassen). Hierbei sei $p$ die beim Schlafen verstrichene Zeit.
+ \item
+ \begin{verbatim}
+for (i = s; i < s + v + p && i < e; i++)
+ Alle Ereignisse des Zeitpunktes i hintereinander ausfhren
+ \end{verbatim}
+ \item Bei Punkt 2 mit neuer Startzeit $s := s + v + p$ weitermachen.
+\end{enumerate}
+
+Hinzu kommt noch die Ber\"{u}cksichtigung der Simulationsvariable \textit{sim.clock.speed}, die wegen der \"{U}bersicht im Algorithmus nicht dargestellt wurde. Intern hat der Simulator die echte Zeit und die Simulationszeit abgespeichert. Es werden st\"{a}ndig die verstrichenen echten Zeiten gemessen und anschliessend anhand von \textit{sim.clock.speed} die neuen tats\"{a}chlichen Simulationszeiten berechnet. Rundungsfehler werden pro Durchgang in eine \textit{double}-Variable (Fliekommazahl doppelter Genauigkeit) abgespeichert und wenn der Betrag der Rundungsfehler $>= 1$ ist, dann werden davon die ganzen Werteanteile in der Simulationszeit ber\"{u}cksichtigt.
+
+Jede Simulation besitzt somit seinen eigenen Simulationsthread. Bei mehreren parallel laufenden Simulationen laufen auch mehrere parallele voneinander unabh\"{a}ngige Threads. Des Weiteren gibt es noch den Java Swing-Thread, der f\"{u}r die GUI und der Anwenderinteraktion zust\"{a}ndig ist. Der Anwender kann zu jedem Zeitpunkt in die Simulation eingreifen. Anwendereingriffe m\"{u}ssen daher synchronisiert werden, da es ansonsten zu zeitgleichen Zugriffen/\"{A}nderungen gleicher Objekte kommen kann und somit eine Java-Ausnahme geworfen wird die das Stoppen eines Threads verursacht.
+
\section{Serialisierung und Deserialisierung von Simulationen}
-Der Anwender kann eine erstellte Simulation im Datei-Men\"{u} speichern und/oder eine bereits abgespeicherte Simulation laden. Hierbei wird von den aus Java angebotenen M\"{o}glichkeit Objekte zu Serialisieren gebrauch gemacht. Im Paket \textit{serialize} (Abbildung \ref{fig:PackageSerialize}) befinden sich Helferklassen, die bei einer Serialisierung und einer Deserialisierung einer Simulation unter die Arme greifen.
+Der Anwender kann eine erstellte Simulation im Datei-Men\"{u} speichern und/oder eine bereits abgespeicherte Simulation laden. Hierbei wird von den aus Java angebotenen M\"{o}glichkeit Objekte zu Serialisieren gebrauch gemacht. Im Paket \textit{serialize} (Abbildung \ref{fig:PackageSerialize}) befinden sich Helfer, die bei einer Serialisierung und einer Deserialisierung einer Simulation unter die Arme greifen.
Der Simulator serialisiert nur notwendige Daten, und nicht jedes existierende Objekt. Alle Serialisierbaren Klassen implementieren das Interface \textit{VSSerializable} mit folgenden zwei Methoden:
@@ -537,7 +571,7 @@ Der Simulator serialisiert nur notwendige Daten, und nicht jedes existierende Ob
\item \textit{public void deserialize(VSSerialize serialize, ObjectInputStream ois)}: Diese Methode wird bei jedem Deserialisierungsvorgang aufgerufen (beim Laden einer Simulation).
\end{itemize}
-Die Methoden \textit{serialize} und \textit{deserialize} erhalten neben einen Dateistream auch ein \textit{VSSerialize}-Objekt. F\"{u}r jeden (De)serialisierungsvorgang wird ein \textit{VSSerialize}-Objekt erzeugt, welches dabei Hilft die ben\"{o}tigten Aktionen durchzuf\"{u}hren. Eine zu serialisierende Simulation besteht aus vielen voneinander abh\"{a}ngigen Objekte. Jedes Objekt kann dabei Referenzen auf andere Objekte besitzen. W\"{u}rde jedes Objekt komplett serialisiert werden, so w\"{u}rden Objekte, auf denen mehrere Referenzen existieren, in mehrfacher Ausf\"{u}hrung seriaisiert werden. Bei Kreissverweisen w\"{u}rde die Serialisierung sogar in einer Endlosschleife enden.
+Die Methoden \textit{serialize} und \textit{deserialize} erhalten neben einen Dateistream auch ein \textit{VSSerialize}-Objekt. F\"{u}r jeden (De)serialisierungsvorgang wird ein \textit{VSSerialize}-Objekt erzeugt, welches dabei Hilft die ben\"{o}tigten Aktionen durchzuf\"{u}hren. Eine zu serialisierende Simulation besteht aus vielen voneinander abh\"{a}ngigen Objekten. Jedes Objekt kann dabei Referenzen auf andere Objekte besitzen. W\"{u}rde jedes Objekt komplett serialisiert werden, so w\"{u}rden Objekte, auf denen mehrere Referenzen existieren, in mehrfacher Ausf\"{u}hrung serialisiert werden. Bei Kreissverweisen (Objekt A hat eine Referenz auf Objekt B und Objekt B hat eine Referenz auf Objekt A als Attribut gespeichert) w\"{u}rde die Serialisierung sogar in einer Endlosschleife enden.
\textit{VSSerialize} hilft hierbei dies zu vermeiden und merkt sich Informationen von allen bereits serialisierten Objekten, sodass jedes Objekt nur genau einmal serialisiert wird. Bei der Deserialisierung werden alle Objekte wieder automatisch mit den richtigen Referenzen ausgestattet, wobei kein Objekt doppelt deserialisiert wird.
@@ -572,7 +606,7 @@ Vor- und nach der eigenlichen Objektserialisierung wird jeweils ein boolsches Fl
Das zu serialisierende Objekt besitzt hier lediglich zwei Attribute, die serialisiert werden sollen. Alle anderen Klassenattribute k\"{o}nnen vernachl\"{a}igt werden. Mit \textit{serialize.setObject} speichert \textit{serialize} eine Referenz auf das aktuelle Objekt ab, worauf andere Objektserialisierungen zur\"{u}ckgreifen k\"{o}nnen. Danach wird ein \textit{prefs} und \textit{someOtherSerializableObject} serialisiert. Die Deserialisierung folgt genau den Umgekehrten weg. Wobei hier zuerst die Instanzen der Klassen auf normalen Weg erstellt werden und dann nachtr\"{a}glich die relevanten Attribute deserialisiert und den Objekten zugewiesen werden. Hierbei werden auch mithilfe von \textit{VSSerialize} mehrere Referenzen auf das selbe Objekt korrekt behandelt.
-Wenn der Anwender \textit{Datei $\rightarrow$ Simulation speichern} w\"{a}hlt, dann wird zun\"{a}chst ein \textit{VSSerialize}-Objekt erstellt. Ausgehend davon wird \textit{serialize} auf \textit{VSSimulator} ausgef\"{u}hrt (siehe Serialisierungssequenz auf Abbildung \ref{fig:SequenceSerialize}). Das Simulator-Objekt f\"{u}hrt \textit{serialize} wiederum auf das \textit{VSSimulatorVisualization}-Objekt aus. Dort wird jeder Prozess inklusive alle Protokollobjekte serialisiert. Anschliessend folgt der Task-Manager inklusive allen programmierten Ereignissen. Alle Instanzen von \textit{VSSerializablePrefs} werden automatisch mitserialisiert. Sie beinhalten alle Simulationseinstellungen.
+Wenn der Anwender \textit{Datei $\rightarrow$ Simulation speichern} w\"{a}hlt, dann wird zun\"{a}chst ein \textit{VSSerialize}-Objekt erstellt. Ausgehend davon wird \textit{serialize} auf \textit{VSSimulator} ausgef\"{u}hrt (siehe Serialisierungssequenz auf Abbildung \ref{fig:SequenceSerialize}). Das Simulator-Objekt f\"{u}hrt \textit{serialize} wiederum auf das \textit{VSSimulatorVisualization}-Objekt aus. Dort wird jeder Prozess inklusive alle Protokollobjekte serialisiert. Anschliessend folgt der Task-Manager inklusive allen programmierten Ereignissen.
\begin{figure}
\centering
diff --git a/LaTeX/diplomarbeit.pdf b/LaTeX/diplomarbeit.pdf
index ad0a15b..e1330de 100644
--- a/LaTeX/diplomarbeit.pdf
+++ b/LaTeX/diplomarbeit.pdf
@@ -246,51 +246,63 @@ endobj
(\376\377\0003\000.\0005\000\040\000G\000U\000I\000\040\000s\000o\000w\000i\000e\000\040\000S\000i\000m\000u\000l\000a\000t\000i\000o\000n\000s\000v\000i\000s\000u\000a\000l\000i\000s\000i\000e\000r\000u\000n\000g)
endobj
169 0 obj
-<< /S /GoTo /D (section.3.6) >>
+<< /S /GoTo /D (subsection.3.5.1) >>
endobj
172 0 obj
-(\376\377\0003\000.\0006\000\040\000S\000e\000r\000i\000a\000l\000i\000s\000i\000e\000r\000u\000n\000g\000\040\000u\000n\000d\000\040\000D\000e\000s\000e\000r\000i\000a\000l\000i\000s\000i\000e\000r\000u\000n\000g\000\040\000v\000o\000n\000\040\000S\000i\000m\000u\000l\000a\000t\000i\000o\000n\000e\000n)
+(\376\377\0003\000.\0005\000.\0001\000\040\000F\000u\000n\000k\000t\000i\000o\000n\000s\000w\000e\000i\000s\000e)
endobj
173 0 obj
-<< /S /GoTo /D (section.3.7) >>
+<< /S /GoTo /D (subsection.3.5.2) >>
endobj
176 0 obj
-(\376\377\0003\000.\0007\000\040\000H\000e\000l\000f\000e\000r\000k\000l\000a\000s\000s\000e\000n\000\040\000u\000n\000d\000\040\000K\000l\000a\000s\000s\000e\000n\000\040\000f\000\374\000r\000\040\000A\000u\000s\000n\000a\000h\000m\000e\000b\000e\000h\000a\000n\000d\000l\000u\000n\000g\000e\000n)
+(\376\377\0003\000.\0005\000.\0002\000\040\000T\000h\000r\000e\000a\000d\000s\000\040\000u\000n\000d\000\040\000Z\000e\000i\000t\000s\000y\000n\000c\000h\000r\000o\000n\000i\000s\000i\000e\000r\000u\000n\000g)
endobj
177 0 obj
-<< /S /GoTo /D (section.3.8) >>
+<< /S /GoTo /D (section.3.6) >>
endobj
180 0 obj
-(\376\377\0003\000.\0008\000\040\000P\000r\000o\000g\000r\000a\000m\000m\000i\000e\000r\000r\000i\000c\000h\000t\000l\000i\000n\000i\000e\000n)
+(\376\377\0003\000.\0006\000\040\000S\000e\000r\000i\000a\000l\000i\000s\000i\000e\000r\000u\000n\000g\000\040\000u\000n\000d\000\040\000D\000e\000s\000e\000r\000i\000a\000l\000i\000s\000i\000e\000r\000u\000n\000g\000\040\000v\000o\000n\000\040\000S\000i\000m\000u\000l\000a\000t\000i\000o\000n\000e\000n)
endobj
181 0 obj
-<< /S /GoTo /D (section.3.9) >>
+<< /S /GoTo /D (section.3.7) >>
endobj
184 0 obj
-(\376\377\0003\000.\0009\000\040\000E\000n\000t\000w\000i\000c\000k\000l\000u\000n\000g\000s\000u\000m\000g\000e\000b\000u\000n\000g)
+(\376\377\0003\000.\0007\000\040\000H\000e\000l\000f\000e\000r\000k\000l\000a\000s\000s\000e\000n\000\040\000u\000n\000d\000\040\000K\000l\000a\000s\000s\000e\000n\000\040\000f\000\374\000r\000\040\000A\000u\000s\000n\000a\000h\000m\000e\000b\000e\000h\000a\000n\000d\000l\000u\000n\000g\000e\000n)
endobj
185 0 obj
-<< /S /GoTo /D (chapter.4) >>
+<< /S /GoTo /D (section.3.8) >>
endobj
188 0 obj
-(\376\377\0004\000\040\000A\000u\000s\000b\000l\000i\000c\000k)
+(\376\377\0003\000.\0008\000\040\000P\000r\000o\000g\000r\000a\000m\000m\000i\000e\000r\000r\000i\000c\000h\000t\000l\000i\000n\000i\000e\000n)
endobj
189 0 obj
-<< /S /GoTo /D (appendix.A) >>
+<< /S /GoTo /D (section.3.9) >>
endobj
192 0 obj
-(\376\377\000A\000\040\000A\000k\000r\000o\000n\000y\000m\000e)
+(\376\377\0003\000.\0009\000\040\000E\000n\000t\000w\000i\000c\000k\000l\000u\000n\000g\000s\000u\000m\000g\000e\000b\000u\000n\000g)
endobj
193 0 obj
-<< /S /GoTo /D (appendix.B) >>
+<< /S /GoTo /D (chapter.4) >>
endobj
196 0 obj
-(\376\377\000B\000\040\000L\000i\000t\000e\000r\000a\000t\000u\000r\000v\000e\000r\000z\000e\000i\000c\000h\000n\000i\000s)
+(\376\377\0004\000\040\000A\000u\000s\000b\000l\000i\000c\000k)
endobj
197 0 obj
-<< /S /GoTo /D [198 0 R /Fit ] >>
+<< /S /GoTo /D (appendix.A) >>
endobj
-201 0 obj <<
+200 0 obj
+(\376\377\000A\000\040\000A\000k\000r\000o\000n\000y\000m\000e)
+endobj
+201 0 obj
+<< /S /GoTo /D (appendix.B) >>
+endobj
+204 0 obj
+(\376\377\000B\000\040\000L\000i\000t\000e\000r\000a\000t\000u\000r\000v\000e\000r\000z\000e\000i\000c\000h\000n\000i\000s)
+endobj
+205 0 obj
+<< /S /GoTo /D [206 0 R /Fit ] >>
+endobj
+209 0 obj <<
/Length 827
/Filter /FlateDecode
>>
@@ -299,14 +311,14 @@ xڍUMs6W(͔ͮWvҦZD#.d%
ι>wyW 7Ve{'} n4~' ,
ŨF&qeXd˩ʝgZN p.ͩ2):os>0]e{JK|hF"{gj,wy*fxIϫ608J|-_`_K_!sPӱ bk{>>3(~Zuh엗qDh\P@4w1ωuȷgH%Աf`.O{F,s>`ϮbtEEiOԡӀpFu<|9ҊPypΎ|L^K Sqt8c&4(܋endstream
endobj
-198 0 obj <<
+206 0 obj <<
/Type /Page
-/Contents 201 0 R
-/Resources 200 0 R
+/Contents 209 0 R
+/Resources 208 0 R
/MediaBox [0 0 595.2757 841.8898]
-/Parent 210 0 R
+/Parent 218 0 R
>> endobj
-199 0 obj <<
+207 0 obj <<
/Type /XObject
/Subtype /Image
/Width 500
@@ -467,18 +479,18 @@ j'F{E,
5M%jKqizlO<ԕ#C~%(4p<]gʟ~c ]'?Ӹ)E-
sOyGKrm{
endobj
-202 0 obj <<
-/D [198 0 R /XYZ 74.4095 769.8898 null]
+210 0 obj <<
+/D [206 0 R /XYZ 74.4095 769.8898 null]
>> endobj
-203 0 obj <<
-/D [198 0 R /XYZ 74.4095 769.8898 null]
+211 0 obj <<
+/D [206 0 R /XYZ 74.4095 769.8898 null]
>> endobj
-200 0 obj <<
-/Font << /F26 206 0 R /F28 209 0 R >>
-/XObject << /Im1 199 0 R >>
+208 0 obj <<
+/Font << /F26 214 0 R /F28 217 0 R >>
+/XObject << /Im1 207 0 R >>
/ProcSet [ /PDF /Text /ImageC ]
>> endobj
-213 0 obj <<
+221 0 obj <<
/Length 892
/Filter /FlateDecode
>>
@@ -490,21 +502,21 @@ vsqy#oj >qԳDR&ڦ
C1D\q{oJ7. pV1H9<E YJ=ZN~ P#Qm`Wŀ;>:
n@endstream
endobj
-212 0 obj <<
+220 0 obj <<
/Type /Page
-/Contents 213 0 R
-/Resources 211 0 R
+/Contents 221 0 R
+/Resources 219 0 R
/MediaBox [0 0 595.2757 841.8898]
-/Parent 210 0 R
+/Parent 218 0 R
>> endobj
-214 0 obj <<
-/D [212 0 R /XYZ 74.4095 793.4011 null]
+222 0 obj <<
+/D [220 0 R /XYZ 74.4095 793.4011 null]
>> endobj
-211 0 obj <<
-/Font << /F26 206 0 R /F28 209 0 R >>
+219 0 obj <<
+/Font << /F26 214 0 R /F28 217 0 R >>
/ProcSet [ /PDF /Text ]
>> endobj
-217 0 obj <<
+225 0 obj <<
/Length 790
/Filter /FlateDecode
>>
@@ -518,21 +530,21 @@ xڕVMs0Wp"[>d2$3A)_ I C֫}ڷJ08$b<zE[
7,
=js+&f
endobj
-216 0 obj <<
+224 0 obj <<
/Type /Page
-/Contents 217 0 R
-/Resources 215 0 R
+/Contents 225 0 R
+/Resources 223 0 R
/MediaBox [0 0 595.2757 841.8898]
-/Parent 210 0 R
+/Parent 218 0 R
>> endobj
-218 0 obj <<
-/D [216 0 R /XYZ 74.4095 793.4011 null]
+226 0 obj <<
+/D [224 0 R /XYZ 74.4095 793.4011 null]
>> endobj
-215 0 obj <<
-/Font << /F26 206 0 R /F28 209 0 R /F35 221 0 R >>
+223 0 obj <<
+/Font << /F26 214 0 R /F28 217 0 R /F35 229 0 R >>
/ProcSet [ /PDF /Text ]
>> endobj
-224 0 obj <<
+232 0 obj <<
/Length 2296
/Filter /FlateDecode
>>
@@ -547,386 +559,403 @@ o,*Ev>ΠwT?/z\ri? ǝ&<Bu*?2Dz}֦ >E 
5ηׅok)95yN /;&Ͷ37C7Mp!RM`ة"%ɕD,UhBk ȆFJ¢wt?)&
P^է}Y\#jp٩"E),JQ}YT%M@h- u!Mue@
endobj
-223 0 obj <<
+231 0 obj <<
/Type /Page
-/Contents 224 0 R
-/Resources 222 0 R
+/Contents 232 0 R
+/Resources 230 0 R
/MediaBox [0 0 595.2757 841.8898]
-/Parent 210 0 R
-/Annots [ 227 0 R 228 0 R 229 0 R 230 0 R 231 0 R 232 0 R 233 0 R 234 0 R 235 0 R 236 0 R 237 0 R 238 0 R 239 0 R 240 0 R 241 0 R 242 0 R 243 0 R 244 0 R 245 0 R 246 0 R 247 0 R 248 0 R 249 0 R 250 0 R 251 0 R 252 0 R ]
+/Parent 218 0 R
+/Annots [ 235 0 R 236 0 R 237 0 R 238 0 R 239 0 R 240 0 R 241 0 R 242 0 R 243 0 R 244 0 R 245 0 R 246 0 R 247 0 R 248 0 R 249 0 R 250 0 R 251 0 R 252 0 R 253 0 R 254 0 R 255 0 R 256 0 R 257 0 R 258 0 R 259 0 R 260 0 R ]
>> endobj
-227 0 obj <<
+235 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [73.4132 607.8694 132.1982 618.3978]
/Subtype /Link
/A << /S /GoTo /D (chapter.1) >>
>> endobj
-228 0 obj <<
+236 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [86.8628 591.1647 150.1131 599.7295]
/Subtype /Link
/A << /S /GoTo /D (section.1.1) >>
>> endobj
-229 0 obj <<
+237 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [86.8628 570.8377 156.4611 581.42]
/Subtype /Link
/A << /S /GoTo /D (section.1.2) >>
>> endobj
-230 0 obj <<
+238 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [73.4132 544.8461 147.4677 553.4916]
/Subtype /Link
/A << /S /GoTo /D (chapter.2) >>
>> endobj
-231 0 obj <<
+239 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [86.8628 524.555 252.1763 535.0296]
/Subtype /Link
/A << /S /GoTo /D (section.2.1) >>
>> endobj
-232 0 obj <<
+240 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [86.8628 506.0392 172.6274 516.3075]
/Subtype /Link
/A << /S /GoTo /D (section.2.2) >>
>> endobj
-233 0 obj <<
+241 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [86.8628 487.4157 151.3326 497.7917]
/Subtype /Link
/A << /S /GoTo /D (section.2.3) >>
>> endobj
-234 0 obj <<
+242 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [86.8628 468.8999 163.3025 479.2759]
/Subtype /Link
/A << /S /GoTo /D (section.2.4) >>
>> endobj
-235 0 obj <<
+243 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [107.4855 450.4917 219.7364 460.7601]
/Subtype /Link
/A << /S /GoTo /D (subsection.2.4.1) >>
>> endobj
-236 0 obj <<
+244 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [107.4855 431.8683 237.2476 442.4505]
/Subtype /Link
/A << /S /GoTo /D (subsection.2.4.2) >>
>> endobj
-237 0 obj <<
+245 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [107.4855 413.3525 280.8776 423.7285]
/Subtype /Link
/A << /S /GoTo /D (subsection.2.4.3) >>
>> endobj
-238 0 obj <<
+246 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [107.4855 394.8367 269.5888 405.2127]
/Subtype /Link
/A << /S /GoTo /D (subsection.2.4.4) >>
>> endobj
-239 0 obj <<
+247 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [86.8628 378.1321 149.1627 386.6968]
/Subtype /Link
/A << /S /GoTo /D (section.2.5) >>
>> endobj
-240 0 obj <<
+248 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [107.4855 357.9127 245.963 368.3873]
/Subtype /Link
/A << /S /GoTo /D (subsection.2.5.1) >>
>> endobj
-241 0 obj <<
+249 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [107.4855 339.2892 235.2122 349.6652]
/Subtype /Link
/A << /S /GoTo /D (subsection.2.5.2) >>
>> endobj
-242 0 obj <<
+250 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [107.4855 322.5846 234.1633 331.1494]
/Subtype /Link
/A << /S /GoTo /D (subsection.2.5.3) >>
>> endobj
-243 0 obj <<
+251 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [107.4855 302.2576 430.8561 312.8399]
/Subtype /Link
/A << /S /GoTo /D (subsection.2.5.4) >>
>> endobj
-244 0 obj <<
+252 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [107.4855 283.7418 339.714 294.324]
/Subtype /Link
/A << /S /GoTo /D (subsection.2.5.5) >>
>> endobj
-245 0 obj <<
+253 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [107.4855 265.226 361.5826 275.8082]
/Subtype /Link
/A << /S /GoTo /D (subsection.2.5.6) >>
>> endobj
-246 0 obj <<
+254 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [107.4855 248.5214 273.5162 257.2924]
/Subtype /Link
/A << /S /GoTo /D (subsection.2.5.7) >>
>> endobj
-247 0 obj <<
+255 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [107.4855 230.0056 279.3982 238.7766]
/Subtype /Link
/A << /S /GoTo /D (subsection.2.5.8) >>
>> endobj
-248 0 obj <<
+256 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [107.4855 209.6785 278.1965 220.2608]
/Subtype /Link
/A << /S /GoTo /D (subsection.2.5.9) >>
>> endobj
-249 0 obj <<
+257 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [107.4855 191.1627 283.3791 201.745]
/Subtype /Link
/A << /S /GoTo /D (subsection.2.5.10) >>
>> endobj
-250 0 obj <<
+258 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [86.8628 172.7546 178.9666 183.0229]
/Subtype /Link
/A << /S /GoTo /D (section.2.6) >>
>> endobj
-251 0 obj <<
+259 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [107.4855 154.2388 325.7265 164.7134]
/Subtype /Link
/A << /S /GoTo /D (subsection.2.6.1) >>
>> endobj
-252 0 obj <<
+260 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [107.4855 135.6153 281.8817 146.1976]
/Subtype /Link
/A << /S /GoTo /D (subsection.2.6.2) >>
>> endobj
-225 0 obj <<
-/D [223 0 R /XYZ 74.4095 793.4011 null]
+233 0 obj <<
+/D [231 0 R /XYZ 74.4095 793.4011 null]
>> endobj
-226 0 obj <<
-/D [223 0 R /XYZ 74.4095 638.5029 null]
+234 0 obj <<
+/D [231 0 R /XYZ 74.4095 638.5029 null]
>> endobj
-222 0 obj <<
-/Font << /F26 206 0 R /F28 209 0 R >>
+230 0 obj <<
+/Font << /F26 214 0 R /F28 217 0 R >>
/ProcSet [ /PDF /Text ]
>> endobj
-255 0 obj <<
-/Length 1967
+263 0 obj <<
+/Length 2092
/Filter /FlateDecode
>>
stream
-x[o)(tݦ7,>(6c. gH9g((&0`_s|.#Xa$ԩ8+n/hq:&7͋YaZ7 9aaћaժ<f}_7|8%Vk4RË <\Xݫ$u*Exm*G6ه..Yo֫rƮݕ>WROʌ&JJQĶR*b9'V 19!bAbd`pF.vN҆ z]էsAʺ ߥk·#<=
-0&5g3"co4ƿ=}_i9ty e{q>i)D2jy/{]/ d6l:y:wx.Sߊ;Uƥإ@bDc:S*f0y
-+uНG$;OWkHT$bVL}Lȥ 4fjthyKʠxũ`cѦrT,hrbVUR\#㻐
-3xH{Kt؜Q!.b3^w+}8GXNaC<aTi gP-\/tfzf>KÌ LEe\bxAMTsj =#G@A' fendstream
+x[6+ti53M۴> ǫյ‡P%J8(M~sfhe~Xf$ԪXe{tY]y*T?yךe9Zu5',ŋjޝOo\-KͶ*Oo{8%aNI!g+8\Pݩ$uڼ ?Deǻ49Me10&4y ˕zUY,W?wžeqTw2Rd{JD*3IuCLŔQS
+A+w1\l5 sA|Nb8UKu<-χ#<
+0"F4g3"rBiE {{޿ja@jA:i#?oO2G:" <HFs"s|NfN<56<^QܟEX1>5cJH,hlRXbV`wjJeL$! 2hh%N/^r»}d|7LxG1bVBP 4"_qՏEye)SQ"tz*MЩ\60;G0zMzk殉fV[hIXg3ח\R%нimתZtod>"a=ʁÏYp$bJqC<šy}Y2h,H.\wYXUquقBQ:͵S%P*eG~?̍# G<Z͛ zUp0gFKf_ڭw *L fǥ7ۆr=Ftp~[f8]O <̌[+oxz*M),|8ӏAg<&Q͓YrceEj2Oc"JM9BsqUU 8nl'ZT΂:
+Tu*C
+;uocs|G4QC+|9)"ZrN,*1vY}K$:<|h5yf<5ZM֝N9U](ʜ07Nh"^*Ij|jg^bģcVlWeN^I~H}{?Zn" ݉VpCjcE~D,RhR$bVP"<mhU%\Tۑ돀YQGsQ1b=qM <ybgT!BXTqve*rqݭ/hKpW8DJLDFz0 Y
+!U. koFT: mLxݪ }l6R[Y1U02QUn
+pP|qu
endobj
-254 0 obj <<
+262 0 obj <<
/Type /Page
-/Contents 255 0 R
-/Resources 253 0 R
+/Contents 263 0 R
+/Resources 261 0 R
/MediaBox [0 0 595.2757 841.8898]
-/Parent 210 0 R
-/Annots [ 260 0 R 261 0 R 262 0 R 263 0 R 264 0 R 265 0 R 266 0 R 267 0 R 268 0 R 269 0 R 270 0 R 271 0 R 272 0 R 273 0 R 274 0 R 275 0 R 276 0 R 277 0 R 278 0 R 279 0 R 280 0 R 281 0 R ]
+/Parent 218 0 R
+/Annots [ 268 0 R 269 0 R 270 0 R 271 0 R 272 0 R 273 0 R 274 0 R 275 0 R 276 0 R 277 0 R 278 0 R 279 0 R 280 0 R 281 0 R 282 0 R 283 0 R 284 0 R 285 0 R 286 0 R 287 0 R 288 0 R 289 0 R 290 0 R 291 0 R ]
>> endobj
-260 0 obj <<
+268 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [73.4132 756.786 177.5405 767.3144]
/Subtype /Link
/A << /S /GoTo /D (chapter.3) >>
>> endobj
-261 0 obj <<
+269 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [86.8628 738.8587 216.6336 749.2347]
/Subtype /Link
/A << /S /GoTo /D (section.3.1) >>
>> endobj
-262 0 obj <<
+270 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [107.4855 720.9315 215.4148 731.3075]
/Subtype /Link
/A << /S /GoTo /D (subsection.3.1.1) >>
>> endobj
-263 0 obj <<
+271 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [107.4855 703.1119 190.4974 713.3802]
/Subtype /Link
/A << /S /GoTo /D (subsection.3.1.2) >>
>> endobj
-264 0 obj <<
+272 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [86.8628 685.077 151.3326 695.453]
/Subtype /Link
/A << /S /GoTo /D (section.3.2) >>
>> endobj
-265 0 obj <<
+273 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [107.4855 667.1498 265.653 677.5258]
/Subtype /Link
/A << /S /GoTo /D (subsection.3.2.1) >>
>> endobj
-266 0 obj <<
+274 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [107.4855 649.2225 308.7178 659.5985]
/Subtype /Link
/A << /S /GoTo /D (subsection.3.2.2) >>
>> endobj
-267 0 obj <<
+275 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [86.8628 631.2953 334.173 641.8776]
/Subtype /Link
/A << /S /GoTo /D (section.3.3) >>
>> endobj
-268 0 obj <<
+276 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [107.4855 615.1793 199.5985 623.7441]
/Subtype /Link
/A << /S /GoTo /D (subsection.3.3.1) >>
>> endobj
-269 0 obj <<
+277 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [107.4855 595.4408 336.6387 606.0231]
/Subtype /Link
/A << /S /GoTo /D (subsection.3.3.2) >>
>> endobj
-270 0 obj <<
+278 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [86.8628 579.3248 149.1627 587.8896]
/Subtype /Link
/A << /S /GoTo /D (section.3.4) >>
>> endobj
-271 0 obj <<
+279 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [107.4855 561.3976 275.6593 569.9624]
/Subtype /Link
/A << /S /GoTo /D (subsection.3.4.1) >>
>> endobj
-272 0 obj <<
+280 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [107.4855 541.6591 301.5626 552.0351]
/Subtype /Link
/A << /S /GoTo /D (subsection.3.4.2) >>
>> endobj
-273 0 obj <<
+281 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [107.4855 523.7319 327.3494 534.3141]
/Subtype /Link
/A << /S /GoTo /D (subsection.3.4.3) >>
>> endobj
-274 0 obj <<
+282 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [86.8628 505.8046 253.8798 516.3869]
/Subtype /Link
/A << /S /GoTo /D (section.3.5) >>
>> endobj
-275 0 obj <<
+283 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [86.8628 487.8774 319.4854 498.4597]
+/Rect [107.4855 489.6886 199.5985 498.2534]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.3.5.1) >>
+>> endobj
+284 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [107.4855 469.9502 273.8479 480.3262]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.3.5.2) >>
+>> endobj
+285 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [86.8628 452.0229 319.4854 462.6052]
/Subtype /Link
/A << /S /GoTo /D (section.3.6) >>
>> endobj
-276 0 obj <<
+286 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [86.8628 469.9502 330.353 480.5324]
+/Rect [86.8628 434.0957 330.353 444.678]
/Subtype /Link
/A << /S /GoTo /D (section.3.7) >>
>> endobj
-277 0 obj <<
+287 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [86.8628 452.0229 199.1048 462.399]
+/Rect [86.8628 416.1685 199.1048 426.5445]
/Subtype /Link
/A << /S /GoTo /D (section.3.8) >>
>> endobj
-278 0 obj <<
+288 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [86.8628 434.0957 203.8034 444.4717]
+/Rect [86.8628 398.2412 203.8034 408.6173]
/Subtype /Link
/A << /S /GoTo /D (section.3.9) >>
>> endobj
-279 0 obj <<
+289 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [73.4132 409.0851 125.6888 417.7306]
+/Rect [73.4132 373.2306 125.6888 381.8761]
/Subtype /Link
/A << /S /GoTo /D (chapter.4) >>
>> endobj
-280 0 obj <<
+290 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [73.4132 380.4475 132.3418 390.6442]
+/Rect [73.4132 344.593 132.3418 354.7897]
/Subtype /Link
/A << /S /GoTo /D (appendix.A) >>
>> endobj
-281 0 obj <<
+291 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [73.4132 355.2979 174.1512 363.9433]
+/Rect [73.4132 319.4434 174.1512 328.0889]
/Subtype /Link
/A << /S /GoTo /D (appendix.B) >>
>> endobj
-256 0 obj <<
-/D [254 0 R /XYZ 74.4095 793.4011 null]
+264 0 obj <<
+/D [262 0 R /XYZ 74.4095 793.4011 null]
>> endobj
-253 0 obj <<
-/Font << /F61 259 0 R /F26 206 0 R /F28 209 0 R >>
+261 0 obj <<
+/Font << /F61 267 0 R /F26 214 0 R /F28 217 0 R >>
/ProcSet [ /PDF /Text ]
>> endobj
-284 0 obj <<
+294 0 obj <<
/Length 2387
/Filter /FlateDecode
>>
@@ -943,336 +972,338 @@ i]hj.(ɒ^-ɧ&JR^guE3s!-IBej 2&J
j
< x< 8 :9`)ۘߡc401U$-35pz*k8tendstream
endobj
-283 0 obj <<
+293 0 obj <<
/Type /Page
-/Contents 284 0 R
-/Resources 282 0 R
+/Contents 294 0 R
+/Resources 292 0 R
/MediaBox [0 0 595.2757 841.8898]
-/Parent 210 0 R
-/Annots [ 287 0 R 288 0 R 289 0 R 290 0 R 291 0 R 292 0 R 293 0 R 294 0 R 295 0 R 296 0 R 297 0 R 298 0 R 299 0 R 300 0 R 301 0 R 302 0 R 303 0 R 304 0 R 305 0 R 306 0 R 307 0 R 308 0 R 309 0 R 310 0 R 311 0 R 312 0 R 313 0 R ]
+/Parent 218 0 R
+/Annots [ 297 0 R 298 0 R 299 0 R 300 0 R 301 0 R 302 0 R 303 0 R 304 0 R 305 0 R 306 0 R 307 0 R 308 0 R 309 0 R 310 0 R 311 0 R 312 0 R 313 0 R 314 0 R 315 0 R 316 0 R 317 0 R 318 0 R 319 0 R 320 0 R 321 0 R 322 0 R 323 0 R ]
>> endobj
-287 0 obj <<
+297 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [86.8628 614.0499 190.237 622.821]
/Subtype /Link
/A << /S /GoTo /D (figure.1.1) >>
>> endobj
-288 0 obj <<
+298 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [86.8628 596.1014 203.516 604.8725]
/Subtype /Link
/A << /S /GoTo /D (figure.1.2) >>
>> endobj
-289 0 obj <<
+299 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [86.8628 568.1903 265.2216 576.9613]
/Subtype /Link
/A << /S /GoTo /D (figure.2.1) >>
>> endobj
-290 0 obj <<
+300 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [86.8628 550.3225 155.8157 558.8066]
/Subtype /Link
/A << /S /GoTo /D (figure.2.2) >>
>> endobj
-291 0 obj <<
+301 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [86.8628 532.2933 194.1104 541.0644]
/Subtype /Link
/A << /S /GoTo /D (figure.2.3) >>
>> endobj
-292 0 obj <<
+302 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [86.8628 514.3448 234.6025 522.9096]
/Subtype /Link
/A << /S /GoTo /D (figure.2.4) >>
>> endobj
-293 0 obj <<
+303 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [86.8628 494.5851 323.1705 505.1674]
/Subtype /Link
/A << /S /GoTo /D (figure.2.5) >>
>> endobj
-294 0 obj <<
+304 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [86.8628 478.4479 254.9919 487.2189]
/Subtype /Link
/A << /S /GoTo /D (figure.2.6) >>
>> endobj
-295 0 obj <<
+305 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [86.8628 458.6881 257.9592 469.2704]
/Subtype /Link
/A << /S /GoTo /D (figure.2.7) >>
>> endobj
-296 0 obj <<
+306 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [86.8628 440.7397 318.4276 451.1157]
/Subtype /Link