From 755dd2143ccc4cda37129051b5b71707197fd112 Mon Sep 17 00:00:00 2001
From: wolf
-deal.II has a unique feature which we call
+
+deal.II has a unique feature which we call
``dimension independent programming''. You may have noticed in the
previous examples that many classes had a number in angle brackets
suffixed to them. This is to indicate that for example the
triangulation in two and three space dimensions are different, but
related data types. We could as well have called them
Such obstacles can be circumvented by using some template magic as
provided by the C++ language: templatized classes and functions are
not really classes or functions but only a pattern depending on an
@@ -37,97 +37,97 @@ it with the information that is needed for that. Of course, parts of
the template can depend on the template parameters, and they will be
resolved at the time of compilation for a specific template
parameter. For example, consider the following piece of code:
-
diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-4.data/intro.html b/deal.II/doc/tutorial/chapter-2.step-by-step/step-4.data/intro.dox
similarity index 74%
rename from deal.II/doc/tutorial/chapter-2.step-by-step/step-4.data/intro.html
rename to deal.II/doc/tutorial/chapter-2.step-by-step/step-4.data/intro.dox
index a7e72aaac7..e282d9e2b6 100644
--- a/deal.II/doc/tutorial/chapter-2.step-by-step/step-4.data/intro.html
+++ b/deal.II/doc/tutorial/chapter-2.step-by-step/step-4.data/intro.dox
@@ -1,16 +1,16 @@
- @image html step-1.grid-1.jpg
+ @image html step-1.grid-1.png
- @image html step-1.grid-2.jpg
+ @image html step-1.grid-2.png
Introduction
-Triangulation2d
and Triangulation3d
instead
-of Triangulation<2>
and
-Triangulation<3>
to name the two classes, but this
+of Triangulation@<2@>
and
+Triangulation@<3@>
to name the two classes, but this
has an important drawback: assume you have a function which does
exactly the same functionality, but on 2d or 3d triangulations,
depending on which dimension we would like to solve the equation in
@@ -22,11 +22,11 @@ working on Triangulation2d
and once working with a
Triangulation3d
. This is an unnecessary obstacle in
programming and leads to a nuisance to keep the two function in synch
(at best) or difficult to find errors if the two versions get out of
-synch (at worst; this would probably the more common case).
-
-
- template <int dim>
- void make_grid (Triangulation<dim> &triangulation)
+@code
+ template
At the point where the compiler sees this function, it does not know
-anything about the actual value of ``dim''. The only thing the compiler has is
+anything about the actual value of dim
. The only thing the compiler has is
a template, i.e. a blueprint, to generate
functions make_grid
if given a particular value of
-``dim''. Since ``dim'' has an unknown value, there is no
+dim
. Since dim
has an unknown value, there is no
code the compiler can generate for the moment.
-
+ + However, if later down the compiler would encounter code that looks, for example, like this, -
- Triangulation<2> triangulation;
+@code
+ Triangulation<2> triangulation;
make_grid (triangulation);
-
+@endcode
then the compiler will deduce that the function make_grid
for
dim==2
was
requested and will compile the template above into a function with dim replaced
by 2 everywhere, i.e. it will compile the function as if it were defined
as
-
- void make_grid (Triangulation<2> &triangulation)
+@code
+ void make_grid (Triangulation<2> &triangulation)
{
GridGenerator::hyper_cube (triangulation, -1, 1);
};
-
-
+@endcode
+
+
-
However, it is worth to note that the function
GridGenerator::hyper_cube
depends on the dimension as
well, so in this case, the compiler will call the function
-GridGenerator::hyper_cube<2>
while if dim were 3,
-it would call GridGenerator::hyper_cube<3>
which
+GridGenerator::hyper_cube@<2@>
while if dim were 3,
+it would call GridGenerator::hyper_cube@<3@>
which
might be (and actually is) a totally unrelated function.
-
+ + The same can be done with member variables. Consider the following function, which might in turn call the above one: -
- template <int dim>
- void make_grid_and_dofs (Triangulation<dim> &triangulation)
+@code
+ template
+ void make_grid_and_dofs (Triangulation &triangulation)
{
make_grid (triangulation);
- DoFHandler<dim> dof_handler(triangulation);
+ DoFHandler dof_handler(triangulation);
...
};
-
+@endcode
This function has a member variable of type
-DoFHandler<dim>
. Again, the compiler can't
+DoFHandler@
. Again, the compiler can't
compile this function until it knows for which dimension. If you call
this function for a specific dimension as above, the compiler will
take the template, replace all occurences of dim by the dimension for
which it was called, and compile it. If you call the function several
times for different dimensions, it will compile it several times, each
-time calling the right ``make_grid'' function and reserving the right
+time calling the right make_grid
function and reserving the right
amount of memory for the member variable; note that the size of a
DoFHandler
might, and indeed does, depend on the space dimension.
-
-
-The deal.II library is build around this concept
+
+
+The deal.II library is build around this concept
of dimension-independent programming, and therefore allows you to program in
a way that will not need to
distinguish between the space dimensions. It should be noted that in
only a very few places is it necessary to actually compare the
-dimension using ``if''s or ``switch''es. However, since the compiler
+dimension using if
s or switch
es. However, since the compiler
has to compile each function for each dimension separately, even there
-it knows the value of ``dim'' at the time of compilation and will
-therefore be able to optimize away the ``if'' statement along with the
+it knows the value of dim
at the time of compilation and will
+therefore be able to optimize away the if
statement along with the
unused branch.
-
+ + In this example program, we will show how to program dimension independently (which in fact is even simpler than if you had to take care about the dimension) and we will extend the Laplace problem of the last example to a program that runs in two and three space dimensions at the same time. Other extensions are the use of a non-constant right hand side function and of non-zero boundary values. -
+ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-5.data/intro.html b/deal.II/doc/tutorial/chapter-2.step-by-step/step-5.data/intro.dox similarity index 99% rename from deal.II/doc/tutorial/chapter-2.step-by-step/step-5.data/intro.html rename to deal.II/doc/tutorial/chapter-2.step-by-step/step-5.data/intro.dox index 2de8f398a9..43e24bfd97 100644 --- a/deal.II/doc/tutorial/chapter-2.step-by-step/step-5.data/intro.html +++ b/deal.II/doc/tutorial/chapter-2.step-by-step/step-5.data/intro.dox @@ -1,7 +1,7 @@+ This example does not show revolutionary new things, but it shows many small improvements over the previous examples, and also many small things that can usually be found in finite element programs. Among @@ -35,4 +35,3 @@ them are: preconditioned iterative solvers for the linear systems of equations. -
diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-5.data/results.dox b/deal.II/doc/tutorial/chapter-2.step-by-step/step-5.data/results.dox index 44c133c8ba..3cd03c5bb0 100644 --- a/deal.II/doc/tutorial/chapter-2.step-by-step/step-5.data/results.dox +++ b/deal.II/doc/tutorial/chapter-2.step-by-step/step-5.data/results.dox @@ -36,8 +36,8 @@ Cycle 5: Number of degrees of freedom: 20609 182 CG iterations needed to obtain convergence. -------------------------------------------------------- -An error occurred in line <273> of file <step-5.cc> in function - void Coefficient<dim>::value_list(const std::vector<Point<dim>, std::allocator<Point<dim> > >&, std::vector<double, std::allocator<double> >&, unsigned int) +An error occurred in line <273> of file+ The main emphasis in this example is the handling of locally refined grids. The approach to adaptivity chosen in deal.II us to use grids in which neighboring cells may be refined a different number of times. This then results in nodes on the interfaces of cells which belong to one side, but are unbalanced on the other. The common term for these is -“hanging nodes”. -
+“hanging nodes”. + + -To guarantee that the global solution is continuous at these nodes as well, we have to state some additional constraints on the values of the solution at these nodes. In the program below, we will show how we can get these constraints from the library, and how to use them in the solution of the linear system of equations. -
-
+
+
The locally refined grids are produced using an error estimator class
which estimates the energy error with respect to the Laplace
operator. This error estimator, although developed for Laplace's
@@ -28,30 +28,30 @@ problems. Although it will create non-optimal meshes for other
equations, it is often a good way to quickly produce meshes that are
well adapted to the features of solutions, such as regions of great
variation or discontinuities. Since it was developed by Kelly and
-co-workers, we often refer to it as the “Kelly refinement
-indicator” in the library, documentation, and mailing list. The
+co-workers, we often refer to it as the “Kelly refinement
+indicator” in the library, documentation, and mailing list. The
class that implements it is called
-“KellyErrorEstimator”. Although the error estimator (and
+KellyErrorEstimator
. Although the error estimator (and
its
implementation in the deal.II library) is capable of handling variable
coefficients in the equation, we will not use this feature since we
are only interested in a quick and simple way to generate locally
refined grids.
-
+
+
Since the concepts used for locally refined grids are so important,
we do not show much additional new stuff in this example. The most
important exception is that we show how to use biquadratic elements
instead of the bilinear ones which we have used in all previous
examples. In fact, The use of higher order elements is accomplished by
only replacing three lines of the program, namely the declaration of
-the ``fe'' variable, and the use of an appropriate quadrature formula
+the fe
variable, and the use of an appropriate quadrature formula
in two places. The rest of the program is unchanged.
-
+
+
The only other new thing is a method to catch exceptions in the
-“main” function in order to output some information in case the
+main
function in order to output some information in case the
program crashes for some reason.
-
+
The program generates two kinds of output. The first are the output
files solution-adaptive-q1.gmv
,
solution-global-q1.gmv
, and
solution-global-q2.gmv
. We show the latter in a 3d view
here:
-
-
-
Secondly, the program writes tables not only to disk, but also to the screen while running: -
-
-
+
+@code
examples/step-7> make run
============================ Running step-7
Solving with Q1 elements, adaptive refinement
@@ -142,29 +140,26 @@ n cells H1 L2
4 1024 1.571e-02 1.99 1.265e-04 7.88 2.98
5 4096 3.937e-03 2.00 1.587e-05 7.97 2.99
6 16384 9.847e-04 2.00 1.986e-06 7.99 3.00
-
-
+@endcode
-One can see the error reduction upon grid refinement, and for the cases where global refinement was performed, also the convergence rates can be seen. The linear and quadratic convergence rates of Q1 -and Q2 elements in the H1 norm can clearly be seen, as -are the quadratic and cubic rates in the L2 norm. -
+and Q2 elements in the $H^1$ norm can clearly be seen, as +are the quadratic and cubic rates in the $L_2$ norm. + + -Finally, the program generated various LaTeX tables. We show here the convergence table of the Q2 element with global refinement, after converting the format to HTML: -
-+ | ||||||||
n cells | H1-error | L2-error | @@ -225,5 +220,5 @@ n cells7.99 | 3.00 |
cb5TCq>)_GYaEDp2Tu{V)y)c@0LD?L?e{Upx_{>WP;R}jcI(2oWz2fX< zCB)Ur?A8|Vy8Ijp8HYp+0~)g!Ko}hg-SgPY_dn)sD%;S|PP^v-x@I|`YwDEUKwNF_ z%k+bE%;K0D^W`;el=IE^<#*%yaf~~y_EjUtrLco9NXSKYRTO7uibRnasDlz;=Y5~g zsFWL6>g>bY?n@MPt~3heUF$WqK9u^h4M(AzOyv?d8+8to=88#k_Jp@(d_i^!tvMUc z23qzS!HOIBuLh2Ir6Fs{yiuD`sq%xZ3mqqsBWXD8bqw{GM(5sb^Pp!dN62s^``pbW zxb`9|J{fvVEp!q?Faf+VVeLghyWN38d>FLy!-(!6XYEA}Y;~a=h&1ys=!gPGD9KOY z#OoLTPLQVSIFn$b1rg0rik8dWPWkWwMB5YUwRusvDzWYRxP9;dVi3EK=F+%R-+!Qm zmF4h0{E8~CjGwX>vLLzr^;wM)idoS{^g^mpQ9#G;SFzGu`#Z@KiSbY4>^J_^^%Gz!hY>=R=Gw$ixG2N5J(JKrI#2&U0rBmqAA|0yU$&26m@v|>S*86 z`};x)mhu^r1VyMnq66scag#aAvKih1AKO~2W%8kbj?J_jHg!g&z+hT~RJ$NKzIq24 z&Dbce oM%?j#holVHT-zv{<*k`m@^+r(*&_r9b2|cDS{e z3*Hg;TsfY%XR~jtJAA>R%O<9Chc2z=$=_|;&=c49n?EtGZK&~Em}jX|Pk2=%iws_} z6)NU|-?MI=hhIT)<#Og&k0|rSaY)E&AN}w~0fB^XTHq=#kODg2DfoEC4(=H%7QD{y zojQ#(3|)8uGsWRfSN!#>g+6C3QchS?w)RL$Z1fk|WGA^&4MdR$MTeHQI&PT4u7$F? zh%ZR>$UlHjvJgMrV`KV9a`}hHVvi`k2;H=N(sz{T)~-a#KxgT6ry=%Fm9f*)S~RR) ztX)|-al$i`+OWU4e>K@4J2h_UI7{N0)`BiNn=|w=8fAkPC5u5yE<{fr_mNu67iI>d z`J=#{LV_;7a22hHBXwVB^twwu>`wG;phO0u@{d91$}POb$HMi2Gcut<)Td}FvS*irObY0&$ z#l9G_6HNF*)J<13PDnKP`<%-}ET6uebyfOWaljeoLdt+I3cv|qohV*axK!9l6c+~L zw S z{=i^202Qti7LsTcv)fErDD)mGl*I5-a*ZrY{@rUy|MFs44%2sClG_*3SCv9zTx6&1 zHV5iio>0@|g=%F<<)_bW{@}?l+szop{h8Ufv=nXAyB(V3ge=1 z<1!q|rg@yP3zZ>kCL@5H{zM8gqY;u(s4u<1-V2lTO-eV;ncjsUn6$X^iw#OMNi%8C z!E!>Gq-nxorW~e38Hi&h88kT=UtskaySy H^^OC1W}l3Va0XzRfQ(Zmyzk8}ED%orC&fYu_+69UPZdnD<)cUf|)K z(E2v9T}BDbBBwlnX7TkeEj7QX9*|M5olzbjFM(LJo0pS=lJJi(KyuD7$V`!e-&NZi z;lwiXXg^sLF>YEDyrZdK x1KgSm^jL%K|wdN+N!mIh^Hj>JsX5>DedPEGG> zaD=v>PONgbTnvuXL~*O-z@~z*R#JDNbN2hgo#**xF_Q(jg5QVZ(4)S*$0#Knrf?MS zYZ%kM+(xwRNAW*h6eOXZn5O^gw-(S%EkT0Q=dxxq?BB~?&DP6z+)ysjxgf4LFdz%2 zI-|PC#ZsMKcGf`?UnrPcoNHRY_oVbLVzyfTIXmGdRpjj3Z&sJs*%yPk&ZhUa UR5#;v8Y>D(ciw&gg}Ow%WBIJ zR`Jp?n$G-jE1|FRhjV2&qcx%jr?M~dBZk#jh7VL$Yc7fiNBDNWKTX+bi^YS*lAY-? z^Y2DFyC#%nj2INs%;*h0m7r469Bqp*^4rgtRWy`?zGX;K6W07E@F++E#G{X rYDq04nMt`mAah7x(8&&)`J5=&^IMB{GIR6YPcVTm@<0(3Ju;a?}Ss#4DKlmXs zTiu+4DmO;svRCLDs+KNlnElP150DBcE#u}f)KjPd|KLkZ>|oBh(Jq0`iTl=x`%W0( zWr>$F?D~!|vG*(AE<#0^IHdi9|8SzbI8#5sO=xp2YnOtoMW&gWy@;#~euh4k|3iRb z)Gyt@*jIce718? (h%JwXkAgTGi+>%F% z>TVO+(c_@|{*FfSmPL=!t6vSLJE78?G_3i1nQ(oq;R6{q*9l7CFVQK y-tc`h2)7z?BL{l zBigcDRIU2VJMTw-Rd^nHII)L-#r5~=-_6R1O)wW&rq)(Py`%9K+M43#ru6BdJj~r) zX{1#juOL2a8Z9=esMQ2I11=1oN`Em;uW;LEJb1fg#Fsa&2pIxYW1|~bsU9OnoKoS> z)WZ`Cz}@e^*tIUHcCR|iJr_G}Z*sU0JofbL*$Q!PJmo(QY(IPe1-tRDgsh59ysVAn z`xS&l1=43K{bJGlmavP}1~ymxBUjQsvsaNxU{F1tCaF~vS4IEdw;VkCsx3|UlhwrY z&ju6MSQ|=dqbW;=q (`Es3N{3fVgsKc(uai|}X^Yxq7PZgOu5`a&D= z7Dd>*bSHAhP2G2Y8QG@Gx~8`tG@+SK4zsB(PR(}&)xBL$ixdf7wM6$xLjFjW;n>}H zX|XcTVH9y1n?x5+yq}@|BzOr=-YFbhUxBcY%jEkM)Ny;{+vv#uZG;{Mu6yq` ~5%38j63hXhu zOp>K!D3((tE~aGVx!dWJJ5c*3*eLs()#j3Y*dqRBbD&f>+^AdF-6&m6cJ?(VVYEFy z$nHS#p9Up?!JrgfMxH8W_Z?xo12yl>g(PP8T`r-{<-t XMxP_+ijZ*sXt#X zha^`7>Qtb2zYsWWHoeF_N4(RVx)Dm>e_SRob|60EzIFciy0-A#OTrS#&^>!0tip9< z4`F8`wdNv&i|j1+JPgYB0D^jSc(jcERhmVHhN0HBrZ?{}r>3e5vv4E^sT5+?oA&vA z-QZY8&!TDlGmrQe4QDr)o|isa8XJ|C2RgFbrpgy~CNdorzkPK1IZ 7CUqeD7b4}J8}$=t|3)OUu=oRUz~h{bK5ILOKaeoY^RQs=mz$0} z@@;2&+YiC07-Le*(q&XP%*=sFe(5o-r2(3Q80VO7wvE)JN#cH|>Y89Mt`A1xLdN5y zwEDw}O|;z3>B6{P`p^sU@ZIYV*EDH|J%wvLG-zl;XV=%Etb(a{(M^r98b1picAr~W zbN1A-NF!^o-HGQMoVAj1xtQDNJ5U!6$l#77uyR?Q?CSiSV@WI+Mvs Gl)^#4JzB zJ=+2|8~ZE6qrwN!@a=8aLDoT*yez}^9&|3fTG2AgU{tA8Grb=;8#PMw*PUkndNXE{ z;`oByC^GQVe?|Mjh{v;XB!`kmGS5*$C8qKz5yFK@yfLAtf=}Fxk7&HAo(eyJsu;Tu z=W20^7x<)lcf=Q-wt(~+RsuIVKOJ7?*s6L*-dDL6M<_&vc8@O*Ue+#KVYMJ$e9P3z z+mNtIcy&rR`|?W7V98$J+tEvF-R+&$e~pO8YQM088cL$7qh=2tK!BpM8gQ?_TgT9I z`|fB{tRa-Z;RalB6V*P99`|Y4t{!1iGvP}LC--I%zsk`0m_nsgK5>qvMaEEXN;og) zvuCJF$EddqYb-7vw8;C~PhC!L&Uq=h`}Lpz7wY@>!1T|r-<}ntn!rxjtE;5Wy)#^n zaKa)%h!Gb7EnRzFfyWOZY&V`s_Bexh*^uJBYPTdE)|}Nxv9+6do2gXj=Y0$#ZAL$W z87j0^r}vNdY*wss&2J@#>jXZj-|ZOIToivk()q%E@O<#Rlwo>tAKfTKguyGUslmW2 z9F^j9Na%5cafde9_$`xLOkE%|mDY$1HVqGo8x9I3H%0L2p0J>n*MRlqgvmDZ;`-dx zoXSVVp!x|XA|RtFYAy P6IA7B8UgZ}f0tpO?6k?V@r|Bb35UnX zfz;;Bq+0Sq0uA7GeBC0_^MpFb^6&B(45|k)no%PLugknTH7G4KXLz+U+QgYNgx2Ni zsgbK|(dcCvT_FZSNGWC@)@oxCw;SkyfREFVN&O|i`O3DXziJ|X0UoRxaxQ!P$2c?9 zI5Jz7!3{tkwa5(|bA)3Y`o6~2i$eY_xdSd*kscq6i^yY!bJ7aEd#KCOjEl%|hI8~f zpZpzhl$eYl&=wUiym&|GBStS%QE#rcj0Etm?@SW-- Xid&>)hiE1s(Ai*&_S`vr$Kr*YHF_Kr(>|c+^(J zOm2L1iTYg1Bd)oL@eFk(mEL^TO>Q~f-DAx83F(^1h3#t2{jRI$n_&Tnd%EV7q<+oU zbWEM2;>qLNp(JLQt5lxA=9|IXmE{>N)hmKb)3;``LZTl=RvI~|h9NSn=+erWrtxM) z8v1nE*x*2YoItvi$A51WoAM52rYshoN4s)l_N{JyE3GjgE#PHc!|(~W>B%b*W*RtZ zMU-P4Es zj+G$yi{27aP^aMjndOEA*ph8-KlJ6Um}^ z3A=<^n`2W&{etf(%IrA_kY3*Lv9w#QFumC)c6P1jL|;Q%`Z0_Y^i0B# <+UN zhVl)Ilv1Ut&NlNl(@iq(*{HNJ2C_{rX?IRBEwJ6jc=(Lf9J+bYu*H~my+2Fofw;~u z-UvnU_juu~)UGIEW08HAb^NB@!FfU7r{4OLz)nd^D+DF9A>rO7{sE-dcYr< x)<~vC79+QI gV8mwk|&PL)gyn{)>C^sD1oZR`+jSC-OFJWWes;7bqwo%pdSrw7cEiz-2eX!+z-_ zdMPIZoNncrPJ@v5-E2__J)pHD58Yv&cO^*fD(W31RhdB(o?KTKXN%* A9VrqkXJucvVmyOm@<#cdanXg$zqUDY1sLpI36H5<~TlU$_b}B^tHnR zY;7q(-WX=2xC(Im%O4wDMi~(OOY#`KPO-zb_;X9eBo;tgeybm&`-S>nU$BtP$OEpK zeB}rRMXeuF_MfAu&skB^&r9y{cP4HO)l6|fl|^WSwM-PG)x9TuRG4c3Qqk)7e(LJ1 zyfh{*M%c%?A)dU$OA+!-xKmfoNIoI(l(^$5Z1aH0i#G83Gbg=_dh*AwUA_4dYuY5r zOk@m}u5QMGsZ?skig=c;?7N!73^EKViS#rY(-K?30jL?B5~A$Ekhu|-?@9q#V+8*( z3DzE~&{9=9@hoTWpIu}iGoDT{ h5=O7&j+tbh^79sR#R@wmN^+#g*!O$gP>c9;kYmET@Qlr1 zge1(=;@k>P {xS* zVMZa4FKc;S!l0y%s<%A5$&zUeByw0A9H$OEsu%XRPPZ};I%Z$eccP;eo?JI<(q&~Q zHXH6Rq%aS*;C%${-rGU#w7{eF*D@#Ic^I%`M)A>qmbrg3j>zQ*I8?(HE*4J*>sQ^B zC>%bM1pBnEA!zfjBzx0d#A*}PomrJ?R^N1^(cT@WaMdzt4~sf|Dkl*`S50Sd(jxB} z%A`})J{I7rudW;Wl{9(2U~c}k>oV(oXe}WjN<=HlQO?)svyIAB)1+5pA%2A>u_~QD z`+C9{yja4BWa$*ARQ5Cto*m?mEnkMJ-wNj5rITb9P5}V8hK2$F;3EjhvGeA>HJ_Ak z@h|uV^+j=W_V58W{ik(uf2H0J-w)4>l@EVar~cy2igqyzdKokrgF|Vw>FZfHk48XC zVE{ogyC$fSu@jzmA+gQ2=r=oK q*;mG2_gDPqF1pL zMNpuoT`bDva;9t7U-%@xq<;+7jC+6PgF9i%bGPfANjZ@JVIJ(YtLTj>*&VvNP>|W( zXd~-8L^xuucLnTK`DV$c_)Qtkc-SS&ga)`P;AsA>mLgMKQCp@8i{BPYDPXbubCSom z{fn%b`LAjO;IRBtVvhvY{HeOJ7J^>FhIkFuX*FJ^HqxeFw&feU8|~XM6oU-CTa;O4 zksyFSS4iF6=+G7tqAOZvYIKqJTq@y2Cejm{%{VbF8?h)E60qsEQC9TUPGuu9NBXMx z{rAt%@A~?@%P1U)tSaBTdGc7{nc$>K{DCW+eBOy^Bo!O2aN|@oydO%axj&RYsPx8X ziHW^_$~Q(oh&A(ChML9qH&e&^Y2tx$#1-%poM{4QYwOc8{zUoh%R5=p9!0yZN5d#T z;V%DGHk=&sWIcK6ppqtIKY!P+I8Jpg9x)#NAJ^C7%+mvJGK{hlj}fF_sm;V5W45YB zY-9b?aQ>5@`Xq3d>}{w=6oPQp)U0~jU}JifufF0G0=GP}HHyH*lAd!j=2JT1-m9%< z)k{i x6UOP+!;I<8vs#s^;FOUDokocP}LS_H-caB{A4p z`sUg&uu7SwTRuIv>rtmei7;LTb}J$nmxT^!8{X&95r7`GfE;t_iqWfRDxIL^wr5Tp zU?%TCx&q|?ihBI-uCtox)p|?NhEV&7(jC?LsVKe`M#-V9w1s82zd<#thsh8TyGR>x zxW3n&hGXDaXZk_IU5zONcXJAJRu~kVGHJ=h^$ZF6?VTrc4{6ElVFHzRi}X)=n&ReP z-BaoEqcqy`# qrzlSCnp&Z!yPLa-(Svd# w6vbG^%wT%-5MKbm|s;(2NT(pyd{FT`fW4OF_#JDoye8E# d} zp3%dsRZ3c)i??h5aX}?Lc_Dv?m$^8Ng(&3f`3}LGAN}8{g1?ZsWvu=@7l?+?UKA~; z4gSUyG7e3?w0&wL3jhPuq{5&bfF}-6lY-0-tBD9Umi#-0fIG)gbCDafx=<4RJW0*Y z!qR;Q@_VrMA{S}6(O`?9;kS6Oy|TGb3cTjiycy?3mc#gbm!f!=q9QoszU?t~ptOf} zU0b>tDDabka$n#SkOpE)UQ7&HRiKMlGtdGfV|E8}Q %+ZF>SZ22Oy&55S7h$<5?Z zn*Dn(vp*L9pYi;Lg|iWKaZS3&UM8hTN%Q^#NRs4^FI!n6MZ``<2+Teb;so9KDmx_< zGN=lzwla6f(W0(QtblW2CPuvXoiAavMxp&8x2zGffOKSdHu|x1d0$lP#D}B)LjuO} zFi_ZFqmW$1d#cDY$9J#W Mz{{C?v^B+J=_Qt*wH_gy7pqU_Wrn0=KDyfMUgAS98t`^+c$D?%Zr|VwA8c zW%{S3C9mHiV$qoRCF#oU)sZJ@RUCSmpG%fH;rArT0t0WMJ;_bVq?&8Jz@z*l4|=ol zl=REy U8&L+O;(T(rIb~uykdZDCgjPf+yslkAj0zc1^*s?&I8u;h5aZWKw7%ypyI(Se zhTZh)H5i}-uyJyZ*Bp0_toiQ~A!dP_!$gaImC4U6EX3dj%p2@+1gtz{s}T`BhzRh| zr-qF8XQu CzqOfiG-#9<+}x_iAbVzH91u?x>B7(`jkV z!0R~h+6~`THeJ4>NOdv$7PJ57p^f^xutssnZ0?4+&4D6QccXkG(7?RODr@vjsr9XD zuox%bdFRbd2@BA4h5vNrpmr!->BlrS3h@GN2N-_WUz&jYRvaHs*>4d5$luQHMsC1i zucNVgW*(Fbhyd=p @AnO5A9)Ezl<^(YG5 G>9IfPcTx!iy@3&n&z$1Vx zMbw5pNgy#ek(Cdo9Hcb}dFf~CD7i=Um;HZmTKqNEP87GUD6MKw?S(h)g5#mYVmN{W z2{P$b(S_`xlYd2S!>kPbBbxP3$3}`7w&=06rq}w_nJ(PHyJ+GPuEYIS&9_C+3RaD= zN$s5zKHhH02?vX;cDdS`_xIYDtJDZKt(HDHJI+Osn7&PvHPz}=uEb6}1BwGuZ}`u1 z$!>|xVGMow9eC@v+&TAx@Hy!BG7Xl?Sx>JGl?M$_sS3#(0^?&|2UeB^h@+{wJPp zeGT9WS_9A1wtmLg3p%zRnLm&$-|fr0U-IYIr_~t8>l-(UAD7*RPA$D1nL(lPAiNYh z8x=e@(z$0Y5?S(m(u#pi<8RRa1Ye2Dbt)?21ix4Jgp8QNW{c&gf|?ZZx5$b-@a=S2 zD%b+=g5Uvk`0di_-uI5-0R#ee`J<0kR8*BzNtwTME?kn{55z^ykBa)jO%iEl#y|+k z t`3Na$-l8OxTJt}3k zHR@q9o-?`HVR{^mT%}q a_AIof5SV^Sp6t$pKKk~^j~f;+KX&}rcd(eAAXtF9L~A4lt_DXQt1 KcE`prpo>b62(-GnEl*Uu(g zQzC-}k94*j+k8X3vHk#iN_w<8XMR~!eumnr%IdP}kFIL3yb*_{R)q3udAJcmGsY`a z2Ub`dj+oC37SCq&Co 3)z-$UR2;rD261~uSiIycKj64yjBw4{hY z127`66EGe?IBN;H+-s-Yl<8>|=^B}T1U=lejDq1Gd^(4lT8G|XC)UgbSOKX1%V8}Q z^BG_660}I|X$PEi13rVdq5bxfBV#v=dLwW ZGe ztZ>D2>bn>OH+1suROhUfThF{s0LwvY1Fpc;)=VUt56;dCK4E=r!zz*XLVnhkG=Pxb zF@ck(rD#{^65Ye;2tR)Zhl%^{ZRfn_0KOGy z_495-Y{2Vo#bH+jylxQ40TA&XKH-yUST;IoAJ{V|{q-uI}zFz+N8Bw43(55nZ>%WMuWw*Gj}y?T2?jI^>cH;ysKF YbO{(lfyJTr{eRc%|NnB$^I`gb0jXBFi2wiq diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-7.data/step-7.solution.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-7.data/step-7.solution.png new file mode 100644 index 0000000000000000000000000000000000000000..eec6a4f8ef3426a79994f65da8eec14e2341adbe GIT binary patch literal 127016 zcmYIvb95Y!_ja6YY}-bY#%}DSjg7{(?KDnf+qO4olE${JjjcDIet+k@f9#oac4lYp zUOe}?m }R5dnrw)&!g18kHmzWA?1;pi*c->*dU8GwMh2@NjraU60$4#|x-Iu_2>lvE|_PfNO9akIiTx{3Xr+0Dz!{ zgF 4@-^c{!KjBz)qzr 5V2p|y>TeBlTsX^|~@ zKA5dPm0Ml|W=2F?L=v9Vuw65rF|P5a%$?K!rviAy_H?jPHA&`VNEjwv%4%<_or-x& zw|Wdi7yH(xhDGAZjIJ#HJ(k2WOKMnxvD`_ye}9AvSHko^qp1goAe613{q)TZ)d XJ=QK|PUKF%ET)w%z6H(WH8ZKr1gDCL}_lka)zZVu7(53;*N;EG1o-9kb zHQ^|dnj2qi*k)vg06zcf{zYhcWuy5!TadEZr(^_J#x{Nb`O7a#Mo5}?af7l#rQZ<9 z_?mbu>jv@MAPq4PV_QpZ)2_N6kQ8r-25jm6{{FO!;nSRt=>Hz-jsXOhb9CNpsPQLv zh8Uc!g?h(WQH>V)hQmMY>da)5ug#|aMgMK9=j~!;d%Cbm+9=d@Rhwl}w4>$b<2m3X ztym-pEE?T_lS~ZftEljzARy1KL5xL6Dapu7si)=F1}uey_x?XKY%mTBLW$yN1kM6D z#q(hmlAzD}M!GW0+*~O+X$G)e$;MECn#^rp1TB8gc5j?LzBWDDwoQU;R=has^5KJp zjk6MFiP|l;x*lg&ht->{m)&kXr<1-U>JvM%)p{qC=^*1oKmc}3B?66uU*t-;t_8dF z<6rCYRq((?dTD67g-G6n&w$YL`k!qP2+^rEatD7EPUW)Ev20j9OmbqR3KtHZAAx|N z4Z(`!`Gmo%k4FN(-9;O_^_Rz??)$TilMsRwQ#p*hoM*n)^xCt^G$W?Op_=SY$K4fr z-KT?^kCBWT4*id>JqL=f4%Pg9{0{f! &-#j{)B-e@R+mQJ2EH_r_IsVwuZ#zk znc7^NA06E`7mtre>^X0$J+CQMf-i;ZeCZ+d3Q%r3P_fcXpds;&%$(XTD&0dOUI91I zVE^vw%-F`&J&x$>;>Q9?T?2Ghj(``t3z@au>{zd&7MeMJz6<3yjueG9qjqfin9fg7 zSS0=@mOOO-SIOfJDcC<>rkZYkCTV8cNQQN^Oegczyzce9*j>=9gW8`)Yjl1kG9(_; z2)?a(l? gvt5AbuR&!svOUkNXwg+y?yL@2n$A4_L;AGtnUx9LB%e9)Vf*wP%2 zQM4p`ntIwEJOXBfjhcAVGt;QFSjT;EJAu3HVn&poKGgXK_g`S)&n<*iR~AxUK|1BB za-bGs*{&J!Za*Ht`kmUfa`zm&D0B^$rNguBe|{ zhan8XmDn 0l zb%;$&zQavssaF^u?>!GkO{*QSlE)? 6t=;s zL9=0ZfSHeJ!Xi1`MedhHE}eXi LkIyI-<6pJ-*P=~8SWmirsZ96|c-nEI_ zeBNe&uV?omt1KH?Hi{V|(glq)wPM-_l4pXh%^g0A;)u|5%1$n$E>Iw;g34c2z4U2$ zDflb*2WU8(KKEPu9SaVwimB(0FH>%=g6&!Y_XO{;DZVckJL^3h^2~&&Erv6uv5*wZ zfU @@hUnxZ;#EoANbTrULqdO>e{0i z)5e&y2nnYci30P8((7rJh@^S6{GlHVia~8Tee@Dj(q@I0lBl_cUk%xSzjLke$lRQf z?SFol*%4;GeEm4#>)DO9KNgT 0AoI zF!=2fD-u5F<`BveqO_cm=(#}hg{0^RLS3Q9!;LPY?6)OF?-#qnBVISXY#x9@(jZhU zc&vMP_$>a&pAETByWIaTBYM<2gEm^dcCVM+jI^EYox_}O8aAIu V z*HY#2)%xhQso k zu7bZ8Lc&KvCu{|BpOjK~cwINt!<&leAexH}=+ZUzLRLG+cMzqpkZ#y7CG?$KwfH$+ zoN>M8T^z(ev}SVMSIx#v!4!V0&jbDw!sdTMa9koQ66%^AjMezO^7(E4?qJCha_8Z+ zaOt$pGO-SmF5KQ)N*PA3>?Jo%y>lI21^|O8xkK=R*Oo{<4v?g!l@q|K`vz3&C6oz6 zgmDVL_bpUvk7Zz8*_gGuUPz2S=|9N|^=~Y`f-ZJ;IxLu}T}P+@rW&%=|M-kmbUfat zF-%3OvBTFBa0GAna^4kdhy`3sUHFIyBMQdVQX1vWSD%cQ8Q~z<4<_iPq&A$PDDa;` z4d<1ViP+FkEa5|4)iTHz6vuBx(7u(EvPD8W*!7*w>}*Y(MUrF^p6dtpUa<`|$fkT0 zZT{tY<@H^z0qrbPMfbWoj)faCY7>5DI|=Wup59OL@{Tv{#{cV1J@*k^)K)VUEHBDp zB)TN$<@DqHcEZeUkJO~C`=0rSB$X^QWva2OGym$Qkd|&v=ApT`y({&Z_44e;CF~~5^HGueK9TYy zv6pZQX=M<0s`@k8+nGeWVCA-$#LcId_$vPk7yhwJenMs<1B4&Xu8<5sa MV# z-9KTon{PS#k4KZ)R^IyU_m8Yqs3n-BsZo5P)S?jPM3WS?Kk>kC`>P;JA;Yae?t4a5 zrd#2c{+v?jegn{Ay7=lA8G9HU&LRRk#pDfLiCIxC%{86-tMA`kHzk~kni{a3(=8Nx zj~OwL%zOtxuBOCJ8iBm>Mp1R+pLDN>_8; d7V|EcotxYh|lhgs-=Zk=)>>n?X26$0>{MDv>uGC ztjdH;MAa022WoU|3s 5K`r(JPNEsf8OppO~aa%{zS0fwupjVKk zl~>?e{!4Gk`=6Xt-;;0ZK1~9v_2O=h?lYtqNTUVS0CRM?HC;qEH%SbmQ{?C(#R9u} z@C(Ted~(#u@kEEnW?`^p4K+!KnV-u6AxFyc;z6)BQ8EsGrxWxW={n24lRd9TE$`LN zUl0yA#x3DdFAaz)knv3u*3k$HAL;qzMe+Wt4PNvAky2u{LVl4@i)!2? Nd87EfByB$897* zoaD6@jg{8QvD>c-Z1@ 2EK4@b_9|R3Q!Id=k*6v4D8M9A1dxm-0zNK zeA2{^!%b-~fDZu-5)^N81Qd2!s1A#A5mq;dP2fMQ>NfdTMi3iWyF+*EpnWy?7)!I_ zQXuYXj3#opZD4u3)%SW?Q1*JT=aW;9!Z>Xw#m5&Xn$FUt1b|A7$&Gjvwn)jv#igiV zpD4KcV1oAh5Gg0u5rl@PA9~C0;snl&9AqLs{`R^E2t7{TRjbHv^Tn+X2OoM zsr+?G&kZN!#J*199gJm3m=8OKy*?S+?0$Nn#{YSsY8J|h(NC$do2whIRbayUyGNII zm8Q4(-HsWvVurK*j22&7uqkiD?vrI*dg))+{?0)lrb{I*escMMpcbnM3?d+46NfdI z5~tBu{)%2aDIprw(==B`g+G-6j$W$YmXwHy17~U4eLEgu@?*>IZNToC=q&RmJu5{- z!I7AzD06rCzIL>7;3teM|DQo=2fm=<*OP-S=V%;0a5q4X9^UnhmwY_C@t1SO9LT2W zL?$Zm2QQ(DtD`%r2sUxJ%yDfF6SW!y`GcdFz|`v{k6(n<6hQB5N?I|J&Dr}2WByP= z#R*~3K%H XLTLbTxUkZXxV_eKfI77# zOI3BJnd|M$s2TG`Hc!LLjuT1d`8adugTK?Jn5EH5irCar-rgG?G2x|77td!!%Yycg zndFI+tfJHvS)>uHfH4Fzw%xz;<-9cD?2Vl7(@Svk7;#NiIUl6YB}M>r5jf1sXQns@ zLLmzKU>to7&rP<1E|hX_oo ~fo+gN*X?)9_j=Lekjv&-H>62SI|3 zlEc@16ARHDLN3>H(-;@aMs|wnZ_a_XXhHDbj~0#*{cYL3|EsfEu>VPA82U}C>Zn~p zOSBJiES<{Dx4q*oc4uT#zWr1lRv0pyF#~arjOT${YA+O~Ryiv*%x^Xye)x;n9gBg5 z!D*7{y+FAq1i=vsJ<~7{QipAv4U%r>8xpb@jYhQ&X~J8&X`QhPYWu;TSs~A3f(>~$ zX1V)=FzfTf$6(R0qfm_5&z#il{67cBfk9396Y>S^K8eFHg5T$IM}NLUh*OiF@4VM- znsYqazY?A-4h(=k=uSFWQSoQ$WhD@*i32>6&hcZ!#pb=n1dULqbCDR)3hImT(NjQ_ zdoQ$@7$t3Wcxe=BW-6QnEm5jD>Ek ice`Zhch4r~*v>~m=)1Ny?{R<2Z zqk(S`{}T3;s7!)jI8{3wT5M QVdKSoXMs@RE?5dD^8JT z(ZL_5nAbOYXK^G0h?xP_bvOh|{&?>CO{u%Eae=AW`eOD-5Ylsi6XhbbIi-p*|2MoF zW9s*7U=+zx&!wJDT*c$9YD`Q_S@35zMEh5Kp|Ef)({sQZ32r9qZWD)*@VamNWgQ(B zM^F26Jwn*Xqtbm5hh}kw{%Rdp1eS(`tJeUd$+Cn2ecTTNsUBo_x#6W -N&^hkuwTO$iR8*Bb$5<({{e_hh2jwP$EXHf{~ezM>2}#)?xCFfo%etft$T0> zF`zqC=t~Vj{P~o~;eQe_=x9VL!u8!_275iS``*SUYLoEb#F9>?X{RR(lSWnqs|_gg z=S9+pEwVu#`yg2N&$2%JUT&oi&mVSiu?~+IzOUPF2du?R)*CGvj*=_7DoOT*?E^YLSSPawOU96j WPE+ljg}0i+OPG*HT04Bn z5o~vIboaR!yUSpC8y Fx?V H?)`j9g4T+1W6eBP*0|8c}0||?8xeCq^%qPSH4JIn&Wrozg z&i0_Ik!Wq9oaT#lFOS1dj&2Vw)DeR*oI8uLz7<}V$G;TLuykxD`PuCF*Iev$nBs*+ z9hls0W6foV4n#MltW2YX;(|rOFFE?5X6T3{IDVJI&--jLOPCv#l$`G#W 1{x81XWq{$ZvsK=gGwf3Nlp50#Xb_-)&N5rbNj+^B@rCVIVz3(73kROq4N| zJ5xw$;fNjSjM3%E!pmh*vA9Gs0MVn^>)tM=I2nQ{$9q((zI!&6%>Ax(&WyX>C6qkl zMPRxw0%j(sp?9XA#Z=k hO-J-JMfqRROzf{qK>;a#LEV z2DvJ*)?`XV$im;~jBfFnXc@^`H2><7LZI_=dCH9c%}{_KFGa@$u(Sz9`$Qg)->dN_ z*bkcgWTfT@>bER`gdtFj#%0Sl_*afQO!Y1&d`HbAna3P`?gqnUGzgSe-ooccm@G^z z!CsHzn>7}#$Knk@zS@F9>*pQWel9LVWJRkOPlN#WqT-AVzPv}0uSjkoVGOK^4a|9M z=Z_fR-F(Rpf)mO85+vwOnslcCzzrwOlRJ*WQbEPR`K@AB7873X;j{%V5 IY?J(<}rrSXBk*fIs*B0`MLlYN@3QEeweuRcxa5yi6bN>fPW;96gG+Z zd-ne7Mo;Df@?g=PGN#hS3;Tl#82As$6!GL#5m4ja&n{8a#t-S4R 5_7`6b52%E e(3V)A9&y^Y0OQW;%%xC&2UnG<%nwZaWZt$O=6nVdzFf_=U zd2}>EKDa-Jl$`-NVTw%cis@aoeA-YMvw=XUb{+TdsL0kd%VHvs`)`Qy-KKSsg^P!F ze_tPq^Ru^I$faJ?g$MN{qZDovNP^fwdSJzbFhtN6xLzNOsQrLU>;d&`2r|+UrmC~8 z;ry7|P=%TLI;<-VPQ)hSA$jz$n2r_C&yQ&zfza5@&psmT|6)8|>0p)ztXnKUWgk$9 zn7K9ftL<_uFeiHzRz7=kg=enz`X># N^Y>#u!Y2{h--Ct(Er&$1MT0{+k%BI;d8={omj#A5yh-+b>$ z-;Pf9FwB}!nu8E3REIbe%Th>rz(}h>x_#)j>0ve%Y(cv;s3{yl%V<0)G_5^;QN7D8a%QRw(oidlE_3&&NN9E- ejQq8GBe)M6hRxxC*C=;9SxwbL^W!s97gMP#MHUqgAAd*oG?^!Gz!? zSqDELVOw2pAy8q8ao$UwVE-mhS`+E9p&f}9G}waBD#vS>5Qb8p3=~6(j|*4Gz153s zoza9NQ!pZMwWZI&5;W^9u(&5mdA}hoT07)vh_yxKfvb6FBVpS?3jUV?CHi HNAf9wnhM_mV%tF@?^#`XC661xjyv)edd~i|3M;< zRQFD5Vmzc{Cmzu>I20?#_v$`Y$74@oXeKpPikw;nlck^xYE(Baa927o4Glf`*>t&t zHPQdM!ri7`$JY|@EjABGMlc gQ5G8*fS}8*M#4dfc#Hwfk~;)6pjK7wP=}4S<$<|3xq) zdBFB}FrXA5sg;Ae^L2UEkHuQZYxq!?l@To{?y}J5+`n}ugE)hxY2`aw?lXz@an9Tj zq7261Nz7Ua#B;d>=XU_XXnzgMslM(4gxDzsxsQS&s)9X}WzgC2R^Z_Q%DfoQ?=;k0= k@i>-k!qyOi_Vzoi3qIyyP$L|8=uq1{yWs;an`O zoNVPh4sKdLHqOpQC!! p!K>k-ZZ$>u1};R%XX^l2JEve2tnjA{C8osq8C8+;2?KeALMU_{xInstozl{@ zRE8|ro7Aa6%i~0AhAhN%ix#=bO@XP^ZL9vhYix|Afa rsSHbZD*~`j0`98PsKQueCV!%d44{c1qN%!( z{XjF?h+i`vfpT(LRVdG=kuWnLP6%6|k&s(RBfj-I*%r%KU9=PYD)16hb&fFg+#dfu zmhHc3C*&u83`0bT^UPu~Q5 z3vVg}G)2!ob7Qvm+s}WFWlcMmZD&!quH7%h2L#MhS2yP@r`2QF5yTd44HMINE75I+ ztp7{{v{$(qvuGO&VU9JL%AnJy#Hg7zP Ep@$xy519F$ZTWRK-;L;k z#FxSlcu$dW+6m&Tp)nk<0?Kbao|K-yL~xUpb6biR(UQ}LhjV}Z!*VjRUL=D&KiDz5 z*@##M*-(Jg&O3z~UL)z|hB4BW=Xh*jD2zX9bUjAV>FlgRx1L3hL>CFC4K^|!k9=HP zctd&qmk9u{xWeWKBXsKYJT((^f0=Mv)O$tx9J0Q$#TXJ)faJ+?C>~s>_W#45&y3R# zjfbi3q3V-DS%#90YRRmDwX*N{WmyyufGQoaZo^2HWwTnICdR)_q(PnDFK>u&R2< zOLo#|*k lKL5&fb>IdZnQxjpQv34>DC3jc0BVS3}XGhj7Fc za+4{w4c=I!i#v}X;FLkL!rQG-rKOaH+&29Ck*0(T=OTh&SF1v$`7EiKEF?26hI~SE zjodDa&}tq=lR}wYoBR`9i=T|h_GwxZKvTK% V1RfC&dKC=hcD`eS5 zCP|{G7`}&8Te7^hq7 RF%YmFo7RdN)&8*k!sKUP#2_FEmG_ zdB~BRVh&PBbIG1|%$Y0OEON1Z)6>AVt{ZMc1n1>JE0!B4MJC_trRwpeY{wnki7(CP zh0#XKZn(!4*8+=V^w_AD`o(ch5BXh*hOXKZ0n}JQl^0Iu^MNqRVURt@0NMv8gal*c zH}>E7CtEgR12SSFRgDpj7&2qRj)g_)w3yWi`st&LW707QBRBd1g(^pMp@r!?f2+vU z2o;%0-ro-2XIeV X6x*1N=_<^!12J^*0bS={}0$eHeMXu!BRPE5b9L8 zL`C 4|}(J;TgKl-hFFHfA^ojp{mj7MrO z@kHsa%ME>8yj@A7Un0Db_@et#39=` zf&N zWuHGk-n+^1v#l3c-q?UqP*6~#sc7lGW1<k%Yp4RF1=Hu)+uzMwaSv~vo9~Wi4 z FVJ=V Z&X(&1S}_xhsDOknut&%Vg}tS-o{SQ!$E()L%~G=c}l^ zr>`>1tBvfam4k~dtjBOFswqM^+hd1`|LSr?<)jC%+%WULL6XG_j*=z11IAA%vO}iy zA^Pt*2U4UVrOxn5ALR}vP6Lwr0lZcbHH8HY+f_L)neTiTuM?xMe|57{zhF75rix&Y zd4}=e$9*PO_l8fNf`ZjqY#T(DTwYltafF3H^^KB}44AO$MY)0nJH-F+_r>q9MZnRn znx)hJE9dNfU&no}cmQBrK|`yrC?Y)uodNNlfRc0c_)I~`>-8$--fZ)B^Now&A>^EH zd@q%0>323B*ajI>I&I5c#7|Yi@B%?vH@}A7Zc0-FBK%xF14r+^rpc?skH_a6{WCvX z&JM1S^`bG}Ww9gRNQw4DBJrAM^yZ<-(W)04k}iXmbFTL9SLh9v+X%#ZQen*y+IQ z^S4{UOh+NYm^Yus0ZYN&V3m)hix&Ts)PQ~BX>wE07Wv4FX!u$0kBxEKAHBJ%Y!Ar1 zc}^ Wzv^&CuOIIAE=4ligT5Qw< zyP#6Lj~kgXe0+OY3DFl^cq3Z`p)C9&BHqyu5OLx_;x{2&hWV8ejx9Rw@|rg)pUh zB4bT4C}75)egDx9BQiYb*`^TC`A6KU2t31@RA0BN;tF+t|DnoI$&h<3&zFpaMyY0I z;Et2Z$3QbV95?% QG!HY&vh>n=>yE;*q#$u+k4}R~@TF#Q^ OD5WlLn(G>p$iH_ljt9nGM3)!7*hS zFUL7*)ZTG--|g(|eeU8__uTnV{cWGb#1XZnSs9h-$;RrhTakCm6qshB)Qu-ee+_r{ z0HAa`03#;0^{pl6BOoJDkrKo)Mx$9oA{C&p<4&Nybwy z^U|hJ;F?ESl&vM|gwRH|o768$J5b DS}eHYyXv;ZZ}EGjuq74p|3O z@VME{J{|hr*mXEN%4y*_J+wW_`~v%&EIZ4oocA1d-Ty@$ot;!A6;Id+fPyQI9!{ r!MHLI2g6k6aq1;gbrZv z@XwsGTmyT2ZoKw(Mu%=PUbO2GFdpEP<2W!Z#MA@!5%X&xVY*&fJ>OK}N(}}bmXvhF z8v2AOW5cq|CaJ)FpNCtYE3y(Yhm{AyA{RW2qJ*6;Dnm`$#MC=EUTEj4tq8Xln0zm| zuCq0;RdrRGg8?K+9YQ8=WzSk?8RW~R{2nT*PUb;&a5Qzi-0(X+ArYA5%6y121P^Sg z0&!-s6e#Fl$Qpm{SCM?8erlX~EO+XRTw0|34Tm=wBl&1*$-|lbKobt!@sRJ(MXKQ4 zEm!7}wP4tSrpt;;+_h31oP=Dk*byl-|KwqlT$gAHIo%Yrimi1bEE$a!X4;NJch}8~ zHi^&E+I!Dy*XC#uLu+vt0+Tj`gS0s?FTi|YKXX5_aWsupq8#R^ePZ4CM{Wb>_R#hM zyZ7To_v>4QWOirM Y$@32G>{>O&djo@%n9;galj($hiN-=Q%?^q2~S(1+LD%?%j}%1$-$ z;=5Q47V!bT;WRiWUP|dBLUvtgEekDRr&Zsy_Qd+zq2KDN?_}G22aB_rW-s&5`L?xL zaZ%@|#<;%z@w)8~_P0(`aKw075cUy;$7KYn-#B6HK2jS#p>*H12zuH-PE<{ep`bY9#f`cv@`TP*K6U0R%RX$vT%u8S *)ms~ZESB$cB9En*}Y)u{1x1Fm!HH| I1<#?CBWq{xl5l9QuA-bUR)gEM~5!3Eey`7h=d4Wdx9` zz(W-x-!Pxx%g fZ$Jvb>_sB?>ZguG@u}=rGir_3#07X9B*F_Q;r`8WBqPVdLGB? z1u}xCwq+7?N1j_;1DZ<972-_4ci+#)s5|T`(#3xVEALXh415yM^GJ?;UyAOT=5N*s z-3@0^t8kL yG`55$*C!T4|%4 zKyJK>**WOvYHEkw>(YVaL%FsL&2qVv3Nx3zBDsyv!gRHU`Q62?xNhtF2uQ-#Jc^3N zR5D9Smesy}O+8=yAfEwvl->P4w)(KiZcMVAMY3$7jUAO}(eU-(3T^`c1 =u zu<_g@8^7$Z5kERPp90bX%IKFIo1m~0J4p72-WQ@TE+)F{t**{CK%lGZi6^>MR*`)9 zx#mFX`F;S$0@N(3R^b4mWkGN~={!GqrEZ+nhiJ{5{rWU&X{AE}cpqfzIOL194|t{u zDKgG=2^Nb94vR00RTH@RZ+tLHm2Ck%E%DpE{`j+)Gv<-;5ajdJW@iPfT6AptojiFA z&B36OeS*pNP&=PjA$Wezv=#+67aR}v>4ncVTIm1aK4@Dy?SMCAmsWDsf$Z47KZE4; zThGO%-RtjT1jQ^qo>qGYJ3r6BCT`+|b
PgdsmDDw+j$QV#&sbBFR&`{$G%*xij`|LStW$7*aqHYH?|&$NnZt zIH7ZSIt8q}HFDb(B-ckpZ1(F?+D+d6 >U?z*e2?4;!qG3eLSMejudFzDhccR7w-mBlWf!MrP!RK DwetRVrZUR=$7yS{V0!M#uPU~h7?mlhM^^v>F?HCiQ!F@8Ybu%Kxe%S zRi&IzqTrOD;_mVBu`17b+5DIoo%B8V`?7)kAUf-k*t*YggC+mnYEyC3`xI=iZ1X`~ zdP>M-xCzS95~(rjXShh*T$N}NbQnoP&dVyxYj0GFVE%add8hXHro;W(A&4kgvkZAk zg@F8II^SibYTjEV9oAF+E$K{AkA;%XFzBv8rbn}!K^|V075Fs+LrPS*DhYF^6hLh$ ziY_0Rmt|m{;MkUCPE*)UUDbkv!8L6y9v7$MvGg0S2NN&AJ#6kiBAe7hPdWjJLP@2p z73>@iuqiX944~6(0$l8)wWZe~$eFFSs6S}QvJiJ(yLfGK@7D)QC#ei7X9yiGNviQ< zg4-QS(L1LK_99pggohCqOl;i^tekPT(2S|D)_?-?5dndTVzI!?D(G4Fl*E#{l (Js`(3A| zbBqVnN&b`%F5-Et;5;u!)OAm$P`BwpnN%+ysAXBqIyw{eyhL2Q-b>C_H4sJ#ONl}9 zE>ePv69JY5CV*@X4?B{Z?4s&xMV=RP?)C1+vFgqjB5MOw>f;pQQQ@VsV`@CpsK3R| ze#}(ARPvF_ @t1!T X&{!49$v9s*n$a~U! zjwg7>yps?$JAy16H!^`3kR-}}PV8(t)clL0TkCTO&jsh{_U50GEag8fT0$%5FaTg` zun5yNb36?4yG7w|HXBESZQ;ha)@`Sv{A#t9n5z)}b>ldD&=`WsQVt1+v^7Ts=0JrP zE$?rWOO-7S2N)SQI1WRL6p|Q)hU=F01WHQt^IXo`cl{f$ckXp2wX41jTbBiPbEMIl zfE6&&!cgV2imhsfJCw2GgaKr%)IEQn0*(M?-He{gnFWT;n;AcctG_>YmB@IsWZ=6L zqCQcdAy|RG ~q_G#qFvxHW%s#)( z)t$yhUz85j^myaCIb>f*^F3(U`4k@KA>$Z0z5NbiPQ;sXwfQz2EmnWeNz$67ep)7A zG|(R#kJmX-`qlW!wj9;#SfnY}tzVRwE?U!?$2b1=Rq<{4<6^Pf<}f7ZY5DDVZ!9g; zqmNJxPRlM62mw^4%db(GO^92Cu YJ?-Z%v0FOtKe#8cASng?6|IfdF` z)a!71Onwk}ZtFi4y7Sq*k>7k@PrS#rfS2DeW7u&}0sZ+QNOsT|IH#tJ!qqu2C;u0< z2$hYBhp=f#Ti&wZEg<#-*zdN{<#Y(rp473n*-syHI)rd6-OTcD1nm>@;;%Vc_O4qt z$v5$>zG3BZn>rlXs}Q6Sax!=oaQ&=A4x7_4~MknJ|ScyF0UpqHXdcCRIxj)Y#YJ zcWS9mFEo!*CzXDS(fPfyYT2^YTA76#Is#p@ftXdxSk;MtV_wZvMzyaOo5n@!ly-F1 zclMU^E;-t8zSw T2%s~>zs4r|TtR=i@qB|(rsrflrS;PzKh+H7x zRuVUaI)eC-0Cr5hy%6@%_n@=feKR*C^!kYB`Y^fv_M|?c@J$(Rp}L3ccU`Vr&&za+ zm>mNSU4pY=DK{Mj%)GErzf#$+yh+mxdUvtTTQKAu;Kjx{@k@HeqHXuo0DB7c5F!8g z9y$|;;v8io9)vR4oz7q$c9Ng!njMlNw{&_p^fWrTtM>!we)+h>;{c|Hzv*GF3p7#V zeU_rf=k3~DKqM`L6hULY9yA*%?!fi1@ ^*TJ z4f^v}e^2Z&z)Z5ii8@B=c)&j>wRQO!U9TVxayX*M*O%o~Gy **Ma1-gXL)yH-$u%l(AbqpED5wp#?R= BE8)aWE@E7dmK$DJu6AVCUJGho;~$%gMf93e#0A=JgId%A>`6X{I~_Er zbz2D-u)swel^9g4G(($|Ogv#hT?=zpjwI4K6eLyec89%-DCA+t9cTh9zY Vi=>sv$hn@;s?)%ye zUXJ3}oF5g79|v}wosUi4yTM1Csy6&dj-f|zbVj0agfsZEgp%IBKNmG>*vq+l{@jH9 zG!Eev6WN9m7^nu`EWW?`Jsmmw?$>4MYPz&2V$)nU`&6%29emAgd(T>_VXk@jGNyrz zcE1co=eCK2NIt4^g8fT{iA?;AIXs2GIn@fUh64_KC6PhhLG$Ru)$7HbtC{O#Ca3k$ z@6EMQM7@^Anqk_~_giqS>u}VisxlI_1cy!m8s*|zMqY${-z&7<(`5DssD#<~;BxO^ z&<2#f#=mM!b^eu C)nY_}X|IEIO7X1QLTDfWU3Y&hkW zpy*VMqH1fL@jH>TW DT>7_*sLf1K8NkYhpDL#+N&S)%dBPdh)!V5jyJ z*$_srID`b=wLq{s4$KewRvF1(ttg*l7BV-7M7n0;J8j}+sxiRxS7)%G-^<18@yII= zA8-9r9V|Kjm2G=Qi)c_r_#&MOqr=j3Xb7&9S}qTLSH0mn!^01&E&6B{A3O1KBPJZW zJqzv901KDz58?aefj>)-ws$s~% s6bIG88*N<;bx;^ z0Q aY10<88=hzbambWe`#}euJbt z03S^b7t3M3-Anvznetr_Wv; giH- z$sl#!%hM9ewkzOq=Vq7NiEM+nnT6iEYQ!9{_D{|Box1n ZQI^I-8dnKj0zJnBs(g_DUh0$hd<#1=(TBoVQ#(lDr=F#pNoxYS7T5P4_S1&~ zxZV^x+uw+UJ|ue{PTwy*4$OYK$zr!f1aq^#Pm*1)T@NYdC+Y-w^-?jm-i1a*)a^ zI{U7DQJ+1<5R&U%8nbOusFEltQrgBJ^Bgg5B0mH7v`_0v_PpNQF6^x`@ULAwTh&Qx zvyqauJ@nN}Rgd*PUusSZ{Cs~JBsw*t9U!G7dIY!bD&@9v-$wE>YWLKxOMOV)FdEjf z+$CxR(8S>M>6!$l;HXZTxwR(-xq~uyoj~jRmy^050VorK6L|j6*qPj9edS6lM1;B{ z#?2L;Bm1(b(7adHk^tJLQZv&niBe<;;z-se6GEs9rCM|aRL9U#ch#*GSO(8E5_VLN z%V*dsrlR`0@p2&%KM!~+gsm9TqQL2>qA+eF-270tAT1cl@=^(2YXiT%vTi>$isH2_ zkrn3PJu(qT`N4X+D8mNQ>9LFM@H2t#kD;7rC%+@zo(}=*uf=@LBvGO2XrqU@Tmqka z9~J+_e%F;j%a+M8 B2WKc%D@wCD}8gGa|I zh8uMD+_`{h^%N{b?Ca7V-zvoXPns30k~o0}9%!{&oWQVM*s_msM>7+=zbx%_KA6)^ zchULC(uu*>(?SGXJDgD$wnmgfX{iVZbY|@O*&NAkI6p$UkrecCThjCL38PzkuT>Es zpy8qjDG->zJuW6&&O{cT+7Si2MwtUXsR=1gC@o$>_8VL3JS6P~dFGyX+EcK}6r<1t zrPEJlp*i9qg#_8{eBK+Gv$^HYvuu!U{{I2VKsLXhU=uZuke3Ueu)2NkbI`4~aUVDx zr4l*tRMfDAKx92 xhA590JI;V%{8$xb?lnk>n zAwP-@+0Umlfy2YOo$rpgx2L+I z`8+p2Bp>H3iI}?F|I(bu3J#W>ndZceX|Wj;_Y$2??y>4Y1(RY}-5;&o9J`#NP{;T@ z%y*}{Ee{sz`CK3P`fRyy9teHaXZ(S`^lz1^M!N518?_1b@l@qPpDC!zB|m1!&;ogw zpbL&Uow5*GXu-wJ-QCQ^a?dAGm#m5~I#OIBhuiP_n)g5TkzdV||A(!wg(ZpHEF^0l zQ*o>sD;7t5bz)=&uQN&_zn^-zitIu=X_jz@<|c=qUOf4~hWV3k*`3VqEQ8_^NrtZw zrK_drIVqc#s>!2xXX3T!KsK@o>v vii~pnm*`cc@+V$Inr-zGptUm`K-RtR#r5Y zq(FIx95YxKE2cs4pjb>fZkVuu6)a#`-ajb@G2xw;fSOBEJOmbYhyBafxqfth`}?2! ztM7ixe;Bcg;XD>Q;;Iyp+IBXH7y}0*z8WzygV!Baqo;8&vv1HPa*z2({pBCM@zRf; z@!LAxlVfZLi>SLwLQ|PG*3ndh6I<_aMY@0r()C#b=|zYXZ-NXR_zj8`pXAaZM_jXO zjp6xKeGXi5v85tNFpH+K5`rA6Rz)={6H`PpML1%5d3$yE%)#-^^Uq%3>NnHuz*(#+ z420Y-H%q`@@3ZsIj0BOhJbHtpPx9hldF3DcgIoVQTTAqql`+}c4wH^MM=Pc?reV^u zawkIT*$=qL{l!hoiW=<~@5O()FhSf@s{M2>Pbftw9*{H$^{ZPJ3Rta6>8lo{Ix13G z#h0|Z4~!)YbbAB;qK)S(WAHwwki{}tM(e5gBGT1<3R%*birT=s{A|riWCfy{8jZQH z+!oT!Vb%MPi)Woi?G2rB0z#dr($T?7C(W79#;yPAQ-AS~e9gCSv)a~aAJ_=FWXFu4 zUj@Of5hG6F;lJ}f+$izU?AIdRlvz)n70$06yzpbIn?Js{^UBT=7VY*{)2XJATsl`` zo*{M$QN3hf#nIfjM;bgLEAdvK*y6gZOA~uSFzkP4#e_eIgJzMMsAJ|JBDt?p6`(0T z0V7z5oduInO>(lkPf%0{L85n2ChFVM4iB>G9((NY^Uwb9qg%7a9%uh; -o zr&_mq@0u}S2B&Qh@AoqR$d!uX#p$tV7|lIb Ex4Qj#j`!K0)XULxXvA8~P#Z-2MvV9> z!N?50?C9@2z-FTL6dWX*(^x4i?0drt=yOb-Il24c*gk#sg7UI)_kgW^v9`CbGeJ5; zm4qPu{k={qt!l2z$C=|^eE9R7c5OS@f7QM?K?WK{F|%BZ;8|f%2L^+L2*C)hVI4C7 zDZ)c35(EjL%9%5~e0%p1h~4?wy;q+5(I@_;e;%GgziuFL(7^%I2iGn>;J|Jk`PTw< zSnD~}hKh4DE$;%FWY;=r@1RGl4j$>Q?;Wvtj@cy8n6;~;lNF@c=xopEjN`7f(=3sK zSTqG<;#xakl%5qO9#QHT^XW=xC?%#M1i^xcIUqs$(!tCkyq+aV %V3n?zBTMXH}cp|gcYi#oX@v-FerS}CyZ)96kT z??gKBRgku-7yFXf4y1HmaH~e3lN}O~Zbh?z__=Ezc;f8Wf6tSD`cJ<1KM}$ndksw} zU%o-u=s7YxB*Wt->lI^sVZ=j$@+UXq%Y 7_iO7Ms`l zb*Vaa$EBLp 0*XiD|u >)-#}-+aG*^zPMr#5-^(-px`s?ab*Gk!8#l{@ny-?t%t!MItUv5D~Xx z8zB-9@sdqwsv00ui2PLU)}3n{By&0GhyK!Nv9C+5g_Y$H_kx4+tGIrNcL
Dj36ke4DtBN~tEAc84Y5)+ST!@E?nQr)Y5*eTq?x;mnm3(@VI3*^A!a_2 z-wiZZ@}@#H0!*F8X8YV|8wr9jtcdXx^ zQ}sUe`mAA$ksOS82r$MBUJKN}eSei_hU?9UF*5BOhuPHNdH7g+`^VdpPc~`QkRzn( z(WD8wZ1e5CG_Y4ZAhxd760bTz97}#`9^<8d!a8nDnMUPlR;cyjrOj`dz!9jC1*r~5 zRPlGIf=8+Yt_vQkR$iQdhE(Q_GsQcSk_drdi|+W7erq>geT+Dp@{WX>F^PMyJRO_9 z|LC25`YS|pb^S?Jc0Lh94R9zDL!g~=a*X^GpZNd1{1czGXTn8kV$+u4Cr83N_aG&6 zZJ-J3N<~6(8xkQQD!I3n<=zJ(qO1=*MF^)>#fh;v5?24B-s-xXy|wbSj#z8ks{TKP zh$gWw_PF#{(|vydJ}^6CFlhFX1EiEPy5wR)tRy39iKB=i*(sAOFK{t%k#1mvXoVbr zNC!!}R6o5cHA}d~g~AEYl)XfJ;xdH>np#og^JaBtXMTg_pZLuG@CV=X+aqBnK9k9G z#^EvNW*Zk^)!%HYDn>3a;$g$c48FY3jmZ3Iub8eb*Sk8FmPcW-gJUhBLF5)Zy}13M zqdU(|mnXAqa;#z`4}?Z=%}wRhK@Af(7tgJiOJ~KbC&+2rFq}VEHyJ=Sv;{y7^h(K^ zx|Dxp(>=t+vp7M9yA~8N@|-l6(&x~2R1wPxM1qzZa&RVim-1jopivgf %v9hjM$~LDm7uAj-}bJ!$*w-XSL=jILK>$F}q@lI+BP$wwutJ-*!4>4l8U*w`;bm z;RVtMZa?{ (q_wAKM; zV}npDLdbqco;if|9W!%VXR1|^Gl>7(cg D>9lXvT=zym5eoX~q$jTrHU$H)x6+<0)DVAw>SL7lmy zmeaxtK^O2c>Enyzk4?hCBzj|01iDTp$qj-N1*;@L6tmnFp%~kyLH`*WRQ&lmM6hwA z&rY-D*#Pva^xj<`$+NX`yA!FSiBzjRss72iGf#dDQf6qOR4CM6J5a&7 YMHEmnG|W4WWU zAbpB!Pui{H^Nn1HhumU$$TUysgQ<6UP$G(VE)j6IP6%G&GD$2LqTaZec+3XL;!;CJ zWJe>%#B;)4YMMW{w^m%e$OuZ^K{-yj+_4WEZScMIL3M;LI%aU6FH(Q4`DT7$^AAOe z)TSs0OMgih&8{8gja{u=`$o|xmLf(Mx|&DuQs-G3E3_pT<|ep_izG7_br&lRh*BeH zz5j-8=A>j5{gu`66YqWOJ3sMfzWZyxBho&0 M9`cDFvFDIt03oN`*sNV z_MZ7cwY=}Y%0|t2h7QD0>#k0NEr!;Fr#JzWn`&OKUivAByCA`9iM^FOZO-aOq#<`| z&Q>~;*v74+d-B=E@rBvm6L7w19=C+3X$;k*#|HP_T)dIv &dnTG#4cU-II96MZ=dz!aQxcVLxTuL{O5SsV` u8t*1M7HxU6Tvpb&$i&)6(4TR~!|>+Ka~ 72Jrf}RYq>&TSCwS$rz3^inw9ntUl5{Eyn-i6|2P-(tPL@g3RmIw1Oi)u=QYtzB z8VC?UEZaMnSC&=XFRik*kT0fu$m`%% FY-?zJ2BL% z#kJsI^9_3v;FY`jCL8D-5A*+h;K+(xu~!{t 4M#yV7 zxDvM=%)D$c m-) zB&Iy3P2-|VFSg51PPX3yXT$WWNi-TQ;f3BFcbJs1BHa-E3f+0jFq{wi`Z!rt^98fr z7;bX%NnZJ(_L 4FDg&r?hZNDG=q97eza ddaBmm-e1M}N_TQbz;kh?;n}pPMAK^1q(TCugbHjU$kOwu5Ih*sC4d+z zXgOfAy=Y%qG?$Osd9!!!MHXk7U7EH+5Hzg&kFF2j#$Vf)>Lod1#OsQY8N7C|!5BuB zI>*gI=V-LbO1K73cHPJEXB#=xENhy9LT9w!m=P+v*S%^Ra@@3 zeVKOujmpAMGtT;EyUsxj`x{keP`dIBnS+(}C81E*fC(DCcpHR-O0kMlk~nIOx~LFS zk%0>V8aYfno4SvOctORTE6%hYvA(u0LRTr*@F0Js+-BSm8#)6f6tscWauFxZvG5dk zf9ScN`uq0u?Z+o=lb!cYAWexYJ7UppZ=XNmq#oohI~mvLO=3;q49o>VTm($TDLoNN zFC`o11*%U#8XOU=(Un}m9}1Vt+(K*JiD@m4kn&PPG)ot&sL{UU#}a%}FBj?h+1gOL z&(P;R)|w+Imz|f$Sl@lIxO+>jfT#+TEV@;P jO*YVpj+?%YIrIxkx;6kgO8K|%Am}+IC3`5fEv^IUC#bRk7 z?wUlfAaN2+#T5x{X>PA2n6fo#TEBj9{8Jv=?VWkUzX =eEfAZsh_sNSVCs%itehnN}(1 8PZ-cEqZTQ)+oc9=@fjKUHY^ =?Q&fzM*4J33L4#VEB1q_aD*B*50+l7?qu;Y1D#f*&J`e*n z2SUPebt&HfRHWn%a&oKph#G1Ogr;E%(Oi<`NLLIN#nr-Y@)dHz^vv_e_ZB UiPUe=hN{NqAA@E?x43#9qjR0qWA_VWW0{v0`x4cck~em0~rAJJmnQtJ p65xZ3ZNEn9bjid~_kaiY;1UPfl>{kiyeq+0G{?5LqfbQ6 zhR}%VT3$&{UBaM&PEIR)1uo|Pu!00p8bk;fY2HpRoqLJyXL$LOXO}lF>VYf lkZ%*??5Q65UNL|5b)x)UB}e? z89K-c Xt?A*^45rFQEY> z7H1^MRg0e89g4G;gsL%AU%PJikCh*IP>X#6EK@155Il%@@<<3Ei!FJ6dGh1O&mAxP z>i*RU7q&GX(w>P?678+q&H3|X$7HyV<#di1@y5r<3|<4Q<%by&qNR-{MpbNZAY5Pa z*;V)RA%1=q4x$?##l77B9SfL1=PH6BRRY(yp3QX$-XV@yne2HT!ZuuL2J^DY41OU~ zro3$(9(pgMeiNzfn5n+Vp4Y@OK*`|tn}0RMgQbWxXsB+=VL}LDlD6b<)jhZB&cw-k z8?Hb=&u&N$!3>R&je^GT6*4+ J399{Q>D6D`Kd@#4~t29&XXlb=4Kpz?sAW8NL?zJrB!8DY@n9@0kdWvk2 zn;D*GxsM&@7F~U3O}@BCmA+cTRZ3l@54IUrba=gfd-VLk*PNh_8RVqdnjdEBkR6mo zf>E48yfA28M@u$h1En$OK$MyPsDgMja=I?lg$B=s!qHbrwDF)I=!A343#&HWyY@fc z{D;5&9l!Z1+cRt;GQV~G!r2RS9Zkg7q?fTSVZ=j)kr}+!$fM;tDo?ful$9`t8!J9@ zls?v_r*~#IW6n27!(_|TQ4s*-F;!g!F?F-rk`~e0o!-eEdA0Ug&Mt?2)?gU1?Yk}e zDLMM4eyYEVnTSx@EctM**%N{qJn$Mb5Jdtm)fh4VnnSuOqMo98gNI_xBM_PiYDfy2 zLUVh*c-qs)C*ksp=!nafFzJ)eb!r{f=22fUI0#E5VH0PHBKVA3qCd^S-%LOEPwzde zm!{4=Y=LI(6vUIENHA%{)g=h7=BBas|MS|zPX~JZ{->*
A~!?VA!JlNeYb&e~WY~g<4;VCuaX4A#K%VMoagi0p*%bdXoo4vGhd&%ff zZfJ!Ksjr9QAt&hBKu->udQCS;8}WdvN=Z7nM5mE3jXLd2TvkX#wwN~e&P_gbeE4TS z{lou{_x&4JnI6EoE0 EnB5qqHax`C7GHetRtY3+ZY)ZJQW3YetWmtTe(aZiw$Bg-{QWQL4UjLSKOaU zD4PpC8CdJt>W +h)6 Aq;3D@95bbsyeBOkCA)6_v|moyD5 z)J2I#@({ah;+GGryFjqcv^2pS%q@G*$37^cl^?9_ch(&+WJ7>yy+u_vNbbEZT#}gj z`g{)=z(y2d9oh2uB}zLVFbWR%!O#-1EL7ov_tev+<{+dB5!O1`8ezz~fm~&fSxsgJ zRZdta>QJ4@fDJ@Ehy*XchU&Z#R@#6DR82E2Xmx^zsMElf(5&VOSuzU{PoiAAFugQA z`(J+Mhrazi-+IK|_i#2&LRcm=^ar-rjEodv#KVG-8N5b_^@hHt1=+L^>EHlv!)@dF z!^MZ= mftxl1^4@3b#8DA8KnJ$F*f_69j(pBu%93AN#}l(2(f?%6A; zAJyFl1L{Ce?%MMXp*PjFQrSlF+Vf(LnCC>UQaqA#C|4?75XBYEp8kD(qq;ODpxbE> z-v%snE|v@ERcM;|s{7pGqOsXGDBHC<@f;G}hPT+BuzW?XWLKmECa6F}kKi_Z8vgRF zpZ=M}ORK9hbSH5FVTajqIt&^eH_5G)6^Xgkl_b#|YB6)wv^F&!7V&B22mLhM29No? zgwioPpX1D2B&S!*ToD^+P{pJz2hP{ybUv;9`gOL*X*Udqeu2kQ!s)2zoK>0a*G7rt zQj46?(h~E?L?p+-w2yEJ!PdEk-eOA2#RqE=AfZ}27GaA>u1;KEBvP#lYDH&2a$}F8 zfR)@8RAN>km=in-v6JW$kfwESg(*6jOjb#;kU#U@Uihh3KL4I`XaC|$Kl~p&`YlIr zc=!6-&s<*DT-NSZ8y%!ZjCf;XWCmYW^jf1**td2xDt&AO;RFs6HxB*TqwXWpJU83A z(};M&h0qWLGwXC>9sseqYg>fX)fzz@cMm35wwo8RzPLMw4IGqQb?;INB5D!-gP1{m zTsP>UqzWjXS^Rf$m!CXT_1 {Cn*qN>ax$e*`xA+AjWHW_jMr!4KQ6Y6_yij!jEwGM^?}M z%<(HHyJ1VBq$Vk?#+D@^)bM!kxeKIx$i*cjLqZ}L>P21<>y^~g0 wrNYSI{g% z> mWf*E&*F(LosYh0^ TI@b@{>G7UbmsuQ!O1(%UT)nQ)j>}Pf;@OvMvQo4Vq^xd32LcQ z;6B&6{Omn$ynOV*+b8cocm5`l5}b4xFcn2sX`x};O#o3zhDL%zGD67rUC9Q?!}Njm z{x7xspr;7sgL95S%TuIUOOWmA(|TEk%QcZLvR=-}ae}_dV_zj+O2>=KoNQR}IpQ8M z#Z=L3l;_9oYT6*k$;ubFPddbXdh_$Q-hXzddvup`oTZA^asb$?(moePd{MXDJ_|lv zLq8^2- w6exyo$5(pl^kiMX?PQiONMG~Qg2kKi%iPL*2S*WMA z@2{PImjMT?|ErTW;tjtrN`asoC~nr5lIDbhmv1)60O1nWR*5ovn_l5?>aRyC70p*< zF4G8>FKl8Jw)97`w}-AZ2p(Mok46+xNAW0YlAA5MG)WL|vXwVP*o9 wxjH z`?8`2eOp??5>58NX(R`s!5~ge_NVMVm)^g3<*CGC1<9qE>Jo49Nbcc#EK2Ys(n-Vu z(x8r~Bz?`H*8(q>(t4(h6uGjo&o@iY72Lscom>9K>5JYsUk_U~C0sHalG`lRz6siA z87Msz#B;5FU$c<4{YVSRSsKW+nPUlWC$fSL@1Towu6*`Rk|+2j(D`v`1eq3ueNv!9 zjW*CmEXcG**==26dEZW~AKAG5nvk&ChCn9yZMq~uh;FPpk`S6@l*#nYc6 ki(<|VxwiwA;NZac@a0gOZQZ9;`Gt|R=A;H^LHco8 z$`I)}S|GKJHTAI+&4l{G;Zs>zSxXPfqpq2u#}c`BL=;!gkK`VrYG{z))zZLCN;1NW zaG|&(izZQ%2@+~kW``-0N%AnqecGr5BWqw=&YyX%ZI5^K`>y@?Z@co1-^@+}(dh)o zrlc7wPL7%G5OW_921ivl{wsS@%UL(v!AFev3SndhuK|Rtn$B$xic(CWb%Lb!U@>{& zN1ypCXW!o5N=MrPBe#Mj%a$BbaiLYg-ONi}fGOgH8p5~YM&renAY12|WC_Ax>R1XO z`yhf=tHX8iyhC-lA3mN^m`k15^$q%Z_W~yyH)r3&$`!OEQ2Ky@2`PG7&zVwo8cvF# zEz+SYtb-0u&|!D|82j9ltDkuL^wPzhCs=?Jw#w^m!{F%)!e3>f203ySoM9oyBT|RC z ^t$QE)>BDQ&^N$_OUtmj%H?<5*EQ-4A6cko?L<|k}Z*a0% zgh_QGsP!kMcVNhEiY3qHJ(SYb^%3YLnyL2+a=>dVrP78;H;
jR38`1QkY{z1$#iGdi`Z;;1D(yPms^fP4{H!`uarb_ZG6xY~N198 -=qX-E%>D!=tPx5JR {7scOYO> zC88|gWoIGG(LeQ(e{lP;{k_K?f7wr%PBMGQu>qmMry_W9D5{PN>$(H2J`bs`r|Jo; zo(#xNMPeYX0wSg&hFH<-i{w_ygFURu#C23)$QT0J7H5f#^vh7wx4{@*wQ%LZ&=Qc4 z%~RmAE^>YFIT flAIDh_Y72aut72Vxqy}a|n$+i76 zXA>!c5Y-2~OF-Lv_8m=3tynmZ6%8X^AB@c4%ZuW78$8?0g}wuj3nzZiOjZj%`O5M~ zAA9@a`r+M2_AWcOT5lBzBAz48?g8mU6muj<@rucv4o%h$McK(t`T{L?G*=B~AwqW3 zDWO|>Q{($**AKk;%jw1SXwsYKsP?tvIgcQvlR~I0#=LIqI6;zGm9Xc@cn)xA>vUKv zB)r9wTLKfEawgF%W;gEn$8YkHvrKL8U5)P|D5(enis52c0s#I6r&+SWhn7XGp^7$C zZbC$+b!P)9AWY#zxhMQQ{J@9)>6u^t^&fumllP98oju=*!ATxD)T8)Bb3X-1&<;!& zdQ<0SV3Ao4WggB2b5iv;G^CzK%-uu`f_oA%$#sZ*1I&$rP8;+r+*m(&JaygnmqHk< z4DzKhgZ@vT->GuUg;TMCQy(mYm-Nbje*69s>MuSWY%GHTK8tMw UqJ1Jms!CA^ z5WHG&2*HH`AsCt<)mnzq^*iQtAEH7ozzvo}+7z0Z>$KbEx#cR&@BR5}pZwide#u4U zyn^hcRoLEn>^28inZ*8V_~0 wE*)DjJ<+3v z&;Hm8|J~l>w~qalM$fDqbwxxRFC)Ask>Cy?KorlTyx>8^v+|#EPsu)axjsINymNkm z0L6koyR-UwLfH$-Ud`j^6z-o`_Ow81j-h;uTqvn7l>UMFTL8Huj^MZnNyOa^$zcsE z }Yc%Gp5hEr*CT#WUYO64h8me)xwA1Jg^D2)=N7$D}lL@7IKF2hd6y&2-r7olF3 z$bC~#yKjMYfC2bY6o><5;eA(+3 kNXg=kA<(PhY=mlOISJjPCul*AoKz zxxUv13RxfP8}AbbgrIjztUt9>!HG^lqDkY8HY)-an$U(OZO2 rD%p-2uP*DdBgcy1{8IyNBI>kZv)-G>) 6|3iIvw8P=5$zEnW}`44w`E>4}SWH_^#RZ1-f0H2<(!k_4`@v0(ojzZLm;F z83tm#rX&&aSF~cdSEqEH&?*U*Ai pW^)1d^z8lUOG-M(jDi& zr04;UxSKRys@;aE_f)@OPqIR-cd%Lp8kCM)Yfzge)aC#txEGy<;qH=k2E#1CroZq5 z*7uszzDj^iTCk~1#1T_h`(huh@0g&DiI(N!SBTNKd=QgUSKFEg$hxLyooMjNvj*!2 zDS+%`a4O{B;w5ab&J;-1%2q!E2Cb^6gDrbbPz47>JXhT2TtjdgRJ|BiT8v^67L#~$ zGFvX}J3sxQZ-3vfcnh%L;*4!_#-M|QcA3jMYPn#cQl648ktG;3<6U~hS03Xv_vMDy znN~juw5C&Aa^oJKc IOZqDERj-UHS zKYaez|C*MSrEACBBV_U5Jm7)}BvF^>Qndoa!trD{nB@x21S)h+UnXi!7~}#nKd|a` z zL76rP~dQXHi6BioO<808|PdgH%s(fY5B!G){CJ&YFS=Kbt> NB0 V1IJvu0 g6w@5GI9&Jg-RP4qKzpV8rWzkr{k>QIv4if*2qPE802F{==94!v3SnL)h73(V=z{ zLzC2iAVq%{(du#I g$@I?j+DnTMJOAp6TMZW{OzUB{SHFR7wDGHx&KzygGEhc56d`B`kh+|Lan(6` z9iD`Lc+~#=7jOF4y)XQ_Uwhl *XI+P-iLb^9>T{*arLQLVg&s@O zW2bP6`T^=PEH&J?sOoW`USiaseO=#YA7ofN%YYda1)@k+oJcN4@Ty3aYBA}3uSKV{ z_o)29p+*S$1VoS=707I0ol}Ult|4NM2AFxHMpO^M6rzN!Yj sNlqpsz6cnu%#B7#oj38W z)5U9l>$%@EKlhWq_xT80u;aRwtf4fs6NsYPmquaLv1QmHPJ(-^@_+g|0AOGhON|g@ zEu!9cTj?iR8%cxvt^(g=2E2-L(VSto+!8scY=A-V+8q;CB7LMg_m6USLpv;qCZ`oK zymc#-!db$J$cgwOYxx%YvwQFREm!`q^4?4SHfbS|JcVsJIXT(h+TBQq6iK0XsS6=` zIoP`FlDliCQ;qqSylibUQ|sm-x1} G((v+FtwN0~l6MT|nVxlmGY4FJ;&G6WUiR(0BJ3iYz zXyY?CzG-^(-}{;??}10*=B+!IFP!TOB+|;K6KPk+O@wwuoUvFj-9Z!`nZbzH0b|VI z%MI7mbzv3{?%dnIu(RaE@oRi)zWq!)yXM6(g-%F{TK2b-AkvbPl@jrQS}ljS67h7! zJ1Kf`a%Fn0i5905sq-MqGbZkfM9N^{^sQRfPd#uJIY_>5Y~#Y9Pi{6>%0p}EkyC2? z1*G^F^^Wpo`Ye)=4mIdRIy~W>Xv(ki9BJ@W!U=eD%;eVJ`P^UpmUn*Jjc(^$xU^cZ zvl|wRlkM&4eQL_G2O-2Rr5NJ8ZB?Rb3@Vz
;&3|K2{FF-%1f87K5-EA7_P(b z{L6oD@t&_ae(bT&A1t;nZ+Eur>rE&g4OWbZMUj+HTlY1{gUzI>|4g7J4r0~PTT!4} zqK`Ddpr>MOw(ag>;+r{wLMhl}41;c3L!kr4X$QW+*x$c)c!qtT-~3`8Pm_rO74Xf# z0Gn5*Z<2%3@S9WQz~$7HE7km