From a79be71669f1b6fa38df1cc606be8e2b39fc4428 Mon Sep 17 00:00:00 2001
From: couturie <couturie@extinction>
Date: Fri, 26 Jul 2013 16:02:53 +0200
Subject: [PATCH] new

---
 BookGPU/BookGPU.tex                           |   4 +-
 BookGPU/Chapters/chapter1/ch1.tex             |   4 +-
 BookGPU/Chapters/chapter14/biblio14.bib       |  50 ++++++++---------
 BookGPU/Chapters/chapter14/ch14.tex           |  51 +++++++++---------
 .../chapter14/figures/colloid_new.pdf         | Bin 48280 -> 0 bytes
 .../chapter14/figures/colloid_old.pdf         | Bin 8419 -> 0 bytes
 6 files changed, 56 insertions(+), 53 deletions(-)
 delete mode 100644 BookGPU/Chapters/chapter14/figures/colloid_new.pdf
 delete mode 100644 BookGPU/Chapters/chapter14/figures/colloid_old.pdf

diff --git a/BookGPU/BookGPU.tex b/BookGPU/BookGPU.tex
index 90baace..d96b4e9 100755
--- a/BookGPU/BookGPU.tex
+++ b/BookGPU/BookGPU.tex
@@ -173,14 +173,14 @@
 \author{Raphaël Couturier}
 
 \maketitle
-
+\cleardoublepage
 \frontmatter
 %\include{frontmatter/Foreword}
-\include{frontmatter/preface}
 
 \tableofcontents
 \listoffigures
 \listoftables
+\include{frontmatter/preface}
 
 \mainmatter
 
diff --git a/BookGPU/Chapters/chapter1/ch1.tex b/BookGPU/Chapters/chapter1/ch1.tex
index c69a60e..fc891b5 100755
--- a/BookGPU/Chapters/chapter1/ch1.tex
+++ b/BookGPU/Chapters/chapter1/ch1.tex
@@ -5,7 +5,7 @@
 \label{chapter1}
 
 \section{Introduction}\label{ch1:intro}
-
+``test"  "test" ``test''
 This chapter introduces the Graphics  Processing Unit (GPU) architecture and all
 the concepts needed to understand how GPUs  work and can be used to speed up the
 execution of some algorithms. First of all this chapter gives a brief history of
@@ -113,7 +113,7 @@ Threads are used to  benefit from the large number of cores  of a GPU. These
 threads    are   different    from    traditional   threads    for a   CPU.     In
 Chapter~\ref{chapter2},  some  examples of  GPU  programming  will explain  the
 details of  the GPU  threads. Threads are gathered  into blocks  of 32
-threads, called warps. These warps  are important when designing an algorithm
+threads, called ``warps''. These warps  are important when designing an algorithm
 for GPU.
 
 
diff --git a/BookGPU/Chapters/chapter14/biblio14.bib b/BookGPU/Chapters/chapter14/biblio14.bib
index ec060bc..8ad0aaa 100644
--- a/BookGPU/Chapters/chapter14/biblio14.bib
+++ b/BookGPU/Chapters/chapter14/biblio14.bib
@@ -1,14 +1,14 @@
 
 @Book{succi-book,
 	author = 	 {Succi, S.},
-	title = 			 {The lattice Boltzmann equation and beyond},
+	title = 			 {The lattice {B}oltzmann {E}quation and {B}eyond},
 	publisher = 	 {Oxford University Press, Oxford},
 	year = 				 {2001},
 }
 
 @Article{desplat,
 	author = 			 {Desplat, J.-C.  and Pagonabarraga, I. and Bladon P.},
-	title = 			 {LUDWIG: A parallel lattice-Boltzmann code for complex fluids},
+	title = 			 {LUDWIG: A parallel lattice-{B}oltzmann code for complex fluids},
 	journal = 		 {Comput. Phys. Comms.},
 	year = 				 {2001},
 	volume = 	 {134},
@@ -17,7 +17,7 @@
 
 @Article{aidun2010,
 	author = 			 { Aidun, C. K.   and  Clausen, J. R.},
-	title = 			 {Lattice Boltzmann method for complex flows},
+	title = 			 {Lattice {B}oltzmann method for complex flows},
 	journal = 		 {Ann. Rev. Fluid Mech.},
 	year = 				 {2010},
 	volume = 	 {42},
@@ -27,7 +27,7 @@
 
 @Article{stratford2008,
 	author = 			 {Stratford, K. and Pagonabarraga, I.},
-	title = 			 {Parallel domain decomposition for lattice Boltzmann with moving particles},
+	title = 			 {Parallel domain decomposition for lattice {B}oltzmann with moving particles},
 	journal = 		 {Comput. Math. with Applications},
 	year = 				 {2008},
 	volume = 	 {55},
@@ -36,7 +36,7 @@
 
 @Article{wei2004,
 	author = 			 {Wei, X. and Li, W. and  M\"uller, K.  and Kaufman, A. E.},
-	title = 			 {The lattice Boltzmann method for simulating gaseous phenomena},
+	title = 			 {The lattice {B}oltzmann method for simulating gaseous phenomena},
 	journal = 		 {IEEE Transactions on Visualization and Computer Graphics},
 	year = 				 {2004},
 	volume = 	 {10},
@@ -45,7 +45,7 @@
 
 @Article{zhu2006,
 	author = 			 {Zhu, H. and  Liu, X. and  Liu, Y.  and Wu, E.},
-	title = 			 {Simulation of miscible binary mixtures based on lattice Boltzmann method},
+	title = 			 {Simulation of miscible binary mixtures based on lattice {B}oltzmann method},
 	journal = 		 {Comp. Anim. Virtual Worlds},
 	year = 				 {2006},
 	volume = 	 {17},
@@ -54,7 +54,7 @@
 
 @Article{zhao2007,
 	author = 			 {Zhao, Y.},
-	title = 			 {Lattice Boltzmann based PDE solver on the GPU},
+	title = 			 {Lattice {B}oltzmann based {PDE} solver on the {GPU}},
 	journal = 		 {Visual Comput.},
 	year = 				 {2008},
 	volume = 	 {24},
@@ -63,7 +63,7 @@
 
 @Article{toelke2010,
 	author = 			 {T\"olke, J.},
-	title = 			 {Implementation of a lattice Boltzmann kernel using the compute unified device architecture developed by nVIDIA},
+	title = 			 {Implementation of a lattice {B}oltzmann kernel using the compute unified device architecture developed by {NVIDIA}},
 	journal = 		 {Comput. Visual Sci.},
 	year = 				 {2010},
 	volume = 	 {13},
@@ -73,7 +73,7 @@
 
 @InProceedings{fan2004,
 	author = 			 { Fan, Z. and  Qiu, F. and  Kaufman, A. and Yoakum-Stover, S.},
-	title = 			 {GPU cluster for high performance computing},
+	title = 			 {{GPU} cluster for high performance computing},
 	booktitle = {Proceedings of ACM/IEEE Supercomputing Conference},
 	pages = 		 {47--59},
 	year = 		 {2004},
@@ -84,7 +84,7 @@
 
 @Article{myre2011,
 	author = 			 { Myre, J. and  Walsh, S. D. C. and  Lilja, D. and Saar, M. O.},
-	title = 			 {Performance analysis of single-phase, multiphase, and multicomponent lattice Boltzmann fluid flow simulations on GPU clusters},
+	title = 			 {Performance analysis of single-phase, multiphase, and multicomponent lattice {B}oltzmann fluid flow simulations on {GPU} clusters},
 	journal = 		 {Concurrency Computat.: Pract. Exper.},
 	year = 				 {2011},
 	volume = 	 {23},
@@ -94,7 +94,7 @@
 
 @Article{obrecht2011,
 	author = 			 { Obrecht, C. and  Kuznik, F. and  Tourancheau, B.  and Roux, J.-J.},
-	title = 			 {Multi-GPU implementation of the lattice Boltzmann method},
+	title = 			 {Multi-{GPU} implementation of the lattice {B}oltzmann method},
 	journal = 		 {Comput. Math. with Applications},
 	year = 				 {2013},
 	volume = 	 {65},
@@ -103,7 +103,7 @@
 
 @Article{bernaschi2010,
 	author = 			 {Bernaschi, M. and Fatica, M. and  Melchionna, S. and Succi, S. and Kaxiras, E.},
-	title = 			 {A flexible high-performance lattice Boltzmann GPU code for the
+	title = 			 {A flexible high-performance lattice {B}oltzmann {GPU} code for the
 simulations of fluid flow in complex geometries},
 	journal = 		 {Concurrency Computat.: Pract. Exper.},
 	year = 				 {2010},
@@ -113,8 +113,8 @@ simulations of fluid flow in complex geometries},
 
 @Article{xian2011,
 	author = 			 { Xian, W.  and Takayuki, A.},
-	title = 			 {Multi-GPU performance of incompressible flow computation by
-lattice Boltzmann method on GPU cluster},
+	title = 			 {Multi-{GPU} performance of incompressible flow computation by
+lattice {B}oltzmann method on {GPU} cluster},
 	journal = 		 {Parallel Comput.},
 	year = 				 {2011},
 	volume = 	 {37},
@@ -125,7 +125,7 @@ lattice Boltzmann method on GPU cluster},
 @Article{feichtinger2011,
 	author = 			 {Feichtinger, C. and Habich, J. and K\"ostler, H. and  Hager, G. and   R\"ude, U.  and
  Wellein, G.},
-	title = 			 {A flexible patch-based lattice Boltzmann parallelization approach for heterogeneous GPU-CPU clusters},
+	title = 			 {A flexible patch-based lattice {B}oltzmann parallelization approach for heterogeneous {GPU-CPU} clusters},
 	journal = 		 {Parallel Computing},
 	year = 				 {2011},
 	volume = 	 {37},
@@ -134,7 +134,7 @@ lattice Boltzmann method on GPU cluster},
 
 @Article{wellein2006,
 	author = 			 {Wellein, G. and Zeiser, T. and Hager, G.  and Donath, S.},
-	title = 			 {On the single processor performance of simple lattice Boltzmann kernels},
+	title = 			 {On the single processor performance of simple lattice {B}oltzmann kernels},
 	journal = 		 {Computers and Fluids},
 	year = 				 {2006},
 	volume = 	 {35},
@@ -143,7 +143,7 @@ lattice Boltzmann method on GPU cluster},
 
 @Article{pohl2003,
 	author = 			 { Pohl, T. and  Kowarschik, M. and Wilke, J. and Igelberger, K.  and R\"ude, U.},
-	title = 			 {Optimization and profiling of the cache performance of parallel lattice Boltzmann code},
+	title = 			 {Optimization and profiling of the cache performance of parallel lattice {B}oltzmann code},
 	journal = 		 {Parallel Process Lett.},
 	year = 				 {2003},
 	volume = 	 {13},
@@ -152,7 +152,7 @@ lattice Boltzmann method on GPU cluster},
 
 @Article{mattila2007,
 	author = 			 {Mattila, K. and Hyv\"aluoma, J. and Rossi, T. and Aspn\"as M. and  Westerholm, J.},
-	title = 			 {An efficient swap algorithm for the lattice Boltzmann method},
+	title = 			 {An efficient swap algorithm for the lattice {B}oltzmann method},
 	journal = 		 {Comput. Phys. Comms.},
 	year = 				 {2007},
 	volume = 	 {176},
@@ -163,7 +163,7 @@ lattice Boltzmann method on GPU cluster},
 
 @Article{wittmann2012,
 	author = 			 {Wittmann, M. and Zeiser, T. and  Hager, G.  and Wellein, G.},
-	title = 			 {Comparison of different propagation steps for lattice Boltzmann methods},
+	title = 			 {Comparison of different propagation steps for lattice {B}oltzmann methods},
 	journal = 		 {Comput. Math with Appl.},
 	year = 				 {2012},
 	note = 		 {doi:10.1016/j.camwa.2012.05.002},
@@ -171,7 +171,7 @@ lattice Boltzmann method on GPU cluster},
 
 @Article{walshsaar2012,
 	author = 			 {Walsh, S. D. C. and Saar, M. O.},
-	title = 			 {Developing extensible lattice Boltzmann simulators for general-purpose graphics-processing units},
+	title = 			 {Developing extensible lattice {B}oltzmann simulators for general-purpose graphics-processing units},
 	journal = 		 {Comm. Comput. Phys.},
 	year = 				 {2013},
 	volume = 	 {13},
@@ -181,7 +181,7 @@ lattice Boltzmann method on GPU cluster},
 
 @InProceedings{williams2011,
 	author = 			 {Williams, S. and  Oliker, L. and  Carter, J. and Shalf, J.},
-	title = 			 {Extracting ultra-scale lattice Boltzmann performance via
+	title = 			 {Extracting ultra-scale lattice {B}oltzmann performance via
 hierarchical and distributed auto-tuning},
 	booktitle = {International Conference for High Performance Computing, Networking, Storage and Analysis (SC) },
 	pages = 		 {1--12},
@@ -194,7 +194,7 @@ hierarchical and distributed auto-tuning},
 
 @Article{ch14:stratford-jsp2005,
 	author = 			 {Stratford, K. and Adhikari, R. and Pagonabarraga, I. and Desplat, J.-C.},
-	title = 			 {Lattice Boltzmann for Binary Fluids with Suspended Colloids},
+	title = 			 {Lattice {B}oltzmann for Binary Fluids with Suspended Colloids},
 	journal = 		 {J. Stat. Phys.},
 	year = 				 {2005},
 	volume = 	 {121},
@@ -204,7 +204,7 @@ hierarchical and distributed auto-tuning},
 
 @Article{ladd1994,
 	author = 			 {Ladd, A. J. C.},
-	title = 			 {Numerical simulations of particle suspensions via a discretized Boltzmann equation. Part 1. Theoretical foundation and Part II. Numerical results},
+	title = 			 {Numerical simulations of particle suspensions via a discretized {B}oltzmann equation. {P}art 1. Theoretical foundation and {P}art II. {N}umerical results},
 	journal = 		 {J. Fluid Mech.},
 	year = 				 {1994},
 	volume = 	 {271},
@@ -215,7 +215,7 @@ hierarchical and distributed auto-tuning},
 
 @Article{nguyen2002,
 	author = 			 {Nguyen, N.-Q. and Ladd, A. J. C.},
-	title = 			 {Lubrication corrections for lattice Boltzmann simulations of particle suspensions},
+	title = 			 {Lubrication corrections for lattice {B}oltzmann simulations of particle suspensions},
 	journal = 		 {Phys. Rev. E},
 	year = 				 {2002},
 	volume = 	 {66},
@@ -244,7 +244,7 @@ hierarchical and distributed auto-tuning},
 
 @Article{ch14:immersed-lb,
 	author = 			 {Feng, Z.-G. and  Michaelides, E. E},
-	title = 			 {The immersed boundary-lattice Boltzmann method for solving
+	title = 			 {The immersed boundary-lattice {B}oltzmann method for solving
 fluid-particles interaction problem},
 	journal = 		 {J. Comp. Phys.},
 	year = 				 {2004},
diff --git a/BookGPU/Chapters/chapter14/ch14.tex b/BookGPU/Chapters/chapter14/ch14.tex
index 1acb080..2ce9331 100755
--- a/BookGPU/Chapters/chapter14/ch14.tex
+++ b/BookGPU/Chapters/chapter14/ch14.tex
@@ -13,14 +13,14 @@ The lattice Boltzmann (LB) method \index{Lattice Boltzmann method} (for an overv
 dynamics problems.  It provides a way to solve the incompressible
 isothermal Navier-Stokes equations and has the attractive features of
 being both explicit in time and local in space. This makes the LB
-method wellsuited to parallel computation. Many efficient parallel
+method well suited to parallel computation. Many efficient parallel
 implementations of the LB method have been undertaken, typically using
 a combination of distributed domain decomposition and the Message
 Passing Interface (MPI). However, the potential
 performance benefits offered by GPUs has motivated a new ``mixed-mode''
 approach to address very large problems. Here, fine-grained
 parallelism is implemented on the GPU, while MPI is reserved for
-largerscale parallelism.  This mixed mode is of increasing interest
+larger scale parallelism.  This mixed mode is of increasing interest
 to application programmers at a time when many supercomputing services
 are moving
 toward clusters of GPU accelerated nodes. The design questions which
@@ -156,9 +156,9 @@ site, may be thought of as follows. A matrix-vector multiplication
 ${\cal M}_{ij}f_j$ is used to transform the distributions into the
 hydrodynamic quantities, where ${\cal M}_{ij}$ is a constant 19x19
 matrix related to the choice of
-$\mathbf{c}_i$. The nonconserved hydrodynamic quantities are then
+$\mathbf{c}_i$. The non-conserved hydrodynamic quantities are then
 relaxed toward their (known) equilibrium values and are transformed
-back to new postcollision distributions via the inverse transformation
+back to new post-collision distributions via the inverse transformation
 ${\cal M}^{-1}_{ij}$. This gives rise to the need for a minimum of $2\times 19^2$
 floating point multiplications per lattice site. (Additional operations are
 required to implement, for example, the force $\mathbf{f}(\mathbf{r})$.)
@@ -193,12 +193,13 @@ Listing~\ref{ch14:listing1}: the fact that consecutive loads are from
 consecutive memory addresses allows the prefetcher to engage fully.
 (The temporary scalar \texttt{a\_tmp} allows caching of the
 intermediate accumulated value in the innermost loop.)  A variety of
-standard sequential optimisations are relevant for the collision stage
+standard sequential optimizations are relevant for the collision stage
 (loop unrolling, inclusion of SIMD operations, and so on
 \cite{wellein2006}).  For example, the collision stage in
 \textit{Ludwig} includes explicit SIMD code, which is useful if the
-compiler on a given platform cannot identify it.  The propagation
-stage is separate and is organised as a ``pull'' (again, various
+compiler on a given platform cannot identify the appropriate vectorization.
+The propagation
+stage is separate and is organized as a ``pull'' (again, various
 optimizations have been considered, e.g.,
 \cite{pohl2003,mattila2007,wittmann2012}).  No further optimization is
 done here beyond ensuring that the ordering of the discrete velocities
@@ -206,7 +207,7 @@ allows memory access to be as efficient as possible. While these
 optimizations are important, it should be remembered that for some
 complex fluid problems, the hydrodynamics embodied in the LB
 calculation is a relatively small part of the total computational cost
-(at the 10\%level in some cases).  This means optimization effort may
+(at the 10\% level in some cases).  This means optimization effort may
 be better concentrated elsewhere.
 
 
@@ -249,7 +250,7 @@ involving relevant data can take place, and so on. We note that only
 For the D3Q19 model, this reduces the volume of data traffic from 19 to
 5 of the $f_i(\mathbf{r};t)$ per lattice site at each edge. In the CPU
 version, the necessary transfers are implemented in place using
-a vector of appropriately strided MPI datatypes for each direction.
+a vector of MPI datatypes with appropriate stride for each direction.
 
 
 \section{Single GPU implementation}\label{ch14:sec:singlegpu}
@@ -301,7 +302,7 @@ of CUDA threads. As the matrix ${\cal M}_{ij}$ is constant, it is
 assigned to the fast {\it constant} on-chip device memory.
 
 For the propagation stage, the GPU implementation adds a second time
-level of distribution values. The datadependencies inherent in the
+level of distribution values. The data dependencies inherent in the
 propagation mean that the in-place propagation of the CPU version
 cannot be parallelized effectively without the additional time level.
 As both time levels may remain resident on the GPU, this is not a
@@ -350,7 +351,8 @@ complication is that halo transfers between GPUs must be staged
 through the host (in the future, direct GPU-to-GPU data transfers via
 MPI may be possible, obviating the need for these steps). This
 means host MPI sends must be preceded by appropriate device-to-host
-transfers and host MPI receives must be followed by corresponding host-to-device transfers.
+transfers and host MPI receives must be followed by corresponding
+host-to-device transfers.
 
 %To execute on multiple GPUs in parallel we decompose the problem using
 %the existing high-level parallelisaton framework: each MPI task acts
@@ -393,7 +395,7 @@ retrieved by the host, these can be exchanged using MPI between
 hosts at the same time as kernels for packing and retrieving of
 data for the second coordinate direction are
 executed. This
-overlapping must respect the synchronisation required to ensure
+overlapping must respect the synchronization required to ensure
 that data values at the corners of the subdomain are transferred
 correctly.
 We use a separate CUDA stream for each coordinate direction:
@@ -503,7 +505,7 @@ scaling for the larger systems.
 \begin{figure}[t]
 \centering
 %\includegraphics[width=10cm]{Chapters/chapter14/figures/bbl}
-\includegraphics[width=10cm]{Chapters/chapter14/figures/colloid_new}
+\includegraphics[width=10cm]{Chapters/chapter14/figures/colloid_new_gray}
 \caption[A two-dimensional schematic picture of spherical particles on the lattice.]{
 A two-dimensional schematic picture of spherical particles on the lattice.
 Left: a particle is allowed
@@ -541,11 +543,11 @@ to efficient GPU implementation of an LB code such as \textit{Ludwig}.
 In this section, we give a brief overview of the essential features
 of the CPU implementation, and how the considerations raised in the
 previous sections---maximizing parallelism and minimising both
-host-to-device and GPU to GPU data movement---shape the design decisions
+host-to-device and GPU-to-GPU data movement---shape the design decisions
 for a GPU implementation. We restrict our discussion to a simple fluid
 in this section; additional solid-fluid boundary conditions (e.g.,
 wetting at a fluid-fluid-solid contact line) usually arise elsewhere
-in the calculation broadly independent of the hydrodynamic boundary
+in the calculation and are broadly independent of the hydrodynamic boundary
 conditions which are described in what follows.
 
 Moving solid particles (here, spheres) are defined by a center position
@@ -556,7 +558,7 @@ where a discrete velocity propagation $\mathbf{c}_i \Delta t$ would
 intercept or cut the spherical shell (see Fig.~\ref{ch14:fig:bbl}).
 Hydrodynamic boundary conditions are then implemented via the standard
 approach of bounce-back on links \cite{ladd1994, nguyen2002}, where the
-relevant postcollision distribution values are reversed at the
+relevant post-collision distribution values are reversed at the
 propagation stage with an appropriate correction to allow for the
 solid body motion. The exchange of momentum at each link must then be
 accumulated around the entire particle surface to provide the net
@@ -565,8 +567,8 @@ and torque on the sphere. The particle motion can then be updated in a
 molecular dynamics-like step.
 
 For the CPU implementation, a number of additional MPI communications
-are required: (1) to exchange the center position, radius, etc of each
-particle as it moves and (2), to allow the accumulation of the force
+are required: (1) to exchange the center position, radius, etc.\ of each
+particle as it moves and (2) to allow the accumulation of the force
 and torque for each particle (the links of which may be distributed
 between up to 8 MPI tasks in three dimensions). Appropriate marshaling
 of these data can provide an effective parallelization for relatively
@@ -579,7 +581,7 @@ With these features in mind, we can identify a number of competing
 concerns which are relevant to a GPU implementation:
 \begin{enumerate}
 \item
-Minimisation of host-device data transfer would argue for moving the
+Minimization of host-device data transfer would argue for moving the
 entire particle code to the GPU. However, the code in question involves
 largely conditional logic (e.g., identifying cut surface links) and
 irregular memory accesses (e.g., access to distribution elements around
@@ -603,10 +605,11 @@ particle information.
 
 
 We have implemented the second option as follows. For each subdomain,
-a list of boundary-cutting links is assembled on the CPU which includes
-the identity of the relevant element of the distribution. This list,
+a list of boundary-cutting links is assembled on the CPU; the list includes
+the identity of the relevant element of the distribution in each case.
+This list,
 together with the particle information required to compute the correct
-bounce-back term, are transferred to the GPU. The updates to the relevant
+bounce-back term, is transferred to the GPU. The updates to the relevant
 elements of the distribution can then take place on the GPU. The
 corresponding information to compute the update of the particle dynamics
 is returned
@@ -741,7 +744,7 @@ we have tried to maintain the modular structure of the CPU where
 possible. For each data structure, such as the distribution, a separate
 analogue is maintained in both the CPU and GPU memory spaces. However,
 the GPU copy does not include the complete CPU structure: in
-particular, nonintrinsic datatypes such as MPI datatypes are not
+particular, non-intrinsic datatypes such as MPI datatypes are not
 required on the GPU. Functions to marshal data between CPU and GPU
 are provided for each data structure, abstracting the underlying
 CUDA implementation. (This reasonably lightweight abstraction layer
@@ -934,7 +937,7 @@ complex fluid problems.
 
 
 % use section* for acknowledgement
-\section*{Acknowledgments}
+\section{Acknowledgments}
 AG was supported by the CRESTA project, which has received
 funding from the European Community's Seventh Framework Programme
 (ICT-2011.9.13) under Grant Agreement no. 287703. KS was supported
diff --git a/BookGPU/Chapters/chapter14/figures/colloid_new.pdf b/BookGPU/Chapters/chapter14/figures/colloid_new.pdf
deleted file mode 100644
index 55e802208df4f3b57a1c381ed62387243d10f6c6..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 48280
zcmc${1zc2H)HY71Aku>1Ac%y-&?Vg|ASof;4Uz)VAfS}AfS{D5gh)vWNOuW{NGRPR
z@tqk&@Lt~U`~BZLfA#LG$IUor&wkFc*0a{$d(HLRqT&o-Ms|$rrAzrgFjzs%ARB#i
z3_d;(ldO@oiK8iq4d_zB0D(YE;%1hPM)ts;mU@mxqDBTbhDI3t{1^_7_C|VE7%oYr
zTG|COWmpe(3RVp`yiK;Oez2P=rV2iMshxUJikyS<BURH!OAhqz!+q&#itD=Wv*GVq
zd^*TvIOLS5oFrTK#<Tekb{^Mm+DzsizMtfEva30=u{^Zc-$_|cTyb+!Jh+&wdN8@y
zRoz*hd6dY!rEryZuD*%;<3)<itL_yEn?`pGR$g^@1&(~VpLyf^K|ik%qjA}I@7DbU
zrirfgH(C<Y3SZiC_v84i-;X~F?ptA0oO5>I+-QERmL#wx;B>TD8{X^A%4_w!J8IBi
zRk454b5Ts{E=KnuZu9~w>ul{ZOXu2)&AD=~9o+}tLD~gfX}n=`y;$2<ZjC>eQ4o{n
zBN4B7l$<&6@oJ4<(<E=s(1csJ`t0{B*FQf0;dI1}d334k){gc40VaZ@Lwt=Srl{WP
z;O(?IZf>VddIP0`K8kWX-2vQ`-nFLe>jIN1a=?(jdM)rf<LmF0A8j0@@H_dZiL9Y6
zV#|N2ZCsvu8N$8nzI=7du578f!8rL=6VVb^icERY<45G3&&S-x)i1vP*wNV|F0z?r
zTg304sI<z#E3vG-F6thyWgW-F5!u}*78W1c8#@x`cy!&*`on-QuNq>mZ(lrvehgoj
z23e9!`IGdIxo{$D;u`m-G9F&xl1`a+!Sj*>=ND-5P!y*56}`X>dO^X3{a6Z<;?5$r
z-mB@3WWAwIvnN|z#r9V7PUQFJWXrH_(JEOlhBS~BJRm>lpDGrcZxu%zDe=wLYq_o(
zs8Q4^t{RA(D{>*OLN5^EdBJQv5~Yk`E4K92i$$;b6&Q1$=Cg#w;LZj}!^!Xsb_<vJ
z_RhU)#b&?P8S*eIq3a%6+_yIc=J8thG2=Jh=9s+*piyr4PUNuoivA7r&D}3G4`v0Q
z`c0u)fbfO4-&4Gf6Y#H_2BAeK9;Q0U-1Qz%-t?u#L3&sKGG4|E#aI5cjc>|E?Q<oV
zTRl418$mFh4(D1K`#nu@u|}_Tcci8SwQ$0Whgi5gAx}{3m`AVWN59NyQrxi{l{4oM
zn&Yji&T5VRmMQsd`hEUeM9wMKnnu!RZ-f+j(yG$le>PgJsQpZ2+kofr4y&F*SzW3w
z{!2h(a~#^OVrO-{rZ3;ngc+lx9JDfwa0Ma`Tms3-w)(y(7igE*kV&X5OCsFC-%XfU
zr5XY=%GvF%d6dZCop<*5eup>}W%i;1(?~5vCe^5T?pyJDp}K_Vp~=!Q-b@*?-7y^5
zNX)^#IJ$}|7@LbvUm)Bv%egq?Je9*pXd7iqOJz=r-H%!F*-fZhPKcI8aEa7le(lQJ
z^jm@XsvA;%u2Ttk&*VvXsChrOC}r6D*pX+7IN=pNwODzji;l;&D-F&dE#NbhDDQV}
z3D?AXwtRW@{SpoG*w7MMLj*|CSEzcg)7RHc`KgFvHT$Op@};Z9{mrj&P`w8on?Raf
z3Hq1v&=qz}cWdr|X2F+)CC0_xa3MTMv6gI_36i{a5Lyx@|70>SRO9oD>h?=ByTSI)
z*$>N?Rt3OZ8J0;oM9nz2aj6Y-hwqYH%hAlfwzG)Q>iX)-vks+Yw6Xk_rGyW84eG6A
zc8=G}$p>^Qs_(Wf-H06f=0EPK)v`3FHe;>sbOW2d;-Jyqw^d>$T*{u&n1=Q`4K82(
zp%$K^mV}^4JCAD*g@Dx1*obw5FwF#EQ!GiC{#sr9=2C>$72OsAlt?c}rWpy}md7`2
zS|<xpLdsRvA3ywpYI3o)K-<%BCPdTmC0GNe+<~2e`dM~y>09xE(y=Esdf)NJ8ylZs
z#*8eOD079WZ7VM5X~pL#`%_<#$#~!zHplV8Mt#Q+U3n`{(x&~6ludipUAKfr95x5O
z))=dHSA3Hca6Co5z=oCt-n)RF!~lPJeOu;<=qx^BB8;dt^NG7#FVz|KGkJ^2D7IgZ
z<M)eMH|~G4=e%i+8yGYG+Mpu-!+YeNw`lTDP^hYNk>B@I`}DP!Uw3IppvKG>Vc^mu
zxui8#?ek3#^HxAwq`V9_M-*96w*g#?5>7`o3Fa-Hdui|6hX~zdWz;3Aut&k0vhCQT
z@&x5YYDCxhyraYTvm5WAamokz+kVS<g~R`hjrdD!z|+CrmhRAmrvZeOPXnG3_UN#d
z1aOg5sRkIYzcCUqu#OG5pIKg~Z1PH`F+4O2$C-dh8dS*a^0F2oZ>X5Fu@_g?JC3#+
zCqejve$qkE44X|1nhX`#C?<$!z()qVg0PArlu<ESsez~7epO7k0#oWuQ;@?tk~ak<
z_GQ;bDR@rtDhf~IDiESh@r~5bK$IjwzxN~=_~<Ntt5t_BD)8;8S(jJ$-x5|{x1E*t
zZjQ88p%Oe0+=yHbH&U7j$j{J!DUII4I3)NXGHY!M#gYR{k2TZ3c`R}aLEMg~^+BaH
zGKoc_zNCiB9UMLsvd<q}B2aX@XQXY%a5x;e;c$uqI%uvj7mvr#R(?r+{BUOWLINt;
z5X-#Fa&zifKzF>uCzg3y1?o@Sfu4rl71(g;ZFW&gVve?qEyzBxLz`2xudGS0nHo#r
z3X8f(6Uvyls3WG+lcXxaJBP{ys|_u`MbShsC5*&Gh#SvVzs)n?iN&>u$AaQln#lFo
zc9_7gCZ~zc1>xCB&dXA2O;zc-l_#pwrtP>5NiyC73m-YxI`EOO?uo`IB1a*n=@Caz
z4^}Bse;ys5+7Q1iTr-B!gS+@pt-1I^XviA^{Hg*~Yn@RMAKncA*4h$OYuatWuF0~%
zr&AaA2e+R@Tr@-2zh!)pcuD`FB4#%dyUMnAXy!2D!5g!SSZN>!r4e71=g8CBVE0wb
zdrvsgF}rc^!CiRw&iilz4#gx@2nFRbmXfyFC>#pv;I%R8qbl4Hm$2j^3WZTi+g?@Q
zsIPQkt$Pjui+6OiKeyrbC66*XU~1=$d0Hr;mFHvZ4Q)TYLOt$6FQnL%$1_{a_0U-L
zb=>{1JZA4r6$Ws0uQVlO61LcS?5l$#-XRQKc*h=~9Q5&<oYoySzLl3g=|a_DBFeD#
zw^|qE#uP+U7}+_rKI$%$%yuim83{%`O3#{6`qaNz5LM&>S_8`{Ox_iw-JdXd8jb8_
ztRl!dMq(N##ae(!VK^PbUj|oz=)J{{^(6T<*(Hrpece4i%STwA1HI@E85r2wGvhPi
zuLxpcdZOwXJti;Q<=K!HQbH_wgsiSqb%AeAv5Ac)VzkUJ;4=Hg@&GGgRFeB2VpNLF
zlzc4ZkjVMou=muIZNE04Wu_mvsXBxc0wxTI<$ID@TqZ*;gIJum^YlBfeP2`Y^?K&H
zl9!{Owz!^|U+{2wBY$m-Sbl*uyDY%8c%%}nEv0E47VpA7cWuEvn$nYjyQ8$6yxnXW
zH(*765|8YX_=H<WWEq>w=8NZbl{y#?u6WXte#nn?8<>5eCg-JGD>2DaJ=;>5Nggk@
z(Jz9Ql1ctd#PusYM*hoZp(y2<&z`a?%icmzSnrSe6fAq|g2Fa_w_T@yLarOz9dCX1
zodJdfJc{>oT9SR5m<*UNwXW?btE>i+ym=E|qdnC%Pvj=4J96z}cOT}hXhK4guE{}>
zh7j6~yPHpT#Ten1pSs~pMo#S|T&*cfo-h2dHj(7>2JdbQLncuWsk;Nl^lUXZCysN2
zaNc4EZ4fX0Lvh{h+5RAR6AVW5EEY=_$vPQ?Hrh8-sgiXz*Hf`R;9Se3N|i#LY7|KF
zt}ht&(nAf;!5M#_Xf{%(%8-mR%wv&hMxo#QJS;-HZG<p1hb#OLywoMM7OL}xT?@gc
zZ+fsd@_zhW6CEF*;4D;1UP;<!^*nmRebYyO;XxzaE`e>RfB1LgCOYW5DT#e3MtWSC
zXpye2zBWa!KJ(s|6kK*e>B5(!dAv)m<7y1rFA_@0H5s>kGli<S5eYa|_ObIPNWAWC
zW!v%4e^4;#u}bO*pL=B-dV|3@`f;$$r5a~f-YW0qr)wky)I{_0xg!LQ@7;E==9llP
zh86l~r&b!hqNbm`DCqoZ`ti$NZ=Kssom<7v9*1oVgm_Kdt<8J*v=x($`G+Q=8(6D>
zZ%OT8U7dgyMkkMV%lP{j_a^#^%olRZw>7aCUK6ddNoL>rrdPKDdc~KD8t-0APBSa5
z>yjN9%b<;%Gw5deb`r7JJbt_tWU3ma6JJC=yj_n|x{YB^{4lEtecyfz^ZMm6ogVv*
zKudSM#adfTOZQ8gUYn+>x5|>KXWn$o`h8Dr?L#AV8U&Y?qsh>Q22x$g^@|a4E~ws0
zZ6bE=r7i0~|L~53`lg9V8HX4*-v(QKo>kSAJ~xt2gT6O%-iYmX7OW$d;nFQ$cQi=i
zay)FlHsyyhp)h~VyK^I?Ib4`?_NwOCw+-nJ%9jyS-cA+eGJ{DAgg@Pv#G6?zkQLvv
zM!QNdGPSo~>h;dq5M)ZZfW*3{s9427l%4<J4nE1Caa=<kl7~ukT&NmBitpNwTKY&l
z+87W0DEW;30lltXwNlg9JP}F>gCVA_B$O$V*}fhYQ5W4QDW_OzE1Xm4)Zc^@(zDo0
zm=%6dF8c8emCY}J;PR#3-93CoVqcmdcV}*dyL@x3t!*vD!w8pX8uvf#$GG2i8CDf(
z@VRjJ7B8Qc&jq1<<TU+QGTZUbh_(h#S`)-}>);vCJQokITqz*y#wDSixbkiI(<L-L
zxGUE$(QP9Ov)Fa9=V$cpr=@M$UNb_}IC@K=b+Aj#CR-h!R%glxQj%;>x$;z}v{rKo
zp^3Lk!=%@G&}Y*&;Ig}Y|6R^|2evYp3>S0JJ?H|bL!)FVEYdc=@_fd}IUJ~r%hg7>
zBq#7nCPiWX@Z<aCr9dI91??4n$4QU1C89~MAG307Tw6_(0tbhv2YXxP3bi#yYX?^a
zy!O6yIIrNo?=cZyYM=SxEHINfQIO)cx4FN+v9jNuGASmvf7Rbf|2Bq^wc*cr6S#sz
zs*vy$@+T0WvT|^-LtX&+E6cAy78<&Wxj0HFI|5-Vh>s7_0sLapV+Q^LViFMofk8|L
zdcf~MFbn+P_;)6C1$}cP14rm<T-ZVEkT4j;<iY{s_<6+%;{18V1>*X7#SP;Ac?D($
z0qywTfWaW3{k&!Yfgyu~ycd`i1hk*mY#=Z+)Q0r4gMjw4p92Iwxg(ep1hk+1Tp;kt
zUBTQSpdI(KFoS^h^BN3dIk_(j3kYaG`&mIOC--Gx0|D)4KRbx!<i0E%AfWy1=LE5w
z+?Rz51hk+1+#r^d`?4~FfOg!^3I+k~=QRt6_2j;+tRSHM>}Lb9p4^v}9R#$W{Tu*}
zC)b=H)|30Pa)E&M^EKQc)|30PF@u11+|LFE0qy5C3yAIHzHF=@p#AJ;1F@almyI0+
zw4ePPAhwhHvT=fd_OqW0#CCFDHf|8mj{Dh}K|uR?4F<8F+?SmN1hk+1tRVK2`?9lv
zfcCQ=c$`k|%gzA;+RuJY5c|n}*||VK``OP8Vn4Yr2Qvt0$Nd~&5YT>Jvw%2G?#san
z0@}}hHW0_jeL2`cK>OJbJjloQ{rS9$+gL*$_7ip(GcYp%w}KAmCo6y#{$v*iWMmMU
zK?rom)z%2abX(8F2=Y4M!rlmYC+N7K9dbs7W_rRlE}*->KLXI=2A(+J4YZ*@6anrE
zyxai<9WS&?!rsQo_RL6*-yhlw`8nhs%D`Ri^{gFiA@?$HJ?WMLIodlxM*(?}2=FRV
zqx)tCMoJRGkeB@Yph`v#Hcs{iMh+n8d_huJKR*^^ZcaYc&+Hc`bgrS}IxqbNxzF+V
zewqvDE0vw}9ifvVZewo+?GZly{A>VySpa&n0d!>n9_QmZ_;Vka1Ns#Gmb9avVYv-g
z2XaO}5JmLg)MrGzg{SOqpIS(SV`3-vo{o6_GEIi<WfGcQI(#}}pBP_BN>)t&87)RU
z5lm!l14Mr<WabZz!W0q|>J(4tpJ2in`{F+Mx0QxYBV=lU3FG28nQ!QDjwc*COaC9O
z^eJ$V2l=1C9fJ!22nN8hazRWfK!0Z7Pr&y4Y2Y}I=>&Y@U)k3GEpP^yls|#PLqtT@
z#>4c#;(yOyFkg@n&KMon@f_?RGkJm?_X&2;5y1jGh=utlc2I)_eI#Il9pL%^+}M~Q
zu95Z6V|Q%YV1^wlD?mB`J7)S*($$|!I><Dh0QZY@oRHzb0=Tn2;KW)&JqoOVV*^A1
z7;so@fU^X1vHyACpuQ3|)>0V{Sz82=5`vroE3!5w-YM%`mT~jWVcm&M11uOf^Dow&
zx~TtVF(HoNpR9w*4cLJP2uKL)0M+wXSa+;kV8J>(2zbY=GhjW#Iul{sfOCL5;l*#R
zj`P&a{WsvCLB&6i<AS+J0R!3)B2vIyY=541FcvAtv}5k87d=%eF7xMc4myt~29xs_
z=T5ouAEARd@qa=GQ<(y>m{6GlSj@j6Qvj6&L>I8Lm{5HQHJHE2l;HEc9oM-s1v;YR
zIscE~oxJ^-rE!29kdF&PjR|#kfYtmP?vCr<I)yBx14HmOG4jr&ay#bK__y8%h%asy
zM*GuTCoEpw^W^Ec`O+a_cTmMJN}WlW1Y?<Vh$#_^Qo2cBo-OIk(cwsJ#P>ozH{2Ut
zLQf?1?`39|4wAcA<7WKZXhLW5gn7R-CUitF0q<1v{My&R1yij8MEXEz#|i@M{GW~u
z0A&O-(g7kx1|m`@ff#`@HRo4kpiGC$dk$)6Gz!-*dkGy6Oi(+~uV*O-Q<1_7;)bTe
zz(5-AkHZE-fdas$42cRTDM25`&$u~dKU~psU^}Z&PGN(YLOIo_zsSZ7Q-uNq-~etw
zO6;%T219uQ#NWrjDP#T)oU!zIE)F`2CsvZ{M4xcMOrM<4`3&E<VX99czybMJNIIP5
zj}wj?hT`NGaLm8)&8Yso1PXKxPhk5MheL-06Ek^A+*7{6RGDzHLtq13+h2k0-?HR?
zoBDD9BJX3q{SKQ6^Lc?B@R83+p8$sEM8y9`L3v_@&$11sngoCh2m@IDh9=?u|3#Ca
zoo2k0L(cPT+$R<c5__|q7)a<~V8XOhOMA*Rm<keLQ4Cla0G6)6f8IR8RF6<nVnX%E
zS;)N4h3td|ze9Fv)BYRFplhMW*#CkI3?zbK7`Fk!AFBHS_5Y_eBsc7|2*fs0vf=@t
zL9|Gt>}js#eCv2Ti6>s|ml%PL2o_v}E?oZ$IGCytz?1_E@PPFH3&??iARksyn}`S`
zT7zOIgZDdjF6HOtxxmaP$qWeTeudk|V}c2IC+~m8w}F{qs!1T=9R~nF9Pp=k2L_gr
zV2d8qTmtA}W-<O+)p1chFI93pkN+ax@sMBw-l@VlV=`f?Odx44Fl1K@kShQKTSfjn
zez4OgBACGHz_F?n0d}|a4WC&I4^_sU{dfEgW<DcRPS<w8%%_3#e{^~$%Jnz;!BnU~
zmUbWrvH*7a?;r>}xk5?#E1aW5r2HMhkWt+J^AJ3vTFxQ}Gud+bD4cTect08R(SX6S
zIAB15262CXBZ~rNhMjbQ`oCiaLj2#^1ei<dx&H6hBHBOv->JU;j|4m+_*nuTZ~KEG
ze1PzTK=&6?&JgCq)c+l4on-(^N}2lhSJv6(?zs*SI*}(1@Kn7(#{?4xc*^24<b$bt
z0iXlO2hFJb`KST%(7+14)0E0TQ<x@<=OtCZ&`qu<;Qb04j)w#j@J=lAZ`6aSdVwlW
zAZGX*!t;1vFl<&>0kZv!(gE2?_e*vvUq5fH2MpbXd;;9BEG8H_AeaDmYJAVI4yK|7
z2pFK*XCT4y#}()C#%<UD2gsG<a1Ypec_vUdYCJFd42EtKKL@x|EBD`=9dz6G@e^<g
z-0>cCSUEcYI4IrzMxcJYvmVC4{WHg6EPLL15BOL13Zhfa7|T<t{72{@Zv0=+!8FMN
zq@bZo2Y-We$A=$a0^MnP?03$Yu$=4VfKPkQ+5z}XQtLkgck=#cz1;CR4p?yxSpI+}
zSpG^f8VoQURubhnJ@zxfawZ?`Qgm)?0G-8un@i|`j;Zn=p*t_Va(vVVhR^}DgDlql
zjo9G$2oX$JcO2P4ccjSRorSLQeCSTXE{M52l_<~w!34VV@+!xtp<o3a7&v$Y0S*it
zGy(&j^^fb6<AYwXK@Sf&B61v;qy3&1lRGyp2A#<h=Kb220)~zVCh(n?R5?Dh23z=m
zlo)Vu>aV25j?d%48oqxgHWkiA@Rt+>2zVwf1|1Yk5IiCHS+{q5ybxvx0-Fw@1cauh
z{{jJzPfo%H!PC_AKM1IDK71#t0%AW;2?!k#OyD~WIZh*m<5Qq8gAcN*0Qnyn^j{(1
z@c~!Zzz12^`?<1UfcTHR^zgZPY3OABG@)k*2ptqm5Iirta(rGFRtQ2CWdX7EH$uJR
zL&z|}4wA`)uE;{RWS$Mul>^S(1p$W6;ZNYsQt#AdLFe~>eL@nD^8b$Xjt^AB3OF!e
zIU$EyA&Yt}z?tShE?th#io*oH<3&BlPH5&2!-A)KA&hCxO|d{H@&vt8;RziOENBNk
z;ePx^r-t+R*gLGygDmK=00V|B=&=Cl=|7Ji<O%)#><C$i9ERXMe6cwj0u#hHlN(WF
zG)CTO7er~nPaZD)Sh(Lg<*0x+`8LE5_nT43>!cqYTOW)Yg7k~jaj<TDs`c7_Zph!R
zEn3HI%dJRv-%ZnE3Er>;SO1*lykGPCd!FSCY5p7gpj8R}g&$1wEKuwq7y{TqF#O~A
z9amm}3HvCOfz3$3i63A?y8#eF07vhBEeV-$ottlgmU=iL;OUaknR)+@0G=qLv%>SZ
zjs(mI2sNF62?b2&-#GpQJ}!{~I{<+*u22Bao|xo6AH9>f`uDgUIv|*s&+}3)$JIVy
zhaM2{0kJ!Tevshr&(ja06n;0K|J!ZSQ2L2bLTWnz`~&s9lRR~RkJ!%DozThr$-gtY
z6IxvbCJ3H9A;0ktri(*R^Z*A4LGQ0Pz~hoLFyWsFH1h(HFF@oDt@iNCfEr&rSHVDQ
z+?-=TPb0SfXh2Ve?5Tn|E}#P|3PJ&dY)gUw_*XpOzZJ~?mV!_KL7ghhY^=)N$kV^j
zGvPSbfI=to1ie%J2`yFx6Z)N(cR4O|1Y7iu6Q7V0Ie*-M9#?RJ9sL0G;9j@4<J;r=
z5Fk__RKS_AosZp#w17CjUuPD;(BZ%YyHg6EVIE9(vp|lVvjBUFp|QhX!47t-MbOQF
zQ0>Y5q5bUQ`oy_*6I#>j-^_!S{elU4=OtW@3x>gpdC;w#5a|Ng%)cUCj%%U8gn7qX
zIYAM*_YChL86pJ#GMvHHxb^1*e$bgbf$ucq2^|qk;5#qva$MI9mheG?cSzv=H{2ee
zcwweIAv<x813yF{_jxw(Ga5gie<%EaSkKeI4>~4T0Qk$Zo)w<Q1^8eGAjIoI_y?4X
z1YGu?_k6I^Ex++kZ<Yp$9?2fr9v&{Z_FVcwC-Q`Tr@94N><}jCowvW`xJ)9<(1TRT
z0o3!c_52H2&*KV^u(h6WdL+cOGyhNY&MKEv^q>QR33?~*{~PyUt6U(e1)^R6?)??x
zd0eLxcIcfL&ofCEqtSCMC$uW)zqtn;5KPcJFX?hzauinFgYpi-Kj3Zu4tlUlx}1sl
z5MTelVg~3mo?v$xGeC>G!UVhX(k;-UuQ0221U)<iiPnLI+P{Mx>|_gcn-Y|HA_jnf
z`AxR`59B*vwg8!nlT|t>NB-B#eP;yhY0wATTDH(tcE~wC$Vxk~<oCyA3k-|dLIH&4
ztDyiwD#rba9Go|B6VHhp&Q`QNlktREN!wqM$yw*e3Gs+9q#z(XA=_PmZ99JjK^RuG
z{SCph&Tr~m=Len069alGU0_z!_DuY7hJP@XF2}nBA=}LUQrG}3Bnz7rhvR*o&=m)O
zfM~40&Z7JeVLRuEe}Y7Pr(rwHO4~vs^kYYQ20oY`B7&MvAnJpf&%d!?1ndxoRoMPJ
ze7`Rk1y`OM`Ej0PlmP_Km`~`SV4`5oOT2Kxbis%XNb&)P_}GA_?ysDn1@?Bs3P5Ou
zTM-Ayf-Rl{a00sjOyV<C@7%qD(7F6+LC*pRD+Ti_HE`Dd!M4yXD-i1d|3SAc{dxJq
z3A?Ndw4^&F9;5=G0V^H|Px3T${~yr%t<vpj+6+1-SkUiG4&c;)LMybwOuaz9O95I;
z4pIf=FC6HDWvyGtcPSjx5AApEsh!Kc-%8z{x<8oJx`k%Q{^|Z;TkIBs9^@=0wA$4l
z4;=u?!_0I-ush}+T3`E_+MA&o=VN!ibb*ctCd@l8?E>Rkw}9OQ93RAR{uRdu1e>rz
z4{AA&nFq0)zmre*d;rf^F3>^21i+IA<Tu9$bLDa@T>i!`Yc3e;mSgfkb<1!3GdLf<
zGntn&x&=BYn80`5Mi&^DzXejaK!C{#xPiY>f&f}?7B+F;v2aPX%=amZNB4_Q$9aX*
zLePQ?_el8MU1q=4zdeoGVO9Y5S6cNf^<Y~87xHx&0CsFZ0^)CA2g@3`kZ;AHgkTq3
zap^2}qUU3GvX}!2*-x>9T@_rwBc0?<PbDX`hU@=bavpzm4UofR=LSQQuE!lLAZ`}c
zvmHPI0yg&F7HXE<jP6|dR>rVQ$X7>#IV$;?WSjyCOCB){$t-CKyN<!s)>+u668MFT
zzKldZ^5fa-9nYO{ft3UI&nl05R2(|CIy5Z?_RTjRzkG2=6*(k9Fbt%0n^XeCi%BXV
z*jhi@(kg^(o`>{B87@b#JqfPM&YDeAlO0onzQs#gFnz##m{(oUYWFCH&iW!eFFz{P
zyYMdh{`O?J=kmsIaA@y3>$*ByyIN7<ii+0u=`WdgU1Tl|BuVQD5wX%<VrXwC`wo9p
zgVddyYYOZi03Q+P&3*oiNL+FF2wqa~%FT95xPl{!)hkW`>Oxj|6dd6QaBFjgF){w&
zckOKhgX8dU9N>p>`-9zZcZF`kD-o&^mX+N$fve_f5KwuBX@tt}WtY~2kU_zL^JDJm
zq57`7q0()4)|RW)g=^kiaGSH?;br@;UcKy!Ua$#is*7$ynQqy8B}H#$a1FckP&*8f
zWOStomv9^B^W3bq#!*8%gH<Xc$MR7yxU>-b{Q;tPa1=xC+c5uRJW<u@E)Q>pe!_bg
zW%k~1<0%>?wWh2=l-`f98k^tOVS5k5gRX{kXm|~!&YEL>_uZ$wPzGLeJSq>!^rxNq
z?l-#(cRv8`%2G1u*|OJ-!{F}W5qN6C=5RR5pm=|*QQfaydO-^*>X#NxZPqTOHZ-sE
z-GLih>8dT*e3pC<p|r^UfL<Hj5(~aC#Ft?)&1*Lbt7V&rmKx;%%@(!TVFSS%q;nsR
zcg(@U10?S~C*TKnv><4pf^v6X&DAR^x)kh>uzR>T?dowffbKo;UBMY~-m5YZepTUt
z>h-L2fAGu**HKv}BPr3?Yt|Hn#iO3Gqp2gSi6hq9!$I7myv<m}qr3h}@~Wy{?U9EH
zyztKskjmis?qa0E?Jm*M7an-&B9)aD+8?AmJt%jSYe{k6@`{XdLK1MMG&eBbDu_T-
zXSkAalV4ain&C=V$I*u}FWj#j)Hv?+n5020{dLnj?nrQkCI&wyrPv)X4P;1zd>dZB
zKAHk?0AI_@ked+(?r*Gbz5q8pjpDtuRF`jR*%g3fX9qt%0^dc7zP|Rj8t$G^(L)}7
zCir0<Za0KyJB*_?h_=P>>Q;5zIHdGJ*`IB`cG3Ls5<Bw9Il|cBzd?UQy0!+VUgt%j
z1DD&Q8+7rV`M%Ajr50T7$RucJ!|)I#C06qQc_d{;e}i*Z3v<&3XH#o*5_H3R;Lv7O
zW8{;~6Vi8kCf|>U6N;h^9Bjh97JcS|4>1!p`2@JpW+)qpmj;iBsn=`+H>*GtZmLr{
z<N^8e-;+Q{YihJoq#ZYtu}G|!)>}dbUw+D^`%)rtCzdjqKEZdJbea*7?+Y!isJOet
zVOl{Bs-y&()@&4$Kw+sYTvin^I*B-=B9%U^1h=rStXKCGKEZq0xhg+eT)$fxj)vrF
zi^U#oZeSl}(zn|=pHipB%?H?r;HgG7niCQ=dvFOnG}}^9?*~&#rKno4&D(hxjT4mL
zw!bz*HQ$PV8N0IL6CUoDNAa;4K4U|JZ;DIR*8Ou{JQ>TE!w}k^m%#MN`Yso2-W8i4
zJ)#!Wn|oV+0d=0KGpuzpJ1Ci2P*Sdx$AB^9;lPI}mDygtFIhJ|zB2Twwq`XT=k2m0
zx{&NAf3T&`yEGVRD~+2$n_A|cb&#B$Pnb*s4>q7+qV=SG!zoGfIDz+}?$KQIiWR&6
zjOFHwZ=VMUlGG~j^KV^6coJM_oRmm4-?>2~9i^Koby#9(LboFwKl%u9gXvY<LHF9@
za(y9Mts80-RIcpm{>?l}_;A_b!kK#M(VNDGT`gH{jnmzjW}<uh7R9}m#UeL^3_!_K
z*Xy*GF=px7kc>ut=+vi{6g>_2p|rHzuux(uc9WrXK;o)uS$5}|WYh<)J$3&OVlR?+
zuB(M%)Ngn*9+9K>wz8};_A~b(9H@m)SX~HT@09F|R@fvc9l~bW*3ADwjxnW!gKdoX
z=4NL?aQ{<_<@-1Eom4|<E55B+@x&%ZWh1yMUsd|BH|iCKjH;w!rqXm%z}RSs{@do1
z50&FfHQXEVZr<IRPRPk6;rBCi`!g_EnV4$?Ur~8uw_9_e4mgTSBzdLaIR;$qwqY=q
zW*Ql*aCW@d<wmB55TiL*zHB$+LxW9atv~FfO*}S2;+(RLpYvV2qC3KddzbU2ym5qE
z`B$BE$11WFhYrsiJ3{o{g%WWM%;21N3j6y8n5hoTw>|X{0_J3y7$(WHbwn2(CR>uZ
zcc&VuY=y9WExhw4_{5i!Li&k^K9dWKGz;@uY^~9ZbNvu4FYETMr?t*?QZSnFMP2{M
zeu+X)M^8pK)?C5_HJOWCnUpnm{1HLHP9i>EQhD!{7~%HqtK}`PEY!Zz66m>E`Vq-K
z_=?9CjLQCwXWS((l!^0}jC`*xdhEvHedP!TX$jvemY3%x)Uba@5`QYK`Pl2U`<0Bj
z#!XE;+Xr5@1#O3rjkWoPwR$U&|B7?bTm@lR+vwLowP^uYv?|sb1X9x>C+?ss?X@gl
zvS^%u6`mAh>f9+aQ5AI0*Pn5IDEGZhiGGM6fa_9+t?<L*yPp^XH|gMmx&d3mBmT`>
zW^0SP&tlh-biDSWW|%&#I(nhVxXe7C^1oIiXr>c+pr|s@8YCH4$n!*kMRp%+y00ks
z=Iq_|&?o8siI;CqVwes2bb_3WpKi1AJ1-j!w&V<BKQw!V)D<`MLIaFOfgLtPBgSj-
zS|5AxMXatt33;HEW4jXgZA2HN)>zDt*2-Ewk)c1LK*uh<8|?)7<D}~SlF!R-6-Rkk
zxnT{dDwW~IU4hLLQ{pZk2i3Hw2N0+YKHhP-AsiECV&!c3pcuDA1x0s`uQRBy12j<o
zM5?@~SHayGWq)Fag>$VBGgG$Ug~)U`O|!Jpj6TmuNA<gJO~pK1AvQ`ROUW-DiKljo
zu`mkZmb?vPjS;y^P~Na3TW+?OsjLlBQKvR^38$50^my*Cj&n)fv*<B=$C6U0C2ssa
za(C|x&$S63p2t?N^Qtk4@Yem*zJeLZvlfaRm&~*<uH=ugu*!}pH=0-uJb6stsBfub
z_QYu>LnF`3W9wE{XNSh?H<a*SLf+kZRf~~uXi-fsw7UI8LOsEQ!t}PX!K2}8w`94~
zN!1EJuk}P*3)dE0M{tzk$0Tks9uzN|oRZ251wBj0_`GQla>1aL;)h$L<)^WrhOxT1
zEXTKq<cz7$s)jMCiQ*eP#uN%`94sZYcBx7$UF@~^3a;7{uEaP`@g3Nj5$+H@q{wpa
zxG$P><9_@7*V;@%33I}eu9RO<Bv6D|R16z)+tHgzSqQjp^L(G{o1klZ?tqdp7<DUL
zgP0+4sZhUqHaCljr|VMxC>0%xXv3~_o4z^Q`+CuDa(e#zQ%!!)Xr^|#H-|;1zea&Z
zc4VgCJMg?%Nh>I7+j|`!-sHGZQFOc3JDIJNfc}QW%^Pv-+mbAga>$HkGj_^@&^LN}
zZt*vk!f~Ls707DCTkbdMZX>O*cNr7SEwJ(r)y9g*?mkTniJps1-B+p~zn^*U<vKjG
z?(5Ka1TtKj^2!I*mP3<pnw{-_s~MkUmwxEQdFZ_s4b!7Dw@Q%c`}9UtI~&x_<ec<u
zXLvCv4Qu(bcbaf``^AMSHTLDlxl2p8Yx~B)x)L!zM4y%~;uHq%H|YfGk1y<U$Td*5
zn2<((u|o>Ze8kX=+?KhZ(XZWsN>rjwWJTeqs9L=jByrtV#NeQt%OOxl-F=^qRaRBn
zGF}0{>jPETe3IWZ-V2ZQPUj|g#o|orPuBu2up%C6kH`7NU<IS5n+_LT0sBwo(RL7W
zal1`;BV=<1CtiJ&I^LhT=5G!jf7$!BnbQS1Twz`|d0JJ?Y<=hJW~jh01x>_^>}Lu0
zFPDjVd3>d{^=_!TiIyrJ+%TtLW!ZenYN(U9QT#bY`+@EuGtNbZ_Ap$VN}T5l5;<QM
z9@|r<R>sH~cQ`i1TQgxbm4yYrx*g9lY*2rBpywU&YyL;A_79@!U&tA~tuw80<W48%
zG>do$f0IOi+HP&DMgQA18M5T@>f4J368gp0rm+~xET6U-*GH`dJi@+O*1OD{<|?Zd
zE-_SI#A*}ch9R#1>`wM=MvpD<UVu3+<5-nH;ehpArbznq=2|tF`sKP{r^RBuZm6K)
zBcpguJPYOYT!cV-Zw%b6#%S#4S*YBE!uNU!!gZY*tabQ}xe%C(z;9+&cg1GHD{{%M
zG|0M|k?$2LP15w<?>DSTrM8lYJM?H3-r)G^a@YM?-{*M2QPT{x+N68s^Vn;<l&z1D
z_7-OlkD3PkKifZ(`h1&PVlFf|wv)rT5LKiGnV(DirPDByRl$VHlfzxfS8Nyyby<g=
z+?PB{HxibN<~=Uc(%gN{La`p$Ge8eNGHU19-fxbHjIutLvUZJ#-amerp1hEgeI!ob
z$nJH9gF_RXf|lOLvcc4f7wcE7f6!SC-Vq(qVN;%bY)bp-E6?Z!myymY_m$b#c~?9p
zoD`xG(H1txoaM6E#S`xk8kGs8N?_Kk;c20v-=1x*>6C2!9;xSXxj8&pgFx%$$g7Xo
zq%@ajmF}$qsxx3UH%Ak-v?i+3+BaWRU$Kqz@x9iA2@JXZjnd04YJs0vm(^1Pq;7V*
z3V-oW@U&+~agT|LElSZ@P^1ef9^WE#ELzV@MWl_Twze-`ELm37TiM%o+p3Bl6unie
zansIFI+qiJlE`8o)0d!Ol%ZdeN`vw3P-7w`-~0Fi`2Kn##f&#U!U!lgRjsaGd!CV@
zzLgr5Y20DyJE~n=xEi<GVYPXU^HBHcGjG06HnG#)!{!tN#>AY4ow7<i%Gl((_omq=
z6<8`>@AW?_y|jb#a!|t111~DG6O6r5m}fx8+>S9*^?g=spAoT5_nlX4xWMf71+l(h
zoMC2?_mlBPg57ls!K)j*Z^M!J7pqKJEh}XYmEck{S^Fv1{77t<gr!62dIfb0)n5}+
zBu3HVP<i))7ba=O4{8>Jg;W}XGa2Yt*^$+7ez;=?-?WEE|4RR=!{V-)!DZG8@}@-6
z_-t?-;`}gbFc>FC`BPW5Gxpuri3<mhR{bTs{nJy?124&?S4rLCuv}{~9aDKmJ<A!1
z2OrTKk&9HDv!Z+tEpo)R^4omXM01VW%xC?p9ip-i3nw=(Vm}aLnrh^Ia>vG)w4QOi
zUhQRsj=W>-{>{y$48a+fjEx#%{*hHa?ELL7GFV@hGfBu9TsvRib?_h>MN{9M$L`@(
zObA^tyLdk|Vc<oHJ8@0xwbIn4Y|QHQ8pCoA<w)gq%4U?0A@LETcS}|ojGd(qaKSH?
z30^X;jDm-K-A!^h+3tfZHsW>Z@)b~6-_vz=_^!X9t}^s<TfE^B)00n9K>YAvav&^$
zy5bSDj!6y?c%+OO!SIWUQ-G{rbsp7Nj;Msg2s0o4Fp0XgF^$tT41sUCwDKQ<6Q*>k
zUhi<<SI@iIHrrs0;bvf;G_M--jh<QZPW_B}fv$~=fREme>K7A~2LvAJvqCEdfoLx7
z(c(Vq>{#hlWv;WyJZ(g+8adA$*;)<0(O%Cl9wVaM5co_<IqZ5}dYS=eLi@8VJVE{X
z_jRXB76hp*XuD<sZN%Wlt5K{V`(cCEvGclp*A=l6Cj=%eQ7%PXcI|D-jn|H=l!_Sg
zIjEk(8*f}zKoqA@Tl5thsdzAPJt3KL8=hl%YU#@=x7&set91UfGlm$k#~weggX5a<
zbxS)PjHyI|q#yEnzT8v{$YTtJy`me2RL?Eq`9}46^k}5Sc#LH8wG1Zi%*H;TS_$bJ
zs}mdYH`kEDs=x}Uyt!xTfxUFi-iff&_^3iL)wx(O4PN11)%#Ai&Y&oo0WB$|ogPj*
z+px8-g*gPOcMdzuoGdd#S(f$%wfM@izejIRze!EI=%-j2<1W;39ns0D$f5bN&_&!>
z<%4fTVPn-o_mnIeZiD1CD|?K*<*$opK2_{8sZT0hy(^p2OreMRwrJkHfeY_CEuMVt
z{cgWBn;(26?W-#BF8$n}K~BCXb;zdm{W`?UEJ`D7ZQ=2BLVzj1WJA;ANx*K}``NpY
zYP?5HH}U$5EyNcF1y2wCr_DcbI2uoLNeap?X0Uk3P|r>9zP^=qqq0sohbBaf{w?o8
zzBd2Y0g>^nc)w1t+GT1j`(kmqP3n!Hkjt%)f)dAzmkbs|;&evKTEFwn)cI}CzNXx%
zXLch^dSNB^+-G9l{qfse%ApinjbVSPVZW=6W0BnB+sLe(9~ul?e9RYUqaXU+j}pHT
zk%>myzU#}=*?eX3Y924wT@<E>3xszK5h5rXhZ;C)qLCL;J05~B^4{yV5@1SPz9;uq
z=gM<_l8&r5<vpH?3yM>>JJ}2~#>zFu50{PfXW`t9)5ZIoB*mNy1>1VV)f~Ql{Gd&x
zAwFRtBN@?TwCJB8`H8SZB4bIdMOe~Vf>ZWY@k{CslN`!?ic7kVPIK4&w}Y9pw?Exb
z6-D~-wW3ANd+3pw9uMBv4ZXVkI@<Y9-LvoGM!_L`mS!jk41)n`7@CO~#_I!L<_M?~
z))ya^7)PXU+p0f!6e^ENMIrEfg&#zt7Mo6sVj_Qa%V_}JMN;*4_@PpiLU}H_6gd_T
z+fck#1nB|Nt;?EnWNb#^x8%{%WpT@~5}lVsH9kIi{I+2;kH=Byn_0T+YK7_KE6=4}
z#tA8T%i24KVy3g(R-NwR3&w4OSy3+-K7>ag*u0m$yUwnbYEM1MTdU?sD1gI3a;-M7
zy6e);2>Lz4E<DtrnxWT<F<Jz<wb%Ch(Ui(ATo~^iSF^jF9-%<#&Q`ZV=<F0z;Q2Xv
z=knx-GUgq5ZAS-xeDuD%(u%|0{8^qJt>FywxE8TId3Y8@3<Hi*n(|bh@?Ye-dVXl>
zP}C8BWvWTTv*^GlOJVgPkkFtM6j{ooeQHb->o|*FM@HA6j;~cM#2Ts>8Iax@_&Un6
z|7*XFZkCmPNb=an{Rul9RYyL$Op|qkN@;ZG;MXkzgZiZFOb=ujlN7?gHh2>!8ZTHX
z1qVnhYTbE{iARyf@3T|E`;A!!XQ0u!dS6fub@=XZG9!l4-tvgMF<kuawVL8D;}eMi
zK3(5Ei%R$d+12q2&8{XqDEHIWb8t!!&fFs{mrCK2p|sgRK+$czNS2!MqR*T@1<5~D
z6|<ZoInyuul53OL*NH6bEcHoZXPWo7^k3&tXhnrJ*Waf<z~SN%XPqU(yz_N4xxX=z
z;vx4QZu2<h#2_j4P7p1RP-!Bzfw@c24JrwNn63It)ZWNHgpx=l76=|xx|xz(zVdw}
zPyylk7)IW!xR*+IN6O?(ku9PKlH?z759Nq#*cF%%INf@rFNK3MKO9e1X_;ew4c8=U
zo!86mMPljaYh5b(a2rXW78Bjf-HCg`JvUKHJ?*@1q`WnEeMhEgqd`be``VIyugwjP
z(j?Rq{kapDVUpHxb~%m4S7e^sTL=U4GKn#YnK;^>Pw9i78Z@rSvR_Ze%_53=)wW2^
zse^Qz83!+`Kv;unY}IBU;3HRvakxmS3wE!@lZvvDp@o*((E~WNIJ9lgj}HEUB4dTf
zSY39jy`o0+Z*C}CV_v>c`6Em3Vs7`v8glan|62{dVsG80)fwD`HF`|y$lM=#3fK7*
z)U6|U#mQkJQQb5;dg+WK@?4b8gKd=5f_$33LA>HxNEzr|uG>u=hmZzGrw}1VMzHIv
zMl8xBy*Ii{DkT*!Zt>%&A~u`Q7TSr{kRU&(a;-*YdsUn=eF^^=tN5qcmE59x9|rDx
zBQ?b#>MFM>nJnbyu1S+AXHX06n~76PQ}Zv?@^$j>1b+~C%hQ-2kB}`;Q6M*g-2!gW
zo4fh$h48a_OXDO-#EnD`E*(Tr<qz57urVF(W&>pRK@wG~EH)K>H+R)Lx=SncX@oC`
zkrnGhrsNQXQI_m*iRN%`@O1>e{BAHdB$e*JzD_5D-GXXf`pGN)BR(z;mrvKU-)@oy
zEmc&;mcklKt`R$dP~3CL^vI^_&mGQ#DTGGSgiJS@RqYtD^iV75CH=zrUh3T5h@xF0
z>~>1iOyT9Sfvb6atyF|d)&GHJ{hrPT<m+5F;&4p9t9_p*y`nxr#Zdd2h95muf5|Lv
zQt|R5C(3ZVXOs6^OO)wa`X}gWq6{wXHgb%?)tl_5RgHI3zn*)q^$F#OVs2aFML55?
zdE)){Z(ChNRN00OcJem4uX&Ox55@}J#pabj5tDU->0hK(8ZOX93z-xnr7g-v_=deD
zGvC4)V|pU>RFgatfk-+b>tb@Nu8Zss5r<W4k;cbt<Jgn;k^v#KLl35PXIc_dgI6oV
zGKm&#g-`KEx4R(gVqtVyJ^YsT<89{)8)CGERG5<w!jS8t#O&?A#Jpv^t5kukOo6T`
zKt7x#OD?S7T3FL&x@k?0S;*{2?^^Cg%*CZXTGu4GZhFx@;zCPf=A*pZtZ9MRH(T&~
zsdeH4aJDAQksH6SQnd|`sQK&_pc@e3zH*+RsipF>LGNz@f7QH_fZi|bz*xz2-{RwV
z`M!DG)$IPr5+Rk^s+oLD*4wX?UZQ363GZEUuY74Rf8#nG)4s;DXBJhdpwhkYEzEkw
zT<4UahR*{S^~gf~JYRC^ACC#|^;DPQYhU&7@S~t}Oi;(tuI6N`m49RTm>JXLvhfa~
zLu{1JlgoP62|6x5V;e4Wy**>=L=xt<CD*+yqiN$C+t_t?gv~G0#NLS>@3{4FLzulf
z`jPx}K$ZO+>y78*?Dz%;7Z<JNhp6BxN?+N%4CJF8-@g;9MZDM6G&O-eccma)?V8;j
zT1N!JgsG7bB|_?@5UY)+1@0~iA}Q59vgw-3ZO$p61~N0__B`M4`|Tc8?9cUx9`f9?
zigiKIIpS;B*?EN8@Z=%#txgY?F}*@}cKGKE_Yy92EgzD)NDPN)Vx@cC$c`1)S0Lle
zTs^!Ze~T=``Rf%u@k!zMdbonyQ)X2drPIWeYllxtm*lgnpI+Osy-~7lFKj$}fGe)y
zE080Q3D<<WSgLO@dsvaoS@!8J*k^Cd{MPt2Qny?bgmImo#T8x*v0H>|<WKrpLN8=L
zrP<;hf0ZScfps5s1j}c{gk`Wln7o<Sz8(?IiFmx?w!!HA17|V0;J2hJ$@j)ki-<p%
zG?Xkp;N^850Y8)H_`ybTm-r3(N2bIQn@Mcr$5hIUXcKA)OHI%H(q_VJmGNTkta~Y<
z+bJ4<#EpMZ>5@KMofa<F!?Q{#R?{)`__?a{m(kh|$wzTw%ND5OC=}FzKb*hw_B!6O
zDoS47VOPw(r!P;|oNQO>o=#&U^l~D!UH^gS9M@6<<Lsli7zLT)CM_uQnnB^cpf6&e
zXN~IO^V^Th4c|YBd_%fKo<F!(E;@%#ZZa8CPJ@$MgBNL-o`Ku3Q`?-(L-v9Zw~oGQ
zmLTRU3NDr}u8BZ)dit%#_FhjLQuTwlj90y6M(k#{FW0XiX?8wg_>$B1m9kdr0tjik
zX}yUO<EeJObC;Yu#x()*)mau#H4why?$b9KH<LUg<5V-8o$aE^^ByfzvoA@_jXD&)
zMZ7=pzJMb#zel%8LsZMUelp{MmPA_`C338%w4RRcTiqJ25@+vyt+vI0W`6Y&0^7<&
zIUMDyy<Nqb%(vT~W0C37V-2({Xspy|PVO!=grnD#ESU~{Pr#HZtGA?%_BV0%dw<tH
z;Y*0<`_aHipU{{sTvH@{jgkwUMMTZwvbD=jI6vN|u)Vw4#Qn^gJQ;u8*MeqZIPzLN
zR=z{ytLrM5Rb!Ok4+j0!E#f4t5n*qQho}ptxbL*VTlT6fJG0h!x@8p?J<GmkwUeM8
z5g=u_=ktDkP1?@g@+SK0Lg%3k5jM)!pvaUe!=<;@wIDMAr3jCG(%crEULHz`xo>P4
zZMFkKQ3%z#?#t*L$X`*VK0i$f90^+9L{7)%`v~q4rM{wC`wZ(_(eecu)ilcPZ`5V`
zp*zpfgE+duYuZs)hU<p>#%ujt=~HiC)hu0YJxIWpB)g(9{bR32Nd7w4Qs$k8hcpx)
z!9jFM7V{tRFiXv}5h>K>dz~7-Kk!D&*HC!v7RfvZFP<?rwQbi|e?iff;tKqaj!%RW
zWxLB59Cc+cX*m<f&7>#}-AY&eFs%}s^vi3u{EqxP-n>bTMNM(l<<I*1b*XrsQ}jb7
zdIP%?mXNf}@O3f^d9A4jl`%tpTdfBV{8jwbzae2fooeYFl0_*=8JBW({_-$0;(J@2
zIN>+{iAO>hk4Y{mATOs2`9FMO@A*wm*b%$xL%d?3htIR&?ZE0=6HZ)tKE;iQc@GX!
z<TxF^R;E-sSIEB!wwL%8<Wz)!i)j8-<N&Qk_Jyz~i%;BE2BW%Xq_29W+7jJW1L4(f
zHjW9Vc9XBsy5WxHDVqU-_{?e_Uq-kLeg1I2H|LFmi%5rzcwaG1a6<V7G6$5{TV0>N
zKE1TWx{Ln_nU=`?`A)|}4^kGywc-bM7C9*oag=GPyd`F-{A<L#@g7nYA1d5yp!M77
zCca3?u}iJ|@VRqXmzVuT>qIM&0P?HLYy6d@@I_iEffGXy`^ewt7H~zg(rd&lq08OA
z)gCEjfoSwGI{$mLT@wqhteZhIwcwWfaN-I9`Nx%SceN>O<jtG4HYU3k-uR6?vmBB!
z^6+%$^%-c(P0D>XMlxmUnpGBun?se8v^;I*w3McR7o_hhNGK8)EBN`PZN8PR#R0RE
z$#%N3&!?%xqTonXr(BF?3euN~OL_YipZv&~gtJ5WNah}hx)w-ZTu_cXU=?woyqF`E
z81J*+fhlNzX)%(D3AML{iy2?B^2>|Cx{^F%yF$jcufFf$0;b<kc$GICrVjeZ2b6Nk
zN3PR}Z$&15{m_&5NW?LCIynYB!(^k4QP(giE+Xt?L;og#@;Tzz?Fk`YVJ)SqI`-aG
zDRHp>JsVTfDE-zFyFLZB;L#SuHD2p9_?eq;vbYV58yoQit1fMm*~2%eT1kKU+Hs@E
z@3~)R-IP8*%g`<fk?F_hFUEI87QZ3~Ybuev@5b=bF<UYYM+g$c!k^DjExB+vxDJ%Q
zph8OJQch*d$tE45ZAC`wX)|v%E|Hy{LC$BjFO6iePEax7KLh?Yoi-Fh9b)5nDN*_1
z{E*RXR?zc|7?f}V`~@D<$$Op=RF{S^Mea1{)(l3cNa4hZHx(x|jGBMslu)x!NSb9q
z$V=%9YziD(*WT+KStAzB-+NGcgVFM#hnQN4YOgQvQqOG?r>^<TZt#cf%|vZY-bs~>
zYVyrH2$%uXvL6~gDiFdW*K9@b)0w_SB%)}mv-=qSiOszj^MafCjI)1MSjt_rTclcd
z(B1_H4jbue##yV3Rfd0bp^Fi=W|rO^5X#%1@eosa<xxRU(b{AG`PuODN}354=5k-a
z(ArHT{JjW*<&o*b!!eT2k`tS<*PHbwSBw+t?FB5{5+!0a>6!Xlzh$$?=Du%2pD+xe
zcxJ2RkZZ7Ou)<7FXw|p<;Fj%$Y#orqgy=M#WTBt_YLiEu*mIE)OzLl3zDG{D=|W0@
zB)tnEE7iiY?;qh)1O>6OSJ6|8w_ccQn7006dPLWTi8L3O)zAq~d&SdpNmUmYeZb+#
zgOC*}{%6SWwwcxovlCeQxrhhd(eI`^_H|T{9jTM9t|hA%4|??WjSZC>RL4$5(A14x
zeGxCe9W}IBd%5t69@V(v{RX4h9Q&^5`9PhQdx?`@KMrt~z*Y5j^XqziH0}tCXe5s{
zBq8l-9q!)VIx<fn3P7W`%`$TFYfv7v6|(p0%Id5BSih8hFAOm%ON;g?7#TO=o;t3x
z%7vgyp<J$cSwloa3fJ8gEF)Fhy~fQ1#a!9yGpiWl6MLB27VbytT+j_<E_kuplfyRG
z|8$4T+*S*Y(>FSQ;8A49W5u^T`^@h~QYPY`jEGSg%dHoK>k4%XQm0XL<*vC0I7EE+
z9J)s|xsNg46?p}>;-;^hD@PJqLe0?k2zC<Iylms8Lz$QP99yMT+qQ9-&1NG>OFur_
zg5@GX%dBrcQ~B1_MdjP}Qc<P(usR#lB-#fMmls+29?t3BNa7d4m3@|nhb?2iC$>To
zLz8g5cz3_QCSm#0*b9e{Zez2OYUXv$_18<G><@OZl!9K)?1`iqnq%H&LJOS`HOZY@
zP`DGcs43n@wvd=isI-dZ>o4E^kPX8lXI^D&0X6M5VuWayD*@ilfI^_asI(xR9910u
z!JQ62+(n~$B&sCu&$)w*GFpbqvE3-t&NYarWvd09r2_P-`^*S0+hS?u-mSl@c-r$l
zu`=kX)4Ki9G>x^p`TY@A<qUK#3XQ8<%@1C%g7-f~<&D0>*}6+&F4GbzB8&XVN84DS
z=~bmE=JVK_CC0Ab+N|yKdhOyK6%wR*7tf-{6!R>P2K6B)FeMnM-`~1}lv%BU^RN@#
z#UpDUzn(mfCBS_&%lFY$QX9dzVqCt;wd%5BeEj6?)^`aP$SXUnt_xl7<EJ>HPIOo>
zfQw9@8*8d_ibS@Vjzx`;pm5e#_=Nv>W$O_tA&!x-j52zLgKN^Iy`EYu^L5O8gZ6-d
z>cqi~BkwJHH6EraL!G*SFL*J2piMmFtIwC2Z&z8_@S%p%h5e}cHXkvL^~uSPdWWz{
zCZ{XDUc8(l_!?~^4u6uh4JW6SPU5x>_m;yxhf}mw+&G7zE~4Tb+h@{PFn=)SHwL?@
z0PPylmWDD_5pg%r;ZP*PkZ(<Y%*XNxFvG<=bULn;HO_<=G&5HyFDGJnN(aO+aukHV
z$hC4SbqgGE&CI7tptQ#QM2aEgwYRv6mBkk%L0^99p-%r6K?Z+K;YL9>zZ#>&j&pHz
zLi}T?nnnwAE}5GKwOFov3eR6Qm!aO8jm=P?VdEe}8GO4Z#Y%5&kZsQ&jCZB{TVb}m
zPE&H7ALiP|WX;1L^*ql%`%4pwt>WLwlkP|~0O6=lfBV8jj-NOD!OKgC%p{?u(?|IZ
z_o2DDf?_O55m6{(zsT~9>b9yx74(*Y+E_Y7jHfg9M1H~Qb5%>Sm8}J@94TIvf5cxh
zmd`Z{rH+`>aV+^#ipE6L&-bMstk1Doq|E;Ap+z-q_M~g#?uW?C=)EBfo#|Ke)b;$n
zj|)=+UKUh~lUs@oqHno~Ri}7wDx@FaCw6Rk*c|bS7`op1awqTMjpv8g`ibs|=mf||
zXf(XZTX-w%ru@jad;Wt~D0yti#g&&TRfs(zi?`cMJv}rrn<8g0Z&wVs3hJ{AT7~X?
zVzB?5iHL#8H+*BIMyi;(*EQnZrQ#*lu%@G4sU)UWBzv-Ic@4&)$C=NDkoAMDXPw(T
zHOZALGR&nl`WDb5Yoye5T_1~ZCG&jCa0|S?MjfXXSxmxnLpFQ8IAZu(fAa|5COb~0
zT<!vcXR?s48AA`5xj}S-;<Gp-RT<AYra~#LvP;>?R)JabN;{$>)w}6vK0egKefx<4
z5g#cE9Lzq3Rbu5k&peXTb`2|~Rp1-W`|vKrIPShq=-s|nPM_5GXz8Skcae7SBn;&6
z?FO|%3maI*YZS~cvv1v0Egl+>(b%^vd{5t=6X9@g6!C7`kH+`XCGVaoTo~LdoerL~
z_mAedVe~G_^pV7Nap?MOOX;h~Z;i^1J|Hd~VeSi1+_OZ6ALA9ytJ{8Ry1b2pDv@=t
zA`tjI?SP45)Q;|)6T)Y|KOXqTUG~#+`e(k7{LEIx|NHSmetrxGM|&eZD-4$;?Fc!W
z2GE6om3@q>l_D{ZOIzvEB$b_8^{#4`U47zX7D4EPc57y`Ybqz|zU2PB{TgrWD?ef<
zM$noh;s(4gg*x#}vFQ2=bA1}&Q5;Ck3n^DQ%r)D54q7W@yp%Z+uOW%vbi;}f{HoA(
za0C4+5*+@DkU`<{g~XN5@3KFAJ-8@8e=Yj?H^Fp@%AuaxFg)Ri|5Mu4gve1uVG!}K
zM~N3tokK7`?rwEebyt=DyK8=ygcx^YHbGH(XL@HFveQdXFGepp2?_=RN<4_*#i%6y
zUIHrS5dXm3atbR5Q4ow?^rXSy_j+bGQ}qT#oUm;A+gE?D>b<II>V5Ca^{20Ve(L&}
z_Q|`RIk)$n-#@vw>)m5NT-*CXR(H01eDD3Izp8J0<K~5hUyoJtXL-lg>-X#&-#<2;
zt}Ttd`ta(_M?RZW^KagLDQQove|>q&i_c#E^oysyKl|sI2iJeRdieZ%cV4)>viQ)s
z*-rA!%P(EMID7Nd;*mcdzp(!HPj9*JZk&C8>!ELd`>^_8?zQumZanbUFR$!8dGYnz
zPk%IOPKGY;OLr@D#@z~AizW|0x0*+jd&+M8Xx?j8#cEwveaZ?z2eTFY@#y}keMc8|
z9V}KB*Lrj1%E8hd7@x~KYkj%nS*I82%`(%|<%#IYXgmgm!nj134wCi8xL>LVQD?Jt
zcD!g!bvwuNNHnFUdab-$lSuPO{h((m+yFD#>b|__EZ-8Duk)27k?j|!hkY9lG!Wzq
z&7-)vBHP^D&bw{8>^{UdFg)z0iTSm~x={qFqu=Uu*2}53e;t2O_3D}BtcsLu>N=1O
zo{>ea0et16XZ@G}+zp=G-EEcaqT7ik7mDsww^wWcO~HktT`%{bOiJNC{7-@7o_>b0
z|NH->3Bv#9S~OUI6C{+U-+f7X0-H<|Ai43Iu#F$l^i$#1I>|J#Pf&jOM7O}eX_hv_
zTL!Z<Ok&hun}@Pa-fQ%+zi5*-`rI6Y<up^SVUA+DtGrQz+lYFgo9#1jBUsYW_EuI@
zWfV`uazaMim+N}<zRAf3>{Qw6a?$EdlvQWPj;5tURoPx^<^QGFa0iCtar=Xq$*}Cp
zPQP**P_&s;bkOY+RlYO^6$&vXHa}6CBp~Wviu#yVj@Y~D6LkleP?qMv$Aq9%g+8VX
z1=0GLwj4_oCDHTc5<_8fK9)*K3?5)9ajW{65frl!U<oBM2{6a|Vl^cf^X06ia9JO7
z(y=z2VY))ncZ&M-$|6BE8*hyC)Zy5W%+rQri(@n#)(3KOScl&RTp5#7lK3-xIc2z<
zCdQvYPN#?h4X{KI5rbb}qRAKn%n{YQkEIk}6JiztQvqfq?~5^%-q^3t#^g-`ETvT7
zKITT~*(GdU#m<q(@ycTLQHV@{S;|h}W3i-orvNkLJ$+0PJxGY9Y@JFa$lLj4Rl?S(
zRE`{#FQ+xLOQ|ifQ~7eRK{mF;Fr7-+U^s7>AtI>u>%$a<{y-XpcrZCfF)DsptGP}s
zKB1gblmfyp>kQMW5|Y`B5-HJHcx4p=ox`yyEUR#>Da3PxWwlC}O$(iJAC^d_1A(aw
z>k~=JeOQvxiNfnMTnS}`3NaDtN~D-fCI?p^Vn$FV+MqrdLx>qoG=jdI(QH11ae|k%
z%=U#<M5pZ6XB8zU3oyfMOISnHT)v!>l=LsecwgKIow}6G5&Ss!B|=ctw$}#S_=vIz
zn_nboCz61mtRrR=AB(yDA}W}Unt_~Uwu;oW%;zBUBip;N>e)Vsv~YYJ(lGk~zY4Q+
zU_=1q_fL(`sY-c$T2MrwUseldgE8nqn67lfd>t4+nLhx=_VYN=l$p|RH_>2F3o*;q
zTAbj}5Xz;B*<hSX3S;)$NDW)}U<qbxH^w&2+AuNKi%BWXlHZ0Iv3Fa+Y%sQh*))i&
z*nR|T#Qy8}ImbG_CY@%!IK~k(wAI*Iq5$*9;Vc+^d<=Us^H<oRn0-iL_?{;WWiavD
zkVqmM+LpwjE9{GmQ>H6mlxNDXPr}j}CWtX0kV}~DOGzj3Kn~^`u2bx8#7*JXr!+ek
zOQk7SXCP;pZ%39XV(RkcwBowb{M;@z96l>+*uEv<5}6K?5xU1d7_NJyaN)Yg5)b`>
zOyP~gzF;3@^`$tphH^%L>^aau>e$&9Zj$TDjL^Mtl%m|%sTrYr3r88sVQ*x8u{P#%
zXe2D_BvFp~?c%)$n<K~1)Dp+ZaE=td=7l;1#(ac=D+zT9jCiTMzTni!)+sQyP8FOs
zYZtW6;ap-nV&64@F(09@$V0sVWBY=_aV?xTExEr3#?Iavg~RazV}4C*!TcYN?ZdWT
zR~cS0Rb%viVZL}iZ@#qC>zui=#JdPm^?<l=w!4IP4$TXR0f|6X)y+43R0#_2ZQFJ~
HwrA{bfOm#D

diff --git a/BookGPU/Chapters/chapter14/figures/colloid_old.pdf b/BookGPU/Chapters/chapter14/figures/colloid_old.pdf
deleted file mode 100644
index b884a42bfc1d6f584c054341bc45fb89420e3660..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 8419
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
QgRpoU2BfNLW=8`3ANto|L;wH)

-- 
2.39.5