From c9009f6bdcc200a63c06ac4b51610bf65ce3eed8 Mon Sep 17 00:00:00 2001 From: Johannes Gerstmayr Date: Wed, 22 Jun 2022 09:20:02 +0200 Subject: [PATCH] some final fixes for version 1.3, finalized shadow to work for simple models; added perspective view, see openGL settings --- README.rst | 6 +- docs/howTo/ubuntuPythonSetup.txt | 12 + docs/theDoc/buildDate.tex | 2 +- docs/theDoc/gettingStarted.tex | 27 +- docs/theDoc/interfaces.tex | 16 +- docs/theDoc/pythonUtilitiesDescription.tex | 2 +- docs/theDoc/theDoc.pdf | Bin 6124396 -> 6128107 bytes docs/theDoc/trackerlog.tex | 109 ++++- docs/theDoc/version.tex | 4 +- docs/trackerlog.html | 312 +++++++++---- .../Examples/HydraulicActuator2Arms.py | 1 + main/pythonDev/Examples/rigid3Dexample.py | 6 +- .../TestModels/generalContactFrictionTests.py | 3 +- .../TestModels/runPerformanceTests.py | 4 + .../TestModels/runTestSuiteRefSol.py | 2 +- main/pythonDev/exudyn/GUI.py | 14 +- main/setup.py | 1 + main/src/Autogenerated/BeamSectionGeometry.h | 2 +- main/src/Autogenerated/CSolverStructures.h | 12 +- main/src/Autogenerated/DictionariesGetSet.h | 60 ++- main/src/Autogenerated/MainSolver.h | 6 +- .../PyStructuralElementsDataStructures.h | 2 +- main/src/Autogenerated/Pybind_modules.h | 18 +- main/src/Autogenerated/SimulationSettings.h | 22 +- .../src/Autogenerated/VisualizationSettings.h | 86 +++- main/src/Autogenerated/versionCpp.cpp | 4 +- main/src/Graphics/GlfwClient.cpp | 427 +++++++++++++----- main/src/Graphics/GlfwClient.h | 32 +- main/src/Graphics/PostProcessData.h | 4 +- main/src/Graphics/VisualizationSystem.cpp | 7 + main/src/Graphics/VisualizationSystem.h | 6 +- .../Graphics/VisualizationSystemContainer.cpp | 126 +++--- .../Graphics/VisualizationSystemContainer.h | 11 +- .../VisualizationSystemContainerBase.h | 12 +- main/src/Linalg/SlimVector.h | 18 +- main/src/Main/CSystem.cpp | 160 ++++--- main/src/Main/MainSystem.cpp | 26 +- main/src/Main/MainSystem.h | 6 +- main/src/Main/MainSystemContainer.cpp | 10 +- main/src/Objects/CNodePoint3DSlope23.cpp | 8 +- .../src/Solver/CSolverImplicitSecondOrder.cpp | 7 +- main/src/Utilities/BasicFunctions.h | 20 + main/src/pythonGenerator/exudynVersion.py | 4 +- .../pythonAutoGenerateSystemStructures.py | 12 +- .../systemStructuresDefinition.py | 17 +- 45 files changed, 1171 insertions(+), 475 deletions(-) diff --git a/README.rst b/README.rst index 29a3dd3d..089f9b97 100644 --- a/README.rst +++ b/README.rst @@ -2,11 +2,11 @@ Exudyn ====== -+ Exudyn version = 1.2.134.dev1 (Corea) -+ build date and time=2022-06-17 01:34 ++ Exudyn version = 1.3.0 (Davis) ++ build date and time=2022-06-22 08:18 + **University of Innsbruck**, Austria, Department of Mechatronics -Exudyn now includes a redundant coordinate (constraint) as well as a minimum coordinate formulation (KinematicTree); machine learning and artificial intelligence interface (openAI gym); improved explicit and implicit solvers; sparse matrix support and multi-threading; basic hydraulic actuator; creation of beams along curves; extended robotics modules; contact module; **PlotSensor** for simple post processing, ... See theDoc.pdf chapter **Issues and Bugs** for changes! +Exudyn 1.3 is out! It includes a redundant coordinate (constraint) as well as a minimum coordinate formulation (KinematicTree); machine learning and artificial intelligence interface (openAI gym); improved explicit and implicit solvers; sparse matrix support and multi-threading; basic hydraulic actuator; creation of beams along curves; extended robotics modules; contact module; **PlotSensor** for simple post processing, and some improved 3D visualization, ... See theDoc.pdf chapter **Issues and Bugs** for changes! If you like using Exudyn, please add a *star* on github, and send an email to ``reply.exudyn@gmail.com`` such that we can add you to our newsletter. Let us know, which features you are using or which **features you are missing** and follow us on `Twitter @RExudyn `_ ! diff --git a/docs/howTo/ubuntuPythonSetup.txt b/docs/howTo/ubuntuPythonSetup.txt index e8f134d1..a04c2686 100644 --- a/docs/howTo/ubuntuPythonSetup.txt +++ b/docs/howTo/ubuntuPythonSetup.txt @@ -52,6 +52,18 @@ os.environ["CXX"] = "gcc-8" #or follow these hints to switch between different gcc versions (UBUNTU20.04?): https://linuxconfig.org/how-to-switch-between-multiple-gcc-and-g-compiler-versions-on-ubuntu-20-04-lts-focal-fossa + +=============================================== +#OPENGL on linux (for special examples, not using glfw): +sudo apt-get install mesa-utils +sudo apt-get install freeglut3-dev +#find GL include files: +dpkg -L freeglut3-dev + +#see https://askubuntu.com/questions/96087/how-to-install-opengl-glut-libraries +=============================================== + + #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ #DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG #DEBUG on linux: diff --git a/docs/theDoc/buildDate.tex b/docs/theDoc/buildDate.tex index 483e2c3a..b3d2eb76 100644 --- a/docs/theDoc/buildDate.tex +++ b/docs/theDoc/buildDate.tex @@ -1 +1 @@ -build date and time=2022-06-17 01:34 \ No newline at end of file +build date and time=2022-06-22 08:18 \ No newline at end of file diff --git a/docs/theDoc/gettingStarted.tex b/docs/theDoc/gettingStarted.tex index e26115ac..493cc4ae 100644 --- a/docs/theDoc/gettingStarted.tex +++ b/docs/theDoc/gettingStarted.tex @@ -2,7 +2,7 @@ \onlyRST{ + **University of Innsbruck**, Austria, Department of Mechatronics -Exudyn now includes a redundant coordinate (constraint) as well as a minimum coordinate formulation (KinematicTree); machine learning and artificial intelligence interface (openAI gym); improved explicit and implicit solvers; sparse matrix support and multi-threading; basic hydraulic actuator; creation of beams along curves; extended robotics modules; contact module; **PlotSensor** for simple post processing, ... See theDoc.pdf chapter **Issues and Bugs** for changes! +Exudyn 1.3 is out! It includes a redundant coordinate (constraint) as well as a minimum coordinate formulation (KinematicTree); machine learning and artificial intelligence interface (openAI gym); improved explicit and implicit solvers; sparse matrix support and multi-threading; basic hydraulic actuator; creation of beams along curves; extended robotics modules; contact module; **PlotSensor** for simple post processing, and some improved 3D visualization, ... See theDoc.pdf chapter **Issues and Bugs** for changes! If you like using Exudyn, please add a *star* on github, and send an email to \ ``reply.exudyn@gmail.com``\ such that we can add you to our newsletter. Let us know, which features you are using or which **features you are missing** and follow us on `Twitter @RExudyn `_ ! @@ -14,22 +14,25 @@ + **pre-built** for Python 3.6, 3.7, 3.8, 3.9, and 3.10 under **Windows** ; Python 3.8 for **MacOS** available; some **Linux** (UBUNTU wheels are available, but at most you should build your wheels by yourself, see instructions in `theDoc.pdf `_ ) + **NOTE**: for pure installation, use **pip install exudyn** (see further description below) -.. |pic1| image:: docs/demo/screenshots/6pistonEngineStresses.jpg - :width: 22% +.. |pic1| image:: docs/demo/screenshots/pistonEngine.gif + :width: 200 -.. |pic2| image:: docs/demo/screenshots/demo4piston.png - :width: 14% +.. |pic2| image:: docs/demo/screenshots/hydraulic2arm.gif + :width: 200 -.. |pic3| image:: docs/demo/screenshots/shaftGear.png - :width: 20% +.. |pic3| image:: docs/demo/screenshots/particles2M.gif + :width: 120 -.. |pic4| image:: docs/demo/screenshots/rotor_runup_plot3.png - :width: 21% +.. |pic4| image:: docs/demo/screenshots/shaftGear.png + :width: 160 -.. |pic5| image:: docs/theDoc/figures/DrawSystemGraphExample.png - :width: 21% +.. |pic5| image:: docs/demo/screenshots/rotor_runup_plot3.png + :width: 190 -|pic1| |pic2| |pic3| |pic4| |pic5| +.. |pic6| image:: docs/theDoc/figures/DrawSystemGraphExample.png + :width: 240 + +|pic1| |pic2| |pic3| |pic4| |pic5| |pic6| This README document is a small part of the complete documentation found as PDF document in docs/theDoc/theDoc.pdf. It is auto-generated from .tex files (sorry for some conversion errors!). diff --git a/docs/theDoc/interfaces.tex b/docs/theDoc/interfaces.tex index b822267c..8f74d6c5 100644 --- a/docs/theDoc/interfaces.tex +++ b/docs/theDoc/interfaces.tex @@ -338,7 +338,7 @@ \begin{longtable}{| p{4.2cm} | p{2.5cm} | p{0.3cm} | p{3.0cm} | p{6cm} |} \hline \bf Name & \bf type / function return type & \bf size & \bf default value / function args & \bf description \\ \hline - autoFitScene & bool & & True & automatically fit scene within first second after StartRenderer()\\ \hline + autoFitScene & bool & & True & automatically fit scene within startup after StartRenderer()\\ \hline axesTiling & PInt & & 12 & global number of segments for drawing axes cylinders and cones (reduce this number, e.g. to 4, if many axes are drawn)\\ \hline backgroundColor & Float4 & 4 & [1.0,1.0,1.0,1.0] & \tabnewline red, green, blue and alpha values for background color of render window (white=[1,1,1,1]; black = [0,0,0,1])\\ \hline backgroundColorBottom & Float4 & 4 & [0.8,0.8,1.0,1.0] & \tabnewline red, green, blue and alpha values for bottom background color in case that useGradientBackground = True\\ \hline @@ -621,16 +621,16 @@ \hline \bf Name & \bf type / function return type & \bf size & \bf default value / function args & \bf description \\ \hline drawFaceNormals & bool & 1 & False & draws triangle normals, e.g. at center of triangles; used for debugging of faces\\ \hline - drawNormalsLength & float & 1 & 0.1 & length of normals; used for debugging\\ \hline + drawNormalsLength & PFloat & 1 & 0.1 & length of normals; used for debugging\\ \hline drawVertexNormals & bool & 1 & False & draws vertex normals; used for debugging\\ \hline enableLight0 & bool & 1 & True & turn on/off light0\\ \hline enableLight1 & bool & 1 & True & turn on/off light1\\ \hline enableLighting & bool & 1 & True & generally enable lighting (otherwise, colors of objects are used); OpenGL: glEnable(GL\_LIGHTING)\\ \hline facesTransparent & bool & 1 & False & True: show faces transparent independent of transparency (A)-value in color of objects; allow to show otherwise hidden node/marker/object numbers\\ \hline initialCenterPoint & Float3 & 3 & [0.,0.,0.] & \tabnewline centerpoint of scene (3D) at renderer startup; overwritten if autoFitScene = True\\ \hline - initialMaxSceneSize & float & & 1. & initial maximum scene size (auto: diagonal of cube with maximum scene coordinates); used for 'zoom all' functionality and for visibility of objects; overwritten if autoFitScene = True\\ \hline + initialMaxSceneSize & PFloat & & 1. & initial maximum scene size (auto: diagonal of cube with maximum scene coordinates); used for 'zoom all' functionality and for visibility of objects; overwritten if autoFitScene = True\\ \hline initialModelRotation & StdArray33F & 3x3 & [Matrix3DF[3,3,1.,0.,0., 0.,1.,0., 0.,0.,1.]] & \tabnewline initial model rotation matrix for OpenGl; in python use e.g.: initialModelRotation=[[1,0,0],[0,1,0],[0,0,1]]\\ \hline - initialZoom & float & & 1. & initial zoom of scene; overwritten/ignored if autoFitScene = True\\ \hline + initialZoom & UFloat & & 1. & initial zoom of scene; overwritten/ignored if autoFitScene = True\\ \hline light0ambient & float & 1 & 0.3 & ambient value of GL\_LIGHT0\\ \hline light0constantAttenuation & float & 1 & 1.0 & constant attenuation coefficient of GL\_LIGHT0, this is a constant factor that attenuates the light source; attenuation factor = 1/(kx +kl*d + kq*d*d); (kc,kl,kq)=(1,0,0) means no attenuation; only used for lights, where last component of light position is 1\\ \hline light0diffuse & float & 1 & 0.6 & diffuse value of GL\_LIGHT0\\ \hline @@ -649,18 +649,21 @@ lightModelLocalViewer & bool & 1 & False & select local viewer for light; maps to OpenGL glLightModeli(GL\_LIGHT\_MODEL\_LOCAL\_VIEWER,...)\\ \hline lightModelTwoSide & bool & 1 & True & enlighten also backside of object; maps to OpenGL glLightModeli(GL\_LIGHT\_MODEL\_TWO\_SIDE,...)\\ \hline lineSmooth & bool & 1 & True & draw lines smooth\\ \hline - lineWidth & float & 1 & 1. & width of lines used for representation of lines, circles, points, etc.\\ \hline + lineWidth & UFloat & 1 & 1. & width of lines used for representation of lines, circles, points, etc.\\ \hline materialAmbientAndDiffuse & Float4 & 4 & [0.6,0.6,0.6,1.] & \tabnewline 4f ambient color of material\\ \hline materialShininess & float & 1 & 32. & shininess of material\\ \hline materialSpecular & Float4 & 4 & [0.6,0.6,0.6,1.] & \tabnewline 4f specular color of material\\ \hline multiSampling & PInt & 1 & 1 & multi sampling turned off (<=1) or turned on to given values (2, 4, 8 or 16); increases the graphics buffers and might crash due to graphics card memory limitations; only works if supported by hardware; if it does not work, try to change 3D graphics hardware settings!\\ \hline + perspective & UFloat & & 0. & parameter prescribes amount of perspective (0=no perspective=orthographic projection; positive values increase perspective; feasible values are 0.001 (little perspective) ... 0.5 (large amount of perspective); mouse coordinates will not work with perspective\\ \hline shadeModelSmooth & bool & 1 & True & True: turn on smoothing for shaders, which uses vertex normals to smooth surfaces\\ \hline + shadow & UFloat & & 0. & parameter $\in [0 ... 1]$ prescribes amount of shadow; if this parameter is different from 1, rendering of triangles becomes approx.\ 5 times more expensive, so take care in case of complex scenes; for complex object, such as spheres with fine resolution or for particle systems, the present approach has limitations and leads to artifacts and unrealistic shadows\\ \hline + shadowPolygonOffset & PFloat & & 10. & some special drawing parameter for shadows which should be handled with care; defines some offset needed by openGL to avoid aritfacts for shadows and depends on maxSceneSize\\ \hline showFaceEdges & bool & 1 & False & show edges of faces; using the options showFaces=false and showFaceEdges=true gives are wire frame representation\\ \hline showFaces & bool & 1 & True & show faces of triangles, etc.; using the options showFaces=false and showFaceEdges=true gives are wire frame representation\\ \hline showMeshEdges & bool & 1 & True & show edges of finite elements; independent of showFaceEdges\\ \hline showMeshFaces & bool & 1 & True & show faces of finite elements; independent of showFaces\\ \hline textLineSmooth & bool & 1 & False & draw lines for representation of text smooth\\ \hline - textLineWidth & float & 1 & 1. & width of lines used for representation of text\\ \hline + textLineWidth & UFloat & 1 & 1. & width of lines used for representation of text\\ \hline \end{longtable} \end{center} @@ -706,6 +709,7 @@ keypressRotationStep & float & & 5. & rotation increment per keypress in degree (full rotation = 360 degree)\\ \hline keypressTranslationStep & float & & 0.1 & translation increment per keypress relative to window size\\ \hline mouseMoveRotationFactor & float & & 1. & rotation increment per 1 pixel mouse movement in degree\\ \hline + selectionHighlights & bool & & True & True: mouse click highlights item (default: red)\\ \hline selectionLeftMouse & bool & & True & True: left mouse click on items and show basic information\\ \hline selectionRightMouse & bool & & True & True: right mouse click on items and show dictionary (read only!)\\ \hline useJoystickInput & bool & & True & True: read joystick input (use 6-axis joystick with lowest ID found when starting renderer window) and interpret as (x,y,z) position and (rotx, roty, rotz) rotation: as available from 3Dconnexion space mouse and maybe others as well; set to False, if external joystick makes problems ...\\ \hline diff --git a/docs/theDoc/pythonUtilitiesDescription.tex b/docs/theDoc/pythonUtilitiesDescription.tex index 30757484..9e1431fd 100644 --- a/docs/theDoc/pythonUtilitiesDescription.tex +++ b/docs/theDoc/pythonUtilitiesDescription.tex @@ -2367,7 +2367,7 @@ \item[]Notes: This is an internal library, which is only used inside Exudyn for modifying settings. \ei \begin{flushleft} -\noindent {def {\bf \exuUrl{https://github.com/jgerstmayr/EXUDYN/blob/master/main/pythonDev/exudyn/GUI.py\#L483}{EditDictionaryWithTypeInfo}{}}}\label{sec:GUI:EditDictionaryWithTypeInfo} +\noindent {def {\bf \exuUrl{https://github.com/jgerstmayr/EXUDYN/blob/master/main/pythonDev/exudyn/GUI.py\#L495}{EditDictionaryWithTypeInfo}{}}}\label{sec:GUI:EditDictionaryWithTypeInfo} ({\it dictionaryData}, {\it exu}= None, {\it dictionaryName}= 'edit') \end{flushleft} \setlength{\itemindent}{0.7cm} diff --git a/docs/theDoc/theDoc.pdf b/docs/theDoc/theDoc.pdf index 93d89838c867f74a91dc0a6f1741ad426f752ba0..f8b8f6a623f05c2be3007df9b12183cfc93c0446 100644 GIT binary patch delta 406933 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 z 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 z≧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 delta 399695 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 z z^*}-$?=6ncDovzJz%-^dI$W^2{`Z>2NNc+d6E(I#$e_JcunAR$8ZYs4wiA96-#bwv zHb`A+DFvxL4>_8X3+FAs>t;`M#wIaeNPc@@t&ciNEqq6s_y97L1`Hb>Eqzu996(KG z_Ige}FW5Y>SU8Av&v)m26EA|3SV@+QF=DJ#KC#@r;l)CH9vC5P4ozSndXbZ*8le;jd zx7T`+#L>H@kk-PbV^!<+UMZm{@9;oxUnvu)@?cAoa6+_Mw_r*zVJ6VAw{^C7zD-%NGejR6Cj3SooT+nNjIU`vk4ja z@QMm<$o^{*Zgc%>QTv&}52O=!D_YK%d|B36HI-V>PPsCqV#K&t9r``W+Bz*yONjdq zcPGFLZ8budc!i{V!LYV+%(1=0V;DhdU6Kx=n@tztgNp^;57@%(q{lS_c0bOBZn##c zW3txHH`K%5p9F*11CKBaH*V$Kp;PqT5x0D^^3^=@PCK>c54GJH9zn{f-q0AH8BD#S z1>L6@;2x>i0$U;-FT2ou{@)E_m}FjV1P9PTQ|C}u^Ba5`czARBZFxu`QX?qle2m*etGQmLG% zP)NgQna@VoiJsi;lz|-OOs&gSd0%~wB?|T}1)(YFb;A{;u#VHkm>RaeR<%jimWiG` zZwYxq9kY4DzRteR_%+ZhLZ>^{lBA2wbBHtY{z7-p42bFdSoPabf1Kr2qZ{b+#bWgqf1oh<%6^W1mVF0r&GZVFBomIkNO3!ckG>*MJp! z41#nRwTtxYJ7W{O#%1hcC?zkYr(#uZ_`Espy%W;1I}5ly+OV7&eiHd1sX#?T_F~2% zR?b}Ov2NLusZn$JPD;2vrMZe;%TN6AYS~%g60!AIhLy;J-b^^J8BH5}mbFifhp2o7 z<6*P5)O3-b!f`;;*jYgpZ$bBGGH*(`pRR{I!{zSpEu98OWP4n$rcUtMPqP|%>MPg2 zEV$KYHnTl9vbSV}%@o=SkPS4w6tgWa^jsu3esofb_&i4R^~<)bikhfDb3DT+dFDj1 zk4pw!W|YIjysi-wc&OIqv#zd6;4o!bq>)e)53a5IjLINLoi)?ptezs8O?2a<1Y<*G zVRZv&&Fy<(Xn)ApL`I1OdKrWnGpU09^~*+n*(8gl>xR*2-nefzXb3j|Y8Rz){rR0U z?ta)=fOHh+3~00JO{jSO*Dj^Lvf}xd%123;#Yh;s=#dru?b=z(5b2SWSt13OW5G3k z{oQ238cZ_K*>Y%s|LN}s8mt8S=fo{sFH3`qlCRNEt+KYXP!Lre>B@SIZ-FZrtC_Mq zf9#btB;($tY9I^}SpO)-=v5g~^2)&OoQQh#Zip?BR_?@~aO%gR0*#hv%0t{s0xW!0 z)6!;})w`d7c)4XA!Y}O_mzVmc9w%~?xWuODrx>h@t9F~*$0d6$+d8`sOxlGOf#oq z*K`~ zfnoW#8g$+t^{tZ*sR8>A8ZD^B^U_O)+yWS}k|Hy#Vr=Ghdi-ic>h4M)whKFR7b|N9 zw8a!Fj(IWO5BoksE_@=@8*t~6p^{vfl=YXsPqC zJe0sAlSf$NJTI}zUAOVYRMoArQ#CYbm}AmL@M!T`>8xo4jbr zXF4--4=lE zl&*wWm0sOk_JYT7%vvmkjQ~IZn$V*(z~ZiHhWvfc`)Rb0n!tiymX$Y=^X9jXDmp?B zAU)y@vv_`a>yX=vD^@b#hD8^{pa{re^&pYk<<%=8_v|{$Brw!3CmH>qmy_fgdgwfG za)K?yBelj_@MR+5MjCDz1?3 zk2pISjv7^0$Rcl6rPu)&i@h@*(=^$E2th`fqklr@>oTWUx+6(=&{0+ezL>oMv}w34 z3&JP&&u=aW^o~JPgHEVu*R4h--*o1iwTv`KrbLe1p5jHE+FF3wMh7uL}kUax@BKh5Ui2Mpc3#AxyzvGb**>%5HxqklY+pLC4C*g}|E2+Wa0xYhqloOSx9=3Zx; z>kU&s5f>b!{PACngvHcG?i4jyFM)((qKvYL6CKK33 z2qI3dTm*1odAT{k`JQSYAozrj`~MXp|C)f8VHAkLs{#-mvseR|mDod%Zo@Zqp{36b@ztatp__0S^ zvW>gqO2ne5rD3%Nl%jqNpVLnn7fuHvaF7#tU)`VsbGtUM9{W-2Hkn3kTIGDgHB|6V z)+S0Oy=#Lm*4a4Cd>S9i&sW*_O(PRYIJt%tF|PYKRQEr^g_rdRaBF~B>y zPCDF`DhVP#Bsf#HEE4Gj%%XHx9q@D099q5>banbFJBe;|wE6fSFwyIUbK^_%jNqnV zuj{<#+n0;Ryf{2<7)T7)eQvtjT1Cmkq4frCpr}fzU{l#fBBkw71`pbxrn!aQ1ZV>G zTGv5NjyhUc^E7w){C>$L?oX^Mdugng&$m6luo)%s-s%R#KYkZ}y1bd#PR7}Jp7Skg zdHbq!x?)Gy6+Fh`EC`cR=AX};1=o{I>)_ z4=6VFlRGYOcEOfdc?8K5!@}VY8^QX4Ur+*L|RJDvCofjzMbq8ETXg&!UKl8n z9P)%i=*{Om09PRZtuS(}3JEmm{ZzXy0*+{^B+51Z;6P=d;GvK4T_!9ArcWp}uD=25 z70Ut!5SCA#vo=<1l*4pDQX3d{Vx_s!k1>p0$*pIQ*;mc~{qGyq^^G|9YjgZXhh;oNB^M}D{ z1D3in&$Uk;-9vQ_R5aXXodHZQMA~;Hir{$6lLxtEI%401eDY6|{!E#;@|bs?1|Sb& z=FPe%7bMa%&6I+a196ZFg`^Bjr!tkoZ>7?p;&cC677k2wu3yXf`6Z37 z_gZ#v$nw5?g`pC2vtF-xPDfFSSf;(}ms4j8#5gd+qzY#{ETdS66)&la=O*pr$K>SU zX6@X{nzY@c>nw`fh;x~VEYZtCA?gP|ipV-xsWR8|JrOy^n211Myf6e*j+@$Szc@3C ztFGvKL}6fyJuNA&!rhBpi z;Q`xjPwE&3;1DUeGoak<+{VJ4C*0hU9b##WNo!G+_4ArTJeXOLQFc`{*mLI%obryu z1a0MeX?~j?hy)^wpPR0FEOra~>L!kPlI3XVcpG-y^L4p8GTlZ^%b;zvp&I?s(BLBe z#DE!DgZR#Fp;KES{CVMuXsU~xfEC7|hnrIpS!!}x2OG;&AZs`IfcuQsZ&@ZSFo2ZQ znDhs>lJmD`ppw`}gEJ^d#p~O1u`!}8+!_81>L~OKEocngQg;Gzy%%j;{h)66WX~X7 zx-A}ou2<7lqv-Du1K+@vFQ<4gr(pEUMOW}2qqm(`79X*+6Aq8UB-dtLB2AO$d=9`G zu9C%yOv1a2g=!O`XdnBb34#0OFedbIuT%OCWLH>$?^I9M^VRQfmuY>{*RGV??Lj^X z_Q15!Bha5t+nA2*TqH+#^+ZC$>(VcyaUw|y@m{6f44CJLC+!`arNt6o^ZhpNI!rH!e2Qc-q_ z*f0owj*sQCuT8AA9*?LajEaRQXxTx+;+5e=9uS#vd<2(!ruU+z9uVsx`coZ(-C>=( zFvDbqgbps#7o^FemdeVB2dunCSWcWo%51$qZz51TqpLI46hB@k(oFEuSlDAov7o(^ zIGUtqk6E}g#g3EB+E+d9w>zRH^(JvJ)PAr(zJ=Rzsl7Rdk(v9 zjBZ|gb}_vZA~R$EbQT}r+X*%z(6%}ui)6;O_fj8d@@FlVnzAh%4Korf`jN!;G^6!V zLsbREExJGTV>z}R4DpKZm!yyiOH*oSRiV`E@!M7!|sR|rSYgdagFw_N;Yj1A6@AG_vOltDE0 z-C8>HyW*JWK0WLnJ${Ctdgmv6Q&rW{4Hr~5!s)Y2Ki zoOET=SU2E(zQGl8x6y%hvpmt~SYCLUu+FH+6h0I(cf@S{=&5Kwqe8XYN!LMR=x@j? z33NI!qoH|W`Fb%Bh_x+G9*Il$QUNl-NTYI1*>TW9|)*~ppH(cX& zm#XO-49%g!)!X;$fEA|-J_9n|+Ea{hn;!zW@=IJd&d$gB`kj|fJ~!P9$t#O#eqGPp z7Fyg1v81hY#xTKJ^uoqDhF z{umNk7{b0pP7`-??iCvC9w0=UFUB2v-H%2C2D{2;SNl_ke6RF`YDOv+-1M83g|j_N#Hd!;H%dKM7+e7K?0|0N+{0M{>rzrM#qS6S8fq+Nu?kVvGE#!Onz z5Xs*8V%U}-!IDgn$z6kKT9neoRp1M2Jyb`pXQ}gzA!7u8NC;AaxJdz#v`vzE6Sc4{C0zY*=IKVDgCxu)#blZS?T!{Rypxu| z>QFI~LGHsvq?d6SJcG-3C`&iX97ET}CjL3Xv1qy*j|T3Pj1T zj)TtEy=8c2z^RV)z2YwW+_{ZxrE`sDV9GfT-`+T%DeRc-bLHzK%)Tf>>CXGohELAh zZ0SBX#l}YG9}WRs<<0|!tosJ!v=Pc_wm9tAe%G<@oD~e8Yu26gx7gk=XZ`I%{*&qZ z!m5A{t}0c;hXwHQg1Hp`K|Ahp?2>^0#Ap2v*`b6`jeo?1#yk=d z`2Hb4cwk;e2yxjYKo&?7P(Z}w13;39dHE=LAqa?z4*;&2=H-OMZ()aOf#}540?mrg-6}dR{ihLwpxJPKk|(my!DFw z;a?bZ)r%Db<|GA@f;rXs>HcAHE*eC5V6eFeE2z={BF~z!J707d`N~FvuPDW5NJ^Mp z{xCVse~hwrT|NzxROeYu8rDlBU3r0ITvtQWMH6QlVgweEU40>IJOj)!bY_S23e;rg{Z`ReZ6P$E+X!A5cP(tZ0p;RQzvZQ(_EWtj^j z50!&YD>5cgCZ7RXaDP(46g3QrCPF>dE6k?9qK?T?4k?nF;w;_FzGS>3o9=1?gSKU$ z?lEvg-W9(!XI>!D!VI5NZjFh+M?nd((W=bz#*!E|aQO3=ZoS(oRaBB`zBR0-JC%zn zc#i~#ZEg5{i>l5?`Xn4D4w$fq(c`(@)&mrp0h#w_pe&fV7)q#n*ao(#>ueM((vIe5 zYujz^UvTXGLZI4$8blLnv4Z(yK~G73>^)vNVT*V6s#N$A?ucB*x4bk5;`qT8@Jpfl zpH9-PQ4FjsetDyjkIJX-~d)mt4eCi*SFEf=gG&?*&U-ex!#YJtjUJ zZO9ZSCNbVHK<5~$1`kj^n1l4R2qjS5s`v9{?8v_$X!fdwB&cN^&x>rFbsMGPz?`N1UQ`x~=UR#YBfD7nR?TMk&?jVTf0LS4*2&5a|j z;X_3`5}C}e;5T${px3SN-f@xXzpfpIu0+7y{e-i$NGpKXyEOKUumEx;LsqWeYYeij zNx^N|@QbHsL?_HNlM8%D)H)2BKyZm&qBQa+J7J)QESPGad`WC#4h>?2)q<>eO<6j| z!9uoZ@PCx(!te%`ZNF__#8=aoLF z;vI4UB*P4e{XKN`nHc0kj4L3F%}zzqrTZv9to8#wr@A~hEAIMoZ+})XGx7%BwW=F@ z7|ha~c2dTY&e7xs-?@rgWg;Sbg5noG_(AUH>(mFaZkH;t%wDyRx_W@^@BwH>#2~g*13CaIakv5 z+IyuMy0(O2;K5(kI~=GwK>aBM6~{=wt?_VYnaGlsEd|7FHMI0wT6IU%{o<~&6F&q^ zABcy+*-5A$hzuJ3JmC$;&11t42d4`a0|k2f1|^ajfic@|q32OlYu~Iqo#CO4`ea^V zY(73U=`s-zn8iAX;#O$vl+`CEw5)Zu!~X8MGp*6>+a8!l^krX<9o6JjXC_Z}Wl{l? z+ko>YLlB;)1K^6WkQTex5Pn`T%7lukXe`SLQNgEL%ME1wNBU{9eavtmH%OwzjtcVV z3WPC>H2rt9RI1dhk8{l{!R63#l{1#c?j6dDS0q~L#5OeDe9>84;l%3~sRE@|5_a5) zjmx(JKr{_50Ab52??fSasxR&@0m9jllZk0me^lGp;R}Oc_&D8wngl*eu#O-{S5yw4 z;l*gg-!hP0{K^5Qr9rEVz>HtzMNWC+@hTrZhu!T*y!}oa;GXd?A&)Vxqkjr;4wK^g zKJvD4=`53jJ)j%rY^BNEs){X8KB<3%6&GDxGLY{2@tBn0=X3vvEI_?`e#Ay36+Ud! z?)!6~!^2taFaKXQi<`0hO~Q42#Y_juF-W*o-&;XvC)-QSm_zb184SpYlzS$lXNSe1abn_&nLix5JvAL~0wT!bBH41U4MkheO)QD5HBZQsL+RgI zvl1_*nS8+Uy@J>p7^(SOIs+db`bDSY-jF*RYJLuDgisS`q|S&-xOjZ~MH& zlalV?;lehNP?wp?lAFO1K{l+Es(b7{vf3aWkB!?i*{svoL;N=(8(5@Wu@gmi=wCYZ zWY7*!(_}XO(+uJyfo1TOle2wt{hFz4vO*-s+FhSxKwF;;@$YIFZth*YPoD*{hYrvzeVe~Q*YJW7CUGRn&}u(0dPBBrOz#C9 zC>!Hht~kD|`2>c48-~VXrk9BuSmT|56RWoViZX>&AQ<>u;nOx+vxX7o>O)>e)ok$N zdE6r`Uhpbgz5#dAwr+Kg4Zm8=?~67pC7In-nNHviB-~X7b9vojO4cC6hTu}VoDZ&1 z&7v(HN@TU7Im?Vh%lOO%L-VaXu44{le^z3Te7cGGqgS<%B#{tQ!iTrN7}AH|jQo)x z7utsQ5|)@2!a=F9g*~?}vSi|b+TXqQ5HCkHvH3&!@i$?8ifJzI>}8?I#oSRZgAO%^ zrX)Cdo5?R%?Sw0X62if9(2X9oCtO0?n*LZ&Ijtd3WdcZ0lgmy}1+R=Li2I-^jHWv@ z{jV!quCGkh5lvZvduVLF&L+^5yje1|k!Wy=^73YP&$U&p%p2OEQqRpjvREuvexc`J zA>Mf_m;^{a_3WS#V;DgfJ8kVvcDmZ>R$68%@!DVUBCxmbpZU@jI#j$IREjPvYZzMC zJ1GB6=*_0PM&m^>Ijy%<69*;n%TbZ@Y&zEN^MF*;X;xo)^fjPTZU@Q2I!p^Jm;dp_tZrihCWMX;M~ z4IK9gCmR(Uc0C#VPdSlXWlC00N#~|TvYOoAB9O5Vy@pj_aEc+7d;A`1Vn_M4fGyS} zYQaxFLO##8;%3m|D6hy#IoIn~iqJw+lWt}qs&(HYbY@Hl6oB8mhd(DrVVnxK`EgQO ziGK8}%~`j^0b+99u0II1W$0jk46YnzcuQ>$)pcuX|ISa=N@~iB+ zTJoJRT@~bdVM2gBwoh&rStb0SU7N)2_FH7gWNg^O_^0uoqLNc`)3<%QoheDnza<$1NioDbDQA&dGf$WTVUW%*cTnF7o_V3%P^oj9y84oA zvAC+-?PN>!NO`pDx9eMvZu2yjf2*$?hbTKuqEpDSE+mdh$ds+yMWxNN`aI?VXVECi>hDLU+Z~VO!K!9}{>k&y0UHYddp#Fm`(LbXpXvAD@)qlbI5_<{?g~ z^tQ=-En2253c#@jiB(e3VEQSnrIYVws9y8TiW0n}87`As2^^wlAEMt7-o}IGJxd(+ z?@s&ffss)$9zwF!|jO+bpi1h5&vbsy{tJ{i!Tun)+RWfoWf-0LH ztE{9JXgBF_e@b=7D7o7GH)$;rNmuD#>7F6{!oM~bdOXMzJ-zIWgk>MfpwbhD6S4S9 zx6*8ss3aJ+D4JcM7uYiMi+_xxGwrDbua7b$FTIQnU^-sp^um|aQ7CRWKfQkeZ#;iHUQ#A31x zc7m`x-dF7*6?ose4+rSs6zj+3uuV8p48?pfFjr`C`x>Bc39;+T30v8vTQJ*-R5%eT zW3YeN&`lnDcM6;DK#Vf8mdq_hDZbp$Y%#5lw3~z&h|OdBd;W=&R^Ei}@EAx9Y1mc) z68J`R<4-5->N!yLuzM5gD!B_=o_Pj+4$Q`ZUmKQ@o5|9vwt&jU!7D*V@DIa=XpwpH zKN*LThrfE`5`@tNQDnkr`?Z$^(}-L~qw?GTT1)etxEl7P0MX+rzKU1BQL*3AwaGPM~g71q6wJUREJM&9Qy)!z5*dBhSk z=%F(nf7gG1C@r~b7%I$fcfNwzNs@T@Ik9+=rNdP-bsbN(EUJo*GHnc9T9a*HI2`H9 zUzM=WiNL;pKGSEj?o~qyXC#k9u8T?Qy`Uss#S#o zsDg9uT-+9&fwe|wa3BmNoxgEPxhy8lYRp6LatA}XZygJl1-nVnJBfWPB9`jQKU;zj<}N3|(d{CMfs1 zVd7G3dto#x=2ajScSz-#RRbf1`G?YX(lS774Tj5c4HFB=U+OA@ONAxUz)FdJ(e|Ku z#J3nvJEHy@y_~3E_G&T4WD{06r#yF|PagBy>E=7~OLJ{@b#{|F@;70qBoD+kYGw%_ za040+8^`iG(Tj;k@~$h!9&cf}zg1gXC#&9y$i1#uD@Hl2AfU9E>P9;D&W=IM!=x2q z9^juJxg}9;b~o-}3avIxO26=ll%j>HJ!z>ai&ec#rGg`OYWor;y<=J} zJRK3dq_0KjCnpW<{Wo&ccqi?g(d`SG^U4PiN*{WOJ1S9Ns7N}&WfE-R{lX;o#vNYp zHapU=$lFjXUx>tahvKJVO@vJgKu>#WLbXmm?Y&d|_;mDKOvCpfyEz9CHABW%JciN& ze`fI{8>}ItwovBBmE)<4y%|=t($6qviou9%;>eB6?lm^o3aCKuBFkWfyQ8OP-6?lH z{sF>yDl~ZmZhK2O-4G8cg0N|a8M;oz0JhQneEmpI_VFqA3{O_6wmV-A(3Puc+u+zQ zfBNN?sj@?E?KiMsOm(T;=G~Ctw5b-gmNb7mtJn@(r1STWTRpL&da5$QP1wH&-3Av` zNiWUWXbf3<+rd3h-UVQ^^)1iubZ}(4`B-;gq5kJxe)1)@6 zPhbx_e43j3yQSSj;l%WI34(jVRgJc|R_N#_7D5FbL93c<*`UV35>1iM5c-)dM=1=pWXH2p!RD7qL3_8jbn!RmVoe9$j%PE^3XWOAoZJ}#~ zb6vzqH>vnQK9~$wH%0(dSH(8I!zy3+5+deixrJ^ngou$|lO|qE4Z;=JVh%NRP@{Y2 zxDokDnx0=ve5xC0*D!-zN=jIjPmGo;JsPACHkUUI7hP;u8_q`5r_rF>_le~@%kM{D zbdrTXU&f^LntKUHYGH}(EvHCPnH(djzuBWny^ecX)Xz%Jax39hTYQOTA_%uBMo`3e z?Z4CK$aghu3Ad~9qX$X4=c{w^GWKU<^$fR1dl5S^XLHAC7MqU60f{>qmtf7q|FBGGPVr?82!w zbPZmOgibSPyH2|&7e)*m`r&-=xdDn8A0_K7Zlw`1Y*Yr096(>QriQ;_e}_KPJxv{q zk)OyBKy%H--sTw%rmR+x5@r4lx{Abw)0SuQS{igA{n#(uv!w zS55K1^=l4EkdE#@((C_Kb#TUe7Yhzw^cbX2ZD^vR0Fnl%+|*Pky~o(y&Ko%%cPe}j zn+)$EuiUY`wFVr@Mbph@qa0w1{^pb4O{T?jB4ps=Gk!%e+Id%X`3M&8)4&DKD?!kO zNTtdL0s#R3zr5ssCB_5z|0OT~pW{8H3vs;vg$E>h5XW2d3oj1X2@?e#jJ=A13)a(v zpoM?lgWv)HxVl~K0|cY=0MP%F1`m!7g2ZxlJYpjKLkwz;%zIil> z2pvpcWgAxs-MpSe_bs?J)6n3@3`bdvQ;&Ri_qlt*oXn8i5F9e^jQ(yd?0O`3&Xdc+ zNbvh?z6-(TF&G)-6CHXG`R$3E4=)}U)%bk!pHMjsoXz zhQ!aM={|OTm+2C-*ghysOkJ^6NI7!U@%68iA<+{bKKM*o-ptC`2o z)m$hhbK6jC-B(*;jxYlx)Us0)k?I@zwzf~bm5vo=v%A_p#GaZ+W-bfKyPf6HJ2h?D zXH@6KSZgrV49{6VAP+Uz%nGg+H%@SP3uN3phphvF!YsGaKKOsBPY3jFNY5F`F<_4fsU1RU1-Y;r|A(!24z6qqyS<~1ZQHhO+qP}**tXG0r(@f8 z(qTs(+v(W3`YcAA!<{aZUApC(F_9*^=_^mr|#5p9-@2f{? zOHQbw2CdYCfJVeD=0}u0quAl#u*IDPw(-Ya)EF|&`fv~{TlP4{vfWDu{D-r!$z5p~ zSbah<{mLjAAOA6WQiA28l;}`1U2S_T5ho$MwEaYc10h`rzW?reBc+&NzTvd7-u%2%}*n^*u zpC@~Mo#d9Yg6LMO_{H^2+Nm^2`m^786SVAa0zAK)vu6dgTH_=?< z{WXbx9E^~}eddoAqpQ`sH|{H^U|~7Nff1mB_iWIAGUzFI{$tQcjVuqc#~n?~SB-SP zxk0G(yforP#Uk7O^jM-%7gX7!#FJ!_ycL{n5+H{yzph{7=8Rkqrh?q%#A%02gm!Gv zf)*Z0IhOEI%lV-VvPiX-PYlDH|6F@#|AN&Bh0BYrG97rvSq6liCsWrlrT6W>1tDFWBcRlLVYaBjC!l#6tb!O zneRF9CO8%Bg8x1vA5@1Hs6{f06;5D8jvl)6P3X)-2;Q46%AU0u{ILg*F;A0ik{i5_ z=Vb1hLdF%3Mo-H{A2B6x}9Y-TN+-HHjYy$Os6<@REu78kAGjZp& z*F>z$Wv5W4eOQ?ks=O`WTb6;LV9ritERgLxy|@cfKS3_bbKXFSg&FHAg4 zP?`|rGH!!zb1BxypG>1TuxuG4&^qIpo-E@^cn{em3~iUTy^uu6(;u|0ThoFG4VX7M zsh#-^p!8p@8~cEV7R_RjnDXP6%Qu}wcGiJbeJs;I1|T(XL|>BIE0}JW@%Phwkr#A%)G?Z9uQZ=q;Iuuu4WMf^} zvwQMhK&U|}OM(SJ^79b&H*3Fm#!HRJbPwJv1sb;XnZZx6H*3wsWf3Qs(DqvSZGt#c1;V0}S-E)dPCLS7USY@3_3w7+a#JPpX4|5n` z+(VR1T+3ySXi}tilX=zVzYx@?x9%a5Bv0zh`UfD0u@ypxT=UBQni9W|h?_02+uTBA zP#SNTRt!Cb9{J^R)X$390OVr7$G#vHSp$Do0_|krdwB_Drw81g_VxK+J52FRyDCD1 zbNof&nu$yt`_2YbktLiM4)=HWjVs+mWAiXi-c}q1<83pWosigQ=DmS}E&7E9EHF$m zwR#7ZgJ6-hh0;)2~zH=fNV2$dolWIJKA$I za(Z(k%@zElU}#+NNP(pEw`{|wxYC|-h5}m2ido(1>M0Q;(abWek+=0s$@sd&23ne>giYvS$Z&23+k&oS*0L<(in4+&MNtVOSxOg94IUl1u9WF55! za{T4LGoi(OFug9MFLve&^}U)jg3duy)_>4_63MijHt@W|7_IoM5&X+ z-guTC!#Q5SjKlm%WKKui3Zcf1Uu$6Zrr$kR3h_h419PK#=+qUhO#RU2w|pvkxj(8y zxGXd}04YPR1bBcH7*9Gr7FPNP{sGsYeVhZAC-FT8<%I>Vo@f~l>x*BhX{w*vQ|BGd zJg&fZLK%l81`Q42^7D*4<3M|>51Y16q`-o($PQ67bRP#O@D|8wT0?cw#GsLauCIIl~bF83HMd{1^pV;wg2lr9PYYW(i!>@?H>Z2!Fc zQiYb!I{4fV;a9zY5t_!U=WB@0)DFn*CY(84a1D+urB(t)L zQ!i7B={ODuBiUh}Hl+H9{LV%Tl^+|SbW#0J^eBF+5c!=Z>MZ)nI4*89GvCLI=^4N3 zFWekkPkwoaCvQb(iXNjNuxEB#VeTH(-kDG`Vas@Qi0X^JIv8j7~hGu z>l2Oh8 z%iDRt2cz!oN!8Z0F1%|Z4N_j@<11n6BpM93a=1?v zs<5Qd(AatYQE>flSrTwBbO=@sMy^a1AviRkE(u8Sn&WrR+yO&o1>@n!Y#5aSKBc)c zNy=bo05f`PuKS#r0Z&>tDz%N+rn?yxKI5f)0;gw>OU-#cr|v(jlO5P7l4GRTTzUf; zHG?t9Q$Q_!oKYZ(V?z(~{2I7n2}7v8y)Y(@owT3}RDwdd5!mt|ZSulx;zAxC&+am* zsdqQth+$<4zWwSx;EY0nfte)ffzj0Z;%`YV1^8sm-KWG;OE)nmmb3qD>#A}Jl$HVU zkr55;suK|%gctnDjs&9+(#87R{oK2Gg&6SAtKIhGG5@|lqj!ILT~%1Z4LgKPc=9^6 z`Bv5D1xcD_VIui1EXsqxhK|G{(Bk2v%b=)|HM~|>{<}VTADKjG&ZQt+$T{+fYY|Ifhni(Ds7#iH(EW}y(&_ZnC){TCh*K#YM{9~|8nesQ zePLt)gC>rD5DC0;!7j@f%#e0 z63T2_LqM8hgeqs`HmjiFm~#uF zw2XzMTed5K&0%%|XMVN<*@2oEz#-aQ@7eIvy2-)uL+8@7sG~T0I<4xeb3IB8%+b1( zh8spEY_yqgwuJeIbF6T>cYVECw_WXM5yskRp2gbuM6GJ@+Gh5+>1x4c6 zzgTy*}BHKLkmpE`_=AwB{JqgqIQ)*`?&nQH^O@T3f(S zFrQ;GC5I)J(b6#Mbz-_50erJ5CYuP4k)}98K#1F;z!m+3A-`!yhdLi#9Hw6xo=q`9CCM?>kFts(R%#&kbXR3cM0I59Ygi=-Eo?CSE zN*>1@6?EY&a(a#Ic`g>Z5A{&I6PyLb z!tUYiZ_+3IvB6Q~K+CbEAbeRSQf8gaz?*@PMTq~NTFITgs&6%zD}JM{|aGYq$ zVJab%*R)S>fOC77@>#eaiHItqHjj~*vaNmIJ8p6i)cT|^nujJ#VWp>90mU(a7<|=w zD%gWR+5Bb@=mQZ|rA&uM%Bp`4?qJHtT$FG;a-z%hewc16eLP?fv-OPN=q?%UW|MNT za$PVa(25_o zEQISsNRDJG$S?3%;iV;`y{*<#><|dwLhAAyN6kQ?Q>22^ldBh?Y2GyFof_zY? zVv$dX9jc~4dJs|2jD!@>lOT!_lVq4{DT_qyGQmAwY{mP&++Wc?Pfu0s14A{Xj6gF!%AoDJZ1>A)mmkW><*RcN(tq$-2tyq4+T~BB%Bm; z1;8f@H*Mj|_LFR#N1TSCLu3qCg6~(x9d^*WKT_6o;qA7yX{=x%oy~qrSk8v;VrsDA z!`W$?Nm5wOx2l~o#)~5%)IPQ+i>SDY?wI4_nP7K2zjC4A9Hy-Q4Guq}i#7&rXQgFl zQUi68(?aR~rT7OpB6?^vWbk;7o;lGE074o|y%f((coLzBJvl}k&1{+1NeZ*e6qW&9 zI^s5g`<)bt_}eAR>;n_T1h+Z4vCu5VE0tEteJ12BlLBmUIcgWmswRXOQU2CrT0V!k z8+OEo9PsPP&#pFtXWP*ylt#axq6tUS=LVXpZKnDF&mPQHzSTMQ`?){~v8I<9fQet7 z=k}U`=+!nS((*^|j(?bz8K`}&RabIX2xATBkwIG5F9R#Qi)oXK9rwL=D(1Q+OWNr# zE(xRRGM0XD=ot{S5o~bF6+4rlP=px}q)RP$=G;1*Ak_howEFlB(Sv#ypX#-WKe6y2 zBzG07Das~zFHJfxPU$12;wFbZRkB?F|=VZCF&4tg1`Nab7-QNxt<30oEQ3;JNrBy zHZaSo@RE|AN_*N^tLXXFqK=0djfne6V~1I*ONnNHrbb-zXNk>-{I_d#CszUFU1MOl6UhMl{+vZWx2|IRWI zHHPtik3GmI^<-#3!?C)esAP~Cwe}EF!AAKS(GVza8YSbC;?EvZwzceU_O#4|!c&12 zx*1ZI7qewedpdAv$lsgh@1M(KcX1DRxok7&v$B#ouHfnNgySHvx3=^-`8Gn|g!a6U zNU1&MNxzBye&#BwjVYI{qG6#C!!G1v1=G?qyD*l2yMpgm9i!@_5K#H3?gix;VwZH@ z;W+vD0@i@fJD)XYO-Pfrp_w23ojFl^o29{Ak=gi5CTi{^+e>lW>{&k2`1K-a7AMFCq|FvcC{Cgm?`l@BQGL`qF zQGnqYBAl52nI-Unv@T|L4q_G_W=2+^8-$$`7`?&G39Pvpxif>){)gU0WeHqr5c=d1 z%=`$Eg~njvWMky`cXu{ME;cS=7A{s`AM)?+|GF!x-GB=h{}|T)Z6oG0kz_M(u4F|r zGu&l?SS@bO|57^+|KnbbUEk4U<*H`~!zAsLJRVf9XrV9$ux_a4`W!(ZFd!2}u)F(U9v+3b&|6J}!3$F2euzx6rMTjz zZR8pS!i8ewy&;E@Pd4r77c=;2N?hCi zg_0tYx8%{GO6SDU(wL(nxX0u%sXL3b&lZ1s&#wBK4O%{w(`LjBE&>sJpoKc$FBcZr!VEXG)6VzHyUGW zARp!d!hHH539B4^uonFrY$i>cUPwI~B{n!BDeSA#%Q43(T^eP~P#3XdQgQrC>P}jC zqqQv=SJ7)2zXRD(W>7wpJ(%{!GFZ!+=E#36NMy_~{{*Y3*6aD4_q7DmUt=R-&FDI8 zSl)H;=Cxr(K7PN^CrrP@4vYdx^dcmo!iN$Dj7qyg?jT8Q(4H3t74>1p7SUPahPc5I z3E!MI)kD8(1&hqpfJPGoXKzDHr3P6+Fj9VGkZq?6YljPrvYIu7*mHuv;KIG8!W79H6)0g@qlD0#fJ6+ z=#qzh>8iqhwxjockw)K9bu22-mzCE^ii4F+!4R^g8h#@x5mq)LVoFdR z^-cqo>h<(WtsYfF)=%mL1?QSZ^^BZJ-EqxQC3{FrSXUUXT0Y}lm5KLfV1%hJO3hjfdG9v{AS!u52Qm|)|WxF*7^YqgaB)GWlL ztPtaE2N78RCc}UI)TH-D3_v-0lYE0YuCRa>@>Fh?jg95f@LLP;@0sBN%#D&fKyLFP zAu^zRA9gAjY^Uqn5$vVwG|hn%K{n5mR+{&IFEF|Y!V^hy#FtTerQ=40s8~`-bB`Y$%W0N;y>_)x;ZC3Z3S2 zOj0(GEFEuh;vTKu^Yz;ouwk=GTHdrO8ExN9vpUP@38DvaimBITX#}bVQ30u^by~>c zx!AD7aCCc+)`o4bH%9Up@mizh9~OzgV;>^!)Z251+;lH37$UN7c#9%5(YwGt7DPP3 z3#qk;F~$r$i@<6VSONbyBt*q1OS`OJzIjdo??lq?d~*??^IK7T5GPW4HRP{w-pU%h z;J&%40PZpgxoFWeSEBax*?tnPSeHen^hbG_+LoZk;q@XZPXsHteI84SBHqX^rbm2j z_*2ML!x}{}PsBQGS&lk^;vd$>hX#~jH@Xgb6?#N=4=nZZdnRf zKWgm&zGg>Q0;k7fn;y%v)6RAvRbn4&aT!zb+9aOY%!#}n^ts{5Tm-#7{UhWOq;ak( z1<;FhRftFmRldJdO&KBx<#On(^O|2q3Q{9THb-@}Udvwf9T=q)<6IH)9UB<)=_d$y zbt-*l_sVg1V%#Y;9Vg8whFc^FrX}!09h-0g$V0XMckmnEo1Wl_b@@RCVn(iHs0f3V z5YEGKS^Qs{%Z9#58Bg&cF=Do|#Br?*8j9MfDKwxG>^xz(b9agv1RBBD1veX$LbDh@ zroHQ9m>K_b5z8m?)0;yl){&eG2)O5T`Sw-FMY$~O=}>P-mX_8h-D76sg$W`+ts4l=CbSGZtlv!39*dTQjhFiL*ag-HMM(eZ zBZj0%kz7q@1c*)*CvpRAK=H{F@z#! zJkN!cabuS{s^-@zKmDjzu*^M*W&`g5X_LY7lD-a6dW_|lz#icq>RxC0H+eLvGWm*T zlMe4hMZvAC91}*2W5y=Y)d}&v}^M&mcSVjdZC8R`3IneZLW@e9TvX(syFT#65?=_t9|f+ zD?#eTM%=OQ2lB2#&B?e}2XZWGW9XJINv~zhpz{E9^7q5bGsr{B96;ni+d-ytmEkgU0#))&M zf}_K;3*Nzf08l!vaFFk@f6bw}kFZSxpAu}u(p&|_R6PMI$pErmP?3;Fgn(~@T+XLxP{ZTxK}Ww4HxXVV+G6{z&o3Qv{-po zUS%X43>MLNDs%J__zig~lJQjt)C&>g5RXWv3b!13=4p_u&9{GBf=r%J*_F(^8ldI7 z<{JVuP?H}d&P@lc_UYY3_;SfD|)4?3+%Z zK{Vn0_4*B3wajcJT53I&ItD@*LzT?7ugT?AHRol9S^b^Z<%3v%^Pp-w@4VALX{E=$b35C(_Ixn3?yLRf@az~* z4wi7t@q&pAQVERfXiqy~qmxl-%@@T>3<-;7^fH~J`HU@+CoRQY!0-VvA=RK7*}{WTgyMTx?|NqjgT zac0Xjmq%g!al4L7W{*clH-jKPh~i#CO&0gAm-dyEfoetlU5jT9?F-aJR4y+l^ch87 zL#=m_%sv==B{m%AMs420t6sN>YzSRIg2L$`pXlCC)W!{%le+R0Ewx`_j z&0IyOnk$exuRG!=7LV~Yq+ao2tC+953-}bnBv`>N5;0t-lS@VhJ^^9V^WoTjUq-0ZU!d_A9;7UM&NJjFlF{cq&B#pd z0i#BMm;e*7Auy9M!SFv?-})#Hm)jz~XDi7KTlVAP?9A{MlN_qevc?tQxq-A~0cB{fTENKtaXm z!$z20#LV)4DHJ^3Ue2kCSHI@AAS*Vc)`=Yfz*OVMn@4=hW8dLfnJoE&r@x64CELV) z0)&sizT=v&ryx!~o-16uDSDoPJ`cFfAuZ7URI$iES_;Ut4A@-waLG6o?{_@v_38=reizw3AXw&RZ-V(U5UI8v9b<(qwv-j)p+YBzzA<* zt6X-$cZc3pvUU3gEU68D9)xv!7LIlAX{lzD4SSc>En2L(Wy+)M4tw)&+}&f>^}8DE zwdadKShECY!$U-^^ej|ORub#a0GMReYx@%{X*Xs9evn0xT1Se+=~gAo<@_b zYHlwy5`OhKk}Ec@XtM>S3rI%@fTVF857FGUy2?%9N}7b`{R*mT@w-~C+GZVke$e+G zh*!={4i6o5)e*2|C5uSgEt8nA_<7Tq z1kA9l&c8Q<22P^M+(hSwZYOOvPP!6a?D}wN>0*q0Y?8WQ=sLOyvsm~EfE1z0F@yC_ zm|irBS;fZ<-k+R|KT`#I;Pd(6AqpeJLwVeXfniGIy?5I8dboOAzEja2jZgtaY%k$C zgaQeOdNMkz`JVUwX%;f%@`<{LoL3eUdLG)TP794|WolF3(~BTekx98Qi>QeR-%|_+ zmDikR2rNWBl-UE(GJ-`-0C?2=X=&1;7>%~l+oyFy4pNbQIzn@#e7LzkFc3PH`Bgn| z>D^x6l}ndC&I!fq{>YdGbiUxE^@n+WOAJqVPnjtDxy3h9zcrtEYNkRj;vGb%fx{Em zg-2@m<*Kw<&QNb!dt7c#)OnaG*&1HW`bs*dv7P`)1Gr3Tc2zP+PkWi4 zBqi8yp#5w11JB>l#IZtpF!qr_2#g@bxjiZ<)u}(ISd^u)fU>`y^RiVH@aKo0Sd-07 zJ;=tHG@+Ge1k8bgg4nCwI+!c9Gof<#oujqLyQh|3UiPD8mZ$PoSWhcWfx0hCIT+C( z&3VBV2J=mHErh!Z8lad2)+<2d3Modhi_nKM*p2UGqR3_Li?N1PA%M$VZ)gW40F7@z zg4VV|SmOr;0?F5MQfS>vQ3W;L@F-|a1vK*c>XI(84z^dmgFss6rV~^?U@J#Fy*VzE zuuS^GvqG1YGdS;BD%WD4zS+ja_84+R4wd@xJ#fv z|IpLVtK>K)@QnP*a-J||@a%+^3vNzmTAf(9t)p(JsPkP0MGJ4Y10}JAy7z}75l9n7 zUDByRohX9)<#{kJx>Oc+OUZhp08^&hU=m3GSONZ4~~me0QD(pnxY7rmTOeiP0BGZ@?ZhvOEeKaI3QNka0dp8)rkB{5v`2c@!K7- zyn7x@camoOV${Y*eJX~d!fN;(qGIJt^r8^{;U3Ci(hhl=WX{sYP3X1dFOkZqlj!lA z)-4XPL>)0Bt-^}7)kN%Jmqc_|^hu!8eG=1x^uSDm?IYkN-C z`q7(=j>wIa0NE9MEKu<)VSGSvKanpK239#l_&Z=l_MEG)ovQrYI{Kt zFhvL(;PtyfROKB?zYBq9eDh8)Zpc2vAAbjcJcG$IW|)FevRTJ5>j>jPQns=}Q@Y$h zP|lecqrPSRO|IpA6+Z?$`}%=Ezc3N&c*g#6({`A}jf!J{uSE+Ncz5A20$qyp+Jv9Q z1QOE0?mhj7S^EGpgDM#hhb@J+5NZ+CA0aCNTaDuGJw0k*{tzs0&l(XSw1fh^*u@=C z8d>f5s2n!hz^gd)lQY`ZOH%0U(wRNRDWDVcSPxWr1?3|B~2*F=G7#l91bXZ;)t?^hJ7<_KO(egUMx-kF+Wl< zPE3sfhYUOH!L)+*V1=NC_Y1BlDbAUj4hp5z@kD*n7pS#_w&H&;+t4*YRgEyZ z90~@@zmTN=CFtP*PK2i*{{wOTZ;C!Mx9k5xT!G(!1_49xdXs^NC%+@2g8_peK=Cnv z3|9`8f4lIw&yUnwu-rIZGKx2?8GbcV0mDzx+F3p^}7wkqH_GhW;w05GtxsGC!3d zL{9cV+K>OhB@NC8gq2(~)%SdQitNOYq5g$GWRGPnD2Yq8Zs>i!$B~lrek2);istv7 zXIMd@f@dKu>W*<_{A_U|Qvj%?McGe7CO}AJx!LX2wP67Q3md4VNEK2~9vNkECS6c1 zqJ`;YN;WL+X&k3o{!9yQ2e!9&UOvd);vdq>w~3QeQ~9r6cjfv%&~vr1&6){8A8adorQHJ7(j4gM+|)FuT(87zs~L2k zIY`I@*>Zu|5%lu{tN@Ef5B02tX09JN)rtkdA`T~f8{dUa@nJ~xLl5mVs;9#L_UdE| zOXKw}l^^jynVll%o@%%F+aB~Ac_k~Sneax0m778x1~k}`SA&hfc(qSoOn+++l!R34 zi(LgLo=6(MHB+1Cs0S}ZOK5s74ov>to8v;u3O)h02QPmuKMnY#zxuV1=Xy!FV^LQ9 zE^1I?R1~n~wj%)QD!*&5#7@&(NZXz2z#QCYCRR*inuU*co%WL&Yr0yv!PlR9E3w=w zC@|j_iT9H_b~(zlaI;3Lfok;xov;6<#uQ1iubjvTL(01{Yz3V#R-qxI#?>dlNV78u zbjlK9={>SC{RxmeSQRLnFyB*sP^O&@7(di&sU{oFV&)KtJOIt}ZA7pR0!Ilo5r-UZ zCnS*!3gk1r=Mw~m0(3nfn}x(DV1q_nN6iy`eC1%Hm6f?k!}1rNEiF3S#F6CS;_ z@7`0hFo$y6YMpF`>c1aHR@%$4mGl`Wpolt?M6RKN$pgkR1ap`?1O_wix;CxkpihuL z25LNu>S7x^eH?Tp<#n2v zs5&S)_LXz>u;Vul;eH==1jn1Q+@1oC#5iK?Az;IB^~(-2kb4F7iiuFxYT6N;kTExoka*a~>;~ zyY=V&E`30nLWh4yDa=u#ODaM6U|IRq57+54B0$&o0vR%9JKIEit3#zR&#p;CA2acY zdi)>tDA!Zl#evlFb~yy+lJK1{#z&Xwg$emv3Of=?R^#5C?kSoIEy?8AFwRXNQn`7o zs{q{j;H>~^%!kZIW;S2_W6`2h_gW+?{o~ndPorZ|;cH+OP~;X;>e585Ntv4E#~S@K z^1X(ukB}H$D>$cs-U~u!!4a&Y^|Oh!@$%qAXALv_?~|Hx5-5Bj z^+`NGAKY-BX&lM)syofDv5B`bG>|_6_)T74EmLodHn^`}f6Axd5O$vqgZj0Rvht@w z;Ya7=_k_+%2?9#zYU|!WT_1z*{`%=j)3ZF>f92LHhdfgTsMCjR4d#^A*O$1~kA>W^ zm)N3|3nW^liZkaVS8uY+P0w+Rds#FXL9YukmwP%?`qm@6({gWdBA%)dH{2BW0GZiE zER8>FkKWNOaY0Lz2_2T`sJ-s~zQvv_=AlLnC&X^b(RvrfF`Vh{>ttxmPaefP*=LCD z*hLrUVx~DFefAt*;*$sX zZPjcWjC0wx>TqpoJKwTSNnTIjC=mmg@nP}pkl(4MH6VBjKxnJF5XVOPz?i{ zx~p#oBI)^};{}}*J7;Pbu9XNmYCT1u>KQIkbVVsp>KO%c8=>*2OT5G`jTWbw@ zE`JiSsIa>6Aa~-TO>?adutpakmyXczsA&Nuw=JDcPUWuDsGgs~=J6qxQ)2IC zy&j@!eGRMgU^b!Lnprk$-Ae0`Q{!|NPlKIZ7I(_n!&+OaQxBelkc(ThHrG!Z)}b<_ zs>No`bW@jhMMHlrLy5!Xl5(NgI=~~Fh;Z24_D4OyeE3y(&>}DV zOR=xc>B%Qr$r-sUdD4FEeDwRs^&Yz^H7wmW#8O*784%<@2cQKs^*W#I?%fHMa(L^dF;+?pjQv!vJ6!DUL14)vZik;IHe(b2L{U_6j3Hp zgJs{zjn+F|VHRa%QNUDwq6bLt%en-%y#XsQS4UP3RG_7!tP@vMnp4WhCqrd)cI0gLX;7LkD0@+jv1o|yzOuQ{V$9jm3L zJtA1ck<=5__Jxs~%uf*>i`1_dU>RZhnWk_;=2==eBs90(RWW`G@ z9R&WN(3MW+q%Sb)BRrY^-cPeqfRn#lv=|uw=(bf1q|rb*GUqo@82?eA|Nmqo9L$`V zCe^?<($8cd)y44%74bjn=2Za@<;l*?21I!R;g|mj&NBz-c?tf*Ub+?nB_6;`XPSS0 zW8PX??mvZxei2aN!N$Up*?=Ml3}#mNCt4r^7%kAwrLYVy76c)bvL3qPnb(f`^LNf> zY$`Z|3;Un%(h{Zod@m0h2*||LD(}q7dV;`k0bm@Mu+Rx4^thX6!f|)k-}PTYPSF0o zh%VX(qwKDvm|ZAjvzCCnQ>0&OgI?DJzaCOoeU7}Y2qgVis9^B1W?zpA0pOhcN0cJ0 zmP2mX9%8?o6yEoDkGhD+wxc)6;lYo0=V1c49>J(!QCEPrRFiXm-JaUVNVU{}@q*mS z_Z5>|&b4d8JN=b#B-gjGp|{*Nq#S%y-~{x>yjV(qJj^-VtLov#l&OvQpQI5Zm1;|} zVn!0r(nWI5o&)(;!I`NCfZV3}Ti1pkYLl_X@tdDNHnTSpgM2^CbN)|KhucbhD}~g| zuGdQeY`F!gJzw+)d_ohNACPvDc2B+8M)S=@qXr*nV5kjiknEn0>)@Rl!Ne;F{lh)VLj`&ck) zo-Q*3GtiAFP}T|1X;u%zLRoF z#Dv;WA8WNc2E3r)fO_cWEEsKFEDV-?!`V4;YzoGFUu4|QUa2zPN#@`Uu;1s@0KdBo z|92aKs>EgziN|CChW&tpTT`YtX}kpsqP5hmhvXGLa=h?10@b>UTCte&A~d8TjuDZE zaS9Po#_+yX9#j5IDx&R8?!xDQ6R^vC(w(-ICLyJ6t-A0IK=-gxW2MpAE+YK~KwSW3 zFX1bwaIE>yU*e0+bnV~usWQ$Ax_V-xY(Hn0AnqBbQQJ-SA~JUt)^>E0zV|P;$Om<` zuYx)=NNeq!Em#HH6+6S!8ny~J1LIBgc|mJM?Ci#$kCw7?h?6kM(UA729Q#km+d;$W zOC27#e0nNm0n$lI%N3s;6A9hPN1*m1DPY0!sMDLzMUmD}T&<;7b;dO}M5y|&MU!pz6*%AtZ)f^L`xgl#ZY`lT z+0%6XdWG7s$t)pPO+01g4jDsS4mkHyeV#p383pRZ0;+mgn#+Ir;kKjeHm$gn8}9oS z8t(|>#vk$L>KHd*d#*wsG7pPr9br6YIp#c_9%(dGB{0jb$8r)~f!SLt8w4@#nPnun zgHFZvT!6{jOLIH$_lBtfUcaxGO8gChN5;u)+q+02TnvDWicxdeL9ptohVYCX2+H|N zcQC?;1pHJFQ?dBjix?w=VWWtP*VR${4RWH3Kv^52Z9?;vg=rD2(!&75sBynK$wn;Z z;Kxr3{$m5f3lJvE(y64iR6#oP6bhEbh$YOaf(5G+q!)X%Z`4x?F6$wPE(Mv`3LEv& zSaSr-r7er<{N9EW?sp0SR7HQRJo2v^bNEpDLI7x1@5XBC9(-O8UB~mJc>BMLIyfw& zSUe&y{h^aH+7XP4N?dYRlJ& z?7U87_!%HaEH=f75cjiItWUWgl@Q?Xw?$!GziHq2o!~toe5J0|bY_Fh%y60> zVqz%`{SSR(8q7fmd6+%fMUtPMm?}R)?ze9#tp#C)Qx1>Y=TQudk0~tRXsE1kNZYEv z{T^?dzoyj`Z;s9y9?ncN0|d(!CR%*719V%CLbJ{loo=Rc#!!a7;cD88?*IrJ_Fe%j z9wo%8wZP2Ag$MrQHeykqzFO1CH>^y)oli*4v@bpHK$xJ2aw)>a`yBM919xV~VCJ1AtNh9kGm zVsP}elfJjlwM_pS$dJPp9`2729To*>NQ>X+>||$Mzpc}kC{eMpz-m&K-QvK#RbXQl z&ls5Etdru650jQ(eKJFTm{~Jqn;!- zk+E{%YsFQx8$pcN&{2$7Xf%Sc%F-I_E*$BSIr9$@tfE0H0f5d)wJyg=?HAY4&?+Q} z;uo%_wFjUw>9G!bn#5ac10UB7ie5#~l6|Pxs4|^@_Ee za7IGR^6IFJ^F1qAep{CNmKtD`NTs54cWPC=)pq!}o56Atd&JPtMj~5WQiTf$?de{X zbG4VwYWD z1c`Q>aEy1R&b6n)>T`EbfMQE6Q#Xfj90U{Vq+c~|z*{9jcZKY|Q3Rk&+TDtE7NX4B zk0;4Lx-ZQybsL#(#&=s=RH|_Gt!Nm7kPnY5J z8++{ti7%+k{7FttH|>6G9eqFB2M;h>a@NiQ$A_)HgrHMJs2q`Hm_^L3 zyJ%dE5Sl>Cf-%Qw1K{Nn#mMUJQebM!dkwiv`7Rr8a>?e?f65gGyc=g#xm%|kb|QC6 za{C~ciS_kNPTy9_gM(KafGE++*Ed)rVrJdV3^$FlaZ@C~;37Am;o`#F)gatpjsNmqFNjzc})Osh=FD z`{zPX!;2{`0@pkB2S8#WIniS=ZABZ)HHO=8kY$`Y4u%DZQrG_vTkjklS=Y7w#^@Lw z+qP{R9ox21vDrbzMkndGJGO0hY;|m(y6@+C-|vj`oj+=fS~b?%dsnSpYwx+|Z(i3T zfspY84xSmlyQ`}empAyJ;y?!xK<-SdysXdT3|}Z{;&aSU%YvLM4YQF-#Q`9rPN7zp zN#W)R&IIDcgc0TrpehZkAG|nLROm>T!@eYB&7--FlO!C}W(3({NxU`lTvcXK_wCK^ zs1UlOvE`Lg6JIZBOOjsg!p*b;7ZU_Mx>@;B}W52KAFzbKWLGpi1V799Yn%#u0!#0`oG z%+g$5Ync6JzCdm-xJ?vszoSM=>oWnD&TCRe51o?0@0G6y$kVs&#C;*`U8*kG<69d& zwX^hVQOFx2{BzKf47~CUcK0NJ6ycdcqhwFzN%5BTZ4N85qUbf7ziQJt05g1^(Q}>X zZKy3QL@&~o0)InpQ&B*|sT7|e#! zJx@jVHG3`PL{LsaSwFuJQ121`VSefrZpw3WI0IlO4`H)sa8yWv^bUaaNI7855;R?O zI8?s`0o84*J}tU4WzP58e>(jATq+YyTRmX#Z&t zJbRDr&6WC7$sGx1vp5L~Xb|yRUy@cY(%W&DQlcdpc5yo__$<8Z2lUJzJwJGq8{ypk zJ>YC076x#pO3se?|0i(y_ahPzD9`gB@ST(8zXUueT=`E-0|R>0{;%gi&rgu&02eRF zkO1U0z`@JQ1d41xmH;4pofXJxERXw-i2xcXOxg+J`VSco{Lct39*|4H{~5u>&Hax{ z0cZq0FxeMQ9-rgC06hoDgqj_+`~LyxIY8{aFdEXoX4GiF!aR`Mz{kJjJO>lkzuo== z&U3JV;wzAwK(!n_kfla$6Nthn#{d9<@osxu=);#En0#};(IA4Lh&jszEY;XGS0{$1 z48Idt!#89m%T&v(UI)H7ph6*nz5WY;3R}m zLQE}>0X_M4aL3V_VXN&2=@q^Qt9Izi2%ZlON zYlg12r1SLgakz#e+ae>2H9Wf;*cc`L9pnxzfeT;k?b2=dM&!>BTQ<@>2skkK9grSr zlrZ_R@+JyR8P*fL@!|7%a`@g!9#u*!D~>725Gyk#VKnEa`BPc`0G_;F<_LJ2F~Vbl zD9JOeCe~ORc6n3O;a82{3V1#A#2w`L5xe1%&8%tBvya}E5sdxol1ox^bF_?hZ209@ zgGpAfT0$Ym1Qg9V0;7HT789?0NaeYEzz1xpKmD1P^WeO3np3lDb-q1vGXqj(Zkt@% z-g-j;JG-{zxyo2t#Jh}0B3sh_Y%wxEW-zl8z6NS=Kg|(^(D3n56M%dlMcMVfG%upE zn4OZnI+fmgc+a0~KQRW`oR>s4lMuT{ZNgWSnP>T5Mo2OUp z#YM2uK8hav0$Y|E^b>v#q=)W!gX3jr*os3{(hNs9aILxPeDnA>6`J!#r^@B6c(rL% zL2uuFs_xyq7q&WgLvLdE-oon>m} zFfIrco6)#^Yj>-W*2bGYgNyk#iqYkm{Yj9#_066En^LSAK%tMEGYM(Nh zHd3o7WB0@E6KQW5T635MG? z>2HWu3Ft4=^UHPN9EL=6WIzf%bk2s6hBusQXd%p6G!SQy_u;1)4>gU5DM)oS@aq0~ zcP)DQNarn&3m{e~G(wh~A8{06Y}?Z%iaFw<)%xXd>ua8RZ=-&;8fU)gPO`EcA|Vqd znKaaa_Hd~;q)mc?qFJ4CYGcM2@(-AM3}FKTQAvurq6fBijfFRE!=utToRrx$#!h{3P}s@j3i@ud!cVzJp$$>?dys1gh+{9VXnuGGrJ)Y1m>{v^9`y0+qai)1e1n(GAg!_06Jz>59Vnu|3R>kgLPx$M( z6HgC9yP!qL*9gPF)v==v`#b){ej|YE;)3|1T32J`7?ly{42%g)$Yh}kF%AhoQ#=2* zp0RY8D7cUNtE_6kq2=Xv#rBk~G7`5oIwE5MAA>nY6b+0pN3m@)D+qQQRWn0yN?LC|B3$q%wc7p$zM{Ae=)&?M!Bh{ zk^fQJr6JzMmxuT)i}|AtT|9@5D8G&PC|inX%1QThS7LMjMM0}FeNx8z%9$8;T;i$t z+>U&rKwLEhQY(AvuiETOi!Gp;ZC&(8AqMJ0%$~qGEpB?`2+J1_`pseuXM3!R%jZ~V za2cJT-P&+^7z(gKMb^^5$zORXDlK*YErL=@r+YI9?lF~{MNBTE|42`g9wdrZlD7V# z|0x0sJT<8s(`#kdfjCnA%tjr+ILby9u}OBiBbz^mVwFy$m_XsfQ=>`hG=5{k%4CHgP=CEH_tzA}eE#(e6@iC=?CUx-AM!ki z3`lp-MR7dgcuUP7;2QQeO@)wMEsSs z@Ojt0E%S0SF$@|-+BIk&PQ`C63Q9H!LVQBj6&)vV>g?sHgBKH^jDQ5^Yj5ogZ2*S^ zT9V+9;N~2xolBREIQM0oMUsp|#6j-G$RUzWy`n6$2*{^9N`P}C+x)-3rXFg(Af7$} z&~OCSN5Iv*nZ6XP7~>Yo1e1nkzRDUuX)X=EWH^f9%sE*%G)`du#cpk|#nS_S?Xg=c}QJ z9jNBZnpCFQx>b??Dy9y$?s{-aI@6_9j<`ZeX7Y0=iRRL^bh-@*DBw z@VkvSfRyH!cm0z?^A&W*KZ`1Mht?kL1l!nv0Rjjsuy!eE$xs2mZs(%?qo|$P^ zVJNop{d>Q60L@rYVAh+}2~H)VnnC~|BVysrR5`gX$uZeg50j7sV9f8MOZ~ zQV8Ttu7SbdNfk2n5=nQ6YFcm2u!t5|^uGbFPF$Y`J+`33*Cv(W*1p&M>X#5s`m4CI z{Fbj$KzH-{5GNSU3BOPm3SRXGNGY??q|)-Q){u(1jVq-=femOJ2k2{aw9d`ih@skA zyLuQ(r$~?MF5%oetlg#|bM&I{T$J2x$X7XCKR|)+{S2E#CbPl9kD!8Dl>$15B#=Zz?PAwuhw0;b zY;k(a$i=%2p$m=-E7lqfnl%=pYow_*@OjeUXW@By_;?2eh}v9Xzl4 zjGMWF0$}v=qF;!GO}Mp|UG;BNIc-U8l3B{)yu`LgN*>p*++!!_vrMC4dz}q3PgUCs zb2kL8rRijA9UN`&IUJnT)BpuM%~v-WLwiP>Z?w3bam}u_$G0v5eeVya(36K*V>@-s z_oJsxiNGq7t|>@JL5frX6Pgk^;iCS6TCoyj0Gy*nIHvCztt3|>?Q0y&PWjp29G%kX ziNd1igBw(T(-WYm81#0yu^=sOO!QrAck+OX4ibd;%7TR;AK06>>qqxcUTd7}lrVrF z=k^0J?i^Qt@k26|&A}Ci!3*;Wr;60g+%tv9i!>AIYhF`0>9yJ!Lgn)g9ABG_yBKK> z0&L#&ryp=c+@dzgN3a5dNQB*UskS^N`NB{{?N}v< zJAFMELx8k0=v9|MR(M2~FBBi2X(QJv!Mla^O_#qIQQ%V46$XGdce2)0C4Xb>&>5Gj zG>4$pYc+2nvnR#h`ODfJHo7#W%jt_HL-`&|%KMTAI*GZn4GE|`u#W|t2de1|pxzUZ zd6_MWy!Q$dqJI?tvI)5kV2^V2-x9gQeijN$yUiBWIDdorP6v#{K_*1U@i#>E8~R;{ zPhO7mj2t&8FJ?g!W&B%UGfqm}#|Gew7mIN?BNog}D5EYL6*LHv!pCMfv9h9WY*LC< zKHxS$*b%pa`iTO*o#&ChV2d7WptOOxh_~mgTBy9 zu)R&nu*v6`oqjzr9Bd{5sw21$IQ?d_gHluiewN;IlUNozC@LVi^&k zByctwGQE+^A#46eo-w#!j)<^28gH%yV&Kjj%P&i2V?HoD_=)uouTkDGtowk)kx!Ee z@Jaw_9`(4{wgBoeL{62 zmPmAsggMbsW&OAWPM*9bseasxe$(8mL3djXOPE_Ot7XL~41F#WU3^aPf!1_MIPBIz z3M*%(6xb=B@?L3`11dCwEZLlA;?S~Yss06C$lEtAuW<>U#kCI560cx|S_@mrxCLEc zIOz#h$sV;Cx`_48tnFiky14x(eWA}o>##eUG1J}}{m;3Eq_m$fmW=YAQy-L0I`L#s z-YAE&R{#~%3p|E2T*qRTRJOMZw>T#3s&&sB7RW z4w9IcwlMGnYa|I)rA+{U$vMc!&=HJ9W%eM4chS3ApEbmyLwFcRBl_ae8%_Xpn5>vv$S}{vLxG-9rFB)gj^pAoKVCARX=)x@G-iV}V2) zU!rvf;gIX-rI`#=6moui`H_}32P=ZZ@>Y6Z}c=JWqO*A!ykY7rk|Ut%ff+APbUUJ zzLwr~y}jaQUu@xu!pQsoQX}=dCC-b4txzY6g>fh_>^q2um$f?`6HwUkkNJ4Wr>9G7 z8=fXE_C_sW=G~-zA>m9pd6oG$wRT*rlj@%;5{5e!N@ zjYG)GodXCri7EVAOXl+OK)yzs5ZU&dTC0J%K66+c-|>NA7wJ(Wy7rz!q7{s(EKQel z8_4}q5>^GaxUCTkLZZqtxT<&ia$jo*@rkSn?z$D_4^+Vp)|l2*Dt>g)B+(xi_nOFN zx<+S{JV`xNZ6J5l@+(4HLFJnVEtN+>2=v^FDFNInN9-$WwDG^?dg?!Br7ziCj$MU1 z=wgQM98)%`!mJex_S;HC$4m)-6>|@1OAhFHF~3mB5cn>!6wSfd+mcH7@&R3Uu>D&L zVhM3aN1EQFyXZo&O$J8-!E*F%Eoyq0u}BC_$dJ<6RPkrCHgt%jz*0xRO9U!}-A6>6 zSQ!Atb{wxNuPWioK98w9p|+G;Zy%rJa7ASl4lx+s>1dn6K4wvk26=x#uD99 zr!b!bg)QQI>-!o!o8!v#20}z7SP4F5C<=u(N+Q2~sC*4N2vp!D+i$ObQV3@v`=Udj zJRWIT2p*e&ZA7Rk&f}S?9?hcmQrs%jeB(aE0jrh5inP)+%`a=&*D8EG;ZKTObPfRL zy<#`K#C^#&M0E;NV!WS3+F>0rL-`JTxA-#YC!m*YHUhD`fm%X<*gE=2U{;0Ep|f%d z<<#TJNIX}gvP12aH&=we$gizK_Qcx>%iv1>51MYQv9rUN`CcQfn=k+M24jb{D)E{CQ4vx^CnH_UTw%hPG&Q+1mw3iD9~=U|)x&J>AuY>*0fD8LE@E4u>u zbi!ifmZjA&#ww#POwI_Mxc>jln>iOiTfi+|a?MovfPZl^-ij4#l#*s}2ri?&BhE*9_neB2egX&x~1C~l7oe}DZt(nPZZlk4))LPz!VE+A+2FFaliQ95xv*yF1^#iv9-jb79^H{f!n`@BS8Y)NVvE`Zx$;-#_?M?JGffx?lAGR5o z);2Jh@8)d+Et4n!lz^m2yYGQzcLi17+bTGwv7A1Zm2FsICXLqdKh_?@WZLASOa0t1 z#@pn4@JcZ(7saG`Ap6SZqR0+?v88q?Cr}0?liJWQU`Ybm}mNk zHVP|8S$qQbE5XH`aQ(VR+Jbkp>0OuZDspc}Uf`#-@9Lf}k)QizxlK~>^7L06wUXx= zu}O9m)|b%k=k0(hM{?uO^Cu^Cnxzu}uzRxvk*T-e+sI?F|2Vsy!39I9>0tLg1GV8w zCI1yVnVW|KF3jYOIC%Z<{C}dA=4BB7^bgRF!Tx`1_5(#rIhlc1OLFl41T;vf|6l1$ zU~exrJ+OHM#6#`wBBDcrR6c>T^D19~Lo0H~|1r-3=8iTt zEzAVxAA!(NppzuMN>=QXq}rhE#N73U#U%H1@lJ+ln$Ar0oU#T@>4J&@b24e_am@^f zMd}Mlswc(YA+r<}Be&Tl&S&m=WsSx5>6zou@$WJyaY>3CC6m`ir9RnpYkg|)->`oi zu6fZG^qjm1sCVpI8oXFeiV#KZfo**|zkQ8u&PNiZm<|APg2> zTby*%^f2gbx0{Z|KSC^#GAtR23yJTV`)&O=Zin~%;Id)knof6<3)aPNm_NLwwYu%K z4D&HtPtWJ#H1Z1(RU89I7)OPWr8@8llBnHz7c&y zl}>g?;eOF_!DNm#pzXqhY2P!U?y_DUEaS=8>YcW)k<1vQVYY3rUAnI|!Koe;R1JV` zDr~7|%mXPFK75_VpPQW06`aGD;?Vb0ey#lNRz{E^AIY5~&1G-;9nux>TNF36$h==N z*niG>A-WWPKaB#5`r$G_$9<6k`%pa5)kILVUp@VKHLsn8crFd$O!l&s<@-ETK*nNl zuo-*6N*dv8TU9uJM!xD%Ril!)dE+Wc~S5c=ryq7Tp zvsroRs`8S;?27#Og5eM#thhb9CB>_=)O?kRw#cUCoyOGu+BT@sf|)Oo0Ad0zsy3Mi z%!WHBtz!O&4nJsnJ(5vc#t$3CxrG8HQy#c5 z{<{CYL1sG|-dZskb-W&7gd}R4*@(cISj=Gk&AtAqFTbCOBp(z1>rLSOa5DeHw~W2m zx;W;(zf2Q30AJFpC&)Je%yxbuf>;2jg7wx&P3a!mQ#h`4Nx-a-6uQV3-RBHXXB-2JgglcGglxzr?~n!WONSA z^wNfCCnU|=yDQc_8bf_<>Uomrg zjZaCHLELEqIAiY_eV3Rl1e-uzq3yvg*7*-ni=DkMqc6m5>Z&MC?Z{YTHGIjoj2b8p1Cj z)V}vn#m8soc<|KJTGd7LWr|!MPu|!~k{)Hl@ZuA>l@RrbXSEIe; zmy{f^zRAd46>KAywqa&ow5uvrG6LJ31q=hfhWX1qe|Kr?Q%5DSxgfSm*{2>eQlabX zCQSKe6B2*xS&L-nQ`V0V8>iR~N z6;aG2TEDV(oU`^}-tKTq#aM>G>VSsJ->m8kc=YtxOp;FsYWNl+gjIAibMu=?>b2w( zVW&;iwK8N1Y2{(JdoaSy0uLKuNXlIv7N7cL$vUz-ww6JiFXA6I&aWc|XXR^})Yvm- z5`IZVQ5QD2J8d3XWZ{Dt&n>grjtab# zmqIT8ui|hD!bIoXre3suYE~&;fu`K1-D^^@e&b4!`Yd=CMFj)Jl%0)3ZlRJhA1_~)XjfErP8`Re}H=lT^ToIa4W z1lUGkWu`%y|3! zfDQ-hz!TKcOr-;|EkV+p%DYA9OwsF3KjqeNS+q&)pAc~%OZFkNi_%(0R2wk0^p0UN ze=Fk7ln{G_+a~k{Md&y zK9gP+dQkDe#$Uc`y7gbcg#hb$mI$=OXi(ZsPwUyvMLpDW)w8!~HE1e9eZv$}gWVZ8{*EZ=3$ zy-PE_CRJXsr!BROGS}|m3@Nf2*4znmw9+9EP{mfYwTrz3)^+)6cr=lGMGxyo(5F!^ z+XDO*?tH_ExIWo}@A(SAFZ#Jy75l{bSxawf4QoZR+({DM00Il=yDguyU$|lY=N~of zg)*wZPHCNlTigXhw|U$jAwWk+%zwwmOO3|Rt8Mv6frHC8neB~Q(ivT0ZO)Jnx@XAt zPO9mQrrr3|z7VZ&r7BZNq5DoLukCLZqHu${kOJA7Aciv^Slaq%RgjR9L#dn4DZ}Ag=2F)t#G_30SAZOZQJT ziHjSLJmLR%YpR?A$C&ATxsS|4}CO9RY<+#2>;)Ko%@ncHn1-9L!gC zkWB*nzhnMGS+R4lgVap_9rLd|Y2?a(%3*p5nyq{gg>O5Hdqzl6TVahAA7 zGnR}h2@(!^ZSR35*_k{-+I)LQt~$H)f~xTr=VB10Rpf$~SM3|I1a!PUYjx0WuRh|( z^)YPtpKl2`;=rrQu*qm;zqSM7_t5}q5~~_m-r{DMrbVt#YyBJC#NVA$iWm}#C;Lq> zB54L^siN61rLGSPSKbKxwSWehS_hv`0qOxeR`<^a>exxvrw`Z@EMjm>=C5b{k6xF= z3=R~Es(8L=(hYE>VWQty$#7FnyErUd4CoZ$VszTNH0WdF$izC}%5`E`;D`VmXROR; zuSZRL!`y2In0p0`i9ouo=rNIW{$mFSnAvXntmiy0108^4Ej@l2E={RWY6LE1sdypd zr9|eHrM(x7XbbnyN3PQXeyA=vO#ULm>mjIq)W4k^Cld5K{P>jE$!wyy*T&IUTlTBQyLff!AJ92tPCXpYf?4P*I}%vz@^c`SOiM9 zr#Fa!t{%1__qGR-Rd_R44Rh-TSy-R%_}GG}*C5#izNrKkSl6_G2Ha*^Z-LT#A_LZq zk+&c$67??WWC_9kltJeR$RGbzP`_I(l3d12(}#f|*%Gp0FI&)nTLsuL75nrC=$eNS z9lK7FD+R@#2&9wYiPu^*qrNYAK>;2I9=jRwI|69te+Woqc=M^+2&F2mE}}V}&c%7WsfUmMQ&W*z9j^ zDk2^>?|wZ{Ab4<;UIhql&!^ZgYTb`FQ@?uPdSQAnVa4{_UgAZOdbNp1dDugorD-+o z-Yd7L^Gh-{ZvL&1IDQsO7`zec4%yDQ@oByhsiD|jy+D**%z&iZJ8xKmA#*zqS8oF~ zY96x!wKLN(lO~;H5%E#__T^zWJRj z*l|njKUf%2IC4gCuaD`d=vTL9^JA^|MYBthMB-VD)>*$mlag{M-iGVoaPsxDuWC)a zJkgai*R!50mt%^7&xY)1YPSZ_SrRW~wXvf)(xo~XL_x47^bY923|y&B)DCi9PIyV7 zP7((jkD5M~pyvlGL!ZTC&HA_9l?_7Q_N2QJjs8_zRujss!`^89+&5}3GmI#Kg~uBW zj=-hR!sZVtfjt2=+%IQqP)fh-2G3v!6KAmxG?B8<^Ba^U5?KBSS0ILJAuB{hz!02E zSdb3525|W!zgx!TiIALqNr)66tB;ZF?7>#YJW+aH__cAS`NOZ#vl~$kWezbF4N76P z=!bhiJ-Lc+l4HTI>_y>JqEuTNheGP(&s@SxDjO}DB7RAZK}~u~pKK{86K@ixQ@?pC$zL(M@MrMe$jcgt10ThFTS@8f!?_nMqi^22AY)XR+dkXgLfqLW_W;_t^nv#G6)1Q}#a_+~-|mo6UXBSb@EmMY z;2i@dCBu|Njx4&59QaQiP=L`_YlATinB>EQX3RceC+lPnb8sZ4tbM*Pa6`0;&t{uV z#J3mvA6}V8R|UgQ(0Vg>3?`uI3hWJa-@~>)Ij@SyAz2TFQhX8tM@-_EDk`uY06e`j z2(fH;sCth^O4paI3-ik5z8kOx##R}w5(S@o+bqU?&@NY*j(Lbwe(bD0x|`$E_rp

Vbz+0Q5~?LCBDD2t2<(HzDb=+PT{s(|3ob8SRZ6oU3cv@LQ&0CjP4gDm-1gW>7-*Q$UX##LO z7mox%_3QCxCtjd=Uzmq~VHq=2QkQRDc59!wY#pBobSf|#x~yjO7`SXjSPpa|S^uo8 zfGr)nMhbhlP`bj0RbzhQPmkaRvNg7FBa1o-Gj!orq46Y1;sfxJ39VNF$HAmW0xaSc z#K<5Ti~4=OVub(W!Zm%f?t-W(4*I}l6`~AQH9}5r(OsmWZ2^sLBOIU3Vduk&{6dT~ zwP{Lz>wL`sFQWIO?RF6I53|;xsk&;1CZ`Xn6Y-5;7`Ll-SIyFJ{sr+s1Z+zA-8P-l zNoK$Iu2e8y(#9#k6mM)A&?ivA%E;O z(fQ}h+c?NiUWQySi6j2*#k4l_fz&`;FljSid>$WhItp2##G(vO!& zLOtW=42it|pk0ay>nlt7iT7(=xN+UH$~T1Idy;7|yR&R?Ptdy516l=xewX?YhX>Fs z8n1~l)-iiLzYe}p*c+q0aFZ_{97vnS%&md(-6dK)CBu5>+@ik1=Yg5K;+w&3ciQUo zt_yn`0!FrCCQ^<>fuz$|T;iLjrqUy~BpXRq@{h!6FG-cNjcIguGIEH%WYyBb$$_U1 zqJyQThPqc6wXq*6$g(C3KM(wN%jt_b86M55?xHN_5iI&h77zyAa)}40P4|(5tj9ND z*AF*)`4~3QQ6_38AiH0haRL@MWLY#A$mj0rzFH6Pi18p>h}VbR#}{=&$KL|PAE1Fd z{KObQ@IyJ5|Ik$fN1&ns#z|C=C9ttF8k)l7B!`)J$99{(cneqp8LHa9xBkt4&*f0T zf!jqYl#$Gra-f%dGxMdw039%U7mW@usk7k*D$@om8}&;2P>F$|g2`^(6)GAuXDYd2 zw+G1bakIed*wd&+JZn(OH~BqDCc^zMT0qe)#rB`uyM4-Tf6fX?>x4jt*#Mk zV7bVp?y|KRO0kjBDwCy^P!y82F%>D_deL{*mkH`Q%O1t$zX!e(twPDph4BKo@EA)d zbbco7mDj9gA>+CmZ0}n7t&uvROXH4WY6(`6)JG-X`)cw@O&#Tqp5tZ%72{t!Dyo^z zu6_xcovgbndRXQ7BZs}0Ub*irhKo~F#a$o@iF$000^3%hN0r!Jo1&m|KmW|H7Ql{F z0~OnsJXHp`o{aUd%g*hS;JyHA+ym@7;-}~ie||w8&Ayi^W=h~0SAlzTyt=EgZz9ZF z4_0Xzx1nf&A~3!3cd#uN*V$?d;B!j%u4(pM{MEt~8fR&syJn;b(>J$!sRUd3h-9sw zUDxhD^z&XQ>P3Mv0095V76Pl33_m}iWoKK?GL-JZ`lSYy;wyo+04*(Gf-qYK9OPRt zB$(Drs(Ra2-!db)qZn+VvsZhsB#Tb$E`#m_XYV)sZ#T^Yj|d9N7$iSxCu{&r)0m)9Vt!DmA|&zr z3GB#`%ojKx`=jV3l*Xx_%roxWzS)(_V(>i-36n{zdFk zxj%ScT!$c?%||MofP>wrd9W*QZZuqpXf)G6fBJ(RQn{BHi!~FCs8L2u66Y?=U-0#g zKmLn1oQ$Y>mJ~lgxh)|h$UmA8M`L#JuhFoAYUHUGO>C%=l8?LICz+gR>LjcbgdnA4fiuFJ;CN z8YZB}B6sq(mx?<)@9HOU^YnLuG8$uXdI~%tT~U)0z;9n%hoqj&e!wCQyWm^U>!^81 zuU~U#K+?imM#Mk}&S^}^KjB5pTqE@6pML%9guSKA*$?&I_sZvTLp0it(f>tf4u*U_3LBpwfHqUHVRyx}^pmxVEI zV?d3}dKW8fz687Xd!)s4M)sHa1BVmX7Gv&-L+d>}SL>)XSG}W1DR&EdCp|c)x=Wrt z=6nizyU!u0D!|1~Ksk{TQrzdc+R>rxUMOJ@phMznc@_DO08~*$-B>Ek6tSt0tGeeD z)w~=kQ=~Z@w?CQ;L7MqIt zbS2C$#ouSn6fN=?;b0t;`|N|E3zhUyL+1qBR;!!dac~W5j5V_fnG`IR#3P^Utv>oj*;V0BT=Th#qsI5`_(0nITg*tek-aL@<=k0hLao zqp^T(a(`-?q(T;X8m-uDeuHP5G5OOZU#rS7R#)gas?U(}SIadbo3WSaa7p3J@EvR# zm-_P;g3#Uy_Tl#?ej@$hT=b_uuLA%#4tRFn@hLN(%7}^&HV%_=F^p#jj`}|jTJh8* zqW_|b7v<$KNb39Ab47~Pj>toimuV72k-xOx8w%m14-!>zXE}zipywhysRYbEG(c$ zUc4YF70{D1;A|Wg2XL$y9ve7DruZ9@lZgXZcu#}@Oe0s^0Ddo0qz7#1=p}*xfWYb6 zt1h3Q4AKgOQrefKf=v54M_r0}tk^P?UlMEf=CWT)Gra);C{7LgaC@u4e-scVL@)=% z^W2_ttFBGkdt$YeuSRbN?^CR_C`e+VN?iz;YPe%F3MgW*8RS$jlLtMzo-Ce&(fzN_ z?z8hQRyA{wt>L675CJ=}I`8w)q~^4ElvOvTlH?r}QDo>DjClt2#@={RXh;GF2ZMA$ z2b0jU>0+9L@gwIjwP~keYY0khzxd<5WpKVE@V~2QocpO(R%Y^W#HkKM8NGl@Yx~=p zuwEfB?@P>45GB>fKoAU@*B9ZiPP}1-<*LLZ6P!_F)7hDC^Z{IyjPs5R=f)=1T=Z6{ znPX0ukQ;4{v`T684)*cbq`yNAs-8|i`-Br?44_g~z#y4YWX+~q^8p#5j~pug zKG-?J2d12-3aVm4nYr!0wxJ%yM-MvB{B1J#@lePCdy&9F*wKyZs2Xnh*qOQLnBu1- zcrK#{<;XX@y#(??UkM)#zg4S{sHT=}@vxtL7>4!J< z7!R_Sm$7LLie9#tE-UrSM$%VC3F>A>eo~9S+NN4yjqcef5tD#lwUB|63GsR7`X3mC zac6lB=SDo*c~lCYO?ktQpL?JGI4v6sQzNQ5>%ZEyoOvF!CZtDr3x`Ps-qXDzRA{DhWOyO5KdIxJCWJtzn~g6>8A(CROdcu zSiw&Dy(7O)99U0@3q@T*KC@&*2&iEAMqhL6!&``tz@A*q5Z#z;Kg4Z^zW;D~g3=X* zLhfaJ)WP`4Fj!5vui4DBzDXbuugVtpiqD4qiw)ptFG&+lz)k4K-qP`SgTv!!(cVa| z(^N$3waauZbLHRT3zPHjjEN62F7 z^~Ij59F^iI7s5&R8Qd&O*02NS9y@$Jh7Ci#hE#%<3gsRNUhdEx8O?0`(oR(f@P1mi z90%aW&x-~gAX!sIIJYk$_YB;v^l01i#WTEnFhAG@ocQ|pgOrY4irxP^V*+v_sZ%Cp^_feWy|OSjOE9o5?=MLf49adISZYnzgtmz1c?+R7S9JK2nNK zW(!q5Cw;D%aeI!G06FsLJ@=Tg+V@%~QUST#>em(HC#_JEi|=MGRtf8ui`n08(zwJ! z+M#gTY^uc4Gx=5-p9we7hlEGrFr#buD;Q%Uj0HhQEPX9 zMQNFL*9WmucSbkD(U;4|<5K0<()oT`U+WjeId3WIA#^REIM-W*)uQgrTo>R(%4?bL z?F_yyYV4T0*@H|WvrVCvu|>`EsYW+jA1q=HjgL+}3n}Vn&2Kj}&t0D~ew{8_t0Os5 z`_(Ud@r6Gg)YBh`H~lduOS%K7o7JcTitbD~y88?(fz6QD+TbkfU2+ zjamd9-JluO1Yl3>k+YD0auBor-MF_bHk!iSh@}(Gc?cJRd~Uf{*U;HwuOz7n6%_n1 z^$wJe+P;j{fykxT-MvlUCWl2`8DUjLr>5yep^v6DJ;|Z0k2Xx}r9K1L=`?jzXC>B% z=04>ligvB=$eVmq*A*(|m#M!5ryP%?-)UM~vErw}Fvjp!OgG>HhtUMSJsR z=$!B ziqW-E-P^t5ey)Q3Xe|JyYI5WE2^>{Q`?o?y=87YtdLNhW`Q0DUfjeJL4!fCGu@i?| zCpiaOS5fyu@XAHp6h&`T)JSer0>Xx*?%_D$Wa*$~g-@`vG)nO4=70Aa2OLB!frSD> zE|S*)<O%YX~>w;^@R z2|2i>_qQQnA2OzgrRZ;obcA$%x5h`7vyU{X_G@ePsZ$fWjZA5&Wa-v1Uc`lTi;4%m zv^MHhZ`c}HS>qRdiBz$c3pjvP+svdt4Vwa0rk(vOY0Q+_^>A@YNfOI4Wb)OiVT^cM zK0hM(K-q&8y7c0OXUf+#slab}PZeDZ3ghP0s3}BlxedBtIz1Re+$9Bn)sDM~vU-w` zwEYD#IiA!247f~wRQGN4jAjBH7#9&xDKwM?1d<{mltzd^dsiHJ8u$Dr^=L9N96L#` z&{GClRlBtMyvw5k-uGcl2d7DN%soulI9LV#b*S+0oD&~98?D7Mejr~AY#;f?ut)^X zspgH(<zZ@!&v1ONE{=5hL@C@T;{${B#D;*oZeF*oZi_< zoK|D$YDNO50ns(dh}uk+uJ;A5`Yal_Wx(FpmTa5FOuQZ=BRS1$g_T&@tg-wJ7ztzSsWK&{Slv&RVo2%_>f zr%hXH`%<~FPAZjdA~^0Ru-tiSTw2GzW-RX6T(G_?93hyNa~aJJaM=8Ch!8XsRGd1u zS5w-UpFrkqE=P1M*y_x=b(wgKKNqR#ByqjZkz>NPb4bxz9vwrqmPo zj=UR!Uz1wb^iwJ+VHb1;im>AN3&zaN=!F{{<^fPr4G!;3{(e<;E|O(yei<&O5fv33 zJ86YecJ9J(2xo^l#@$uFopU)B{D0#Ay$Wr?*Lt z#7LNafpFp@JU0ccOsC8B*E;B{grBH7Y|Q!~RTNNKXcScmHV?}JhQ1piQL7`kRr1 z@udLUCLByTIq~pw#7Eb7xXJPw^dwmd$?#*Doyutl0kt}dKN#TA%!J#|09;;|in$Fx z>@ipPsR_||NN2vCPU#8qepkHrR>C-5!|+08{ngfgw@TJ(PxrFDT!@h zWzZT9oX9{kowqe^z;s(~dRD^bnr6V6#03H0v;1in@DXooCo=z*n32_Ll8>mWf)=%_4iv#s!irIGrm`ZJA3IEt-g8_BH-hI3quN`S9oS2*2$tKke!0GC+!RMP+k zzcUdL;*Tr#B)i)!?)Hur-+x0mF(KT?cM{=+;Bz1IqQGKHJyTJN#>h?e#}@_{B|iay zFaI=}bv?Yj?&fgOTBzJ+TYQ<#d&nBEYf~RwRDtP$E_T7i13cV-6Fp-NJ9Y5JeU-t( z1?m=J(8*F9Huck#ti>L%c5ZzikwynT!W;RNsa)x)Fr~lkQRjl0QWUjnyw%Yt*XKcd z?OrCO-G_>H)6O2CW;NsEvJT`~61?B3Phh`Zv4`D2-L3h5CuXfakTH+HZ?Ff7>8WR| zg!vYoq2~iI1^47zI18TYym?#qf%>a27!j^Vp~BI;Ou)3pD-17axU_2v2Kj5g+`Y^QkL0-t^3g=M#ti=%%Fo0obYxtSv9b)ktYQBE^vrVI#VkM{CIn78C7vB^d_ z$Ob%(y?#V%ItON2Yg4k{W{`jy@Un$)ME*2tO5HT#P4YopGRyWWo9fbhvKs$TD0GxZ z=`OsVi&FLa?a)PKiA^}*x5PG39q&AAsz1Pyxymw$a@mNh##r*ZJKr`rDh!FRznOX$ z_h@VJW6sFxh`{r@$R!>h&Jihtj*-@9S-K?~38NqcdDhXe)r6tC}9lQZ!Mc zv)qD`j=ZTHI)CCEyR9oow3rC#Dit5sS+`0MHbFq{@2n4nYg?LxBuIt$( zz~!|`)9OO?N|5lMGWEPk+i2|)&Rsq2l~l!=*WbT8>@xhjM&>E8`41tsBjJq<#0j?W zzV&6>E200@5hp0H=gCG?SnaDC)GvS0+V`MTRW%SC7QSC31U6g680-re*pKF0iV4N1w(57R>?xz? z?FhiWETaqf0yU;(x*J)=Grh=NHNsLmQ*F(Ra)3%xiV)NW3Ozt#FS{QUD8YRp@!xs> zB7|Q>_Bq94`g46iEDj`(^w9HaP;yelyLHQ)+xv6mSi3UXP_>f$5E*e=yGTxTUPpKz zdVE%2NNq!sM+sq?#hLFvMmVJt-fzcX$2Np)xGWS5x#J?=zGPGhui|yOB~l?ikt~6^{nLrYwewQ=K>vul=~)A{ng-hMXtu%DnrlV| z?n7Qi$U!Rj2^*G8{CkcK7a)_cRlgY0)#@}`=Mr>$Z3buC6BN(OSyg{~`$2MeCU>{~^e@9Sp^?a@s)bGc(A$+_p?0fzZ+o7E5`>8a-^5z z08R7#^YS+2vFU)9TIVY3+^An$-K5WxztJ^N1YKN+l=bc6Aynov&UGDdOz0w`O)P8y zBS0WsB__HfWFgGhgx{U^oi)+g_LU4}mQ%RvlR+ZhbaTIk!xKa`#!Bw-kF4Dij28DD zZ-Q+k+vUP6qq*1NH<^;{504k4(I@liV>-T+l?5k52|r*~1TEvdRu-05_xk=qV;=eG zlci9F%tRh*8Fbg88D zALcXRQ~{)}nnzIl(YwqJQm`jrI+IS^$7v2`kZx7i-j&kVC1t5b%&${KU(Uqm_G6$> zu%9Y(OJqJGo1fhk<}zKvuACV;`HnqSMm{<0ZOubBhHLd8*Jxh0wF#RAzTN5^ZcRRg z^&$(eiz0RCE*%p^Psa$_*R5YNRv#q*c++UdF##94NX+(|u14)(^oSGGgX6sh+)FG- zPf2i9^Aenmb!|duw^OOxk9Tni_MR!|@G6Ez9M=ob@r_~zkG^KB=h4!MF1f@8&T3CbTG87`eer!cnYYdc@skc&99RtTP z;q%MHz=ESjgV_Z^rK7{R#hi~W6l0xUgwN@9PMrhut-nsiuuiEJa}Y$i zrHHFTELBw?)7eklhA_Auf!K(PRMx_rtF|81EbcJsf7NvtH8rZ zED|U3a)zqj1Y|(Q_Y>Z_XB=II&A|&e{q4Ew@ZU6qDs;zrwqg&}QmfDK{sT zH_ISkI=6x*2priTWQd8WnUTM>dp8B&mRr_&x{QpNj&}-%QKKlb_`Ra9<(v$e>vMOa zqCYw-=lQRGYeDa|n_;a>AI)N&WiXj)NxpLyeipw$&0 z{{TA_RiHPG#}^I}^>g#(c9S7ey&F^sNSI~|oVN0&$fA?>T1(j`y1Zc3N*C2g!lYUZ zO(BPAf9Z%AQynWwkoI=e9+A+Oj}u2u<>?1;m#L-&?H!E~0U@P>JgmAFHnrMi-mwM; zwQvuMm1`CtpV$7<_dt4A1@|`KEWSzWMCk|$(9vaA9S}_w=gHVA98W~xWM)h;`W5!Arivop)}*@)`YAva^6p7TUqzL(m1+e$-H zqwGkFg@Z%>4P4!X&Q9!c$8T%>W@Z4x@#LaOU0MSHKi5~{f3^kQtt+Q~h3^bE|E6xKxc z-iA_3i5>iYVP@-J{7d^?gcj-?<7qD#)P&wa?s)B#s@K3|{k^+R#WRPhZ^P_lx3>z{ z_Uwyq`Dp~QKRuK&lO}5z?wsae^U#fk{YT%1qd~JB6ZtQzZ8&W>^EI+wyAR>>gb>w7 zu!W~mS+>AQf=&`bt!6Kemoq`2F~!1vcb8REjs*OF)mQ?MV+tx_sv_yW$x0 zg>B(rfYN#g$Oxo|sC)F2(*)N*IwIn_I6$XVULC&X$8DGs94~w!%#%>1$OnLu;0Yj) z`6gcUffc(vH163ZcVLw#a$d?km;DCJ$QG|irbyy;UuY2X1^*eK3SSCI`y9SHW)$z@ z;z>BkfnK&5+hk(|x;+YQ@!#~gQZdWsiE3iI7_ETl(wFLgF4PBD=EyS?U?dEL0-e1l zFQhT?5MyI2*V0)?!4{vrXzy0~p1QX%pWzs6OIb2K8<;G2s{^sF(6s#xX7&sKl^(6y zrWS{(zBz-XXNnL;$jss%V!t>8RjyEvKH_VxQH)*$P>;4D`(7AO%}q~K0WELi$H9|F z@%*K2ckD>AU7;iMC?F)l(Ogd_ATqaz&K(M@*W>%@U@7L$yEn%@R3y&$Cjbvb@Gf6h z-2AI$j3#qO=^Rb{I_^*L-z9yY{uH9Q?TYW^;K4sqS_{W6YXb|tXiIg(l36*q?L?X3 zz~DS9=N0sBA%$l`m}JG2G^^&fL&o-}31s;ZVeO>+PtV>1m&Fd~eFV6XLUeAwmly*4X7Ie3I5$6F_ndz%SG9!tZCH|C7Y#;XWMJtWGIhqbuw5B7KC}hP#w*lo4u*8$ag|lN;MFtAR@HiBo5_mi~xZMC4b3<>d^@ zgx%WOaoGz|1QIAR05hge8;&lcPP0SG*m(yk5jOj-7cP+)ZIFiym14K!@zW<_J4_*z z3}#GGpylp}#mD_AKf9vTNfy^t`<2LvB*6)rWTr&ep~oqJ%TiMOLcvQG)(hWpg}CyI z856=MO<_+y|5T?nw(7+|w`RNK7YC{G1s;r&eG^1f)&ffT0hyd@Q@r)-v7-382K|6U zigM$JsT13iMF<(1q_k(b%y#KxbRZZyCCo;Xvnppb9pmQZSehn+N`yaaR~q@wsROxF zOv9JfAz?P{zPBQ(WfRd3+`&y7HBP-ntzAw_EuEYzrwn&qttqA6q&JebA}7h=f@h`S zN4>X%YrewnR#zi~u^DOZo#9{>y#(DD&}-yZj|gW+qKQ}Fri9_^Fs^@_MdzdSty~bW zfm)CKq|!^gOs5i>W`*k&Nf)yg-OCN7E!7v{1a=uqJj`-or7%Z6jjzR6M5tr*CNRz2 z!9|(1CGnM}x1VTAE0dSDMHVz7?M@^0$lprsM3I1=kCW7PN{-L(?KTyK|e#D$m z7k&%MDsZu$rl~x_WD&Of^klUF{eT|6z;1rP}H+tb|_L zqVlBkWt&iP)u#24w)vkN8x<>UcZqRX7LP2s)3&WrR~8kQ#j`QDjxZOiH0#U3%u`n- zt~Jc6=E@KF*%tdUX+Hb;(nZ840Sd%Ku!y2c)hlFEIJ%O)f<~Xlc6%4I#`g7uDM}Sm zC3JC=x_oOOALU!XYB*9rT?pI#J#~?5)L;rMS4JJi*mG|P87*hT+bYr(oLW)S9?wV^ zNA1Sy7iY7OIn>I}9TEvX+yp%(R@8Q5=U;lQG;4TVxwCFATe!?)gplZ%PHV?nZ8N9E zK8}d&d$q?nL;)r>v+@n$C9GaEn^)Up%?zxP=ogqk->Yn!NQ?r@iWBJcHhAo@#0lG!mV=YgFZw-&~hwg=wEG@YyS~MF!O=;@^*Sr5#U7H28-) zsa=ACSX(0)=tTSu2a0fH{F%(|r79o_dkdL%7$_0v+n#8xOd(2%FeJ#V7hA5^Q!DhO z@~bjcC`W_xNBg{${LwJ%&oztHAge14D6da=cf%(omay!W{r9Vw@2sQf@fcP&j)~^L z?4sUwCJjfpx6jB_ccsD#KH)0twi5@d;E(!7!O#YpaxQb1$F-d=+Yfb))Yj9-(D^!R zLI8`Svq*kE6$}x1is8z_t|II5p>ls~F)hk!NLL_liGpyK>OC2`2zw+EmJT(DdI*xu zX#YbL(aX#IDXR>yv50^9oteJyk~dwh8hjqxgDxBs#QSNi+(2*`KMR0$5N60VxHcV2wLymVBzn@x-EuwwV#R_ zt8;z#sHZ{qHX7^t2S=wWR~pMa2v401nldP)Y+Q1FVh?{H#ijB2vG`9EA9lh|jk^7^ ze27{l%Y=dkQ93Q)LS6%E6MpUjjY;}h44>A1eBL~kT4izQdPwdpj+HNLWA8#FnkK`3 zH7MAmkmIT3RAz)OH|cos?zzg9j;o%pT~mkPuNPZCe`y~Jz=x$}9~!i)nq9(p!qrY1 zZg6q*;0o*gXu)0;ah^Y(93z9+yJGRxY{#~XKkCQ*9@TWgYzO{Ga3IPFoHrTE)*}xf zeCu(BgMO3YG;Af`8<_p&Qrmc4l?&PJS0eYq<6D&hQzw*xcNY?0ExTE^QJlc*mnGK@ zeNbugE1~uo$^IA4Ii+~ARi7C4k4wYhyGp3JOF#2A)^QXfFuw*$+m?7$gW&=ax;W7f zFfq#T-w(w!59l>1Z4ODPz^(Vd^q``HTtO%jse}`}O}I-?!I^R)uh|g0MxzH3(U{ii z-;Vi9#O5DByL9mpCebS`)3O`TVFCuD9C(Fp80*AQF?mfK_R}cXdWUeQRCD&HuFecg zFKT3E8=NFWf|$ubi>u7fOxsB>x7!0?iq3HgyqUeJi>tGlksZ7l$SzO{(Cnfr2mSv> z1#Z>ku)*0uj;!#sz)kIO=YM)-^O!Cri@ns4F9NW5I^;wscRnhc=c?iXo>&v2PO27E zx8Kbq1%^p6-?Yc-l=9sMHUaDk^7v*80T=lQlH2nh@k&pjcv@Z`ffJS3oE}$}2@nJ! zyc(baPAwj6#q;9g364he!Qr)~5^@X%QX0mg6r@ouSfuqkF#&8SOw#@TqZk%STrfsbl zhYTqG_Vp?R&Pj)dxg+2V84-rz#FG$+9+``B2X0KRB@U4W(7@GqEbE9Aa;CO;`=oQ6 zW`9QfXK+sQ-aLs4kp^exCVaxP$vdE@2!mN{ z|5uIv>Nnl83gveM;Rzp@S{k#oF|%y1{6&jaZ6-A$M}B79?}y^N09uvo<5KPPDp*qE zo=P!b_n7qX(aL6gI@sNGWv7*Cz~dw&r?C+9*FVu{0?+3yf7it=-Cg`^j*Eb6=*Z0N z+&P(I-E$6^SrT3PN|fOfx8$1vcw+_ALKKle(h8UND^h=0YWZ5yd0MPll~WblM_ISx z6Vgl29$ajEHq!%GmntiL5O@`E(6{E&w}k?j3NbhEZX9k`#cBlalo*kBNtt9YmxB;o5RO4vMg!EV#@LmiO!DU(J_^tI~qFuxTZr z!EHQ0{+Imy!;u`xGD6lbHm$MkMg(e~Jrj5+jQHq)|A9)gSJO++!OoSxfmoH~7?*c8 z^)fu7kMmr#1KJzciSiik%y55Q#4oxUN^-~8_>^(LAWhbyLdn4jcn2lu!y1>TLyo0W zF7i;T9IzO&c#$g@+U}w~k0(FZciRCGEl&vn)g_m?TB$9SoaG=deL)#FbC0fOj0VVl zwN_Zbo;N5A8+DJAc@|(1KeJl2VV-Z!M9`V^Gi%K52Ni;Ya}l~(4846e5rWMw)cx1A zwrX``c2r{v(b7=F-y1W%nI?uL9lL$?e_vl_bzm)8g0r;u51y;Fgh%c_(^Y`&*i1a? zqF4s&>n58YzW@ z>O62;^EqHr9I||qM^g>XrY2+l47L^KS?&aEQm+GjN$fC+Dd5w>Xcoyjz5ooFGUgT+t)ctUl2p}_0 zqyU5S!dy4mDnG6N0?R^xh>ZGAM3CspVSt0aYK2fiHF?s=AXGNgf6#y#At6wLo*Xua zISz#$sQvR_6Y4)LAx8@ZwmtT+)6zth<&+t@`84wYmY5Kl4y767dH^&?0JEGcV))Uo zIV;OrU}fIwbj8Zj+`DseCOxk+?f6X8yYY@^@J7Xx zPJl|t(<5HFWRMFuEh^|x*YOiVK}7zTn)@MvBc{nu;+S%14#4EoTu5GiRu(bS1=e(^ z&c$qcsafN7qp4@tx7-G|6x8lSE&z=>F#n|_>rDS@3zQcoa!Ypc%-^&(sLC%uv=_6w zg3;>x#$56svSf>TTnTmJ_J>BpO!atxKdqU(iz{5gQphgt;eM^~?}~oBgY!x1gAqq9 z{Dj4CeDx&3kHhSzZvwj^)hOy_lV85rY@q)|M;vgUiB1n{2JFz(wSO)NUrj#zs03M=EEj1f(nO_zo>& z_UH=6+O=?g@|SvA#XAl$X_;RCd|6x4N|HwI@!XDSh&W=X=l-92DK1?IHz#*u(^@;? zTr_7^E+za`t|=Vb*4T~2D&AT&$Q3G`94FhSjg~g{{Oo?ll~JZDWoSPH>(Er=bv0Fi zJ!m55e>D(B)`=?-Eo}at4IBvT1d(&{85<)=$k+;OWUr)s`nYus!*r%?gm`cX3>^q00O&J%L91+PIVvhbhT+!u%vGz%PB zR{ug=<6MEu?j!eyqg)hhK%nd=nt^F2Q;W6)$m&~tGxgG{1v;N#4Tpk-%|@?K~{K@qE`?ZF5>=el-2OODCzWV7K$qenW6` zQxqXz>CfSX6wqTA2po>f~H(p*g+_>@eMd0Qt&FP6w$g-_2Uu5H(S`iW+hr=AyA z1c=I90(!{sOcZuP&_ro*SKiIF6?T>h@(6GsmPM@yaLcr@ko}fAq1%FQOklK>m)5c< zeCGU#lV*_oLF}uwWDAW8vd7{xNC!UMuJ@ow5v=YSZr&j=hG<=g2sq8gHQN%otiEc^?In<3pY&~C;K73#gskmlzUP`)84$daOMh!om z{yS8@CjY;fcr%s50g)16(f==p1`8~ik6zG*1w;28NfzB-kzeB;U9o49E)rF#2}vha z1B<%+d}Gx2{%vBROL-@YLdXC|U(>!a=-WG$+6qh6aVPKL-v^V;T>wZa{ z)rGu?5_WnyTXzE9-w>9{mm_t59?%uq5;%o$EJ-A)k$grghQ8A)bjzu7hOw@$>ZhFM z`i#uD@RC7__wJG1s$Kt*r~|NtL>g^8U-CO1yB;<|#dB!9qEEOA*4l$skIu^%3bt(KZ^3V6OGYtngSBKAVi=asd5J!lg0^=p~ z{aBu4Kq~tBKhT3F(cIXOtLQ&jdaXu6;oZ@sDt8eV< z0WG+BPYUwh<>B+Z?Lbycvp_X_vHtPxcu;N66>l}WI1LHj`*!^(?@gtNz6;IRb2W15 zdeF~Rz8xtv3Akup#Gr_V5fM_4y|LLdbt?fE_7O|`nIYKR56FJo7Kwb5st+eMIhuz` zy{xD4ys`~lB{g4VRr{=4k+lJ{Wv-{RI4lm+hP45ffJUdvXQMY7hY5? z-Ibv}It%W8Ynd8dqD6*TtQ=wQ(F{=2hFA4gKur4lRtcA7Id|LVYL6DC}-rSJKr?pg8t9s(0n-OV%)LuZDI+z`(i$#gWZZ8U#39- z>68S^mNc=umYswiG^r0a>afTpzbb7xbW61DI-i8q7$IJy;d_iLcBE7KYSVV?><>~F zRTnnHZS%ELe=mmN$&fRpaJIaRgysH)ec_)rBfL94xEDS=9|dZsFs zu?;3R0SdqL@Y$sPK(^g&e$O?#WQU}Jvt`m=nncyho*tg23pl@`C>|Kin=`(I@)g-$ z14ivY;hU5WM`Ks|@qsN_{n}%qZ1KGA29e^EO}KkAiT?};;H4AG*K_MVk-w?!r`X)t zH>r}_E!Q4-w4tYUw*##I&| z#+HLH85i6(l_N+#XdwU~mU)zfcRcu>mj>ny-_G0k<#eu>98@|&3h&NmC; zQC3*N3!q6B*)|c`BTh@J7~JYePTMW&zAf6CETYEcj4xe=F?_p`fkLzYBcnSavUT+y zqFepBZHO!m1@=ZOR$1~F{C8{zz;43fk^N;##>+!v)w}2G9HMa4xs@vW%#YfHr_Ylr zcf+VG{!U(Gbz=`Dyv}AM`|dW65W7*p68H2|^621DONV$Er_eM1SWQ0KyH6(%2S<1l z|9D`H&WO6nj8oOV7G*!gcCWPm-r@@aV(SWIq{NQV%x)_e1`cwl=A;KH?#V*|H(I`R zy=%DIt1hy~gcA3N zFnEqX2Mk3|LNIN0^+-+&8gzKRN{}N2){#eIV}lTS6L&^Q4&9%iImPLkjxa)&Y5yXMLQw^G`h79P)RM;-A~-OAJ1Nb~;6EaAB|k@H1==I5?+ zHCvD;O*UFjpv)u|B{nPsj0l*76jOieD2CvxWwy@w7H2H~&O+-j?!9l-pb=LUA=_H& z2kPQ`YfzhWjZ;#?XQ3fouGX z+l#uJJveRV=vIG8E4eLuO4a)(rvUVE7~*W4 z;6m4u(T*;QL=OC537h&fvnGGT;68Z7vp(kV9r$dwb^A( zwZoyi2F;gqX*tA3ArQ{^sLiV9$Y*S6ZgPJR%i!>0i_gnJSVDsfSf=@EC!mN8l@fwn zCCyU!6Q7CZsh&l@*0qm231@cJ9C#D_95FVh=`4R)L#efA8##*h6_N;9N|I!lBrN(T zrG}W3;^nseBYAstsKwCm2T24eWf7@z5cBw3WZ}il9)Uc^cFsXP9a@&id z8!Zuihn=aNZ3r_4kUj#3LYh-TKCY8XGDsw!^2%qCEs~AI9@P4@C@vW_YkhH@1%zrcK+QXr~r!P zb4Q+BlGo_e1iiBzXLLob#_u`V1QCMH>uqQ~6;ipjA?yZXvsWxQH&}zs7s`n*!-&lw zl#l!Ep2Ykls(r@&=}@W9P~*z4a&1~BRB3D2?tF6)O<2MDM79ym}V7e0*c-5L!?H zd#&jNn*3h4b)N7CQ83s|H#i(Ua{6bmdi$V1=7fS?ODEwvOX%s(!XoiinRo6PJe1s4XV(a;gAL z)HbKHhuYDRZWF6maNfzcqbVF@u`dFlAK~oP9^eAA*A3t<)HU3Ynddl)zFKH$ zjg*N{iks#>bl;+g{iwz@+mpJW9+%;E6C0=Tp%G!21bPX#6}#b(3v zbAkoXkXOFzU9G?1rkTnq78oI%gi-i6pqUL~8>rLFow=t>IvP3vUD8cggAI?V;J&`kv*v5D;+icbzbYyx=X{Mu39KmjNxXU zYEQ>NdYlh46wRk2p0OY${?s{?h4*N*-Ue#p>Yo@f~A zG8JXt^+1(y-&GxnAfN;vAIwIQaO%iR!nK@ZAfAqrp%DUx48doX^x9okftYKZ94**D zhq1gl(xkh)sqRvp-#)&^;ku!z!Pb*#S$Y&Yz%S!%o_vunGldPpCJ#Gci>wN)f(C6j z^7snIPNYo=N?oE32jLhZAli_A9gTc7Tfd3_r(m1i>Z+7dCd}3~9`gfB;>@=qwne1) z=*VfOP3hyP$cx=yFI%5zKycZX4yEJ5iU;!`clfK!n&c6U^kFdp#{ry^X&>CvFG(jy zMz2fqTc+c-;Gk!!cLn%We64@<@Y|?v!Qz#%^FNJlt@LA`gx{#g%AQ026#Ey;wr;Na zU~-toIcm9p_1hG}tMMV0ck!1+K$a2HrB8&??m2|gj_4AKWiJL3nuHT%_Xp#@?zY(f z^-uu%WBHy-wyG}{HwBV%c&gAWi!R~FzrN|bxP1wx_g4So^cT9}v?F>>9G$RMLhD0h zH!n<-Y7)zavF&|5V?x41>cN(jiScO%`-gMsI4^LIFYquV^su^(xa_`8g|ZV)zx1ej;+WBa3{p?Q$4K_HnXx?-|LSgFqtM zU5Nq!#cahMfh>5oU76eaV`vDQ3wh8XTtwTIMyUJ^2B;knBHDk644pGA)G}3zLuFG$ z3CBsL2c7t&q5a-#s90iruO2fMi9MH7Ye+uS+cmQ%Czh2bj!5gJq{TU1;3Umcsq47q zG`vCjJW-yso4O!^CQyZ`b3LW@K_Px(t~>!y5GLXT?Y0Ys^o^lT^aV)>^8z4d1SFQp z)Q~A(ZXGGgb9|KKoOI|GOe->0p3c-v5ITxYmx9|+imruCL)=K}cD+Q1%6n`gHl1H~ z^UwGYgcNd<$v+ODb{@DziKp(a_NH6WbI3YQb+15iQXAp*RxZxtj*j+ZB&G)GHDUwr z!F6U;teLhYQ|<_j(8byh07d$246nW=(i72xSh;5$h)TFN>t|Q6`m%${)|~FKbjjgI zM|N4K*)T(FJ*9In2caba5zxV5YEUh)KaH|o2eBn?DCLvdn6q(K2^wjCC$=inqaD)C zfQ0@7^JW1cM|Y6$cr!$sA-%q?q)F;2E1s1BrS_`Ly!@rTB-WgB=q_@2owC8V|1dRa8x?EmaGH5ZyL!_d z0KbiIOVK1-TJt`Wf}h1l7~HtD8qVV=M}B|Bn$QbrZUnd;Dx3q<2BpR6a_)dr&0Aw3 z#_0Ms=ILs#7Gq?tFEVu}iK&g0!-INpL{D*P3aw|TqmPh#!VY*s4LSPSZ~?^!Hn9@I z0Sjfmf99cDEH9Q%o^{l)Vy0fA-^{BP&EUEJfP`xqSLb~Crq5yBT{$l}rXf`tN3XX6rS*kX=4Z9xchOQ% z=T%i*(f7~|RyEa{K#XdA0$D3qk8u)X3c(j5oy7l>aKIdwWl3K%+wLR---g9d$zNLEp zuQ$UDUUIZV*hbAY`A6+`!#XAwdQRqirFu@4oM0I!G4D10sHGClw<5{S@X&@r1;vwv zE`JTssis~5U{5Q99iPEqy?BK?X^O*k?e(3PWh zEzKSw_G~_1lD+ZfD2G2!EQquKJ%Y%uVqW6&s6U0D-^!peE6U&lR;wzy{=dWa)>keW z7=)8KmAMCsI(0`I>wf?rWt>(e!Z$=OjwPYI)-Bm&iQ(A~v#u;`&{9|`MIl7wr9IuS zAbFBv&8moYBYc)nikd(jtJecpD6vPRyxf06JaYarorT`dx%ti1CJQl{l^@Vv7d@MvwM@j?A62}%zY^ylxr7=jdWvxU< z)Qob9)54Vx!e{kZrbYSxVjMB1XId!Bj(WCLRJJAr`)EvNc|tg>sB5dSv?aW5ezede zZAuT0N2L#(boK}~Avr`G44IBY1>+BvTR%f(1Td)dBkhWlx9KJiwJQahXc{bO6}!{T zH|#BDm`Vdcf&y`?v1)Ov(}t64C*&l#Fe*k3K`DO+;GYjjy(V%0ilELm<|xjOFL?=K zCSB5*dPX{&l=`%V@W6;Jo}ZA@VwK>r0Q}tEIrDgp8wFR&;?6E2@>jP#pld-~&L+>+5^G`jOkIx4IWv3!vZw z%gY8#BV#1f#~|7V?f@w7!2w6MVl2nQ?J?3IY3a84e|E`w!y4)h(US|tChM@o$C2X% zWx6utjI2BtcbRT5_p|RB8qQ|F#q1@_=9>;Cd0pb6iudj|jQC>j-bq(Q&M`~Nd4{+W z@4W%k&XpQ<721&L=*6tU>$715Ii-3gowdtI4Onp-*}__L1)cTu@n#!dxQIl9=eDU{ zSjTREo*sK?Eojryq=XY(ATN&m%XGyDu7&JOOr?QcRV zsB2*GFGVV%P^DSCW@Jx^r=j&7t0=%W^>PUn7!f><&C2*y({%CELxI{BMAXM7W!U0&Hmu9zupi?4`*a3i8vw^29dxz&X}-NxSDRWKB$szb~s>TsR#|+ zmrW5Oqob%Db-x>oomeqxEVC~ zI{mW};ENFP+CR`Aw=cF3RXB(DWo_S201N4ZM1uiBF0#G)yJo+N-xZMj5N4Ril;1(9 z@~gg6(T;AOwhgUg&c#*)s5e$c5YZ)>qV9K^v?~x67*K*!Ip>iR2SY*;!z1$VES&jy zcscF2HI$8Cwzs-pq)|vgQqJ%U4nr9`2Api)Zj^@mu_V=~bIBz?y*Rz|^yxgm4$bBF zmt1EwXg{MbHZx8;XgB~O`P&dgJr~i6nzQ1}FGC1c4jvL6M#?nY)=vlxw{OaJtY7`f zh?$9vl$R8;5uG%V7t5eWSiCs`<}hfQ7vhvraLFKEu|vOI^U$E)Lsjxt96NWYN{eOL zWI9vK62e!QZ_s=iEO5Dt5O}W_0!`*>pL))LKIU{M3JX^6;s7h|+ASfN(hsVD=w4B@#_) zTo)YJPnHhpM@+Z$PB16ILJUBBTx@kK;UmkA$s{-dwc(-HR3W7fhP~tY;V(Wy6H) z)654Eyl4 z%_02U8hPDxP;$ae){n5gm7(vXWv*N_Zslkrg+-$KXGLqrGiPum-4iKEi71tVMrN-N z5ZBF+;6&QU&ezgDYA@EV44S3)GAD@mFGZnz=?4o*ZZ0F;$k9hD+_XHJaZNm)zVy44 z2Qg~+MqBw2Vb`4L$nz^GK7NH)Fimt83b{e3qX0}m5mydy@pSw{&t$03?omGkDxk`6 z^g{(IcX*tX4Xv9$>sfN6wWVUpgfYYd5Q)DlE*4nHsQyz(Go6ipR_W@;i*$${UDDkR z;f;pMCD|FUm0~vLauj5^kvx)GE*b8!%bLJd;*`u79rEH9Rm`#nU&o2RY>3W(G$tbi z8(r<>tG@%$5FCaCaXx_=eefbmeJ)=7oT%^vx6x4$izPW*ATCOj%lbQX?+IZ7U^{@A z$;ahQUBA@PYHZ4RyJQO3XnnIDaH7w6u>(yN{e+q1ljtR%^Y_E$0%nL2{`T7W`ndhr z(=FC~n{ZtP`Vtu|5u5J@`itD3)S(CHI22${#LIy7M!W5$$&qUnLPmrr2U97tI`BX( z^(Uv-Jd@Fj5UrS&$})S_F0sZ2G!$_f>kaV~D<^9{2I}6F+l@EBc7{=@^3~ItJ}|+u zINXa`ttddC?43Y<#1+FsH*uKJ;fQt6n4tI**}FQRLlk)coljc>T8QUnB0Bfc zAEr&enwF<(u0qeXIWnKLfg^tZwgC}NG#BEe7v)=L$8tXqV-5PFTy>vwT2?VN@Gn%z ztpxswcRK*mf#*=myj|97*FSAcj~P{9W|Hf3UYjUNnjjJ^d7t746?hWseb*Gq65R96 zJ~3bHxjD(f*TdFdx&R#k5QATqQ@BnSu~{5PxQfLyLlVKE)0Is1TLHe(w3|PMJSm74 zhk%DAoz^rYRHCGizJ?z$yW;j8r7L{pan5g158Rh3PFaHpULR;)nvOO;ycJ{Lv_~Kq z=t&Ft556@i3_AHqB_{a=fT$YB1DBX(i#WDL z7`8)NFMP6YM%keKWDy7_7MQxes#PVjxmn$EN_80?N=M6~F^_54joBVDw`@q|SDg+b zGQxmf(bz$KFfZ1?1M=^Z*H+^{8I4KA0;UfBjeRf+CY1C}V%py$k{u39popI`0GKO_U@Nj*ecjBpp+SXCX))cUe6f9R zV>j~lqLcD(hvBw@MNXGrdVve-~ky#)w+C@y&r*ubni8piX7W4)SD% zB(#=JWyhV%nJ%FF=p6w&Tyn;IQL+0w%aoKL$lxC&Q4)cRi`jhytDE2hZ==>7yI_z5U*rp9k#(xlc#{Jd2EYkMu@{3!sq*#UJdh1>{d zy)2TWbaJ-(?I$H^9!jDb(769&ErN<8F&lQ)qmX8C3IPfmxiaqYQSxlg*j=0WNzr-z zzCBp`6>E+cP6cC*If0Fcj993J=ZqF&>K;G+l?Lb~53W~NE!bRaE6lbX+e96kPP0gf#=_a-4*6@6ApewL%_ zY6@Ei|MFQ_pIX5K zmQmnQ!s~TARzI{ryPF2)ChOq7+cYSESJbL|sfT#7{Z~ChLPeoz`R7eK15C1N zJMTifYy(Kq(P?uaX%Y$o$ga_!UPwIS$2#TULlkaP34TyDZ6;|YywC>lA*$gIrST$J zWpmt#2+Ty;F4r@kNs4wR^fD2pwr;xlY;3@osDXL?%bXjn*~emLRr_5;@%hB2LBBWv z-70&0SfGx`}Z0GPT^#i@+};LB-}bNLO|^*EtLR89~l%WEDj!=(Jm;GIU+G@ zl;wSo?o@L&r$-Dta$w}G%>*!+!gkk#A6mechlvxM?L08>bN1ca9iyKiC*d%0~G_DM~~_VYspAdA|ymV!J_CT6iv?X?>32O82Frd8__LeoqTj>5gia6skO{T z%&?U9vVZ2^R349pQV{tNVp((e9V|qoAc<>3BxHB`I)6L>?>*59_ zQ|q6~s36Qp^{BW4wR8C&8=Tw#Tbe?VC){kCqrwV_efyZ; zTgj?PMY0pp>QuvM6}KZ9*_{cUd$HD&RS!PCqeUkm{^Wn?{V@iJ!t0pA4F;f$8=f81 z4aSeUHJltQl>MQbPfJ7bd4}B8bf)}in2^yG#(Qw)<|4oy{if&9@ST@GDA6$u2E|bq zMKaEO4)+>%e^`(NLz0`6*?7)jaxeyx-$1dZz57HSt8+ztPw|49VBcCH?i*Dn5|U?j z#T*`qZSV9+P{_@5JHUk`4)N4H?q~eL{t*b~c_*R}5s{w|Fl-;%$+TuBzJH-`?xvft z^M$|!eHL3-%jM6yC_*{LHH$8nlysZ>LnGW> zkAD@4$50kldhwD-@!MZe!-_*afG9|gZ)}5fBM>{E(hof8zd^D2=5yL4)=S6NW z3&UlDD2AU4PY+re?pdKzWpiU;5lrqh1@J}eW%yCU=9T}s(tLyiDpKtH{MzB#ht%^Y znjUuTGJX+1Ej!R^%dAm688qC5{!8958KzM3ZEr0cGLV10RUMysqW#XaO)f6w?)p^q zrT{Do;g$!&CIcH7>=TAaC$#!Dp}rN zT)9pAR*BQ;qW6y3* zN}koLiY32;w_EDS;dF#(j62lXMuhoxs*WbP-wTKk(X9LO^Y zfm>+GFQ1Qqak{Qmob7V#d+1+FKGK?m0IAR|zthtt`u+;^bRd`qGTF*#y^dZuIzg8q2Nju^+TZ)EfdLNG?94J3$k&&oo){dc-MLV zCon#d_Mg8QQh}UZs!Ybuz4I%Tc?OdP@PB`0{|=1Qr6LxGh6vVOv02dM>cD)oLIUEk zbu#I&(URHTA9*^*>I>PlN=TSN(md|)?!1q^ivlPnpff(+U@nWVrwzLJ<@cp<%$;N@ zk2MmLf~g}Zp=CsdZw|bfUrAd9xzfM9zH~S*9-XothYit;rSpd#Y5>;c8LzGw%xE`5 z!gM99AZwM)<7!G8%?~-WU+U7nf9TF1)5|ineW`HFa2?dey6d&{Qy%3^?kk$D7{E39 zk1&~HGYKi2O>C9j@0T<<>?XOVa%gzYX0jMqvx35A|2!%b{CPBR?H{9-2c26yY|@;3 z1pD(2@dpoeZvN9Dtl=eaD=v@#8WxMMn-p6=zI3m$2cA-&S>$}lZkpg7E9V$ z$PVh}1cA-vE?K<}RyacVeoQ^gg;ak!jTL%>IU+)n7Z)!NPH6*Zxd5Y-Ti~u%Oi9S6 zmrZ0^pMEH>N@g$d7qh~v2Yau<3?sf(3zxR?&kyRc!=Mhs+XswA2}X=1UI??b(Q)8_ z>bP=&ZrR4~R(pfCbBTCfUuf@}p`H7H{nknVSL^t<8BoUjXd{v%q`x}eJV#kv8Bw7W zz-ZePl3CN}_`X_G%GC-s;K`b;Bn;Ao5`Dw^s%2IC!|8LgANs4uAb#?#RBC!?R#o*OG`z=zidVL5n;iZdaTKHCRGGf6-TE}1E4z() zd$#5z0gZleLJ|z0kbagZ(@(I+A8Va60kL^BcBX#Tw?Q#T)uiUzXPCnt3}$aOC^#@QlY(V=Al_y zgTJCuEMLsB@yiGcXG$nzHF`2&eXu*+A7{5pxN5gqG6Sp7ReC%m#l*K4uqg zZ?YcqvydBU5#*yYe9myFWk`(A45HigL}>Z?gg<~Gz2V^|(1s1eb#7obxgfxEN6v^; zOrLF9<60^XXs`Yv+;J#RBO@A8BgG7(MoAby)4{gSk40Lu7A-lhv#|-cLrwmdikfP3 zZe$}j%^BPWggr2)NbC0g!qylZYsi?rsMeDWggQskZ>Sb8z2&=v_nWi8GV$MA(jEsj zY{7tZ5!N02?Zo5Yd&3L5>}g~k@3MsWybM!Bk;nU_zM;QXJi=}iNi-E^tVALq{Zu|Q zn$YltWVrE2Chk2qMhz7XylyALNzq+qm4WE;PKvFIT@I&J6jj_y`*sL5Ga$k_!<`KJ z&%?NX^H}-q-J2N52%xNI@hn1Padk^B`#M{vV6F+7^;eA`=fjPZSYvx}vx72E_kP$zj#ZN$T%3Ru zI-T1o`UocIL@r--nyB`X3o3#Ml{|}kG)p>#_)azjW(a8U$#}yAu;kXdbhj=fjunnQ z57-D5#MeZ<+5ux9WT~J5tOY*Ri_w98IvJkAhV#|X%CMro`kHJm#|}1!HZ=wajQ+5o zIrsb(P}ul5@~ycWUI+3Shs(`j;uFB(;EHbA6i`bZ^dnsXS&>%rL}j%V7s0x^l5c1HiGZ%Mn%@KH7?5VML;6gYsM7E66I zyGWKV$3vs7XLpC(dDr`HaSvtwRYJttZXhi_tnNjzzVe7CP>Is>HYzeKghO%j*xek} zlgF6dJ983TdUV?RQNK6k=TxHc_Y~?GpRwHbuw3ismCC>MlJ>h_zEhF&U1AbPnbWwiZY4z!cfYuH1PBQZ0Hm1h=(^x*Y$fI`FO@~Lg zwy+;2UMm5>;2SK`|Gn8h^Zql*5C^ysQ<+{l@cthm&$~blBb7l^{wK9)@M8f%0$i8g z{4=dG7gbK8!t~KhEU{E_6-&4@+X^IE;Na9^5goUBI`u%K)^bOqghwNT4JlwEzx%rL z^^lhPONlJMRQcB`AGK<4BN* z^AV*-$;d4CZttv=Z^EOK-Kj*uF({3Ye^f8ry})Kn7#-Ww#u|WymmT61iqK3(R+LZ5 zPmG!y0Fi>TKz&cY6w}Bg7&I4h)}*(IoFQp8C`ZNX>Unh*OZ~6zhXpXg3}-A#YQf$n z)KvIcv(yvIJe)&?E*ic-*e8JTq_smTt__=2p=Y55L6}^TrQ|zlnG5L^bds`A7oEJI zTtcB4YnE=l#|3Dc1p9TW1d19`kXQV5#A@(!mvd6|g7RZg1`Saapg~~G#Uc37GO?!r zS~#?}8)$Y5nUg;iooG~_3T|d!nxKK|0wl@m=v1aOgihPY5z$CFJ&UL6|CHtbNC zW`;OgbITQ}E_TDgAp+*7xDyG*<0tPE9DOb<74~I9yStqb^Tn*Vif#{ImQ$8C*+dFH z53M^m^Vm{O3$TV5-g>O*!0NPR1IKum5$O4=u>sJub6;|Q;(xeX;;xkO{Zvn)wcvjM zk+I-)^t?iU7u!ui2-+C!!EG^U5Y7cfA=b8sffuG?MhvEhj2?h!HpN2Tr z6mLXnKOOS{fs8V4LTTgIr+}B^KcCJGldT~G^X=M85A~YO;ge#UU0XoRp_v>LG$I)G z2nDpg=ug$SG={vK#*Y(;=I?qMX0eJIa~OKT4A_ky|C2s3+a2Z@Jcmt-rfTw8T`nID zZmdV$sziTTl2PI~Ae!4e3>tjQ-_)Tb$J4K*bFzsloh_dnY=c;uUXh|na)J{c&2h9s z^R(J4V-%YaQz*{3w9dEkTr;9bNT=rEx+b?D#}{MPAJtv(@`wfjiZ zVGa!|U}@@8fgG3)9nq2{gXMQO4SkM}Qa~{Qaer9c~-d zHK<#lA7!$KZeh$&)o`cU*&O*dg+*^YKa1zBouxl-*reA;K$kO17&pzPiE?K1n+_0+ zuk(b@{PZY{7MC|}^Pcpu^?X)rIp@HsDrakrQgABdlGuuoY&WpY)}+_g=%khesLa%> z#&>mp{-t4mR*<5=j1SZIP>ytg7`(GX&@x;M#F+(M=T8REO~#$`cty$gy8v3#SN!Lr z0Cxg^(;GU`NR3_R$dlws=qKN4$UhO%wLWtN1 z*yuk{Cc9dI$#Rw>go{(3!KWP@(q?9~8tR%$fWMM2&4Oj&Z`*ChXzd|8~y!77)e!}#agKL77dHNC@oV=vZX zSO)o3rZK~y?KRs*Uf1W&eD($U6>88c;wXO>5%oxz${pPua3+eo4nI+BJmL%K0Vu!f zB^l#icVz_p8-rvPB(nTejY`18+a%0>yKRQY(S>#B;~cs#J{C{pd{u2R((v-dZ%f+- zUO;wcp#Py8s&G=jc(4aWyeDp1$~Op(bE(e#xY`z9^yB=e8CV*gKh*_}`SUa3a9+m@ zp~83F0e|bq%;KpfmF~ZNlkj=tPv+cA1@|e+cAqh(gWWDcXjem{ivb+1MXX2?2&+g( zQPAUDq!AvnYexM~SQ*6g{{PM};R-qFpZZZZIm*=jN;!03uGG330UE%i_J;irN!jOG z<7E!QIvGIu zatvodmALj>-27TUF7PQt}koI90>t5v1euF1k+$kKn<-k)04YmsfY z_+FrXuAJedNe#inDpJ5=5OHMC{}c*!WKhgxPq9B>I@5n@Du?b@Z=6`aU38#H z2QtW$C^en;I0rz^zV1e9$xU6;PpAtVi}xJYts)WhM{?_NrP7~A%GpIEHdwa*br>M- zqJ}+KLTMRAbcIWL2eN#LV2h@M(oF^@q2k>C8U_uzZ4%H@sBe6nqnNHHj;9&@aEw<& z7{@%T9Ym1NjAkem@T&=%9C83+g0SM#ONjbHTZ`Bw8U#S_@!FRLGl*KH(pTN&K%cea zqsA^zixTNM8KiV_`zaf~Y?gs;7zy(sYLYz)b?nVpf`8P5Bs9w|6wV(853w8$tr?EY z2sHKGr2{sl$YEU$qxp$5vFwrVK0Bs4e0qqqZEdmLn_k~(*WTRq2(jJyrgK^QR}Vf4 zzn&yM83!<~>rZ!n^E*)hcV6-PHBnqvG{X;%a%$+TQu?f=z06EGH(ATr?~#KxQMW6( zQnzj)en=6xCJkIbm?Tc#YDbc+gm_MTyMlPKr!={4MZY0(QwzQjP9$Oq1A0+jvy6vs zv)%4Dfhf^!IMGZl)R$_hgliVmv37|?yKItFZNy2zdnR_( zH8fP=M7KnIjmfWd`O1(g4oGp~JPLk!OJsmOhccXxY0?iD_edC4bdY>mk5gYBowad)s*)@QH1 zUw^D~ym%cZgbIW+f9`;mie~OD@(LhBZLFBaRR0bVmfOWYe*SHNhY=^oOIqEpPxr zubDjUXyttOPUwKKqZElN9!$4Q17xqMvER5BthXdBkHd1YHRsxD|Hf4aL_!RL_5P-y zTjBK;53GrY+e{oE{RUrLsJn-M@LCl|ttbE0VD5PKi^7roiRu*@*OfejOtc2Xu~xq6 zt4>0h?ryNX8^QyY429MXv%$xz)-*s6nG3$ug`@lC7U~Ge@K_yMC1jwb6lS?q75Q<9 z#w8)cf3<$zEk*U8cqTIts{9bIl{A}+(lHNSQDigO{if24Y(Qe2R{$tocQ+~L&>{v% zoHwU)B3~!^na!Qc_Qh&mOEC%Zj6fWPijop9MI6D7gRJvTu*e?Y6GkW!V-_I6EmY%Y zexyQDU5}JIm?o2_20lp?a(POlW!j{_NGVQIiZaI%`Wur5P51uV_;%*o=<)8PRQL4G zolFK@?RmY|gZzCr8zWSPq0FJ#E24a5W`sx*2CK-E#b5%*g)evEDXUX?%sqCt)g~`1 zZhqDPlMB_?P7T|XcfZJv@dB__;Zos$algSqXz@dE2=SC{&%e4~6SX^RIoV-^zLoniQHaza)V(VLuM~+dZycw3$ zIb3t6U4f}o5-QuOAhRjGlB!FETRjBDU%2lkhTO*28CZkT=uq@<^am^rcd@jL!_{QX zaWBnW^#!>AeL-8Oc-2yNXdcZicrpp_pY@#}BQE>!15Wx+Z@XwMDI7j^rmC@c&_whZ^LtQ;i6@X#m)3F&i8= zdm=zlp{IZCzHZO~;suySlqYrX^GKD9?+;IdNZvOq}hf z;X=u9^`ci#rdXTrKVSFO#?BX`=DAqKqZt?^%41aQ#KYxHs$YMu!{3BHhP>E-&X;0J z93PUreHflS1{Z^?v(^J zI+Zbg%n~U&&MXGSP=4_*dMz`g;*x>yUbam7yR&hS!5%!!@~9>jQcZ%JxR-0E8d02l z+ghe`P`;^xVfWd3Sb&>=_I`_-s3So@miarFr;Jgzkt4*FnP3kU6lYIOQpkPws@pGM`zVjQFf8-NVZfW^2PO)RijUXJ(O#lsFi>7Uy;EA62m8=r z?X8sj)ub@k5Zmev!EP2g<>3rQ@Sq7@Q>nC*9lOxHy~Q>^^~@v zwyFm9UDk<;!hpOtA!jr5js!zdH<10M=WdnzD3~xVwKqxdpl}IVqBBi!(GN**QD`Z4 z5;+cVGWJGd%B`aC@q&8Jp-!!rX8>hYKnG(YvJ26}iSj0NV4H)~ zvJU70T6%BO=CJ_NEGVB=rn@Ks39y;Y2c^Z$%iXLpP4Y9tZ9i~}(N&(~*t+F-gI6DJ zo1Lly4bSW+@*YmZHG&Iu)veEuTIZ<^t<(s$j;wX|OOI5M{nN?DH6V=*&DY^PNEJH& zMecrzGC)3a@W*Yt%vjm;0}@5XfPhhC0*S~{zoPyl**~@*y)Y$B$MU=ez15#?+W^)G z%8XUfdssS))&Q11^rAin4P*y}4Ias+nc!8_wf2{V?e>GZW`?JMr|y1e#CTCaWaLz#q!%66OfyoKtd*%HWwzw5=-IC#|e<@6#wwwkUD zROYaFxrgW=3$sfua}WgG0wz)(H#N z-)E<0FU`GxQ>w;NFT~9t;oBN+IHb}Ec6Q~42SeEi~^|NZ_au~LW`xdSf?to61Kuot$1 z-rKgTXs_s{MtN4J^<|jh2 znR4nB4B~476peToqvYLl8HbIFZq6$<&sp53d2lqzb${=~wax0^4)4?M+JF}LX(&7= zcXf?j_(hMjQF*aV9P8M?1m971cQH#^8OyRhZ0R8h<*Xb1vy9VU&d&~vm*S{vPJ*|8 z+$l!e+`3(qT1HQ&9ki1UQLW&xc@FQ!a&5)jtA-W%b$e4)Fnj72adX~vvwH?n;m%=h zuIBr=S<~^f8~ibekw9OrH>to%sHiRE9dZJ| z|BsfM()mMx6I$Y;1N=y-TqysMQVT(=wBp~c@enMZYa;n<5&I}w7*~Aq$cN|DFu>!b z_dXvu58~<%u%tLB*{1TTWZ^?aoVo5ZcbWQ(JD@NGx?p2`1@ycAd{fI{V2>q|Y3u4S z)~A^|)l2S24KnNLCPxAod%)QE-apR>2Wp>l=N;KXAcDjJ$Pb!V%4G$W+InN=KFu)q zrehO#wnOudujv|7hx%4^1J~!>)Nq7TDx(LbWBpF&UF7qCrFXgpUJx5CYVHlhW!p~2!uWSX&e+r8Si!3DvZ-Fw*~^gwhod1Tnx@96(z}G+^o`B_MC}qM3i*a z<0j`;X!F`j8Od6vF{no+5XpXdAjW{UAJ{|xa-r1>rqfp+|DafI!Yc+oJ|a&zWJif@ zW==K&;LkeJIu`8>bI0a81a+ep^zmmA@ObVI7N)nbGY$@#;aiTWyKdSF?XKmO_6*{$ zRkoUh6l&GR6t-N)oU(4t)wosBqun$pcinuU&#KT&?xZ0kFjVRpY!vpOX$Ojxqb6D; ziG~sz1aKieT0X82F9jqZfsL;dAnPmBUjDRS4=|XQ{^$4r4qFX4H`{{(1Vp(u40MQ|)L@xFk|C5q|IX7J_Yp zV#^A|tVunfFF=5;j@5JOoAc93h{J6HfJ}BNSfDwY>5L6g=b=o*zmdVI9Iwr<@w4zs zK?tlako9-q(!f8Ukczzu1<->1l4r?F;6}sKhi~H|D`E4*+q%$#Fu(-GJyPi3g-MI6 z1rw+S@ip5DqsUu>4UbH~qMwn$b9As=Pao$}93?huRv1&r#{#k8ruMW^Hlj)aDmdYe zg7nQ7U$P?G557VD$T0SL_6FjzJY+ZG=1wkR|n8Xr_B6aC~@po%&+vVTwS%f zpcWxqP7)!Hu64}RxQK?DaO_+N!LnDHvfHpyRLDj$ji_~3Z|@GoU1sjoxHNkX-5Bve zGLx1-{|HFpBb5DSwIY>U4l8v56h+_W0v}n*8^#=i9PNA~r;!fp+JPf!HzUC1*8M=wGW9 zM=iaG2*fyILpOW`BgZfU&du*%VPKiUlq88_^AXm$o3IJO8t@+OTuzy$WBWx8$<_OEv(aucmgL=EI}&ajKDkhd4Ssj zxdo69(H^`g!E$U=8nPDA7(Q;cqip}FHHbA^q=+YB-C6w=zaupV^rf1(VFwZgb%GCu zA%roDL-C!dMXN2u25oM=p70S-Z34gk z9^TC;IjVtKbB1bB3Ix(Ru|{Ew4C(lrA3{coonQxHYZ>|l_2!a5vW6A6AD&YEW4uf& zb7&{qLDP=9d{Ds$5C{^=Upxf#d)_8H484vCkHQE2vDj8gmaiF0tciqf^u6XMgyRQr z4|bEuKYrRFCUqi5n0a_BeAa(>E<>TVnqV-eoX0zha)*C41JqOrj>=Dg8 z9Y#Xm3I~qoFoZNdjRvC}0%pQmr0`RMjvy^@ z6+t>L!`qr6EP9mV-AL9|df)YTp^C@T;=r@b_=IZLA7h^+US6m2C#RU#8ll;}-hq|5cf_2LF${b!F&>m`79s{hxM-pLqN@vhU2_*+MWpyH?D9x(~!7(FEpb|HlL5q+SJ8*! znM7CBpmPvWP3LJNtMh?9SQ>xkk^xAq);CRpNJsbX$@`tpO6h7xF6uk@QwyIe@{qdk zy$sR$z@_-2F?QlziDrS9h-+UX0m|GOW=q-BoHe}p$k*`HD;a@B(!YN8UZJj86cs8 z{YW{zQH0;uK*%|16N|M3A@@F%lAd)Da0&xC$n(&VoLV)G0d$+rrkES;-{Eht?@+6m-`$`QZ58dL?xcwvv0&6I>*45cG-}VQf9|Npl^(G+v(|A{w`Mt zk0u+>j=lUMGa!SmCFzd|^^-}Y9ki^VcC40gfv3M|8ulZq%9gY#U;v?Xju?*Z5Dy^k zcXH*~Ls^`n8%U)`cqUh#NoUN-3Q>+^ z6P>>X)@~af@ahfSGhd4GcT#qs0s6X|@oQ&YHe(gz97D|w!1d9~u_`DcExMxj6k1rY zs$YVB6RKBdPcKvcaM%fdvWx%LK70e)qVmdOJVRoFx-%iyo&s?9zP9U0HUcVQy_K2v zBm$ZGDDur)Eb?XhU|xvDs2~@Jut~i!S9@~~=cI)0-cEQEH!GGq0(68OV#cFp6!NCE z?w&Ep2-ZDch19FrHtJ}`fNDDe`55aj!!IQAG&Gklb2PnqYsvQ!dS*Ll-3n+D@zTJ8 zAr12nhNs48vH&VnT1Su2IK9#X~54K-RDOZNuqF2|({6lKFRP=GyJyMC8m{P^g}` z9>Uzqf49*y77ac(i}!@I#NH8BlWUl3O=+0 zp)tE)zF|rjM`ZqcQ(XrKWI<{@w z=H&T5^UgbK&8J%HK6Tf}+WVYqpWlXE$S+^Og0`rx%bH9cpOkk|BOsP}vdB53-s6-A z{M335am@Ja&j}&y69;*P`@QLvE4L$Z#WQ)?!`mMERw`*+pbS8 zD1EBtMiCIpu7+3{OFteh$&Kk@kw_w4`D?emjEc=t*7$IDES10nM8!&%D{c~@aY9`A zp70T0sNq7h824u+Y`p??G@m`%fzb41L@E=2C#+<(!qiIw8kfh=;Lp}RJA`LDYvW+H zR{?*naKa`_zccn^C03nE=+DjU?uvXv`Jekr8W8~LH8$|g%;mN5`T+In9#z3pYAw^1 zw)WBA;T?yho*KiA8Vk)XD#xa<(Cu0Wl9(e(0I`w3__AC<3;A-gCflZ(5egVbUcLC0 ziq&Vn9ohJ08pdrqZ#I~}qUNb%9sTf3{r>TKwy=~i+Swam4|aaRLtijL2yED~0t|_c zwi5w}nB$3U@yi^FiQPDL(QRb-yP49mBBS2*?iYB_=`piGx z`_v!|U}Z?n=l8KL_!LlB{T zJg>OUblqmNAAYVkc&JR-f55op9fYelKd|TO5m5f?0^TS7Gizo>R^$NMPJIWY>ex{k zfK!SJ@PIi8RzJHN>=r3}ZTI5H{%8V#c8b z!>(S#S9@(R32Ed4e|dU4zZ{vB40DHeXe4EDUJJ)6R0#5TV5C$~3P}QIEVy1>-yy{~ zUe0c{xGx^O_uUUcB)8vg75MoIgB40BdiHF@A0{%EzX}jd(FLk`80nu@ouK?UedTe1ZKkl~{w?fFvek}}M&LQ93@fu*n zW}j#w>2tp|IL3YX*kE^q{3w~&{|hCm9T##DX!-XWEI|J3d}e{cEk3%*7pQe zByz@Xw7s}Y!@8C;;2xwSpdK;M!;u<)+kR$?+O~82W{W>t|+hZm7C72w1L3nujKp>s(#mT&2;R;CoApu^iSdpTz zk5ui9zoOFA6B?uiE4>#nIW(X@TrXzV(<#;aq|>4^VBGuMtsvSOPsrl@WFH$rQ)BZV7>oAl~Y2YU7w1OHKlL#M9l0-T(+j!OqaoX-05jnF%Vk=hUs z<5cyjH_vT%i0~@FbExp-+(pugId@v`;;w;uh?>E?A$DH|ZDNwi5|&&idwiCM+fqe|I-Z>m0C=3UT)&Y?N*H93)yC+>1}wczWV2!oD{7TzFnh^^OX7^U^8dS$!Hb6) zgv~b*LeQVYCcVErWPmTyd`M+*eoxSSLL;_LJCMt^jtFC*Bt?$MFkBeT9+j+cm?}^a z-AzF>*qTYlD^pm|?;~%gv`mYIV$z0tFFCR6rHv|ZOAjn=k-T7NY3D7Tm(Xg00z3}J z(91FxAAsdD1v);lB$3AjlT++|rgzx}T6Om>t79)m{~e6L8q89tama!6FT6SU%SONO z1{tGxoO_dv@AU zPVc%$T2On@g#ATW+>sWiE$6tXQ5c62&~fWEP4m~+;q`&{xKA(QI8GN{4HE>nTe3=A zXF`W1Z?JOz(&kk}If;?>gE{4TDk$lkJ&(d4MD`rdxI47n$dh-itD~#I1|Z*OhqHQ- zclvV0%>A9n@-L>9!Clk&%8@A7;@-CIl;3t<>pih4TuoS3m6k!1LN7e)lTLu#!L7^M zmZ^8uY(aM#lt)fn{dEeOBmjf?lrB|BBA^TFMT9{=qt910Ltp?l5iIKdn*jk0-Xt2+ zcsYWjRtqbx6bU_PW@3HF7r-$rgEk-r-Ecb38Lpx|Vh_qtzXF;UHP~?XvH9>*etFR} zM`)vgBnD($4EZHLQPGO0z0JBf0BTA=+`=tn98vsf^F>J8cbdWPhAzya$7?s6$1Xe+ z5tr}}u30bWbKTFV%cHyxZ8nWZe1O1ecgo=qlzhGhr=66yt^rqpB%n(iQElTOl-0@l zh58UgKo)jNSPMzH()?x$Wlc~90d%D@^hvHn*LO8Fb;b%D%yVu{vRFau_mk!FvLt6r zR~gBgq43=YcUx<@1$Aa0GG>6#La>^1s{q3BH6{N$21yPa-;7ok4ZRfRLm;Hu*hc6I z5d^VA!?{Xa8l%}K4L}lK;b-HFx+H#pf+YS8Obmw3DY8ZPt}}v6sv{@CP(Ky;1iG}_ zVwH`#nS(pV^8EHnFKheclOlu9S+}R6Uz+ac#=o+Ox-SmbIt_A>spU@BP|yBk-yk(WpuO8ATLm;s{glpeoCKgbo}lvYUJ)0y#+Dk1 z!kCV+@IIqpD27=+YJ}y{Jdx6j`oZ*BVY{CXHM`@0&xX;&x;Vv#&m|EyBBSF{+u7ds zY;SHrBRW3*kSiRbx6*!gqXXe;lndMd9sTZNxHX7xsN!kj0XF5{`)Kr9qjk4bVbDND zT3rVYhy=-`Tmk+@>l(_U+_BvD*MJrI(IwuF{D{VkkrJUHMv;|z>?+IL|4~CqBJ20L z2eT&Z&j~7rr*jRgDT_5@>2Rd4^0)tQ}!IjxF-_LfsMZf-WJ4_b_&1Ik>?a;|PdO7O4vmyho z;p?zep2EcsD^-T#;fxz)*10&k?vU95O40y zV+EB){0_(nQrPdAgM)44X|1M1E~dLOGy-j+IZhDJraY#DLP( zA2tHPd}O@c;qPz9*D8f9sK)a|XudE1#l)JhYtPY=tluV!>Sj3Bbn1}EfWJ_sQ3Fb> zsT7c{q)T?D49$e+9mnCO3Yj0`wcrCr4^+jFAJlSoLVotA1-m!2v;x5^|M7*{mx2iGDJA~N5%4@=K-!scB!FUI0sgQe zP#V;^)U!F+-74lj%44j~C2b^^|2Ek>IC-aw8>AEa@v{L*PO#yQuGB&$x4HSvlo-P( z(p{XsJ)zVj*+A3eJ2VQpF+?fc{%4o@iTbmZ=L>YTYbHB13{+q( zDFykCal=T}_WQq;Z=J(F|4jVv{wH_q|1J-q`#+_*?7*815lmo(9vA)p#=h{NePds) zrI+GSKp>u#ZICl46uoWf`Pn@tD3ihEMbR4k7>U!Gx&!bbM1CO+-Fop>Fcou2na>dT2#=*0@9Dx$)U*OmEjs1KyLmdc|v_8<9G6JyWPHc zO$x2H8$CCq@_Bckb5q53#(B0CoD&aa5g~dwm+v+?cb`y14uYF7XKxSyulwmm&|l~G z(;^=t0?xb0YC%wBIddxW19H3(?6mNm%rek{JYSyci|AFSNWcYD+`nZ0D);i6g4BFL`ts+*n z@L;bVDn z6y}k(Y44kw5C)rG(MzFc#ufsbOF9Zo@{wmm#7H+Q$+$%B4&XRa|16W!K_w!QC!-0C zl(hR%ipF%H{%l=(tESn^jc3GO-7h6T!t72-;*5f$g~qTW+qmRA4bx+MA>o_+sdc)F z8oulk4_egRQU`8pFg#~E?aLq_g68d|{Jt>0sJxtEg6?`Vptw?U)14)yy54az^|JKz zw>)LpLn_^D4}frU%rb9C9{OqkHIcE#33mWjJNlN#VvN3S)AFpc?;=S!CB?9rD(LqoYi;r|uQBo$SS>Vs5aHgO@fQiaPRuzY zh*WBBX zUX+pOtXoM>tgKufqk!wCW>uzPC(Y5BfLL8yDFy=Rrtyp4RhlB7wccrBC07bo-b*p% z89u)s05!$*_g!)EYjyq7W;@IkgFlcg#t;UcfNbz334`D1?$)pj#(8&`(b2pD#wkSd z6{otw4uBWwt$Uvrq!PBCwZq0`fg@vkx@8FnfTBbc&Vn6 znY4SL>OQ=G_Y_oWJke2HfFz8a^Q?-IoHMAVF_xvNDNML2JdAUR<{AhF*0+MAe4~h= z_kzIT-2V>Q3!zo?i?D`f;865gI-<*}uqL{#8bE2WUglcr)UH6Py#Jv`XWZzbch_f!N84IA=LDXh3;cJT;IgHwVgoy<*5WFTY`o9&@mFskZ>bi z2N0m_j^JIc^I=;^Dd!e1S*tQEuk3*ubgU=*p!p50D$!6Vdy@lFK61+@vk*7JDtvvb@ij2Z=ExA}B)g^e4MKObQW z-@@x5FMvFQ4e6R&U>tcEQxqGi06L=*9GMvkF9@YZljVl!o-9V{vQ{o;$4*F<1YkCp zJ9S|qN>rS|VP;DP^llTqgVqE1Qv+pYskmHAhT<-@Do)j{GUNM-B<#HW$>U1!f79GL zK{(K6{w;-yp8>(s4|P_14NTh8SaKpdfPs1fD+qjBpe-XJbRqvce*NtGOQ!*k73t5- z$%B9w(}*xI7Y1RxfVz4Dz>@r)3V8o&k!Ld)RSGTr2$dXlI#c)XFt8itBWB+k>79Y; zf+Eg{@uF_`AczDDFRP@!%|Z&uxPCa+&3M z<;LDWF6Yh=-Sj6vEcDb6m?|8si)^paa>mi_QX`j^_UCp6HE`lrV!M&JK47z0bfNn* zwooAQ6T+?k$}3oCgVMg*_8P`Q(5=|wc6Byl(AZPD3$fY_!j92nYpqGcYCV`mX@C&P zgSUxtp~Zit#W1iMRwtSf;>Z-6*%3gJ3WvM;nli-a@O;ToatonibP)@}pp4L%4vc zVFM%VD8JV7v3HqaNSwN1-yP2l8n9|S#+X*x>1Hn84par(!j$OYIY5jU zE)tVKf9zoMH6=}G2AI7#?f9KSZ^SMY{h4CW@96G)o(h8-StgAy{S<`WA?X{wYePT6 z&J{AF4id`y9XU6=^5l4kR0soo8pwWhxO?;>eAqkL6CjR5)&*zFLc6Zq+gx{b@^Mop zyds}?0Pw-sp8Fq1^37fdIuRkm;^pOKC1D{^g=1E=aCLNdF|%+b;pGMP9!fCLeXp_q zckPFRgQJ@(iQe}T56^!dkr==U3H@ga?`UcR_x=4KQ*=Bai6s{s@Zwzo8i|L8iIba) zgoA~HiI;^Nh_8T11#}RFLBag~Nw)9z|MQlB035S8iQe}UV6T`0JrM3#0RgD+fg_Su zqG%0_yj4I3GIC+UfU*LeHHH2|R5x%>=260I&c`|nv zC{wIjYNff6rS|_P1EyS`t&z;3k#zwIC9b;fWXW^4H$LoEXD~egbUY3@dV9!fsi4rM zpol9luG?ftN~ADpjQkfGN~%{GGl0Aapoy6Z&<6-I__jxX%-~7F!UMp(%&f38u&m^W zRBHsyqNvpkHlugfQM}rtXJ`19$#*-9hG>uEM$CsroQPS8-=zQ!8&F3m;mt&K;Nn7`Ww!edV}-Om`aa8+zl6+Uy$dwztFu8ufAM4_ zlElJ1%mw6|xmPmie*scef1^iJ{opI^rJxcbcAIhIE*@t`B%mq9T8Y+Qx-bcjNlAuj z6nSGuvQ{}F6j%ZOh8LTS@KTQ_DN*pR*U+$5 zpp&eV1Bsg=k)WU_iX7H23V+P2_-t44Bca@}_QIvxOE0FY_?*Yf%F)q~G~VhL-mx?M z48%viLlPvJ6exh%6xNfjdiYc6Mpk&})Y1Bn@y<$+U;fHlDqwT`vc~OtDp6SS8y;K+ zsrYa@v=6=IL=3%0zvjphzQ_nv&g@H^e>LgSkUZyGTQqe-458R}*Jb&sETxH((zBEm zKhXQ^D(?+kWj{nAq_+{;T`QgvHq$wmo<$=B_|Q^Mho}MeU~X=B(uFNJDPW+jP-!fS ziy@K0*bI#fZ#t^!Vgi%XhY+JcLqA#Tq(q;c(EIBNni?M9xH-X<58 zdE)@Wn)e(=u=EAqwPf)pbJ{lwivb*i!jjRO>3U|Px0>?#%x0`IhA;%6P9VT-yJ-`3 zll(na(po@`t>2|>aUJE8!p3Q(%SNy3x|Sw{sk&tM7HV$eKpVYZ<0?-UQG*vK_WLa1f9o?mL`yV%Qb}Emx1p6#^%@IZ8lN zKRqCuo?}nx-^KQ3>v4<#wrrI?LW7W8ndi^`mzSl<(Iwr>Fc&|3_1BYbHQZ=obfN)f zF*D(4621p3akJdq$dO=D>3@cl;wG3sH?{LD^1(@Cg!iz6w6@+6lIYLS!lBY~Ng(UIW6^8A>vuhOoVUs)6dy925Xr2WcE(c5bUL#OT0tI@?5xj&7;oJ3>H5 z5QX>`vO?V)?-luwwM0E9wm#X2CX(8~Xg+m`2*>wlgnU;EYcBDnH;P?<%9U%(;l+NS z6Hk1jwlS6XXykr8^;RO`@%8RZt}bzL><-G4KGt0(i#|3u@-fQOnUIvbX{GF}-r54F zdz*Ak>Ccu9++BOHXbRZn5TbG$2Ycf-nm5g^B<(CT@~wJ5OVUij5%(1aNMvK6(j(rQ zKBQA7oBIYqT6>Z2rLvw_l`Lx475@#x;<1F8oN?I}2O&QoEd;_+V`;wI#av`fLTGY4 zUI#j%kfXf422P3E)mOWzv4@4sDyRYw1GDkZ@Us71Z7Jj_8+sNu2ue4ef-3rOfYLq| zJ{uQ_9&>udx71(y)Yj>;F^Ucg3%gF|Pg;HGoVKJNHs6Dgi)Q|fS(g_{@=r~3t@*Gr=Y?i(a%MD?Wz&C|krR55t8Ny=O;6eUb-kud^ZZ(vOyOQcC2jm# zggw6>DID>vU|O`Hqrs;T{?h-Yd+k%TxH=|rXWhzGBfA|+!ki=Hd3;g@5YDCfm#A;e zR&@YKCX_keDmQS0A@0NXvp;N7fx>IQ%V_y)t^84CKS4Y#*)_c9to*J%(1bJeV^#e2 z1(P2(P_$(N-lVojNb>8@&K76J2R3%*kPjDLXi$k~9h`OAnT@hOAMs+Mmonwnh>s6y zOg@}4B)Yd=gQ(tTm+Aume87jdsppoEpY~W92fOnwR6>4Xp##j%72xpF7(;hhGt;LT zUx5HDf-!xr367WI43B$gFS8nmyT;G$Q46Zz@gli4ldv~9usM>Q(DsJXLQZ*S$`;iC zxAx03(M;7&nl4Pw4cYzMiw$oi!m7F@_2TJbN(P&ouV@Nv&&<639j zU*Om>@xUNuRCHj($+x#4D%XGm)^1B9d|M!{|JMQW0#({&nW+Ci2lRiN9bWGL*TLN2 zVbX&C$I7U1&1xf@PdQBNDuL$8JtIHQ#jb2ZlSz{cT8-OqzhY7l z*(I1sKl{fUDMiu9bDtfkGS_~&4`7?M8P<=+=V}R5==IuA*|teB#iH;3(kz@ZJg%$Z zq)(Mq?&Z(=CH}k446UE$erHL{Ii(fX3DCj*)3>*Za6Dt2u1nKpRnQtU$*+lNS<**s z^pE*07u;H-`HJwH+ah|UwvO6{M;4W4Icq%X&1?uqeiLT1Z}}S%$~hxhe;hecubKRy z;c2|TXp$f_CS+vjMV&DFZ~honrUe%tOGP_GQ3P$PV=p0eydQ5EU9!yBjgX%Hc3{=%>w&-EIK3#~` z7XHXsn0<+ng5IQs!dPsEB|A9oXi28plGn&tu{F~G3~~h~<39XPY1Z-K^Ho=sjLi&? z4)dneKa`mM^0H>r*0KJfgl3P(^#HxfDvTb8MVI=La^scV(OC&nCPvo%-PzTGMOjQZ zT}JJuI@BT3Hg--as>*G8!&$_r$hNaKCa=X^dqyvvvC^j{?iWCk>^gZ_{}Tyj6BLnG z$19#z8x9X6E`E|hL53htZ8h^VzuOhKL|TxFqNXF_|xV4*h;gGG;66QGom`*FK;a@L9F3_VTf zIqX4F0-4y01a1y?Ojhw5D-+T_tZw~xdsd^x4>g^ttUVYqQ+S|Pa7foRk+3ET>I0^@ zxFWzz6{>@B}If zAs=w$H@53*6mZ8XDl6Aj4DO-`h+p^H_b6=VM2v#9&g`&$R`a0Fvst5%jCfQFZP1{0 z%b6Ag*}bW_g`l9nQ?PJD<11C^j-@BvrWKL++@4O&@IO{{+KH8_;Q)qoPw3FbcD@CB z4o7!zq95oW*_kw?VwzSzIgq4nIur?l=+)qHJ)txhncp)H?j#}a%O_Khsk*c@M!K!7 zkRtRH;jP0pF^K3y3Ve5qMLsD~4eOw{`P{~?IOOig~oKo@uy;a2L^&mIM;=jYxFVa3Js2OuY48$PESt&Ot{o(W&~+VM$xn25}C zGrG>8OPdyzkqzL0GQT-HryBgG*T!hu-~glg*6;FmT}GL{`PVS&$qL?0eU?C=onUD|72Q`F2&m{JinESDaUfaI?2ny9-`gr>NRM zrf1!QTqCEkBaWU0zsmK?CCPrwNEQ3E5rIT)P-xYlBpkJDM)Nj9AQH-~M1~tYz~#K4 zhL?O`k^n>^Kj2NzHjYq?mpGbxTSNaDBL0{W0`aD^?=prI&r?jPT2MouyBwKj_EyoJ zI+|UCABE?0b)1?UINLk3Yx#`8rf-24`YB@4FQkOhEGkg{>`TEc>iq4`4=n;u>wZU5 zVlI1(@rK3c6~34A8_r)m#In1aJw%V#qF_F^!v5zX#k4aC0Q*G^O}sV;R-nH&Xe4ks z0lH5pD#7e4c#IRk3|Mg>*E~R$uS2>9U>2W(cO4Z*Qc!~#IYJ?ZLk1YG<5fArdmCg* zIa>s@DQAU)gw^v*iE#2e6|*v(BkhN+*N;D9AeR(};XgtsLQM6+PK}p%Ne2JmQK@;6 z&yEb=6?e-<@5ZF5RePw;Czkq0s>k@O2w1A{@cC-0 z+p&`&5}x=SS~@BZW6FWH6*KQa`eOR3L^D1Y`>dg~P}& z_#d;}uS9n^10EJ$73A(Ed2LNidJUuf4ty|^%V#=kRiyMU7ofNf!^CoR_r=+TiQr!E z+wzDJApNg+?q3X2FI_3%hY?BKMGxX@AjW(sq(vqYv%%c)K$*e?$U;9`k<^=JXVTju z?48x7rBF1uJtft)Z`>1LVgvQfnH;8PIJUGufPfyU@dr z4LFo*Kv0(Si}jZoTG-K^@@~PD4UdNgnMiAR+B^%0U%5C&7|mA?b4<43(zw)J_O5D~ z6$>NK{~IE(GKc@k*QDbR(>VG{rhJ~ya;qf2!$G%a!rsbW=#T9aF*&fWg73CI7wz}^%Cjx5({JX z$!58;X-V#IqcLWSkS{skgNN$M_Sv7Y8S1U&)pOl{39K7h+;E-bqfcWPdqkSeE2`5- zDEQ(|^0N%N6TO)og@>lnOJKGdb^^-m-Y05o_mA4V}Ay(3>{ zv_?C%tYlwKSQ*N4fs(;ZT;c|guzLvD{(wm-gZK<>QM!tp^LsMeHy zKbV&Ga??#!J1b}Y?WEqG$5S(!(E#yt6yn$(-0-o!;1ZN}BxSI&V1v5KRD6`yP%N`wa0-!XZ4SwO#r94qb-_~0{CL%X!<6Ffwx*WHa zYnC>!;U8;Tzgk?~#&v*!^DmcDc4|sls)kqV@32~dhVPudx#dZ>#>py|M-)Dlgi2dQ z==UbnGxH5hIDO?MoXbS5AT_)DSf2ogK(}Ul;+R^D)4xCqCYN4)FaI(>dCzbs2_Vya z5G_XzpLe9zMM5?FG;%WHwJY^c;&}M(VW2^C?WwE_>JMO6J)JDUzXq|fx>-Q0#NudP zu;n3-*lsw)v4yfkB@nGfMyLCVzOGjdoK}IUvx}ZRqb1E5eRWwgOHmI&p#+u!FGgX4 zsa64D>pb+b`rSwE?ci!NOQ3_%88E+9Z@Vc}(OA%RL&Gg^{xlL4IH7>N5t?dT;CvP; zvK8qY_|N*Pcr)s9hjpN?E%+c=*#Bj|xt}59@2Q#_6jX$qR6?8+4!P`2_ zB2ZDewFOAvJfsiqTt84@ABcL(nAzYXI8Mf2oNrEr9h*!>fHM|~m_S2FMO#pI;3%Zx z@BgE0|9jHEtu4a}oPkor1=gN^lOg3?|I771rkPTQ0TJ3!EKTNc&YUb7Syp6{K|+Dm zk)~A@3)IXu+JXdCE@D`VlGD2BEgbNzTXri~5iVup&Q;q! zzDO^`bPuuOuzjJRzY0S8$;;i@(sZej3l>+BfY`ery1z>#E7kxNgLb;nagVsl_HBYo5PQ#kOWKBF z@)nZd#Z@k*gK>SlYEE)cvP~$>IJ)X{GnuDP>UujJk1Lb@IF!G7i^Aw&GVjNzI0<1r z&khiarW)=Qo|^ywGCo8E&EP&!V9}3A7{x(%c1@5@{NrNv$uS=NzeA5CtgDxnDGP&W z9Wx8jwi!2lPdB{OA_n=OwabYpX4*Jg#LhY)$ zm4=R0FGBJxDM_GI{aTE&|2{l>g7X6@kTLv0Nfm^d!}9>w(N*S54k`}tWusG<-i;=a z9^xelbh6|-g+rn|NLWds8*z}3f6vVxb23T1Rcx$x9L{E-N(Bool~$#kZgZ>HRQ`K;rbka_w|(}2sd~;vG3pu5v6i%I^~^` z&x3H8%pi$SJ)HeuLav>gBEm*p4?q|%JbCk0I}JCTi!Q}C1XB6hB1)b@)H8Weowp`C zK^bajajrLB7}Qi&MU~)}0h_PXafTdT$B&1$8!npDsOn38dX?bQ7(77&4|=wFLb|bx zO&0+P{rTX5PJC%%$ViYRd`V(fCmSF>ox0d;$*(24YfV<>9CKkbhq3nF&O;kc^+m`o$*yN+Em{NUZ<<6!cHW z+e_%L`e56`SyeDthfCm?AefpanX~znFbAx5Fi3L%nRFNI2f)JDreOm}(cE4AM!@+< zjlTtEw#|+0*eEm{L1lH!WW+E6iPwvJC>2j`D5pyo-cz)xwp;MA>`u2t@0@pQfBMJt z-G=X&7j41sWwsT<-x?L}h3(VsZ18As?1e!}XXCxi%ctW(^euRR^>|xD{;^{(F2HXz z`4TmLi!P0H(_i$Mg3*o`{%@!W=E5wzDIYysCc@*md6kjPfQJF|@55jZo6ul4J+zCp ztfMO<_eH9Xi_RnnCK;%sEf*LH`#V|KJDqcn30RisLZ|gt<%ORhv2w)Nk6Iv7T123x zg5yITts9WcF)Ar;SobZRX(4r&_5gj8C}tAQCUcb+JFI%;QkSk>66~%<{%6tQH$;sW zjWs>HCx+HpgTHo6r49+&FkwJ*v!Yg&Bs{z#qKL${)q2oG9nh6lnNJA^7XX(0QCwD2 zxeK@HnkGs3DuaYIZ4YHjN|{BL(OZFWuP7W-V7pm4gRKqs4C6$rO-syb1b|ym(=@yu zja_{sh00)AD<+YP`|HCh0Vt|<0UvM8qUu3NFuDnOPVyMPb925?PRrpnr+eKIvKu@m zdhxC#QrMxe9H9LX@W!L+!|G^0BLQz~=xL)OUF^x*?3}SG!xtTWWWyc3?8;l}y=$w< z@p6e>$}MH?b2-7zoJm|csX$2JWnL)~LIme^ViL%0nn!xNYFqA3Ql%N9XgS7+a%OYT z6@{c`{ssGIpz7}=#&DvEq;9n+#Lh@;2@MRouNwgZ@%F*Xcfc(Mk~ibO;tuDg;zC2qQmp5`^M~P0*BtroNULd_UL`R zINcaDm>j6)0tff%XTl=~5BgZ?s+q#fEIP_0E|-_IL~$>EbkmwdhAK|H>Ykp-4k%*h!JARaB9pSK#zs31> z1xsqqP>v@$=1YXyzuR>Y{9$h0K3%cuo~8%TT#Dm{8ZOp3b?~dRgJU!)G)dOO zbu`MEed-1{A?tfPSgLGWU>|Uudw6iN3a#{SP!pIs7lyGx^?|ps$KymPOYhF41Y@J| zf%MSggD-;sY#BCjPRUnAQI=P**5m7F=*7er5#ud>o4}kQ+~wwC_)4A2`LJe$BRFmu z$a%GY9ED8J5%t@G_{I@IU2sV5Eba>Zq>hC09d3rhFBn2x+i-ViML&a>M9h4@s#PR{ zKbsNJRw{g}`+SX)s;O)$G=zuLspO$eJ zB1Tk=ImnnT(7l$w@5GKRnsLroLX)#%F971jrworrge}N7iEdzMksIQxqr(S z&XJ7SKLceX@2;A43oK)GKMhSiemSFNlNB2wzrwZ3pxSstu^4SxdgK zRh=WW36nAd{u>*MW-eoc4ijDA=6K~HAf|%TFuA#L@Jb?rz@r3y;8t5< zaH~yIDt535t$%T-7{h zkguH)yx@TyKmBx|*a8JLr-2Y4nQBYNCU&rGeeUr0mX%+sras&W?`7d{W5<}XCsz~UkVPqItFfYTR@;`5T75ZQ94t~5A+k-F57X5Cr)5Y6 zU#Y3A&R^sqb=J>dG-uAVv|j6=$1Kb^D?NxYILFB~)Ah8v;A9}ubyC@LJYaZp$joSIVTpelQM3*OAYfMnz z>FqnvJvd=`Z^Y8S;*sAro3sq+ z$qm>YR9j7}o?(E20>v0cAcj@$9C%_4gxiItzT{SgH5_3k^Q7(I_7r;sP!5$kNJ72i zp+bEcTCbBhWWH;X+QL!X5ZSIT!MBB;gR~kqGw%4++@_uE?bY zN^e#Fa5Ceq^;$S@x8yxln5va2cs?-`y8>QsiiuH0l?Zj~62{y4>bJlcvlTa5l7<2` z+0?81p2Xy6^rD}e0Xi`pk9X;#W42O89J=lQ9zg71X&$ykaTkMMXceQ*D3xha#6sRM-Sz3h87(|C!hp#!ay1q>7712p2#qlf%=Na7(6j&Z$iJE6go@lH zyP8r|`x|3qldTA5z{7bPO){CmiTcR*1dp9fo=qcqCVkh*D|xi-Z{2<6tgeh)X|ez4 zVPT?QTGR_@hYDXun_{xw)zulQk{&a|!F#l3%>=PU>B@l3U_ zltyLSR>(~p&uDM|bDxg|-26{XSmXKnq_#Tbcj6R1 z$0BWZlu*_JV3b+IZGGoXwXTw;ikWv{KgI)(SM~2U?HFdcIh`g8#h&{6GVcr$05%xKo5KNTLuGBW{{3pK-bK_~ zrQgFkQ6e&_iAgaOLn1S~TaYTv-pB8+nJ*NyS*rZiqBbn=_x{V5h7uor6K~mJ6UqbJP*78ojO$8`q?4PjTE<$e%Xd4RQ|)062(}QYlO-|;2-$;C9f6%8Q?mymiUp$W4CwI=GqtT(IPwa8Gzdd$!xwl~ zwu?cLQ9{Z*!Fx@*{I=?syLch#^YuYAcCiyXfQgytkpWH{@tvs7=Da!-UKl0Gzz;1x zQ9}rw31z`6)T*GK4j4aRTH&njz88Kp!Ko#som=NI3&*6Tpm)24 zH2xCY+3=izD;wg8EZz@)SKtw&pEaVjR;nLTFszluN1#8o=}QmEcj0Rsol~x@^6K>h z5Mn%@DD`e7$uBJGbf*JS7XV@&^1F_jKyS>oX>ha+GGoVjy z+Q@5VG!bbvp7Vb(^^U=rgliXWY}>YN+qUgYIC1jEP9}bXNiwl*I}_Ws?M!sC_de&V z^S7(3|8!NazMp%oYh@cLZ_SQ{F!WXM^Ofs zv*9s6<*irE7MUGKlTA{Q&7GPs7I0iQ|0q@~eEXgw$9|pVL+U@QG>5(R@pm?$&@~cy zFNE$fLX6VH!MR?&bZHzqff$PBVTC;rfXo!*l3SMmWq*JUh~9u+ zb%hb4FZ3X|ANP6VHQ>J+ClKE<$oJdQ+ta<(_7`uDbE3sO?mDChaV45y3nwlsAhe)V z8024QyIowE;ti->pS&S7F&1xGmcpXn#smHCWZsRT=E*v_bNnIcw6@;pl%U0{hUZYW z%sRy&;vb22j5)ejVGxEpv|gVmvYB&uoflh0f5b36FUu_qN&d5R9JM3`tEl8+nh62g6GAt z7-G*0b))xHirZX6{)*FB%v0>zPr*Z6Net;}#%UO{gCahkXSrG1ox`RLOV8TsB|Mp% z3oMi#(8+ka7>PfSYja>*x^m>gI@0R1@9LssE#R;zA!;}Wg0bHV%&?>`d$4NTz*QVw#-vta~UBdA}N{1XR~#4s)-JOF^Xv=D>u0z4!zL} zy~!hpe%p-cBOZhj;92todxECDCPkuxF?Cw7ZtFM#9M2yxZhCy7Na97xX%Ndx9L-`@Ir%X*H``=~=2k^UtWp?QWqV;T7*>-dz}xP--^`5VIe{!;`JDcXIe2 z5RJQ4b7yy^Pmv&igz((noC2Wr=~DBG29gRa3QL+Z1nL4>lpJOUWYrd9R1ZlATbEXh z7**oA+Lsn5^4fd2z$=4C (SQ9x9ftN&E6S&2+6DNMq00rxCJ52x>Vr+>z=i*GDV zU;?1t|6|8y*p9ZM(VaQUW12m~?kBXM;NT=G5@^H{3l9uH>>tg*#Qej zAhehi1S=04pWMq@@7G873Sa_7%u3$fajFTV_Zy*+H3CY(XdqBwXxa8EY;WkDM!Pm7BCO3XJpV)3%uIKP5c>tj&1tU8Nj23;&)5yTg4<8V34rT?DP?-;u zvh{-anm~LogXgBvGj-^|+6i%lo~JQ(DzCrAd-^NzG!XmI!CG_1dM0M)KdXdEw6q!I zWY73PR^XR7GQm5-OPVIfRfCG;E2KtU2WnWga6bsJU+YMQ@{n{jPw#M9>n65VLPWB< zFj^Eeand!SyL2q+xP2pQ`^?#Lh|uljY%X^}KUXYY8qVdwI>}FI`qSAoHe5!z#0O3k zOL_#np?V0dRqce$Fn?g(l88M~eBs%m*mH^1*z!yPHcaPuO8MP7Vrx2j?g}8$F zFZ#Kr3eHLcnPc%i{}ASpkpCR?OMh!GtFSo~Pr7Es9JN}9c;?%s&BT0iu^P}^5*XJz z6pH5Lv1h0H=!}XFXWfPZ5y+!?e&`eb3x+I+kmK)$8|jJ?O5tabwn2?wU z1rb0E1Z;AEK+T7q)R~|J_L~^6EMSs%t3$Ts&ouu?o{NYF{UZ!YFSQ4ePwh11#Xv8# zhckG2FMk@}euYv5#uDFg)S)`W#=Hbzi$MZ1(x8C2vQ~rgCpt!57Iw-;*C&b5&r zUT$HXtx>RnFTxiDUQW3fA;82>2Bt-E`5Z|3=pGFPodrUJM7(DOiaU$FBu9Yrfgz=Z z-!_0Oe+@laJm0MoXUsMHya=)rHOuX8<38bcaAF3xRW)jP=>Az zJ-TFEQLD*ok4qarz&NXN#&S;8d#W5~f<_SGwp0|Bm1-&eXi*tkx7iM^e}C$5`nU=7 z!N;c7h&>=AdDYtjjmKn|-8BJt=U7~8zU!sUv7=|$I4fTu;G&4$tc-)53ra~oIHGdc3-oEwv+uH2KwJCcl9uW`%?|={A(*9n@<$x}U|vQrHltzW+e@e8X!Hoc<9$39pd*a zJDA30Qe5Tig(iat4HjaXN}oW9_Zbuc2MmgQ`yMP4>ns6Lc6>>d;eoci-#T)WH)z~S zx7?OSob*sLU;7~1Kpe-m-H!vlT#UZ&Wn*};0Q%Ly18MC$Uewhg$3sHN*+`5`Xs$yb~Z z!qQr>@8%HIyo{A$r*XO2qkfoBMjC>Owj=J)#P@oCz3DG=Nw7g}{;F6XL-2z;b3W#S z{ZL87E;wSjpo^~PAtal1rVa$&9* zaQUJ%r{4~nD>7vL{ruY9oZn_hbU~dru_#=HpzvoE4Pd(XxPud(5%5s%V$U0sOn@i|o6dHAmhA2vw zO?ouI@O@-H48O`sK*>+R$fHopx22US&_~!{$%OY0nssNm9t9 zbWy&danpcRm55*`3HU4A6BbhY5Oq9ZP*S>?f@3O$Q(3N#@ir+aL+YwH7Z}RZ?R-wz zWU^e0=UQ!8BBAjPQxZ&@GG0j)i|zIwJ7XZtjNo#=$E6qw!z`eejaaKa0d$R;yd0M( z4#pu*LLL?Kf^TA*>4vf$-kN3W*?4y*)(}Q$qd6(EqXKfqe913@=@!i-=&_|A_E^d1 zQ^)#QY#2qNjjJYG>pembo#R(NhO)tEVq8x>=E(*@gr0HwK89saKkoAg5<_EUSXMLx zuE*R|N85jv%v7~7T)xTw1gI{-FP9yPH6FILgd1p%<$h?qKrt-JGV3jwZiT2I$%p|W zZ;{N)H0hh9J$>!h+iBK|qzf}s?QyyAfq7>}*z9|PgNlNs?d^B=dVf(l>fsV3FA=RN znVjg4%xFIZcx>Uhp3HtjjSjow&7$)na%sIBBE$4Z{{i*i;0o7l0kkO7$T|OO{Uguj z%riS8)CXzUjOrd&$0Ui5<0xK1^k@A_aLPg3JNouA*=Oms`=;lt5z~^ek+}5dxM)x@ zM(Cjx0@mhy708P-O_n2$u+J){Hm4qQjeEvhL6yd==3P;3)-$fO4{@ar z{`6xwGP3|P<$0OWS3q$S*O^AsFiA7TI;sIw{z>8}*FKD2!v2SHvA@%<{i0U~G01c< zo9{(d;nxMnPMHzxF<34;X=zJ|d;F_BwFCzi>E33j&Hy9A9Ifi{9bd;P-i;ZI*XYd6 z~FI|9sovRL+s9wZiF?-xi+!*#-=o@3aP9@MHxx>$b~20%@$CzuKQ=PRapW=w(! zRy?ge@ij?w_U6`SSS{pqc2l=S^Nh<%Kke2e7B*XoU{GoNGU5i)Rt#q6t79D)dW!4k zhz{uUFa``eo{LvMp^F(>P?IlAbp<2JG7|v-w^8+&9Ea%e$B#eXcuFGHn38Y`;9QN< z)~{Dg(`+A5UO=j&HXZVM^tjsFtM!#9Wu{YoUk##6AS*d4S)Lzlxt((syx&h|O^rjq z-M_sv96inIGxp9kQ0M!LjC(VM7ANzsEGVQ3bNiSp~V4 zh9gw1FHc!j96#V~zQN&6acJh$I0IfwyJh6b~F}HK_aO{ zLdQtORc`H{B-tT3>QS1Ge;5=MWWg!M{7$J-14h@d4F1$<=>Y@OxfrLR_`@83BY^+# zA;QwW5l7StC0=#zYJM=1BrSi3@a4x8Pt zbI`v*<_5s&I-SiG!bq1VaA)_`m5YF8Cw|ob1S&}jko40{LV+!vqFU-~Ii%HmH&lcmKHB#!4Fe*`4#sL`18dr597`*Ms~tA2YiHT1 z39jTBQ{u&VI*!y)ka&_E6)9QFmT&KOQ{?Njf5%9_gWMmV_OLl^zq{NV?RN}#QZdXu zd*Z7OqC_R#x}K&dovvjh*OcQ8(n7yAV@{h+?alI=EGjxB+9asQA0Vk|c5F z%mI;kMpJWtBRR#GHxm&1Sq^{)>YH%dB|)Mp{>StpH-*~{@^qVkTbe23UPsIbGwQ75 zI-JM?YI74mWT>r@cJz`Cw_Wh$S*#X#VsN)DAD6>#Hwp_Ulg8HOel9GF!)HUcy-ib6 zi*k?d1}_)RFG6a9>Rr%DPi%tcvDIxbK}#vx)34P2>Zi|gtO^yl%N}b4_YCGCAMK5j zP_kBHVR$S_H>_V8_kGIuqBFHLcoC8a+XYhPmf$VuZ<;1qqt1g#Z${*zXg8KTDOUYgufQ2+xwz|XWHjPG{}DzP*6>KwleYBM#i-e+Zix_E_Z4oD+x|If=2my( z#7wo*G>3Mdtgy;IXDPBl zY8ok_WjFi#+LEVLH_}ReF>W81&oF{QltbZKAeX1(9^gk;BneJEKt_O3j^-;4$JlqS z7Tu1#_1uMDP1tj_Az3gcuNpf6rO!6-_KWuM{M%?6IZs;T!AVLkc3F=2!zI#Y@V&ex z%`1);7-zbCisZXTnkSCtG^&iVI>RUTA6-^snVcz8gbjF4{OXd1ftA<{MCFAXe{ z1Cv4p7?$r?7z#6X^f~>f#@rcW&rmv@DzeHWQ%=zSFF(#4!jOaP6Qs0`0lqwxZl3s6 zOJsVVy;%t95Dj8-$-pAbI+K>u#ly+K?kH+GzT=xQOL0-weky;=_u-NFTq36{lf2P- zyw+3MgF`yyr!!r3ul3^bkiiC&c{SanC1pj~rE=KP4DWpB zQob`43BBWoDRwbg*vy94Hlf3Y|-b|3R>KZ)X9BF(vB%x~VNv|N_ zJMO7eu4P_ixpiSON(OP~Uz0V4(l-c75x^%R)*l?-rOHv%SC+WWb&s|uG*1DFQ%T6L z8pdIQ8vlNi?9bHO={SQ6_$h1*za9kN^1J2PkyA z@t=6QSp)cN?Q&P&Nh{#fy?3#)*A`RaaJ)aTvL7&+6La>9{Dv#aUWQG|evPk& zavJ_dqwY)RmKxyk*oEe3R4a0PU4cDmFC+}V__%0vKX~HZ2mUB|rK=1|MX_OZVf^t0r$^Odu~`G=t5bJ{?YRY_YL$yTwk0yXsX1i zj+vowMt(19T)2Vji7*-+=MkTYFrAU#wCul#oW(%O#4xP&7^V)iO{w_-G__uaLz?bZ zvX!Ia1BLRpydBDw*uKykUF#1&#c*Sa zuC6esKCNchtBv{G>l*y{qLYNW3C!3!!}@ZeH*0Gm4^Smn)p=8gy6Jv2mp}6Fqb2#j zJ;S3XB|J#`_pE$3^wc)4uGt(i_?E514LBP!K5|8qgvJs%X*cZ6Ns#4_cQ4a0JR{BS zY>E&?t~UAIT2c~pP!RlbeqbPG^cjLahbMk8^&?n%Kf8b;>wk5b#BMN*j};kFBt9Q8 zp{2>#jrCfOoX6-*Bs=OuZI~<&a&fvBjTtShm`mT zcr#A>$Wb7OZUUeEo$_uiIQx=4nQub2=PR(8w})pbq+~H5lPeA>kW>kz(20h>jWh>z zS?|0bfv~wBKOg0}FAw#neB5B9C}4KtZ~@t)d{qn0s+KNnSq&)4i&pxRG6IaAu3RNE zb?QIqT_0snM4RO?G91$r>uu?u%`~Gf|MjKU>yD3cY1T1R#9?x5?1@yht?&Pqpt0Ho z%*k`q_YAd9c(U=&f*EzkC2a}tbVRBN|1y(1;>p<`nWB29h`p@rvr`SU8F{ZHz5wiO z<%=!)@Vey-W(<6wOF`*H5SS*3kW0lgXGpAJ))|{8NRDPq5z0*hj_1@o!e}BZf4Z;#S?9^!njMc-p z(cd>G_N0{C5VeqCk@de=D6#&gBm_X?`SP>aEuG&LH!JGup12=f{c*0?2vi8@O~*R( z6%jc>h|GrYVt@!W4g%q#0vW*u>2+uV=xFs$|J;;wn&shf4`ziXKc~nJnRFm9CW0W6 zG=T_sfF{_Rn*!N~8Qr%^45g7h@v3OH*Zx99d5>howj{T=P6PZbxZ9{QY`=V*n0R6kynQb(eEw_M@i@P8v?;n#sd=`+ zk$`QGmeqo_b-IiKb~x8xAoMJNvIoFltVC8=u?C+M z*DE3>?zJQTR+y}=pOv8kHNRwFpmOndv;e2aF+D-8#;KCz6VpmtMkzV$e3(#~EloP3 zrlqdUC1xMqS{Un&)oO0e+lbr==zL-vA;+P?s@v;JLNM5#KVF>bZ=pS?qLp7kYY7-p zcSdDgP!5$F#z<8D)Bunx3CvR$n#SWmT|pR$ypnYrndn>V3RNoocDAdyAvVtMwU?#y<5*xhtuqhA4_>oR;fgg& zDE1x7*)fM{724|vQ80p&Ub8Qi#;fL_^47=8H&$5vQGFD2Edk{$JG0YV;rJsz9Kb1n z_&h&Pp>U!;PNo()s$)6f7blb}_-8Rmwc2`q%}IMi13KZm#Y_ z-A-~NvGrex4*vzi^<_%9trNi#Lac9A8Sn5XZtek{LKzxe4uN-*NJ3=~A=wL3s>HT3N57PdVG)6%SD1vmSP-w3?0{&8A$)pJR zfCeUu;@$ZWu-qc<7*Y&+-QoAuooV`Oh&aewTZ=eVS#VIUbWh(JVJ-D4coru_2-`f= z{MGuY5zxJmTVV3BZOx~Z%pF(+9wSX7o8RrEvM+)sD|!P7YyHA;#HUBxuKkct;9Ry?H(iCnKpZzkDoYCvMksTafmoy*&Tu zbngO%p`pVSO<>*2Y>~L$>EPOQ6SIt1I4#Zi6+$%imZdIYl?7I6OFjE}dkX*kMO|+i z5(BK%W2`=lfxU#*ACm;R$UFA24X zv z&(7C(kXtYQ>;W!pu9Z0<2IFkL`?}MnBc@u@R!C;C55x0YP9MtYDAJh-|)9EmPWaiw^td!ca6d}R5rBxvx;%Cu}2u;~6siIW7cn4e<6nDJPrW(_NHlRz#+E4jrpMWQ>ho2yB47 zsVvGfPyOh8)WO3V;-h&rX=}Z~f2vXAC*yKFghObr_xRgHM z&!WIzD#}JUWYBAk7-MQz~Zvpje% z@Rz{-Ed3%v8#iWoMhroGy&WG|G_bSPC--lLPZP}18Np2Wlx~ug(ZziUA#m>UtMwAD z#R7R_OtBZ7yx>Ltxa)D?a;X_Xb)E6J81YZftFvzZ28r@!x+8fOP8_&E)A-3ABcT0Y zwFBahGrBQ!9R!z@jVDea0;-)SK9sc)iXDYQ>-C}7cIVD6LK&$lNh5OUkeKmqOL#_; zf^`K-KTY7FO|9tatvR?S=KRGb>*W=~rlk?qi>E7Q6`mJwS|4NNi{|fJ?=x9`da1@R zUVL(R;Rqx(n1qSTbR@bWiP4ZHZ~#O$8k~B!Mwie=*U}2ZFMnQraceCEnS3;ITnLzN z;2Su9Q6oJ_f;eceYX@kc*3s}wjCt`GC-(d*hC&9Fq2Xi3RNWEjPMQw7Qq6yW4^1wsSkkM-NZ!tDDMUh3-$=fZqR*J{V-Tz4B!m`~nq=haDf9HSQIn z@ElT)zv`-rqYPTg599QgOh()*^rnalj-7?6}^>9nJ zPeQ0c8aCro@j<2XIeeWVv1hI~NZi4Rjt$wYkFX*^(EDQhtt0GBiNZ`?otMv41PCG> zfy-hyHfUJS)Q5nk%O8Ev+C=P3gidKCUq1P@9`P%uW4uK1G&<0(@s;AoI``Z~HLJQ~ zFL+@YSpxb;tAB&+K>!s<0<{3jD{qoCQk9+3a)q;LG(5QPo&vhf;O2DM>WFB`B%p<{ zS~Sv39rXd}R_CD^DZRwXU@hcCh>?3XaZaUGvRB{H=A66)7q z-y6WFeM85NvJw2Wmq5ecZVAY!fME&hqOgHB*5vN!dNa+O<~=V#wWV4 zo%NvVUFue{%RoEvV7?jb%nXMK(pWw0Ia$lfv~nNdpL>R}C60D-B%WZ^hFuPg8+E9S zF2}$Etr#z2S{*`Q#i1js38e(BB+Q(xkw1@B>_!;5?Z-|!XJx#Vg>%Hc2wreAcXjx!zYVs1Oc_M-s>>WBfP-SCw!%Dnh||Z_9j^q{W5P1 z(M^k;U!T}#GQN8tTlgKqCexKf<`kl(n(=4i($~#0)}Tw9Q($#WYuvSV&510PmY7nT zS&HGsdk?&ZJ8D)LPO+3TYrWC$S~KAm=Eb98Us zU6Zq?DTf#%7zW3FJ}lz8FdIJ+5x^FQprdF?5M^Z1gjQ7#+0IwIG>A2RhfMq-SNQ+U zmn)V^NG}8XeC&nGaDQO;D4N&{}i)v3oP^pr~7|Bl6^#nu!9gBVtK!E*b#1bV*!b7qSzqbt+-``>D?VCjkxY-ciT;-og zA`usm&EI(-8!<~6l1&)KjW$R7trR@Hi>)xXSyOV2HUEU9-pm$ZB9RaCof3$$0UTZh z4)auc%3_U4rE^Zso<`<#9+ITUkqxz$2ONY-2$~ZuH;Dknpy{?yF872G(*Dqr5%|B@|V0sXS0s z0h^9TSG&p*x6?7RZ62;9v>L!}nnu=qurSh&au~&@eVM6Aj-;RIwZ_ad{F++IMAhi_HU(` zaw#+8>b1+ixv4Z0UUymYr>(TBW>Z=#gDL;TP8eavno(J(zAcix!33bf0RBj3-4Km# z{dW$x4a2&!hy8HX?`+VIyaK?6mDUHSENamxmy5(of|Y(B>Lt2#BQrtbBu{%vYNcd_ z9seo(aAV4(52%e?4md5+l5%8-#sYXD4eaIGS_3cQv}C|$N`71Yrq=55n2PG^addP0 zc~jHD{RVq0T9wnN?>b;C%$#&=_*NMBM0;%^` zczSv7n9vt5h`ZmZYE=!W-VDvas4`~a#=;PS30eT}N4b5?M9PIX){dWwRgl!j_M8&7 z%qjp94X_>CdErp{@5VbIdcMH6&c}#Ih%US@1N-XT?gr{v&1j$9&XH7}r{n!b-gf2Z zQAre0DS(8aL;(GvfPO?&(pfl6%Sdt8laZ&Tn>?B*EQoI+8^ywvLCTM5l2q__fwMGN zQQ0NxZXnwNJSl>Q0XKF6HDAZspt`U$AO|sGzvsB$=Sd#fr0iZ?h@z00q-Y&XZNgU$ z%B7h%aMF&qLX#=Wijvr3&(%-}Mim}y!ulWt!%Qn$7SJOk$Z1V~TnP>EfA?VX`TjZ( zt+HmLo*hpNVV~cgKX7FCJBpC6zamUt8T%YKBO&u|7-O3HBIQ0F-rQP62sgLI$>J|% z#*^`o3D9$r3rPK*7y2c*N`?(i=+a4572G#_8=>9&9V-=250x$&`{^S3>!|#<@=s6^ z&**a7A^;PLO}U+rAn@^aC~CZ5i>67wGL>2q@^j8+n4;N4KRLFI;zIx2^uR@%j?-6* zsyQ1ZskNK{f3K8TKytl&Y{=Hw%S@REboGA9Wz(okZc$zJDyCQm`}=iizzdg1NR!9Y zT-Qlp7oFDU^uoZ~|0->0rip2u!2}b$s<5u%0N{9g`D&g-gOVq*8}irCOVeExFk~*N zorFXa@p3=0OyYyol;i)M%$H0SV#&7>Jn5aJ+l@Pa+Pt63f=qfPxVPpvGtxTqz@$+M z5G48L5p}sk%u7nddKtqM>&HaO8p8yL8Gbxk+?6rmtsId7N_uIRivnau1l|%wVVq7^WrQeQepSZ^()VU z9$PSnBK-mOKUZ;?7<0iqh}Pq{#hs>jo?!q%)na!isc~0Bn5x1lImt^Uqn7gStE0m9 zC2w0(-Uv)1FROp{yDV4m5eKq70*TxSfQqKO5*7uNU%80lv0e-02$sDkd2>iU6kvJMWE_IXc2Q|E3O8U;nLiIt1kup*6Ja(GaZHcC zOx~}9SkK^Nz1VT$+%iKHR1G^2PWypKSW}Kt*w~f!YDQx!c%Dkh=&94(=9sbR04c#7 z3UaCbWoYOE@Pv%yn~(KhJ#min1S>p9(w<_*U|x(`L!`2?W>Q2L!u*T2r$$KVbs42`#TG|CEOj4g-3YECuH2@J0d?1xB{~Y zW}fi~xcYX4XF8lm7c7Txu8(0#_s17Nnn}`;m$>xJI;x zT4wX^jD3OORg)F`FASpkfkFn(%EAH!y;4C3XJO$0lKP-90u!8+An-W;2ax+eOz!t> z?7aWEMgqjuP{IesvcU)wv2wC7v9a=yu(EM5aj|lcu<~#-adL5zu(ES9@vs7eeqmq( zcYeU&03pjXk)glQxZh9V0J=;o(F1MNl@NhlTNuK?Kh{dT|JRVt4&2oE9&1D4{$O%MhJodEr%)rM)t{=l27^~Cl>9b1l_l9K zLx>7^^nJ9(K%SnMNl4e^%;+xzkCk(>!#`;#60dy=?q6wAC{jLY5=ax1;-->kiT8zR z;i&-GJ+|$F{D=}2$OWO^L;`hH0CdA)$@cO&fh@&hu{oDaN}mC0btKD=pH&kDXig2C z{r%t2k5J79UEU@ zfZtlxtn)X?D;F!uP|8s*COY1~hc$OFC{6uLD~ZzU{4uF=6hm*gAZ~zvDDqB=9xA)A z$H&~=n#wJfPLGhA3je0Gkl*x2M+4vgO|i)W&up^CTDE+Sr-T#9@loE&Dp3C#u5$6X z^Xf0HwK|>x?ZB486vdEHHel87mox2|k#e1jy;^FT6`%b;6>G;Gdmo?Pc%TZFC@BRI z;_tQJvk_Tq(r?i}RrP#p;ZWd`?u0OD5<6A9U>ddG>D_75-v8UaftLq{Js1IQqEd8YmFYZ zyQ?$bt?XDuyX35&CUZ12TW6+mTNVK+xm2Fu=P|n$0p_B)uB4GCGu2#WA=+*BkE^R`s%yDY$f9Tp&}8IyPmUMZwdnM+VUdDjmQ;ZuUK#Li#tvs8q|b%g^Ih^L0M?S;T< z$FvPQ94>e9OYTmR{O>8`ek$@oT)Go}ac!+>zORd9qI>06k2@Y=n}>h=2DF!-)142IE*AguMnSnCfk9|H zedy0aL3#cU8cZe`=)H#~awE&o9#AEXC1tuy-X)lb!qUSE>`T}|OEf`+2w4ja4BYg} zp!Nw$O&<(y*XEm-#OvV~+I<-;lh;36`-g|*rIHTm+SIC`5|vj~#;?nKMyge=B5#8>6|)YTRqzrw#UPqUh8QrR_<;6GYB6y{l%u|WGwX|#NV>*^hePxB z(;+rvPq@$giPD;7Rk?->kN%*`eS50*S97_;;?MKEe%an@yWW0M`{s;Ylg$3oQ|Xn1 zN8%EuZ4<+nn?tR1J!@&qZG`E7IkGdWw0Bw%VE14Mbr2gzpQldY@VdmGC_Ew*+Cdq4 z->u)Di-BcwRK~dUfQ+$1Sy;9sVA0XaO!KdKyKRO$dL;I+z2Zu%+tXdc&fc^Rhm4PC ze@I9h8n1@L@YUZTy!P{VfA@dAw-h`v{^IQW1)-Y0H}R zT?x24YQeb{I|RAurAmCNE7N1ZfKY4<3OKIEOFDXC3vz0EIjkG3yGlNv8NkSI7!XFB3CC+LNkrHAp`WwbVl1xrg3u#n|>03v|Pz-TG%g?pS`LdQ5o|$G>vB60S(>2$fIorD+MKq z5(C*BFh!UN`mi@EH%DKSdq9)TjM)CCxN!zb4!|Tv6*M5cp;9Rj1x{H7h-UQdRP|9% zV*Edd4o%4%J1STp1o2rRd%UG@lI$h!x+Ah8G7GG%46PU??cb}K>tGOC)ndjWQ^w;R z(ybLkzc*8CHX;RRFXw-7PJY|QT|T~O|3XkCyRQ+esX`L+5?(_B!y;MPTIHYse7UT! zNT2QhRup`F_oVH=ccFv#e@gJO0cC0!1tF#<-c!WTs2)hnQ$oM9#bU6-rXngaUPJ$i zX@g5EPI&4@Zlq9+GcXm6!LbMAJG>>1v7rL#dJGQOvf^L;K-F>Fwg?b#W3)b`1)xDG zrYCyy(g-Z@(XdgiBpeirAqEb>_f}r9UFnja>Dta$Mq;bD)##KhhUN2o0nQ7H_iv!2 zgJpOfX*?u(^H?*P?*&P^-gIn<<2Xkw7lZ6MijsH#9?#q3&q$jt;C!%Kt&o7r9jIEUM62Sc z(ey6E=RhE;4z?NCJTJ&~tf00Oji7;lz0GNx93wxX&pR0y1MQZf0mcjtG4+Or3h9y- zv`59VR#B}@U1RQ3FLAY5!*w*#Ow;AV{ZSThjjWR7q!<_u$yxamCfB^cB2`Si!10sl z@rQK&rbhdye8?>|@omKP*+jiqbO|v#K7Ld|WOGOIOQ7*3T+czmIxGLtNL& z>o1>?J|}(NMn{Ka0f+i9qz#YAvX(~18b_CLV=~4XSQm1ZlZI<`ZaZSLhSc@Z3XL=C zZ3xgbVB_C=($wiCj#>t6`SUJr0pL4dQ@j3nFCN<`LiMNmiLV>j1`z#aJzHd?Y~+WR-gG$@V7$W*)Ilcq0-iL#(ApSe zu0?yj5v`pPkoCcx8oNl)83ByjjDa-xH9iC%!F$Ufw-T9@W1{pl{P?30eBzPH0;Hg# z$B$1(lj+KFJON+gaijAP`x?OS*xB!UF&O*}ENq7Ga=>mvSv{rZFfJ})AVHM>dGSCK zZ4e%b|8N2a;BXE&`bg3U?~!VW}0yGR$1veYAD(WfJX+VTR~n=K%s8_1XSR6I59hK zau2m-ZXEby?$n5W73DFawMMFML+v149g!Q4JRPqT?|uQTx_Mt8FW+7ixRAyNuPGA~ zQ0l*1*Pgbqgr<4esKQ3@CqlbbgPRStIA~igr`WTYEh2ubEb^Se>&Nj*W0oFmyoT0Y z>xEw_fG;RTS>BDJ!hcUg$COcHI{uds->YNCwA!K5!n*X&`P&1hWX$T*p=im|UPg;=-LVop*`s`sFglRlit0DRoU z?3^nxd8tZeHn@LqkE>5AUka4@qaKK+4niBI01VLJ+#6?U0gT5n=JQb|gG#Mgieuv} z{50%K2#?D)g_uvxw1%IBilMJokLR-#5kFhXn+rUJp$|q&@tKud0fz64&rUT7&u_t< z9fWtlG6fLkMP*FPhYmFTZ~>{D%oVATdzqeA;Yt@{VJk5|qbsb8mOSX0PCjU(K<8fKPS^4m2v0`s;{a5X?#o@Vj@fy z#GgW&@CJP(bOfx|e?7lTj%APsE>}rEuP&TZLyV&D?vPNpdKj8Aa=BR-YDkwM>F7X* zI}dEc34F5`@-j!k9uX)&7W{}QN+(5%@`bQUec^E-m^_E?{Sd;R`g?Dz@l;_>F3n!^Ql3o z^gSw3_T_HV@vQsxtL@3J?>@M0?o6Y2v2d}YUtm~d!y`7Cv7fkrUW%13&wuUNPwyPg z{QniX9YsMtRDh+yNKukE*Q)2n2;ulp{R;IiPY>!F65@!CU)jv~yMaYisd40WNN zfW+U41O!@d{IVu?P}lQ^CkxnMjb7gSRz{5-S9V&7?_c!1^>sn7$YF=sll|DuU*wM3cX z&<)R#o{5dctMz<3?EQglMwS-Bzv#inBEs%cHOfUzQm?sAI=lPeAn1h8?n@}&HOTWS zhWiI83iOX4&MHtfp`uBFXj&H*w@7O%b++5mj79y)XB5jH?B~4*R}5p8Wx$H6<$&bs zQDuX7Ae5Vljkp!2IV5HAJ963Y1wbk0_3+X8{}z>sq-=mesFV6Za4L zqk_fUd;W2@11MGYmf9mudZI32cEk(lU4MQo2pW<`>R$f}2G>7&5!lqmFJ>9hZ$Sra z5*sE5DzO49HP^yCc4(zgdb_P-Y#Eb`xb^xmZ-9+IQ+s6HXtzz23AGSsMC`>Sym(`T z`B1pgcw0-QqC}!`dP~(!6VOJfmXvsv9bU<>10Zb`%pY2qXHPf`EW%(HbSMW`Yk9u} z&bZkd=TVJQMjBU|p4*TKGzNaZU|nsoIM)DM@czD<>C#r~;nVs415Clk+)O*~=x3!z zBmmqJ85^D67K0QSYd2x>p;mIlH=RJaaM4!0NKAYmOihTFTTwi3KAKmb9^=e05_igI zprcU$CMoxWXWbLyYEu?;i;l#5o2afsfdcYQS*6f^^OV0LK>v}8vkQgDa7;_M&OlhP za+8)liNE88)+J_nrNn?xA8Q18OjCwrxh> zN3F|5u;G@Nwht0;{KR9A5HSld;m4=t?;Ru-R(~hXpo!^Xq#UJJVO*q<@jnkAPRg=&MZ#MeAhezVd7%de7^P27vGRvjdgJGa4RT{Cc2Eq|@QX5~XSM9-RIA8d~&P6^E414m+yuw7A zV=pM&v|_ixI!nw|BxRi_ft!-;yk%(IY7u%;1Ps|U_k-@@HNaSgjF8l+pabw$7W7~FPpS<6D z&i{WGb32!_XYaM1wF2ahG)$ZC`5~a0a|M`7Z(S^NKYkZhmCK$Xv}xZI_x)V(uGQbP z6I>ubkg>MCjwlA7t!h->RQL=2iW0LeMgzQ)c!w2xKvP1ok*~?@cLZ4Acp=T*tNAvO5H+}hRK#eX{oGW)NwzGdtvaWArAw}? zNj?13VW^MN`Mqlt^cV!HN6NQlNbxlqR^6EE4cI9m+34zBHB<_LpH-KqA=d04Z)f(b zqJ-o;eIbIxPEyNAE^+MzjS2@#ZhO2uX=uYd9{Sci)h_#M-TF~K07Nwd;ek~GUJ*A` zL}9l>L%`a^9jdJA+xgGB?s1v>su5Q+^7`i`t1^@ycKZVNyF!#zmo=NssR`Klr*Cy7 z!`i~STUdyaLB#U(WZ_?cNomGjFIfu7$k3X@*$}`3|`*28R!$SqB z{v=%}(btO(A*5x#G6!n67ng0O>}z;kek*3ig`L~4dLwcTCRIM#hJX|u#@S}&FK@WI zKgyDQ{D7*O|Ev9<;ewG$Z7*;A-w9J}FCYD%tD#-$ZwGnw|1Y;@T^t3^V8`)IVktwROTrI_+OX)auaE&*3t%w*(ci`oWyW7EL(NQ}5yZpZX z%HQsHZx+CmK}Hm_XW`__8-XGz$(Kh48vJ|IRp8n5gxsx5B0(U2hW|ye$3TB9{UIcL?mlS_x;TCSPp-15I*31Y0lLL5 zH-3RUgg$j46~s%1zP%w86@|2|vhYWtZp>pY-03-Q%+q=M8}v^Q<6Ta_P>6q9-x((^ z?!j00cq6>MgP8I`Q1hXX71N$bkvG=Z3%TNflrA+2u}U`XVL$cCGj(n^dNgq&5%D&u zo&ECG??t=+QcUgEIu&VowVOjw@3$d%l`Jz@*%o-bqD9BQd3o zwVwqvt?V9+MpoANHt^+u=(}l=#~wTPGzl%4`SXx~0|i{~K{T>`D}wu5cy`ksayL=@ z&?jCYlRumPu_}?+37U{q`0oh)jrURDz~s^4*`E$H%?^dVA*`No^LZq6#u%qSwH_Oh z;TkJBjXYCwpbq2#Raf??wz`vR_XuIvqwOIDDSmwdwFo1hiI<+hIyjTZRlVt5_ zEx)-?f%5+({|$9DHFX}jxv#u_^RE$qt6>b$>8CA7-XHf=rr00S1=+9SPyVF?M1{2m z{Y9<0q{;635{Xx$E$wj>x{aoj`$Gcky6l(Y`SUj4LL)iwBiZL;=s`twu~1_W3CG$U z@*rrNyv9Rnzn5sz;_*NA>|-(j)vFofQGwO>mol~J&zx>ec10?u2 z+H%-MH)mVKF{EpUqQCfO94qVB3T&pJY5kRs+WI54(mUk~#*1<1*LEY|ppF@24t7G@ z5{YraA;IFDvH4a_t5L4D*2JYw?Rs`n$K0Sbv!&kYEZ-J+)<%nP$LjCvcgD_O+Q!{k znH6)9$$ih>ptISY+NeZr~DB|KKGRWQ%&xu-5p!>wPr&WoI-jM!_%ci*Fx!8wh1(dNAU|IG9H!t8XX~ zs+Mg{)orKo@LB*oghC%XQo4Gr3$^pYA93NpabBCWL`d|>iN@_6meu38?|GR@%kp-e zzg6A0BDp|;#^&lA??D@~IOTnAv^A~h6C!naJ^nt%)nxoq#IArB>1ESI`>C)$To5t{ z1(?CH4uyCqxrq2CWG>ssFvr`Ig_ojpb;57G^A8*`EF@kYsptX0v*!7vWJD3ZU8%8n zYHpg)IBsVUj>Cn91l&4v_SUu_ofuex451~&MBLx+9ms$qX<-n@J3bdfbZ{*3y}TgNT5+iIWXrZ`@LJHS|qk<1Pw-^^S z5oK*uBU0)haTM*IZ?*y4WPx3%v1rQycjc~zHjgTu<#qWMWW!lWtr6cf2bL~?IRgSa z>CMD&AXr|FZ6PX6<-%r@SS|L0!{XmKuV!Cjt@}^#wqwy54m{>n{g>qh_WQAp zHo&7LMI2UTzBU!?SB7LJNOtrp>8^!GUeuWe0Cou{_di)~7^y0;-%(S0nB-AYi`?ZU z{yQ5#+~o)VQ^k#t`aA0@vh>m8Yw_Y@PgQD0r%Cl^mxBi=P~ee${7VxTR0|-3u6^P66$2wYY9K6vds)|A{M|o_&~X{d;Ou z0;@!S1P9=d>u=7BHRdqBG2INrYA8n5lvG7Y->j-0iD^eR`c!55DA=}~s7%4!dL*~o zHH#%jt@&lHN6@6IHzoT_JZg~Gt~swMXQotIka4PsHCiWSU%9E6;LefCj4NB2{>X;R z3lA1Acge=k_6hIY(6CR&r zB%|NrH_p(NO-t%u$;NPV7#sbgIF)8`p(yd6yKs+;bLkwQX_*S7YTzTV+0*D@4Nd1` zyzF=$DdgZvOLP>U99SG38vKMuh0d77)5sJJ!v_P@*20S5!w^ygRbP*|i3j!?>DFOT zf`NqZjul|yd0VB1ORHP-U$rbrF$=H~NwK!XQ7HV9FQx=g`r3am)js4+mad*THf%*F zwyJ2KcRf7(mIXCd+(khyx-zie*U*hSWAwf31}z!5NCC zK9nu>Bogqe2aBdc_%!$p`+Fx(C?qjL==)&FkA*0VWihz3K(R%xpo$8QW_fbA+#Vf} zp_zW%PnjF(Gk1(bu$tphCQSe4mW|^-k`Y@&!yKBYaq^b$Gt`xW7>7s2@n0qE08pa6 z=v{>lzwjgJrFQsM_(UH)km#oEN!s_&)}ysvEO^=nWp+d=n5vPp$fz9>#n7jyQq!3o zIywbE`r@;P6%T)C3FR)(B>(p#%5)c=z>4ZqwEW)fcGg)+HTR#7c~Y5dPyeNFakeY* z_iMvYaFn8G9MKUyrB9ar6ax9tasafVbSK-=xSWqdS=&ew{jHvM^Yq--K>O}#O7k5C zj`zG8rj<(hJ=Z{mdaB!>6`bSgizSPrD|poQ1v~{K@$LnA<76`*_^L25s&#=DgZjWsfnLmw>=%nj~^&e)}VeV&>oU-l0g{bltSit$Z*I% z%=oD07B4_@)TEes+4d%FVga>IZou#Kv^`DTJ@BELdJwjEKO=e#Gvyx#W2&7JL;sUe zCWttGBb}_VIIvG*5mc&o$pUx z!}`%cg>_0%^|76fGYW-*mly6L`e`J}Nf_eTY??gz9vv=)Y<#n#ylTz(zAwO8cRbsy zc4Izg3!MDs?Wy5q13J%AIFJsstfq})LC)qNh={1<`-c5(cNHYy36a-&RV}w!S=0|1 z#8J++*b8MUoa}P21z^oU!RlM=nT(;KR7!#_I;ZhZu&uBsm#At(#%ui)R|FrR#VZqP zU~cPXg0#4^PhUhXd$w$<2;p0>zUze!G9Y z*$cd};t?U3Cfp0uY;&9=IVE!lteCEiuC5e~mbR2GrVuxLGt}cRMh}Jq%U_z(_sIi+ zb!Ry*QdnzTpo3%O*Xn_$`r#5zO-cn4%RJQ6I=S{a`*(FByLJn@GABVE4k3zkaqlSw z2k_*w9Mq6oE9feGov(1TQqV1wJlVt0 z)UJ#bY()CCv)z7M8MZ-e2tvfpD#psBZSv*TIW7%DKylT)7vVkH_vXG;@8T-$v`Erx zWSazu0-=I$SrII8icF$=T5$<91`PIX=9Mr z2(>Uwjt$&NTS`^<07WSaUH`9+X9xU09q%0Y8o2)Dazd$l{__n733}_;mkN-b2qn?LVfatMIxh{1!Ik%v^3`zs#}x-kbDevmKe4S};QSWyPk{ zo9Ex}DLt=kSo`ab+^=V@>`UAU_(-Gwq9%zeG4bk6kp%u?${73^*cbm-{&r>S);(!^ zP_Trt-4iKC%+emQHyi@=E^WphzzmLWwJ=fAh$2V0$s&rT;vga5i_!wvqlL%b{w5Co z>b*Am@vAl7)sw-Ab~_}gvPKLqNDjheSq(dcn}`5$v+uNUVD zK4R_DAJHQAFj($7?g%fHRCF|Sm3%m=XmG~B0g3u=aER_Sm@L+joq-1pzzH?(F}_Mk zGj-LOIOa%)fHxz{LG+2WsBkEiOy@Ne>4Wlg!&*Vv=OzIqi%R%1_Je_hq?(*@r6F1Y+#&mkA zEFxGMdKeM12Coi(smBXTAd|a#L7lBl=`_)W-?N|5CL*b)Pj$7Cz=WY!ZW1;?} zs6OTG@_iUqEg5l|j4~C7G#Oexgw$MwB8gPO57u!E8lvo@}4sA3Cq z34!vo(r8wud%P?>xPQ8NM}u#yr{>O^xlmxbQSD9h5o7Ao3*PCN3RM>_&0jsf9bO!# zyHL#ENvD|{o<)XHLEmX0OkPRRz;*PMEQSxUZvI9udj*40MH zVVzy}DsN9WFk8Rqx?~Mk<30%*a3EdMRj}<2xGXy||5$-}g)yYefOQKz`$<`TM!`t4 z40nW8_e3`I&j&s|W1Vec4|&j|kBxA<$AGv1k^G$g`aZG51(L%8A)xaGR}b}=fMv1& zuv`X4b>|O~`p*wPoGEv6R4J?`fABT_oyaw_En5X)fIVbds6@x#HaC5ZB%&6s z%DU)M(CgGLBbisc*}wHSPw0$bK_gVYEL-F&oJFw$*qq!N7W^&zXCB-^Sw}-rRNM15 z#7*NrPHo$5QtH9W3Us~V=ibs!;&bZu_j$prFB|Du|7Lsr?Lk6_3c89H+J}ESXynNg z_`^;SpcP#Fz?LnDdFr^fd?=lbGxpU5K_4w;!*?4U`yPqt>0K{}l8&t_+cXVNI%w*mczs%MFlAn+O0!XYbhMzyCC8;qyw|0-%RRofG^kg!)eaLh$_4U zFj=?JZ?@W^d8{p(+pOQ34D7`u$p9e>Hh9aUE+2P0O6%b85G8|Cig!Z=@V$d1EHfS$ zxuC!P_oO>|;?&p(x?jc{qUj)uLCQH=vhUc+$2_)=Vu zr2UbvvxY`?MEG^JsT~owWt#4O&Dae0BKvnJ?!A1hz>l29k8Z?5B+C~4eGyp;+R>%m zhXHaqdqGknl|fSvUtJCo`|>OeC|Fqk353p$GEr%i{dwFWiWp?#(cs#M8zv5^X3}ga z6N_J&rkcpi>)5PawFh;7AneuELn~h62>vXqa)=I&LB7kN%_EoNjD@#noNg@`H_*7* za(^uBpFXmGMgy9=&^U3E{fqp?BjxSiypwm6mVp=;#Xmope$Y9fz-UzVW|fqDFi}&)RG=)VHVB?lgtFLx{%Z@c1P{^M1SwIAGxnaKgF6-@%It5ZP67F<FA8S0l5Jwmh zVG;vNbW2A{Gj`P~Uq1#zGMR$q4@*~~K#qfEgT{+~B1u(JQ$CeLSPNhV3oJSP7cTn) z%orvj+erTMa#Ja|FzJG37(7F1pg-F)vK~-XMye3OCdpdBT69L>f7&F#LTQMw8o%dcce;- zl7)pTjli@ordA4`(5Z}bjW;#tln7>E!zlHf#0-1Fq5sQQPkuaY80nN5(kk6`IU`Wj zHPcR($ZCcbu(n$IV--IKurE12*M1jxm|WjCh5Lol@MOkk#yvbE#5LTzbc>bqlc#_8 z^BM~`Vc3KXF)qR%@36KR{y!IZ%ewBxDkRmVTStXIyjHG6!hf9U}P+ap82G=KdPh*5~VFD}K`;od)$5ghnQo}5da6F^h%qWSRVGc)N~LYqQu*L{^Q_;kg@XuY|M_g zmPwR2j~~=-ZIElNNawkcc;VlpS-}`)x^{VoUv(;vuXZ8SCFBsw&mE6PzFVSeCtr1~ zgyYqA-{NggB#dS$;F5UI(c4vfU|$VkGbvNEZ;Lk0yn+reOnbwd}AVb^=+eFt@b))#!6z3My8VWS#RR@SmE z;1UYMFLaO<>)afP9eYVD5x*npPP-R&wMf|-8m`hA8s3HjtfmwYMYg5>aZT!X2+-t< zpJ_QaYSvjmFP_h)yWDb8ng2C|}$x%tq|H{fQ>|x4zM(Y``W(AIk}gWd{8N+u?Xn0<-^{!=7Xr?Y z=mCpfVCNAdH@ud_*(Z(Pt|c(6&(Q%nqJXi28UlG!bjE|(6U6R(-T-q*1v};AS-16* zPw6UB+WTu0)*CX*iaC%|U{>TIN)X~Q)UZP3Fod@Q^fuxg4TD422gs50K>9Z7YZHix z=j0=2N0aC6oDXtrD-6G(A5{UBb8>mk-6pG4OB+=xmBxv3YYAoA6S{f+Mqq4P7_dI+ z)uZJXUX`cHOMIRD)3_*W>Kt;01}C7iATO)iSY4NL8N$;nJgH?EZdQ+RQ!eyS_9V2F*q!|*`Y z>Sxg@9IzRt^OphJLqwS1*WG}4iUi|?!}ny?r%p20KryI99w(yG#CMueqZ>b^vIZ&D zmnPX>`m3D&nBHei9+@z31A| zs=eil3_}k4<15s3)?n4o%s=huUmhjBd%#(o^JiV{HVtC`efB#Eln~xB>u%@* zqp)yrQtBOS=%!X^7e9KJytU;&;+x52zlmPzWm?Qn5E+9{{PI|3r$u=T^#dKnc?|Fo zoq3J0uw>gchfU0XadNB9xz{t+cC+<1Agg9KDQc`{vD(URWxO8eAlB`;PKEu$G@C*( zmr}ioy4N;pwNb93kBK1~?I5a~KrFOA0E*1^EiX|E;yrRMDpBGSwDZqm(f_Qo&8WZr zZ*H7eDkG9SCn#s?j_Ox@9BV3ZF${HT&#fFJz=7=hsBx{75e&`HQ8pL0T)W|Ny4;v; z!Xrgsf%s|%NCiG0!3$oJHDXy6KH{piGgI30k~7($K?-xHEq;7x{{g7RGh z?gRCc$oNjy{`ND$n9V?s*)7u!VaNR{w-`~Vx8T5V{P0T=h2*SM{uFOkPV4pZuZlG- zJ4AI%IE%#9|I4j#KRhC9Q7kzDQJXb6MnV%TYe1u9SkLh@yv1wE8H?p|ZGMnH;cP22 ziH0)dW2BW@_YsD;vts|HUR&ZjFsZMB0Gw2p3r-52&Su`mUAb5ikISa2KbV;1 zI@%qg^xwO#zSyt)<@i<;5$DiDz?L!f^(=O2GoK~?9(Lw#Js1^|t1+_y36-$qk2R9E zIq#9=&zJ>8xcjqcl@s)5{8WiC#ws;RoJ3<5Y= zu3{IElD#}rI5~)*c_2&@p|M&UPF2kzrmU1A1Y) zXp4J6T&?lAaqscA@aLcW9M(z)*YB2c=)M+wCd^wB0(q4Pd`)AcH|dgaIS2)51uFU- zDjvKFaTsU`6nx%zihsp|v1gw)9K^xPsp{u{=a{P{%eKzMdEhBdWJ^j|ci21$#MPl^+_L|Q8V!!ikNA+p{lJJ?d4#SfJe(aeZ{1P2s(-5? z%@ymw_fbDn+^VUHVsg{q$LOZ@C~NB2unoCJX`9+_ayn4m_4bprbqwk*<0uEECxl+z zzuq+IV+%01pUh)usUZbw2VFRJRC1~mbv~OW2MeT;^F-F~3HO9}t8y(d+M$3}vN% z6%y;G;bO9O!j>lW_I;$x*n{;|b0lX{;9JXav~TQ@)znzc7H&%EDAl|^t5)x6E(rV`Td2VFF!ne~)kT3Hd4K<(=u}1$v%+L~o%C$E01rY)V3$Y8LQnE3PC_Ku+f_o6SNK;xKCi7|>eyW- z_qR65y4*y-peuk9mka+%(Z+a+;&ohRqw3$R18;ZiT5~u8Tm4bAF|T0;+AlQ%<~Aqd zjI*m&s-ZGbFEvD{!pNSDO(#7KNp7t(==dY&jkev4ycbuRV*eEHh@1;A(N|k-s0AyB zMilSG%qov_ts62_+nd`tU-R+y#a?uFC2)QA9}O-t8LH-|to_pW^G)V4nAZer)= zzE{JQ8s;-xOoR{&&q`@aB)Ct3{HNV>v18XV>sOBfbE7?Iv#s-&2rb}d&1Q<%dI+!T>Uvh3l8^c zP16+c`)S?-@0H3$tHgc6$O`O0{5<2$p$R>TL+=W1c`R_SPD`w4jEFIHlrc+)$*fMZ z9XYmau1G2|lk3Rbp~XeWQ3JHHn=`V8pMNJFG1sA()AQZQ`QtFHODzsf@NMIe3^noo z5wWpAh8cAh~^Sl)%Eu6`0AV9XZab~#rl$0EqKVtdi;;r z;@QEtY?$w(#Fr@RM~a_X>r?Nx(T(rJ%B!5?gcBa33)`D>eU@8NlhFe{knd2~j=Ed1 z=_q74kkQ4cZ?lZ$sE9R7Y1WAB;JM$r8RQlt{{wQ|+UTRPLf?OJ%bQ~zSxLyhe}sei zLU9q#cLEee!NbIi!JJ(U&CkFFnPY&swBdl(FQ5u+056DBVQZGnm`L>llZNMu@c5qw z<%q;D%u(J_0TYagGZi^P9zB(%o}VGruvs1!f$@LCm8nXSU(LGAOsT(n`EgUXWszC% zxjDXIN)93xPBsQsHVz_IHYNrRR!$-oE_Md?FH}U6psUTTe@AYH2BFFEGa!K|+f^_LCz|Ea++z_H|4=pKQORdLv2EbB?3 zJcYWKrI)|d$ZjwRzJN)2cNd&tX*>p6ISm^5ToyFgvflabYfF!`ixX>J;*r8}&{1_1 zr2?Zcfck6Xabwho8-^d%>x1lCc-PaWPLcxPxuSwA2I&3PBKSL@MI}O&`gAeH|DKC3 zTJh`=xQ`wzc55r8nZxc%fqS89_jmvXNH{|iz2_e zL|$=IZA)iXP{!YhlYcn(&U;_d4e^s%4y@l{kNk5W|B5Bm!1#N`u-9ra0qtYuZ0t8TVE> zs*`nZZvzgPFpvo#D^uL(3r@S#Tiqb_35Ke|FsJ`QBY|7^tB`QPGM9Z37fs)svEb4T zp-=k+ru4f%&S?~P;Q8|GTws@-klgvR=9CP_m%D>2IVo&TxN7cwZn$g=vIULJ#gr&4 ztM+OEd#>$iK8)OX%7mreIYR8*?(u(}G&)c&RMRl5G`EGO#B`WzjBx4ja{9ulmKL^9 zK^wf}iGa$&2Xg4439(`XkpOy&*%Cs4vD%v@+_qbIB37)L?;E;oN(swTC{MI?ug1g+IE_-%gs#ibem(^u~O+C{X>R=^=Rk=J~O$_JT}ukL9_ z)5kFG_6G&3Vv~|aV;erx*>iB@o@Nh;G!>~cWNQY? zkul@gKGmD};GlT24!!P5Ri7p^<2s&~i@EN8>Qi<--hfEBgUOW(C)cmA_AaluU>yfw|)o$PLn&lUCV)wn1X+-{&|$MoImIpTa* ze0we75f%eB=M<3%G75LembT@(!?zDeeZkZ=&C?FanH&&{sE_) zWe<`^z*){A;;Q`2>`NQTl$tM0Dg2~ybq3C{kpPOXXS6jZm+flr%ghvb9uf?&HTYwL zbHAe6g*oO=eWzMs{R??y9hW3G}pO)V?8}U8lDh{ z{CkKAyj}Nql;?AEK^UMU_)hvu*kRaAD_e^%Tg#?joKyuj-TInk$P{JEtT<5*QeqH_@T4PH_uKdh)&EUy(w*b*eISM>Mv&61e`#Zino`GArTT&x&2XxMX3cmRhvK$7tS_87fw;iahU85 z?;l7x_J@r6dM2Y}q@KS95}%EJ!TgFa`4t%r-Ai%n^zZhL)bwP9@fJ7_?QE0$w}~YV z6J`8lSj# z9Wec;H5EMXEv2l92ug>CDJXqQMG;x*_R0N%D8_FIQFyRJVYI1=>FGiz&6Hyx z_$w%&Bg2KX$8}&MUVvR<#}+rq?OyP$oSb=w1hzoGZL(9Wh@)klu8*6lgmuiEj(0m( z%!a5@62_Dp8GA?Ta`0=0ZoGZkvRC62oQ*m5LAyvEGow(U_)rEOHCEGe_7*W`r$*LM z2^RO!kWIE=YQ(EM2rLEy}}b0?1k^(Pp&41VBFp$g&I#-n=6{U~>N9n%EX zbGZ(KZ#F0Ej>8kkf=i^13nCX=u$Ssq+gx#kr1Ypo{HYV<4M@>{wu_*du4c+N=OEn^ zE#bn6EgO@@)bcd=ln>i%kvtiZ`asHxOJ>w^kt*dNB#h?M+J#s)>KPEJwwZS-{WQD~cpN+@Q4Qib^mDsprH-#n#e_{ry&79@&CF8mx@_bVi0E);_7mCM&Ih7Nc@2+f z-?6{@Bh0cKq36I)@=I!b5raOibce(w8@3Ulq%xS{kX*D+3*x?2uGAV;y>NCXb>fU7 zu#=V&=o}n^=g=tOB^Y{YzqtUcg<(&=&QgtRG<)~;K@waO%pxlnp^9csw?&z$y%?I) zG9UYFgtm#PV33am(*^wyTb<>&doQMs74EB0y1~U@8SQ!lh!_KQ|WPLk;&Xlf%JKyYU9SN0zBGU%y%n5=TTn4gwm6 zRO#0pI0RR=T1a4aEUHtFenK=%diw1-7OEem!rx#G3~8{|zw%hGQaDT4eLhcBZ{vOZ zuQ+{=+xV9Vq}D!Qfjq!;>tjD?p|)0oU%*&>y@d-(l82@ub!1h--~(=4|7#aU40;ux z!SfF?<7XV+3+po-5e{DK7Z49`6q}Q9g`1@C>N_fjVXjBSL2<#?;{}$7~(1l zlzXSi_(G#3WK~Mci;rno|2f+Sv%vcMpVSa{r=Wo#*IOj}^jyH3OZuUGHTIJAfTq4k zu3`gk_$$$2`wHZ49E%z#Zx#}bCoOsTWkbw07o{af-4fT$k}I?+Qh!r-%)_Te!wr`> z?Z0yva?H;8gUq&dKZ|?mX6nV-0+Y#tb4IXd_dLmE;f{ZQ%ADS7-aEoh zxKk{O?9A;mDk}it&_-SA`f7zM)~aNfBFWANoW@oHQRBy-#L*pim|I~$&0SXH)s|p> z?Hj4U1)=??=U%d6^Xx%}1co`;`&eP%59Nf&n+}obzbTS8+AQvecw$Z8O6d?{sAdzS zWs|-d5}RErP)UUb+a<5wFRIHd7#XSs3Z)FhD}rx1dJnp0&CpHj;3}@pvQSAYI&~%L1%9)eDJga+ zfY)n=m?P#Ti^(6oHCl^8frSZxzi6#pf21V}GpbFMlA#96LTG)dAw8HD#SGtkr zlV;DaoNoZek>JwK6TjQ3xRAK7=1J?ziF0Z(8PrCcS4qI9z6W&J&gI@UlWMnXok7~& z#F^LDcT+8EV>h+F`&u-vteZ6M^qo!zt_VHh7kuDCc$GbdL*qDt``9*+!#{ zM&zM0Y_#3W_56}iP6`j{1E;o}h7tWEZp7&>*nu-Sfom5~YT+5~R$*Ti&la@&>Ygtz z5hbXK3t*o}HzkUL$${V_Rm$Sw_~l_iDL85HhV=B;7W2QSVCKsIoPz(~;)wshf_WOM z0zo`;a!S=pv;gAUQ43irwu>38Gw}{>N+@NdXv@r z6f$EZle7FyI{C5qTgK=h=+_da2qOh`;u*x_AvnYwNuDV-CTz@5=O>b9bHgp0VZ`Fb zl0zfS?LdNH-uk7L(k;I~b*Ve|1bcWS7w0~Wo^kjS)(-Rf5h2R_uZ(X(j0*_gz|gsB znFEInZU{+(rxnZAEtX+H?!aK%Mg9GEE1_eTikr?syAM213Il^*^=M2$iP{rM(!*%< zmr^?<7Fe%0%3f&;Yijk~XXbhgu@sSzhOh!b1OOy#UMG1o6mBInUtnuPjU)Kax5M@!u;?42mx z$qQ?g*S^R^HI$`IH9-|0o@fMwSWa>LDn$0ym?(z7!m=w~MSnz)uzE8)su{_{Rz1^En(~KXoVn?d><=wzmKe z#*@YkNvweBj4#xI|FId|&5m+tbJz?bcu(WvtIPIxQ+MB+oUO^jOC5}}*`mEKUe+;j zq#43+HS9=S(tMT@yk;x)NPr|pAeHyd4_LIT4q}^w_G_A2{Jouacid2WmBlg8-|Ae` z^eB{M#U@X?RjE^!^QJryQN=aGl+p?c-q+8o_k&@hPP$aAv|+32Tkv~fJ1JbN6TIqZ ztk#|f^3SvtMdT7V(t;GD=)!5>P2kPZ{|EC~z&+HmCRb< z$FJ{3=Iyu_K`i&HG4sw?j}!!+uS%g0CWX;>9J6Kc4KE{ob>-^6{ZUrSzTfrriwXCD z_TQOCLi7iWzKBWK)}Toi&e;8-&8w>yFEn7NqK(jo(aIb32F5C=?Z;1J5UR(1u*r@~d>xaX(-^Tk-3< zS^eE7BtBeBPw-DBUA1*Lh3zDpX}7?^5n`iC4|h4HYMfcJ>&OfF1V8z@>FHv!Xxw-N z8!WintcT(nOqS5Y!v)0scckqd4+r`=J{3&ijYX+fib9$dz356(p)Gau08d@9{L;H@0OO zXVOHv=&09DjljjVB@sy)+0=j}0+KqlkV&C&(fQ4?;-{n!7&HH8N(7~FZvR_-eU!3X zYG$92?!yd`?0Vb*65G_n^l;E!?$^7{Cbis&&3CwngPGVw-P{f1qadKmZfsPbq zf)NW2CQ7Uy+~2t4Cx1HbU#Z?`ktq4Gj{D`T$?69(n;vr|g5yieT(tKkSZS`4h>m-V zSO*K{;_o&3B^3`PCgaTD+cYG|GHCQna2spTI;Pu{n!?4%4&90a;FZFc?`7>9%QpY$ zVlKprc}6=-yZXjKs^?lA!~YWwvAJM_^%5~BGlGWWNLPyIGxCE)wTr=_omJ}HzQ z$4LQ#5N`eD55OKqYtlG~ny4XFY(tQq@33&Fa`dZaO-#2+b#u(6*Q7g@o3@7|E%lZ$ zIO);<(ds;<9afdLEH@%Xl(eZzy$~2@jL`CQ4eujHaw*4nW6I`4EB$BuC^kxs9xCpw2nj**m<1ip z-n(j3P_`ah(adNRU!_XA){e=dzuFdhSdaVw^0Eo}ZPBU>?E#)VvjXksRYRS;Q#$~c ze$toe){dql6`8NLL^6?QZT>cScR^bXtq{D9UaE2~IMKF_LzXCN+LM{k-`S>1{m8;i z0-~CIh|sfNtIesk_UheBoq@)TAwSdW06W}Ay&5-{Ng#hX@GyKVEoH372?>K8DdL40 z>j3?oCx6Mf0d70gY0JO+?DOaF_eIybN0u6XtUWons~hQ0KhUKP~zy&P1d z)k00L!geB?>%@Ga3~8iPe`Raer07@Nss$wRe3{9Rh}m-o0oU5W^_xxdnTzs%RD+l+ z6aHF^_m*B6LRMhiWyNV<_cD)xQ~j2yiZAKz&JPr%!zAC&a42J9f=h|F8+%}i;M38` z%Lq*1#bvk;2bqm!?N7;!lJV6x{7Z{Gbw^pF5Hw=8@Eu3W81~e@oUS~Y2oYYE2 zWte(gUs`#gnxDf_q6YAve!~N`iqTlyLkXSnN-frnsTC;@e{{!apsq@6CwMqjG)L+# zclj+Wu>H*i{erEc6sU?LDkdOj*vOS>IiUkZ%dK_Pusu-px;bt?6fugTP`3QRoyX3s z16ZT`nC@_2EK~hZFaxfp%Ur-F`NflJ^P(DFS*Q#=l3eL;MYG2WFROr)_XSc=#UZ~- z1HVmIRuCRdKFtq|MdJZduW8L@DDS6t1N>*rhTHds)Vg2RYOfCNq~&)}BP!^kI~%jS zNf1;ZQG`?UEITzN+c0pIbGPVN9d!uw?epy;ZriPOa@q@uM78(!#c@miP50t!@z{~r zzfCGazNv(yjC?1=!F&T8K4S6ajQ#L@YkcQ)m!x?D-qt^~I86^1o1csEYcKmEPCC3Z zfx1PQuC4cNJIexZA3VI za`Ur=Vo!L>L%9P(Vu!)8Vo-uu_$G8${*T^a8XtwO+#fo-9D!Wj*2@&ggxnKXvltPx z6w|_;z5@+w;*6a~p^bd-jt<&3b=tYbD~mFnGz?IlzlzSf?m>TZj$T1>CGk~Wxbv#& zZ@7DfvvxU5N{lO3x%<*cO49xhvOSZLoS@D!Pl6=f`M+e)PY%Pe8M= z)G4jsH$n7`L&Eg)lf)qw)buRv{(GoOAr$qIdF*;*n8Qx5l%YTdcPltwf51_0Qn6< zoU8C(H352yUHAXjkb2Pbzq%WibSD-VT7Zt~J_nlrw!x3(FbqnMZcHJ+9o+rI^#md0 z%3hWbPlwDJpSI}&?CqRZ%Xu$^Zq;bB-`&%Y?%bW>t-C1M#L!_axXZ&~XZrr~W$G52 zq!cqKqV6|m_a!r!$hdb-Sb)j`Zb{en8z)v@-}OG>@_F3MuLbR&QUYN^iL=!nIKWSE zP}#EVt`A9dMY30}w_tPcB__F<4T_3lYW$y})Z~M4K!5ivjZV~pony5dxh|>-M%;#i z4o?VP!jwWfiJ~|$ObbOfs&~924zT^xjjTOUC@0b$@4OK2Qdnh^Z3GDjSFE=voN%vH z1Kw?}x=w$yUkXevnzJ$vrdAR5IY6_WgXsd$7$sCOn0RVf`#t9VTf4$rB&VeMwgSI5 zJ5Wdc1$$|$eKBdDN9HgOm62ZgUYugT)3t_HYg+gG(~sK*LwbLbH&byln_<6Dx5rLH zh_TbXiP<#*N(eqggJj~v$nsfEO~1U{QvV1xHM(;l-e-&3DFQ2k3y`$G510cji>>zy zU;#74;yh;>w1ler*DHz>548z-0%X`8wwsu}fr2AzH?+v*@D$=I`E4hGfP4r<63mGf z6yPx~y@gEa<(iQ!XiCB$0OvWYIh5~>Olh2dgA@|c#7%uAlc>{$csKWg8j|3p4`DDP zi-FBmGQ0(pEb$3dv)EI02N-0g?G>J)dq?w7_s$QNt~7Jj8<$H{u>=hXxc#!GNY2d0 zu*lRteNvg@(n_iJ$tsi1X?tQ}Fy$KyF(AJ8BTJ6XYTRy9{nt+z-x>`+_8I+f+@str zVM(jt%L*p;hZID>a1J0Tw1f`av!l|PMXNqtEmODRfxY+E4M4e70*nH|D|rkyKr9b7 z3^y%o1?zeg^o6;rM>{pIvrcnhHo>ZEllL14*HOyQ_qOC_5UnArS^@S~JH{J_Xyw0T zvu3L;gAnIU%S_uPbNV>;FQ8XR;DJmkb)30a=V=uE&LEZ}GoWvAqvh*AE`iVm6h%Ti zz^rG{mHx4Urgnln0s!!8bLdLDHe#Q2N~^R=JvgN=umRSg85`(3Z#5ZD9E|CRgDOHV z?PsdC#P64n9qiSF{LIt9lAf}GBY!$I+dGjeR1W2zKD|DWV32klo#mH|Imj{ilgqQ z+Xsz{&AGPzf_KL=rN8ov&D_V3d%%8XFe)FVg=0EQ{6 z0kj>uQ3K6?jlHg}o*teKt#tFCQ>vd1Pu^mV?`&yK0j6#aPZu8*n`yYaomI!Raykmc ziPPo=g_iTTj&F4->__{hDC$?)8HW}^q}5l}aEYh;^tZgXhBw{GG%LD7optm!rUd;3 zxWx%-&UtoVf9Kj%2r^Arnza#=x+Clr8<24 zhtH6b0PdwtvIvq|QNZz1Ey_zPhWP(hjL@x|!^6|q$xr9wmnriZKKNMMQ`n=|h<{ya zRg2%jFH{jfd+w3WsS6|A9gmMIFD#De`ez_r)jn=9qIaB1fc<&_L&$)dvHL~ENx=Fe1eiaE(L#tn)4R`XRkFm&*4WD?r-;ulXL#1J9JD^` zZJ3aJB4&||a}Dv}H(UDcK4X`VW0dgUkakA%G@zt*BB$KrUR*zp2!~&~C;tC%ibxz7 z*p~NU1qtB)o6Dz6AKz9$NauIPf(B+!H=2>41^l1X!gI||5nrTX4%w~%`!sVKMOD!g z`535tKMHP?nlw%G`*{Z!RU(VY7z{pn=07;0oQ~+vC!mn7vhXfUNzWo*7H%Fd1*}^U zGQWJEWZ4-?Dzt9Qh#!Dir}Um5mfs&RLO@oh_7tzz)x;8B5b`db_vA@WJTx(>x(2{1 zkubijmo&%_2>Jnqat3s13!YS1i}n7&bJEb$ORhh$JnAA^<^qJV!n({B9TqQdEtQ8Y z1lagIb?%i!cE7RNW$TaqT_ar@td9J>w){jX!#F`bR3a2>kJcrrZF#j#s!iHXuq_nn zgN}=lTNu-00mvk9tUdGuz(&JkBn|+Dsy<}aUTVZki8_^#Rk7i;aL71?>L!m*Xr~>4 z6j8faPsv}YLKf7t@*r}NHv8c906pz1nM#kz`B=$)Ghs$xvv-|>dJC$=4w4GAo8YIe z;8CirzfkUs5>>>fp;eqTk`@MwE;%uN>zHb;HE%mXMz5}G!Fg3Nsy>iMKLe<&gxa+; zGMa@Y&b}n%Z`VNQ!I}(s6&))SXlDx8)dw{!6pxN#Bz<>u z);zn~ygaXL&fhcpTHczqBk_w93@IKNjpT*5n$;yJD~j zW!4GS`xXt2G?dz2$A=tO?+2tDdCCd1#VZ}vE;aQd@g@R3W|IC_{#_eoGpr|mH zXokwm8)I8prD|iojgiPN43Q2&h1I~;iM_wtBfHO5DZ1a3&{@cCyOlXDrKmo4mHuw} z?{Nvz<~Wyd<6US)L(ki(;mf#H6**h*OsBu9#Tqc$1fyQYHv*_8tfAbtnaLRLD7qIT z74tR(Kr!!zS6QqSUhAPR?)R)cv{#?QDLmVIt=yS@KR+Ns$aA2vc}OL^s~F?+Joe3n z;~{$l>F_(#l0=5AXxxPhA5^benV}rRfBFA%m{+m#j=G(xnRBH|9bQ*|6UU}Ex6(Zw zJ$SBfT(X%TfC3CcZ!Ql=4Kn|{r*SeBBbs{gEOxgKnz`myx#ib~!XQxJg_R&OT%=hl zek|>47!S#%GPLwRib&!PSIWX05>r)0=tSA9*Mr_qeP> z4yuZGtK7MK4NU|20Dt|yGEN=?bqkJcALrTgY1UKxK8hbnp z|7I={&SaqV2S>RwPSE;iD#S+IYJXZ_n~vK!aAW@WKO|-%bE#l+cMm=_3gt#O`PB+4 z1_q(bO+e)N!dy^r)4(*t@puzO5B_d@09UyXA{V@>4bv$?X2@ zc%kJ9&j^yj#Zu0%Ojql3Yg73gt#hZptD2qr-CEldWfbE2V*3jnqQ%Sv6VIM|?k-Uq zqeRQP!8ei08LukdeE8IY&|bC>QwKYp1)xY4*a2cR6}9Heu6Fy6Rrg3jb4gEyDPtuD)!yt@PVPOPP;13`h0!2T=p>_MO+IC)Tx`XlInD@>hr|i;@ia|zD zg7>TvrO^yQU_haXJwWckFDHSCJ`h`%<-^hgffdoycV*y7(qwWvh44AK7}&UfI1{X#46IxnMC>e_ z3`}g?M9gel4D3HdVO41SbVn*^u=L*;(nvpK3+D7XHz-*G7FK2kCJxU3FcmDU>^}}l zj{h8$|HD+Uv8E@|LJ_Cm49lXYo9!qd{U0agkArg82a4u@|IMizO7{Pz4LSZ7kl;vH zpH;w2chVN70W50EtL}3lbT<-ky4UrrnbiDp9xkrSQ?B=~w-f6dW_2<9izH8&X zYmMikEV{RRSbhOPb+~(eb-1hzCY{mxpDY^F$N4x9NTloM(?9!V)-blP>)A>7Xe#q# zjoTL)S>1R@qwP}4{3$Y=mLr{R%sCdR=)9zzfBU%9nTd$oRkayP@q~ix&|+w0vpGcF zi#IDs(!ri8hen9oFto$-9QoUb{Ua`_${GH_j=haxWi4;Wnm{^KU_C4H^0ZS%#$0r6 znlV%W@R7U91m%4W65}u6?IZ!=)Eey|fo7v@;4U%uz`l=!AhD!*A#-*JBk=`n$|EuD zHHI46={=`q?);&WiH30*Sv?Th7M&iDGpPAWED%V`oZP=T-^HvqvfCE-pXK=kaiP0z znxttc5X~cp{EPJ}5DEcw^I_ykPXepCxRm__Fd=&!S%xn-KEj=E>&-X{#V@lKl$aBM zGKp?c@Pv)?WIg)?^e?*@H*@yi2SUvl2)!_+R}rQ~t0RYpo}wM9mlv`m;>HlKhzb~P z%Y(!a5kd~g5V2KT7L2~LXq%M=OPMZ7SLs&^{~%Gn+%gxt3=DZUVb|-(Ve^y)kk+XI zU+B&E#H-W#y-(K2Ed3EnfLGs#S#G~ZI?1?YXV&Y{{rTs84ZMdo{CmCwDM!9&GI$b_RqHxkZ&$RD8rjPiPM!K04{^4sie-oWL{gnrbypeyD=vC8c+y{c; zBzhbpz6&|H@_DEhEhLdu`?h$ms^WJ5B}=39tOTb_{XRGcUOu5K9TH*BDJ!nK7#E`f_-xEM zwKHdvz;TCMWXZpd_8l}apvfj9xq*nrF8BW81n0oy=Q=b5Rf552u3*@c>K?T*%FLD@ zf5^hE+FPQ|Z_-Tb;EIlkRiusUD;xUoJ94VkaIrCRr5f|{nb;rozvCKiIdU?UB{=5X zF3|*k}a^gS`PwLe-(LS$z`*uN@ zjr%+6XKVRcDvem7kxQTfpSTg3`gwz3&Ro^br^If5U~Ofk_j@eG#Noq>cmVhQG83as zpbC9iue426T?!bs6(q6PcbVo5#6)tXS4T=ueQ(Rx)3)(!`bEiuq5l~JKyaJac!pTA z*kBzwfDRVJ#TGAuciCS+a2Z-OZHv|x<53K%ZNs`guLkD}CKMLiLNSTMm^u-~L8(St@%SX+re^n0h1e6+OaRNFqR#;YB%9mbX@BS!f?Xp|tYp$hFsC+Ftl5k`UU}W|X z!iVgG0NW5>f%a#f_`BW!*eC}9+IxXflivr3yNo{D>;p?JY%-^Uf2)N)3jbBNRGn`A z<*+=6mZelSPNL<;x>1goHyYn%T|m_&a}HW~MIqA&eJpCl96g^#KmJng^h&RbK6M9b zc@SC-zMp-#tHyw;_ffE837qdJATdE;?=oiRP}ThM9wu8b*nLU@@Rfi_ZfGb$ zYG~1$ZbOrHOXP{3XYo>*0s~LEE;kR#5DlYu5m37lU+K=WGq6(kRJicb!3u^6h8N&% zvfTD|)h@bE7RP$S(JKCi`8S3eHGSpI(=yoF*~uQJtG}k|u~~ie+vjZx!(?>eD=y{P z5HQ-?RxmlJUIXnBmz64+_$z3cAT!-c2dt5yoF%J>>$Iz#CXFSgrV4J*TVXjG>xUa2 zAGGjTl&K>SIg$Y+tyBRb1P*t57TO$-cZ6-pa9xaSFfI524#_L`5&qw;)-u2J|4z|y zr2kq`zyRT7NoW3$qXB6DKb(6v8Z2DSV+@C6g=AN}p8__1B@(i_0;n{gu7~C4Kp=7z z^Ul(TQEpGLBu`J+t!Ip0&qlo6e?z!G@TaS@sefMoRbC4a>d{LSgp14&g6l`{#m7`9 z{mb94$pB04srFw@z|V!O6#s8^mhSD2V#AyXP(h5JfQB9s8N1LX8!-Dt+M|*!D3_ysuTAqRH(Mo@ltL~M7X3u``L$u4hzq|HcyY4jluS(yCLYrVL>e~G zg(qI>m5G6~f{n|xO)VsC0#`H$N$KA^QrgOzfBH+7*N)=io^P6knRtItfWg|itvUI~ zxhu})nOfGx$bivs>P?+w-gi}Q$}J0^S+DXm?^a&UCHo!Qw5gUsg87sT!aJsdZ6};h zZ4}{YkLlb3E1L+LJ1rO(c7BO-BdpP0`Vf5NmX?J=82T{FG`K5lcmfY4Du4us?S~ge zXhyM_$=8eU_zX#4u>j171?2gAg~IuOs007fTDhn3H#68F-J%&lcZ<8; znjiH_H5Tb*Q)TLJppvFToJk9B0Aq!Wk zakVPq&KVp0vq;v=jV|zxEIf1o?d~YOGE;HMQ%k^P(IpRu6_&km8^)6z(5lR799tN% zdEM0?{P3jA$~!WK`D369qL+SLU#BO2-+$@7nlB)cp$MThCr-Y4#S?5^kkyaax(o(+ z!{;Ioi*8_$R0r=E?r@&o7om5u#Hn9Y_KlN*Hp;%rg?u%4ugz?0Xo|If-PmhX;U@fG2}RuaxBD)-_d^>#{Ud_ z15^Cy&{y?zF?rNo@M+ z-ciFWK+aGX_g+QroQ};5tQmZ5RDngC3$98*=v<5M+x)qYsyw6_@rSnbJiC*-@){6E zAD*T@xvirqS1s0{eMTcszLd~qSLtZkZY8($+l#(tvt+Y)T8tcEGp4mERvkW?j|jw& zjx^EiR3|K46q4+$!A+Z+@Ap!@;l!|fBU4&Tx6&5w?uzvh$oRj+#laUeIH{F1141N0UaiWgy3>LqTSlR74^4!funh- z2LEl0A)(V`9^Q|@;grQAswYnZOb0= z=4N4&h<$3lp)Jgy2$ok)my+vB#8$v- zu$<>3+-Y< z`h;V%H;-e$x{Fhf+jb5-AnOx8Dwpl;F<;x2i0IBUP5AT@?%m9!J}%Ke!FCWL2$CC% zFDP&)@RPC^R6AA8K|4ciy2Afz;rQL01QEP1z;h?CO_i?KfK~aL=(uU)XrtL`n#;vA zAW&X|sa8D$AJfCz%;GK%e)5B7C_{J;LOt(GH5(l;Op7e)QB8LkCYkgf&dPb_KJZ)-QBZ}u&*;JM}{?Sb{h$klgXNi1o zl=YCv6WZhLU4OY{x_avalA6dk@&8P3blX2E0Hv9q6ae(D!tDRdB9tJ^KQr7* z7QKtr23QmySVW%^pO@k5`1!7ZWU3nyG)Um*VoZH9B{C33G-Q+@&-u3JVL-IB=gsm% ziT%p1^r*K9lthS&=iEb{Y!w298o;pUrW75O3DuI z0K__B)aU;IMVjilX`!1xWFT?hU@#J)jG;@Rmc{P+ix*6{E@u&=zCj9jfCRB|<9z63 zV>wLOys=R@xtWGWv*$mIq;op@qw=*{MiJ)zoW}XCA&`oAZFC8;(gfUbtd*&dJ1l4d z5#V5$o>51&T(wh`0qftW!jX)}zhQ>O4C*a3D271{ICyj_oz*SZ8R;*Q=Vcfe=l}RK zH2E&UY&^7DLIR}DQzz#X0VV73j zIlZVT{SKX~u8E`seBQ2g^s{D5K-m(FuLks;ZikCi>fpx8yp3;sI99&Pk)cH9c<}Cy zKAE-a#wLg6Tlr?%IR?wxht1Wp?;YjpZuK-MCh?CH8_q$-1P@Nx0Nrupf-6Y7(S!gB zSna!Qa7q&0#jJO60rDr-Ah&IH8Gm{|bc z;KKLr;shq6V*Cb6dKs=g`W}s7PVTDmRJk9OPG&njpVytK4PUfgf94IT#BdPnHhRt} zm+6?7r=XVg58LPgph;-fJ-I+(8u*7TBCJYoS`j z&q_A5y&inPmoS&JOKT-13ny^m2h>#$7a2^De2M7=1h;vM?D@NhgPWG1PGgaoMKHJmsoQ8NW5W+4c2%2N2!_Xt97w$mTA5BG{WrL&I%Oek9ird7 zCB$##U{J3zGJX`w@(c6e0q`3;K4t75{phI(Mb+PP8H`62jbR*n2O=^ci>FX*T#5)B z0zzsNlZ_#NKngOT07jktY0{EXv?zn5tyzz#(8Sru=ND@Du!gfG>sXEzj;ZyrOg3Gu z#Gwj$iN*FB1G^HTm}h_`?*cP1UuIRKeH^m(bIJR*oy2gV`I|tW zSe%aTj^iK^8`c#5uOM8oayun!KuK7nk&Pf|e|`A0*|a0Hz@Bf+Xo^zph#s~*8%DbL zI+->h;IZ5~+#n@%E5mAtleOwHGDb|9aUCakG{YfSlH%j^Hh+G(CN4i)duPUUQ_481 zZ2EA{yFQ1RIpK@_BLl2>WIdIFv4V)OTKRp@AAF`g=bem8vmD`TN^( z=Hw)MVI>iA)T(m%S`%VPFb|36sp3u?z^z+&`{d@*oG)~3G6(uI1zeI);A=vVk8DSJ zZCqS(T-+4%V)>!ixjX58@G|;M-&S_gEWtOJcBh}3=JG8 zlx*AQ9`otw1_=a=%<@8yUC$+6H6)u;G1H^_dHserz-Vp^tRKh%#R)A$PsuGGpnQv! zNVHNmP;f3w`Lw+q!4}99>+!?PK{Mgbp%)-z;-rD~0QFM;TO}c|?()*lCoCw1IZm3C=~rVNDm)JHuqdx6Q5c~_!2B0vO9Oh;f7d54bNat?Xc90c zW@gTG;5P--pC63ql^E0cmldG?Cx61H_f2#C7X=rFAVEt{7{}tq;bvywX8RE^xtJKZ z*qDh}SUDJ&{>RgA7c`jZ0(`%yrd(+f^9W&Rh{vrW%D z`x!`obke#r1?qIA)t@$S_(?j(b|vbkq$+5h%JbPj9fq61bpJSjwOGWs72eN1JQL}- zqb`fb=Yag6#FWE%F#Wc<`CM--nfr?-Fg>rm{Xh2(!4W0!#D#ZatB*;qNUtD^W{*do z$4+?gKUu#bq`6+7-_p%jC!!OYmVO#tj{8tab74|bob|>?1heG;*tf&hTDFv`C}I1i zs%fbGBP2B!gRxZTP-nOTX|J8N^DHgP#`Jd+2AA_ylk>*!)+~QBVv<*+Cqw+oo9kuL zNZigF+YHUtS;P9|9HBWCm?;;Z$i-HQn&3KJtPD!^Udnz|ajIA1`xMc4RRjrZRGfem4H+Y!TNIqPJ9N@2P57*ZAELME+qa~EHx8ZuMaB= z;T}^Ld&-=ogt@a*SX43^2Zoo)aJL`RNxb~172twA4sBRGBIhq3wEO$CA@ldMJj9cpmFh83@tPt#t_rvi z$exl^CKc-yc^IHE+NBnid)9vL?M_>;zM2z6Hz`Za!?q$MNy*Q?SqdQBJTaM#6$IHFRdOAm{CBCVQQ_%lXV+Hs z)<1#-7~UOt5hscA?WgPMO#p@(wh0Pl@9W3t>u**>W@qSg-N8a9uuwa}LXQi??xpfF zNd!S`j8)wRz+5B`y4ZnBzSi|AA6eoxGs_}ra(+L; zH6jGUKa?}Ce>;#l+|WOdCGX>Zn6o4)AXQrq;ulFgmZsuBD;PyZriln6QFF~vl2%S5 zDSPTjqn&rr>w_qESe7ba`iIbvWR}A?cuQZT*cS_Ib(m;a8N!j@FmMRXUiG(H)<+-< zaLAE`UD@r#8s_D=$hIBiK66SgO7c}icwV%0@ z{c*Z;T_fwM_LK6BaLW7HJ_*$)dw_uP%LI) zqvf^K8kZ{qf?w%Fn)H&O47pY%VB^M*{?7dP{vL?)P&Dv;%pG+LdS{7;NRq_*YkbJk z)Uaa%*p%2CzKcl`t(Hbw-}{uQ{v)J6oE*Nbrl!wtLFRd=6<`U zO|&m|a*lU<4ak;Zd|J8gix3X-vx;Bc#(yZ*?)pp64dO4yl(juVTSZ|t9dCJ5LuIp< z`k!pM4fwR`V5}!cZN&p(!5|=)K|ajgUPK-neS@AC#P@}<)c@UH7%d973gp1)y#t8& z>9cwYBIyHnKX(c%M>_KW%Kt=8hjlKju4B!Y6Cjf?G->+Wc~hqZU>@qV#`I!H@j^QV z(|^BBJMs(!Q>4a|iq;}42BFtP4XufLLa%Ri&{lAt4X^K@>_76h@N(h&T8@Kz-K4M0 z7w)NV%GU2o5vjzxvRj{<0I-Q3AD2hh)@x(415MmeAYu{TD&6?u+yGtzF0`jZ=DT+~ z)UlwU>nL!AFngu!64TZ=lVk4LK+pp?rQa5!FL6lx6~t5Iy#*`NZ=yZAs5p0(NSwWA zh0W%wfDmQ7G2lXi04gO=GmgGtTgbjxEBME3a{#vl)MMskt5g#Ol+ex|25c!T5yFL7 zk@cpQ_YanGDpol`1W+>-+znZ)`bv@&a++aAkHQQNrJmQVK2dkgEeor+2)lMX9Nm^hXy&`* z-Q={8th)#c1$`!53SlD2bcnlS;riIbKg1>`c;EcPaZhE*yjR+eO=6nxCw*x{j%gQR zT8rIbmerarvH=gG{$|t_EdY@w6Hki-Po~!y51ypFU}`4fENW)iwl#`>%#^PCz4c`z?Uz# zj^LcSM63eo!)EmFlN7-Tj;}-~Cp`&1P4bO%LY!^v*ROW6tdnevAwj14&YTd4`^-Xd z+jObSV(L4WMV0nmb62tE84N6xiyKIQkf$oP3CD*$T6Lcx3St^ioV+a`z~#|%9I zy_D?Y#I4%keMshIZrJlM>V}*ajMvQk?Qme+^f~P6!{!HrR#N8^9AuYQ@4Ma)-iZ_l zaO>}vk{OZrO^P;GJ!g}tIJo)|*L27sLyY&E-zB?H8rgI6@Dk03hkO9+S@NE3E>qj7 zDd%Rd5ik;h<#FheY5t~FI;)E?*Khc#QcuIJym4qAS?VbK$|Q$In~~U{#w-#)9N7ws z`YA&uMooES69rE9d;|&kL4mn@!I$#18J$AGk?g0de=sA<-m>pF1!y2M` z*A%PNg&ws64m7&J$S^a1wUomIxhHg%nOfVlYcJ8CRyI!gn^RdogzAbkLS6!i{J*ydh{n}oLBWwZy?9qi-{2>Cqvv~0#)H1 z14y!u{KJ-oErczOfvdF^WZ{Ayb4DMT5gv)vlBtw-ch{r}-2K`aOArR*@1gecr$0Pl z+2gx@6b+g+@pe-_7Xq4x#x4z~g#%43>Lh>(dBU~mj@k`ydHAv}$$d)2dN+18NoA4Q zxBEI|K)9wWxo{qfSDI1Zf$_|AgI}Z53#d-DYfK&tKDy;muhaOXGj6#srb*G)5GA%{ zCDLo+bgv+Ad}L6>Y@%=6z8E)O8Sh3Wzt8xj0frzbzm~l<0)e|?=*>ZoT`fph6H4tH z6xE^a^bE+1%81t({u>J@5bEt)98Bg|0U}g>7g2vYK(+s+b}pzHV)PmwWdqPK&`uoB zFvoRo*3|p!Wv!x*E_!}=ndMk94}$p{sK>BTG&?1@FP`dHFwwcMfa(}8%(-^{&YYq` zge1v`!>hIRP8yHAVHayMo-{G6S{;J@V-gEoo9fW&V zDE=QlTqPa#S&HzHZe%hFb>}GNU%P;8=9boRKV^ch0G| zHz8neliR2!{Czd2Q}%N}9kYE8!j2?Ru&~Z23Jub-YO}Ra6{1q-7XvDkFez;>#1G*4 z?TtZ<7z&hhLZlYEgBC}R1u*lUs89C}nvW*h!YOfQ=v|2&KoUhXLL4r(vG~aoMub$K zM`i+S{)WJIg-NRY&9&6D6jPE^-wOspQCET^i4(@^%QeE!>}dZI5Qd7?BA?VR9YPN1 z73wSkhDZBdhifUmDKQ$;gI3rqL;bNYuu_PGB)1{gL)O`<4Lg=*4nSj^>(rRMLME0F zI=z6fUi!l=8|D2-M#~f?gwFq1kn!cAb1%xLZ}mq_pP>H zL3jG%w{zJfPvYf~6K@T)qIapIeUxn8!DiW~C#gmO(>l~BI^YTvYn616R%UDvf@y?c zA0tM{BMs7~&GJ!IzaopA`h3rjy0K+&m-7N6B78Qz6`U_e=Vsq%BdAC5w_TN`J~_6- z)E2IqG%t@_28jFI% zaqf~R_9sv*6~p?zBtnti;a4>U>nX7`%rtU(z$`8o+TBkh>V z_7wFoJrlHc6@^((^C)dd8)k}oHM>G-;>(ZvNUe4+Ex;BFZ%u-_%A{5|$D-KCWU=G5 zx2bM~X_K+E*>|QiD&Jb;e6fmzIj#X!FJ5)Aie-_Y7nobBO z{=H-M2GFD%BR8neBbNq3;$sRH0R{)gx!KxlD4~{ol8AgV{mn8I{zUXrKfNyR!N*Bt zuk@0o$BQ4e{_v|h7h%Zmjjbi!jDE!)W#N1Yea*?UR3{#2NeTXRDU|JNO{S-4bT~O$ zfCdx0qB_gv6OluZHTyGg1ux{=hJ$guLp1V20l+GLbYyvl;%3ZLBevF6L1!>IZoS(2 z!6>WTZMH{>I5a{cfPJEYb-g?6u(GB?G3MfTI^V(p%*B&%Pt{Kp19`v~8!@IXg@kqL zR*&)^Lc&aL}%%1yHqZo|tZm_SWP{OsR_I#W_9CAf@i%UA5kH5CNz38&v z{zCP>9m{+kf#zy^V~V_ex%jYqzI(km`?#Cq4!C%aP(t#0v6QspQws@F#4UH;ukYG3 z#!|t==)u?0hK!BM_d$#f9;d z?C|IDt2b|(zhO^oW&?Gc_XOREwmbY$6-{ktj!87qkaEk32D+^hg|~c$c)NTU0`KXP z8;NcC`Bc{cPFGSwVom=5QN#k_U`j7o75@(b_fz^uB~O9_WMJqmbH0+Spj}coFFOw^ z){kKwWeTMf_a6gJ##BvE%{)gE5eEbeV@1#R9VC=O6P1nIF9>3WkTDN0ch*v*i!3T= zZ0Il~i~zn!8c&50?)HEr`-9mp-jVP9e(yN$;)LwU!;w7GM4p z;1fyyFU>i2v8q5e>PeP+;_aI*vzft42y12#sh-T*)r>c~G(WNd!#PqHZsMIF!b1$7 zTtB(Y=TnWz#S@u?&!glm7EweR@td0h;Bt^%)=t#KmA~+XBmk3liF!J;xBy3wVuG7|Ux^5wF0^O;a@N zD>Wq+9R{3vvxEc3N8ol-rj4o^UudO#yltb!Yi|hIoeYOvE0crX*&ZBJo)2XRkjyQt zACu%X8O&a;3yh+gc8qYCnW_(KLNA;OTITIul!iz4VxJ&K06pf}EfNC2_dOR7^J zE}TWQ9W8B4EH4@MpcK-m3!JAD($NZb`a&-IO0=s_4-r_gR!WZKw+loGFzBj?8wTNO z$K837bAaTuM%6D2-Mtb;(N;cV8;kO)qzv-J>d)C!e8J*0u5qFzF2q*IT^Y3*n|xhwZ-N zMS&DEA5ctu1f7i1dxkmyaL7qhw|g$ERw|4hd}F+|(X-)I1W8>r&+7eI&}Db4bGYw~ zM*Y5ti6YCV{rGia)4cwrK;}$zExMj5q^*&yXeVCoEm0y51B zLIiw@L>;25-SAm6>A_TQ6D5yfUWrikX>B?%OSET>d0mK<0cvTx4po^ ze8=GOF6;w=5|Yp37NnV%AEZ(o7C%q(xuctE1fl!7n@JoW6{Lw|Eya$yu*z@GO!*+M zjW+sNNRFu)5S`HgrXLoPvcu5h--zDPnr z&zJZhMG&jKxJGMU3SGvUk5|~q*MVu=+b3wvxDTw~uXwot-p(Eab~NAyo&;ce0uR80 z@deT(?*1 z&*UX3vERyG=c;};QG6a%K3bFv2W9u8u+Bpjm+V0FIV_Oy^ZH9q@-9s|`&6|v+Fp8Q zaSVT7+Mi|spo$swdpH=I)n8|EFWPcH1!O?^MiA?(9mUQ`NVPEA!rcOsJ;1)5mp~AHnknNKNlt=MT*)AnW%?Na?@2EG~f1KGsPRqVnyX9lH|q1OK^_)h5~BgfNJ8$W zXtM-H9R)8{e`)mJN$B})r~*}e8RY{LM1ZR24|@C0*6sxfkq#_1Xo8siZbzLYn;W;pE_J%N`^dccXKD(% zL)a|hNr!n!+z($Hio(96ev~C~CX2i*L7H{%xm*$|Oc*WH{?tOMpm@Ix*`Vh){*Y*M z(}E~61lk)Zq9~HcS+h{zbUDI6b(;!9vI{+GGLvguASFq`fRmuoL=h! zB6_cS(K~(gLLJdR^J570u@0%N-G1^RnRzx@n*+p$3J9w~GS#=A@=nCbYH@;F(Tp^j zChK_6x->H7{base%|&0ppmvAod}RD?%e_MYaX!EhtHTY;_=Naiw{)b)H4caY&H)Q$#|9f>XuV!#dPoNj zUAhUEIqf`hRJAJkL*tGQ3va?G3QuO58{qX)evkDQ%UHmiiT<60tl}6G4FuiA&j)&hc#qsAM-#BCGX_(V}Q-;t{l( z2Y}ZYX}1b||8BsjLp5I_pn?KhL@#bIF z4f((^UPo)465>@M?pOhpM_x@CCo^9`%Jr8cndUs(cDLE1uk>PkSf@QEeK?4q02>s6 zqWh(kF{q}pwL+-RZ$ZbG z>Qy!toHRZN|F)f;lDI^9uvlsoE$OYnNKKn#d<_GRcae~`t;c_1niAS8enD7~39I~{ zgO>XLN7tFado^zVUy*2#<|rBrNyT>_5Gn~FA$3loP??1YH}`A0GUW={W-7@TnT`x4 zesm)m3?WlUkt9@R|M&Wy@AsU&*XR6uy$;MRphj_A^Ei$iZ3x7|()ZoFk&<;=(LIeecZnr*-BiZc)C^V-Cn zRxKZYZNq*aKepzy8uoKYYEg2&kt$DiQi-|;YzwdF!U*Al4V5`N21OAvhtZMwCX`k(QMe_~&{W@**y!%@A z=`iTHhkJZeX#CyD6Fc4T(6lGVcXc#59dCZ8qvAQO#_Ax=(hT_sa>0YxpDNM8@eo8SC#EEvCB8VUHIy+`{|s!l!nytjFD;}Nf&JZt#CE80JL^@~l%-F3~L zdllXt-1L#1PVF8HIkD? z+AjR?)~7E%Xs2#Zzd7O7iY{-y_gk?sdcBg%2$JziqbcebvyfH%;xb|MF?4R(yV4o9lMD zY0t!|8y@UE;ISF&Z+L#$+kX!_)Br}pUi!rhPE^yE7iU4Q)Foxl8e(?L5;@85K*mtJ}Isx1br z>3sZ0_q{pg({;0sf4uvTBadp(zv~fmTNPHV`1zQz11oO4=bx*#{^IRZ7HsiF!)?C$ zqWzrYe^;FGpE)n3`n@#gnsGz!nAhgn)~D>d<3Hoq&0GKRX9vw%_vtP#{OTg~~u&o_+SF5c+ds(tPmc*1G-zW7J->#x6Qbl)d0>^pwL3*Wroby(Bxzg~3U zXA2)*9~;;Cj6pkWI^d+k-+J?tc7+ko&+3uA_M$}}zPj|JRN>dt&wTc(KPSF=+rCYo zJHG8X3y$mYR*RqNzx?&Or2~F{Ywf$U8*kZn*OT_W^@eVn23_{;|MiQFsJ!;yw``a{ z{QjMeef{`B-@H*cYtVT zwQUz2*5&gbA6+qf(U3`x7luBwe#Tcx~;wW6pZ({EKGv zKf3QNW0p@CzVX`?_pBYTwC4v+FWCR1K|5VH=%vc0r?=g@>1)4U`p~w`&bpx6nY|vK zz3Iu_pSu#lW5WY`^Wyz2=?s;gO5aTG+YGqmzP1Tin;;kTreZ9R2uN z!)LuPdErkzlG*GD3pTY_(0$nZM;+BNv)zi<*6!1@#l^!f-Mse}j8@U8;fO^O>o>S# z&!sOn+~dv9l54sTns@p1jj#WH)#_=5C+3_MyQ%)frF%{NXwpp`kEl3j!I{6_+5W1> z+jT7@npfWN!3R@6zwzb4_13+9$&q(|)^PBYp%=|sUbwkImx;TqpPzc*ng+uU`{|c& zZ$Ep#ug^O6mNw7svH0R1_g1wY-{^~{ul=?1oLe4fed6dhFIjTT*eg#Q-sjkrO>b*( zO{~yv)jls|?m2bkr!D?Xu0Yo}Z|(R)n|+p^m^iiF*$u~B|HfZ`_02u?-?J(U$(y_O zeRoB-Bes73qBCC|(eIA)Z>|5*tpgUXc;v6!w~8J4LTb{O(_YT>ZU1NQ^{Xb1??3O} z{g&@kFFSPObxqFt=)Ie&9 zCpVngrCpbU_G)*~xvzh?s_RtSK&#D~v%0BlW`a;vSu_Y}| zK4a-4#-~un*!O|M?`^+$)xNFn?$LGZPb-_8-D~j^@0>7i z^_j2sex=<#$A5bG^9`S0u>0Hvm#?0>aB%9kvwm;grLgIb_nWPIZu$C(B_Cbc>A+jR zE8O{h#jL_9zm3jx-TCh89=NH?$BVuhI+=z_(9*dC;T#CBMoY^VIXr zr>2hScHOSGz20X1y)T{r)`S};e9>V3E%pES`q0aFnc8FCNmu`R>}?lMdws$&Ek8W^ z*!KS!`TeGm*R1TY_4)sMd)dy7uiK*Q++n}pGxhV8yMFo9H%o_Z+qc!C<{vzA=C+fz z`L6KrVS9|YX-)6@n@y}3zTutcdQJR!)YaSH`R246?pfIUvQF)edZlmEW-l&2?Bn!J zAN@VMNB2itK5%Q3ib;Q5HsZ@YhQImPqU-N#Q+V^JrnBE)a83QHU%UVE#mjpxT}A9vCGMQ zw&)l;_VdnLZ2WQh)H{z_c{`cU-#uzyZtqwH?04^y`=HwKUg#${{`84{jLt{Ac;Y&RcfXnrp{ie?W_~ zJFmI;lP-G>8Q*8pY4`M+_WT|VuNu*6$t!E8wfpV(KhQU3NQV z+@8;@ne^2|S9QGUrjGkwvvG9uG0poF-uu1TA%$0-{rc_;UViSgKOTGSq&4-LTzT$J znK#!zy=&XEI<^|N_T{J7-?Mr5rH$upZuj=^m-DA|eYM%RUB_?y?edG?Pd_>Elp$N^ zy7V7CWL{>!_KPce{qKkiciU>8mD_Ij*pC;UdT-|SJ7=_=cl^9RHs12v^ye=4>+tg? z?YroxTY4<&)BNg-r#yW0mS??M|E;x?3zcWBx#YW94cBhCXWv(Dd-1`R3u8Bay`tW=N)Qkypk3Onn?9Df3wHh{b-*;Yp;JV6B>+ko#T|cio z@0cqN9=PJ~VO!jH=h{P0>os~%VdD$G%zNa+CR^Ws%oBZ&9CPZO{Rek>E7*CzaXk*{ zH*l+me;hi0%ln$`{M%9e?poB~(2Kg?cHTpCR&DX_$!{Hd;1;8I>3`UsXFq=Dw7viM zVAa5io{P44?5x~`|7_p&tQYT^bMJ-A8@+wX{_VPt+I-gT%QjX1ufba@E{*cW-fG+j;-=duejZ*4flW_Osm_Mit7$J}$?(#*=YVxLt0{m}0N zX6^j-ydU2Fao79K*=DEpKfk@=_r_~hJ$P*5uiLxL>2cD=MMDl)blDGAzp?S3cgEcO zub(epKI*p~|Lri~&cphh`{;}9o9?r&@xy&aY#KB8g(YL2Zrx_oy_HX#HuvYbXU0}7 zZn*c58|NJI`q&{@Fk5VS>@7|9c<8H>Z_IakuTQr(e!p+4y=T4i_tv-Ed3rH(sCCsj zod&k67c_efz90K7(;-w@`lrr3Nd&!jX}4$L?V$tC`6RPFUyyhx+jB&G*NsOm>3ho? z^^V@P+s8dGdFWqX9QMiZ4=Rt|z8jSjKc9N_$HQMdd;9k;U)Qo@-*=ike9qh*t~>ay zYYtw2;*uqEE9PEw@d@uWf9sGtTklsnYx+yOw%&Vs;)z4qX2QEMK5W76P)yX23b?w--(kwb>Jx?{+l&EH(R$I5OGf7jxI z6UH9A{`+q4-qQ1i7PpP+bjNW6pBu69>viWgUwzes8(&)U_Brd9c0Bme4nsaa`i?!&neC|^{7bai*;-?nd{eJO|H}ai<3_}J<*V6C9$)|D^T%BB(i?N$`2Ldj7q;m?_v~<^5Pf&*Wm4kn>FjR z&A5u#j2UOXcE!fr^F5Eh?|`;V8#Wrb`p@9+El_sI2p zW$*vgn_0NKYieM-KTbOSwQaB1vURs*3%2?Gu}e-JF|7NX+YY{E-SUR%f7A)2$Po4hBg~wk! zVP(6?&33wK-z~nKWIj`Ug>*Y>ABPNtCNeDn09vxqa`m@AnUDq`Kc-4%F zyX?Nz6TcmM*OCw4JY)9S7h`j>ug$n;)%*tCFKvDPbsvlkF2A(uskJ9AKIMQ_%_p?} zHMwHNL7(1U@6k8jxZv`se~o-?+PmjW|K;0kqeb_D1zxao5?(KTx4wYLT zeQ(902b%45>;6yteZ~6LCv-Yz(hij~{@QK7)4v!o|NaS^3PHWS8_u2h?=!xs?9+bY zPR&+5eerfHnoWy$-|f|VXCLtI0lR)yasD>_PCVlKDQ7&lf5!>wM}9iz#z*#?U-i+? zy$27vt=V4lR{xS8JpRfix2`_tz|${!`O9P0461kGt4G#redUuYw%B%$$7he9@%=?V zeR9{5hU*V_I{(yr2UQMyyWfweezmx9x?yu6X;O zv7=sHbojwLr$;wA_2Wa&c>T{-`y9P!NxO{PaePj zqDvDK2Hm&z)W6OdeEit+xMcasFqmf{{PB zZW%ng$G}&D4`b9r8PIKDli=?g`s^Hx>o)Mn+kVY83tsu~h-Sg!^-Y=vv1^amv06Xw zwI^+RzPkg zMxBBk;sX!AZP+$Vf-j~W)wODAeBdpOCqB??AU{X(Gl-v~`8kH4W2+wMHTdUKf^YXY zti^59x7jM#d)naLliWOrbvn9JK9$aue#zuZzhqP8U&@eN5fXfU{$V=?e`Q)VEOs;S z&cSViSEdi%u4^ivEWMF0y^)TUAnACb`cayj5#y&1KB-Zu^K>#__0{yjJ8u;%{OO3s z!P_VGZya=daPV$T^7-mYG5LHx9USt|;8%hPqmQhfcyYu79vQrS{Zu^Y|M1}3>t%v3 z9v*yE$Lhhj84;^qmEDnu7ss{VGF4YTGWe24+{yT{YH+Kd#j}I=ug3@To*g{BQTatm z!mO_v+&XCa+~5Q1r6wNp++co=t2*YnA-At=RlTM?#*Q2_ijVijyMeS!u=0$dZGzUf z4?SR1wtA%U^Q1lJW3GnXGAw1VT(n)f2#dDM7%ZQTyqg7O zOdI+qmB1%VAG(Zsbpsz5dRe_()shE>re?P(jX!SWNoS7QE4No7Z?j4VJ04fj{kCou zZG+>FtLWFWdRzA>H%ca~QMMZWwa_9ma*5!b<0`uCkjj_lTJw^vHyuw0^}1EG33eY+ zaZvqaw(86w6&IYiO*|W;lusfP#4bI!UE@S7Qv+yHRdHpHL^cMQ*uPF^cWT7{(#d!t zo2UbpidDT>Rnf4%Au8NHlggxXsbKk>ihbH7IRoxlDxD6xzQ8jhY4W-qL0xn+{Q&d#lSX7PMHm}t)uIzl`d3zqXN==?u=iKP-j*Lk$$ z!pZJtMe%qt7-P>AOUYOw7F5|YZriyP zCGudt;Tt?l$*v@FNzRo$OAGz*J=b_J)1KvoL=qX>u{SF6@Y(sxz(v}2X#s5$I)2J_ z$)1@MjAEM$g6vZ9nU0aLUHYHRP4JY6+b-F&l)e|sq=V)EgGAFY*_e1fmkGKq6E2UXTq&s{tP z6KMDr&y-!nlQ63x_DqoxPbBie%>U1Oabtk?EGHWrk3qow7x9eJbZ$+tJa=URduB>U zbiJ`$JQu9CX9?*umQ5#v?Atb;5L+xmdf!BQW{R5YGo8r>%Xt>8{J5fJa7xc%+Xtz4 zDtgv|?pQJnKYYi!(P<|@(*k>@r#{9$1#K7eOwk*QWwXJU;xkX9Nt8BZmOT@0k%XEu zLBl0H6TY3yXLH$L2+x9gpRw`TST2}pe~tW{;ILOERBi&sN*BIwqQ+fM9kR&*U&C^F|{R?O9yMJb2;?M@$a%g7`R_xF3V;wuotu1X(pQr+P=q&In%czRFcf4bMauzd%P&8Ael?$ z*d}|XE6jn@pyB%;xa>>LMD}LuWy4qWV!C|)5BRJ1 z*Y;PO^TJ=McOh-i$yR?*WJp3?*=#%?WS84y^jQYUKhd7?d2NRZ&RH^8zMM{zir{Pt z<-hBPyqFanW|L6YczZ^LN#Ch)k_E;01T$G!P|)@x-b?93V^G(akC;p*=2-$99`dTP z7tN%KZfGV4c{Ti)7xOV8g-jOu8uGENLPpH+W-!y9r9Cf6X3_}X&Gt-qP%@K3`1W7H zvy`kplY}e-dzP!?88oxno|zfs7GaDf`-$}_Sj)sr1^k2s!foZnSUeFdw--eNMU#Rq zx_(;cWYC5=T=q;Ck2VYkv}d9z!#7iKz|VNbXWHE&(rNh97<;BnAZ<*i%AO@Z5h9K5okdmU#0=K(vml1@a;!bXC}EazDeUvGQ_4$$>WS}OBT8IKun z&qQfYri{lduxHAtQpRK2eg(axVnR%*7?#eMuXxey^XU4J45^^Xp5+B+@J%eMuX(04 zku?4@#Ga)DXPg%H==^}e z{UQ?B)vJr|$q7uNo(0)&j8(*C=aVt4(24dit_&y{i@_?tVMOI42_u=Vt9d4RPLj#Q zg7NlDOpjzDgC4nnXTki9P(s>Ftu?gNgPce)?=i(^GVKHwOi*RdlwcD{X5H{xp4Bny z1a*Ihe2Z3@40`{}_*SE1rnNOkOO!AYF-+&p_DnRuWIUfl1N@F>DhuK{z6=xaEa?3! zBjAS!R$I%IkXJl|p^#l`Bgl@%($ED7#?soF{uG21YU-M{jStj%O+fp&6u>J_r%03|%hhzurcW^Am%dgTS7Nsb^MTHdxKGV7Fb0 z4i}s`*dN&+X|1YOEQT#I@kbD@sunhC0#;`)iabcICLi{k;|jVQx2>Si2(b^!|8sp0X;$U3@t3MXF_|4Tox^CHP5EZ zt^^Z#6o`#9Ov}t*-E7jvirkiI_Wh@NmAeJ2H&*PaDmSKlf?e5UN3C9E%iw|f{Ac1O znhH-!nH!ToCN%=HfG*S(5$i|6ARAmQAps!EZJ-L1{M5 zey+A>881e0bh4k>-wladgBdn(B7d|=$jma3Ot8H8Oei#y!@BGG2k!~9Ok}d?OXKZX zT;I#U@)y`Mb2>*ckx9eG+y2Qj@zmgqfsK#hS#a*Q;5vzmuF6`9S(eBoz;(mFYy@3V z9ELx{p6O0!VtDpu{spepUQML)wn_G)ICT^0oNdzIJQK%IBAvB8Dn9d)F@Zp3k9Zc; zYg{}a?8-k3uU^Llnk&2X4?~Fhoj`L%!{%8q)w+wun8i`aMW;~`IePRUo?Zk1L2&(KwQH>L+EH5^!Z=DM5;!Dc~ zL+qK@r)(_;d1ieE%z1TaI8YwLRmj z2982gF*Ad<;+gn7(Q`Qe6YZI(2nq8Q1k3H27?z1-7W1iV1A8X)ieZ@z#@jRH=Xh#y z*V!{&Uowqq-gaxAS#&UZ%91HOykqQ{SmTLg5^-5&&%}D-!wor7JSIBRo~f9HTI0cHd!`&57M>0IZ^JV&1rmu2+CyN^#EHx^Y>(CUOze_GB8^s= z-PWE7-Ldl=GJB?Sj@5I>>{(XMP9lNRx@#kzWxU?VBc#xHdnQ^=A`ydyF0f}}=HdH= z-L-9O?+O1#6@(SqGbNaK20m5Qm`y^3^E)5Ms16!7;YFp2cnS~T5PPPGA)trqZO>GT zA$pe#Hrq2%T3I`OuKrDJJVACGFKQ6jGf~Si9r226EDVB&U_ z*&XtboX{wGYd%OT(wTHUn>2aWy4k#DIhG&3I89Dv4MUoG!3uqL^cqfYY|y z^Guw`w)b#OdnS&U1S(20s4715dl=87d8)FA32DusE}(rD-Rd zt)+0FcpfPg^l!m4aRmD!;(k9w75jSyk z4lG%FCgL0G7&h9qmG$XaWjtqA?)X-0J~1m1DyTzd%(kk`wTmT$oy2n{ircp4DGHY? zGiN%>7@pP#7xB*MOyH}^{$}}?+utZu4cqW`Tz!Kq6&K17dzy(07mw#Gwmh>9)6QUW z=+K;nU^6e*PbPwTvEk;DWv|*=Z#iKp@oWw@9N5z=-Zj5n=pt-aTlO-oM1Yf)P*gix z1i#6vX$Wm%^;3x|am;aaEiXRJi&(}affBmzK+kDH>C&_LL&om_0*qp1TTx`u7wu&t z`*IpkWzkJ`yYvpa!LLVaRA#?zRV!Ni^DKb4ixHv$6nYI*h3oXi}*D}lwG zE7R@qFk?Imm5_?SUhZrQC$YmXElpBUu%P&q}1H6j_R65%>+NR56^DOzcv*&;HKm zhLbtP0 z>O)zmNfqMdtj8mU8N?XrkO?NUPQx)+-o-?Lq0dJrV=%PfaDN4(O}CkuEN(N}zz-KEsB2KI8wiP{*sdN5;oH>ZRgX9Os zSK^VDvK*XHJH}@=*o89dWXv6Y+7am0c39M*4vYOI$y*gzMi>W~Uj-+)7=%c(%o==! zXI&g5l}yTH2&c)wDKd-vWKy}3y;j5SY+$@jz9F6(g%PTecDRKE2LBWoZp1Lm*d6gf z-6yQ3L-=KTH-q0rV8z5@kW_p4@OsJtN@a2hVRtDMV?isCdKn~(x#b7Wr$rDD zC5;PV!j(#_vQWz&aBfLMRNW{ROw84>$N8)~vS22UiQ*;*CwB`ekPH~ZvXX|y)b9ui z$^CK(iuP_M!f%W)341%+&0s`^{1{|k=L!NOKUZKJJb{stATV$(Fdy4wGQ@PsTU@Bl z3pOB1oqriGo5H}XwDV3>>o2F6!8hgJEu>BN@p2ROL9_>Cv$Izi#000G45G{*JJ^x) zCGc)4j>=>FFLX>`g}P6OVL>ZrRxp$D#;grON|T=;q3;?j6pCrtG-Oj`KhZt(Wzrm^ z!;Bm|(+>qRS@LGwyM;82#y7;zERvesU#D{0r1OgEoC+-FBI*)Z<>qfL;=hImq;twZ z@b`;~0K;@f3zNYX77XU=z$$r&we1R)6>l#?{|+^1TF&WZ?Q+hRH(1_f&c#4#T#h1c z4VMu>y8?!^C$3D4=(L+mCYF_>h~u@EkVi0)1gNfr+t_((s=jo)kh$zpXoB3mB9*yD{tiKlhsg$T(Y>4QDpi6iK0Xq@LhKT}TPL$r9-%)8 zEbIJYtTC4p&Wp&gDSnP3vM`h6$n7g-$m zC*u*QYiPQ#pdV#3ymv+Pr`3$b%og5)GEn%isThEeIEi1P3-gj9YCs9^s zNiKeZbSGPfTPf+a^(+ZFvSKtoL4Q83CxVcTw!`}MlcBpZtVUbU!arn&s3Cq!3<)0n zOj$I2(zRs8IczAmxB^-)j!HK}7`CYTXn`)BfS4c7bJrmraL%3Y4{Ou6gW8aT#{WVB zlf?5n2JvnI6f|sKzsFot5_ynAGZbuLPL$Dqc3E2|bmZ(vR!4fRCqhy(+{FoNheOD( zIHj%vylUcqD?pfvepCrr9r{$wtV^mP&hr|xuWa?PaY_rwO3$jfCSj^(5&t!;l|Y^D z9WfHw&rDLJJf}%GCO2P%rw}R($()k5&P6=kJ4BXHKg?fYP?AS~79&GoWQuuM0VP~e z%{h^M&n0w^b9hvJhwO<=hSkZWab*}`8vbk1Pcnz>F_%VU?-2PiK`vU$Wbo~K7|KwX z!4>yEO!P{{W<2! zqDV#D!lFau@q2n&0D;v~k@eT0ADvK8m`~y(^%LaODNL2oJb7Z$E)@+@82)j95j63G z5E53H`ljrDyuw>scbUn>*C$}`2kp2e; z5Iq3xThWhkBLj2QN9cnTaX~-YZDcawKMk^k>k;Jfvw43|^P6BjV`#^uS4aM&ukx*WX~%!lQU zllji%%yJwg@(3*9Bc#AYDFKEv)GsbgnzPgYXehQFu)H@k@uv~0^Bv+j77U_)2>OZi z*1TKN|L9PxA7FB3;bkFLZ?zf*471lyhTT*cXm#xhc2UHgPh*%~?+1o3cQ4~skt2(@ z%Ik#iZX8zfE*VKq|D&M`W^p!SIkEF`Q$ljSLo^E+#6+sJ!x>!ztJeSMkkEJyu*59b zcG*wJ+GESg-_-19X-l}_$i3kL4A-(7oV-9U zg=xp7YHN2`t%?Uw%yD26Ts4?ih=FB-*#|=c8O0`sfG1VtX|0)ACQG7LvhGwVvm!iA zC{@Uu?1bXFw~I842ZQ=EC$UP|B=JHS%$rZZ2xWSFV!aBEtsIQBD^W~@ED0?64JUFd zVh~t}5fqOeMk%hw=pb3*A1+=IC(khxVK$7CEec4iiyz`el5k#_E2?OUH#<{S~ zjfm(%z*QcExd|dW3SNVuL&8_lhQKmjC;+1#le9~FY%!Ufx8+!H`4(iY8f`1_QU+Ma zW^#dzkH*c$_WBSAA5q=l^<0cR$1R&5=Zu%MU`h*=-&DNodGmWjA}OY(!=-uT?@Jr)4FixHcbP zC)e@oG#T7jz-~?n0(8C$e6E5>vT0!toQ4pSKqUAWM#d73itWND7iG@tjI5`qC%6v1 z8^93hQx$9>+#HWg1{ldZVT3b2KtkZMI?`YS3wQ#(bW5Q1X*+JaMF!?9V>WuyA?>G? z_qy7l3ML=H&R`$-KC%cT55t`$?J}&%x1%~wc;R4_p-3Y3?NA7dM%>QfEwmCK(S|{M ztIAddx^PFa*sZVt+T}$r5bW!6$p&^9j8*%|6%9WA* z_=2Pz8m_}_Ftxrd5u7_$2;_#Z!0#}IO!++497l>}$#I0RBErLV0!blfj>JPq)kI5p ziFJrUoT1)%Oox(91q{W>qldNm1B>EPYulGC6wa_aOw5}53LdvOt-XZe?!D?0me}a& zk#t@W-3M?%$ESnRAvd1gO6bsSs&R!}FlZ2G3FE*wCu_i;8~o_9gBWmiz$83m;c{VK zz^d06y!B2+qXX^cfYT6S!0;>hx!D~?fpLL^rBGaQ4^xh*IV?RfSOS&6%;*Z?!VV((6J~h`ScGwj#SVO|U3U9aQO9~9yD5m+Qf zkA#AdV-JEG`h$JBdrUv*1u0NM zgXE_RDG-p6ZOlaTNs8wIlR~CRrIuoUCxkJLjUoeMqj<4UhgC)ffj22QOjJIaYHL&u zr1llf)!HzaIDMF8)M;;gAkWock9OkkMf^lK75B9S8AN7e&$y^56qbkV+#p0QWWS;B z$fg!K6@h1OWio5kg)lOuohhq+b!c$nbTRGEQv_bng80s%65+$Z#PgUTqt25ZF!5WV zllim;qRL=x%cW>m=j(j|iYHkgAQncjw=!)SlKF|aH5u@tWF`%rD0xU8x z8|ryzhVV#qU>k$rik~!TX+8y?hUB>WhRoU%Tt;(iU{I22VlXj-DJoRn_S&EhE_TO` zEm7ZJZ8aEiNtvMfD>3qXgo$^F7ewB*J4#qF+MzgiXh%>j^0K|lElPz6Kjb>Ph+pD+ z$+S!A0jrWo%+^WFgm!YD30T7WVhkp-laO$YJg*7r5G)Xx159*FF1`7576!pJAs0pg-EdLgr7nl{}t*0#Z&AayUh} z(EU*OVP$wTR-~Q8-RVzKA`MopvxKD_{!nqAn~&5VBm51*h{&B3wE~#<-poZ8o^(;l z0rcKM5bp2fK#Dk-1q*n6y!xCaqUiYnFtJqOL&21B$2U98y4LUpxpZQlK?gp&22O*{ z>o$TjBf6$l3>h?nJ+I?DQ~V)}7Sq7E3Mg!s%tAdVR&>D)k4Z1)HYQ#5)FXSY*Q<=F z$*CnBQj}b>ne^ZhV)AE#426g!>}#vTl`r-IFwtUg96R5py_*j<7$P;AnWL5Fs0aS(5idhvI_gu}CG=c?S_zSqoZ{i3 z#<8xL)Ys@B)?q377t-AcF8K^MG>??R;HRGL;xHxe)6pH|DNZbuY%g1I@<*@lbqgh9s$?OD^i-10 zWY1Ws941o#o&L${NqP1AjfYWAHeYy&x?3RvURDPLwE)D`hikKrK}2HN{Q|#bs3s!C zXqSx_Jg3cDu3QvdrtA2DO*Qed7u7_v-AtSHdMdD*(0GlW3Xp^32j*^rV~(suE>rTZ zSZ>yz;|F$BeNMn_qbs)}0mBJ>G#_!{028VQhSS(h8V$)?ZnT5l`gSBn6bUmFoi@!! zP>p)!RUgzfxh#hk7!Nj#Dl%5bM6Cjhm%YHaPw3}_huNKCrX=bw+MOIK+La_;NJ0UW zJOP7w9tBJyhiG@?cKHe7pB97@77s7j>I3kyM8OOeTs{UL4&qSyrB1!TQeF$73tVh; zQ9$HNb9~|glRQzn@a0BqwmGj20)ut={@|#^rG|Vs*gITKmWC3{pdFtLk#?f4n*9{a zKh@CWj5_9tQYGugTPN!_hudkDEeCNhWkiVA!|I6nGgqG#56R+rr`v*9eLNy@NxIEz z7bJVj@Hji=U1W}DJ(QfN7DGY9(<__y5|(~LVhd8*0vElX4BmYqR+@z;&G^s)25%Tx zgb`@-duEws>Wkl^3?&0a{D6lvqS-}qXQG^p3G!}&gX$N zkxP(ODhCdBD>^NAl>8y&%RqQ@+#tlsz5AASK&4%(;7>me7WhQ8VbSU0x5U1P z;%N~NY{UfxRq}4iV*wZ$H^nh(&3ZCNvfj^yPs$fDq(eM*P644qxf)12?)m$Lkt4(X4AH9q=BJ5+Mlj_lSX>jz1-z9L>G)y%_4!;nGr zax3pjq6-OU!bX6V+|n?OvK|DG;GqmGw;^fgiz*tglG_qoppDi#Gg`o-?O199fRq=F zUua5}q5Si~W}LzK(>#hg8RD&e7bw5r zV{D`y;MQ@Irfz|^EojI6>rgvm1ppPAXx7C^lSeB9L$dyq5@z>0KA{VApJIQttiaN-y+vz25aCs1*623D3_N`h zxA$rWndPoFm$3o@@^W;k`{n~hOpqK+hXur|cdL`1A=i_EDG`##k@I=c%#hHI9|W%J z(ND6J<3V;JMGo6#Ze1KIYH6ElSpi9{K1~r2?leL8dg9s zCg^=hWy{uFa+a|uNBu9jgk%-tk|0mnHRmYEVYOU#PZ{PQlj-7J_rntnubyt0OPIG# z2bMHXCMZQI@PX(?0`swI+C?+)hS-6_;`I(UgOzu(hNol63ERPHD*5$ma@2S?6)ZL6 z@-b_VNR&oT>1d%|*`W)zLEe>w0osX+8d#}xNyyD%K<{%QSQFC;s>9rZI$n7KmI&rg zV2v1bex4Qs^f0|1O&4|GhfFoW5BI`^(2#CL{6q+d3?+Z4IJmk$RK@ZKjdP~Bpss@~ z&T{`ki!(Kyhya2s1T4XPpn!HH(_ISE$h?u}Ferh+7ZoPr5Pl#GhKy++O-A`H#Uw%w z27rlR>c3$U{zI88E1L|O+jPb0ZF;;91_6uaf)%kqR<-OWU*4AG)1fS%G`r&R!+T6v zR&*HTr8m1QMb9U#5;v49^}x7g>u?M#BKaAg)Dbhyr6J#c5*R{VVASqYm~eXv%?SJC z0!_giX1O}5&j3pZ`vfLphGedY%~V_*Ap%dpmaAONzJd=gt879Vx8F$IgkswO6S0kb z7j(Y7PO`^V5VA+r5wZs+WY6~pg)I?o5(N!dHIE9DJ%(~HpE>oCK&M56#l%975p^C| z(EJLPMVf7NbK$>or5%{WI*4V-1#c=p>d7UfD(WOo-)d13V)H1I{$mDqVOi>B8O-Sm z#f#0}vZo!X|5qBCyr+ama<$rEKEwqKr@wU}Jd#KLs+!G0DvtsqyOu5rXnP*hp}eP( zD+Nr87mhBZuqBv=Aw>Jj5r!8nk?==#G(60RNVgI_mKd`46!0YlNn`@18XT!FB9yrC z9XVh{Mnpvh@6gK;HupXuV5;^JWD)L3I*Ld>JS~caOui7AjWG@qP!)wJUY=FpeiM@c zrCRJEZea6U`ZzD2u>KcYR9sx{(QoKnl|V6Ym8ZBPsJ1 zD)e43M!>1=S4OCF%pZGTlG11}Z#V!WKQJ;u zvs6ogsxT2+`iHCzYg14NyO9;MOM*c>NzsA1PU&2`MIt1l%il$!p_m82B+biUo~OYb zB#I48qSyutR$hzD5oXRKiC-Jc8+*V~LHs(pkS}KNsE$3u*&!&-WrEA;qTsj5E}u#O z$Y6TvV26Tz7>Lj>_fGuqSku)BK4DT|SZ@!Zf=JmQBI;>5B*1(q!RoG zBN;gi!^PwIyZHlU?woSZH%KoQsYzLbYTGERvf_&L>Ndh1uWyKgiUdUUVb63> z0z~(wL_^T~M%Ks?lP=^k3dw~8B7Hk6b|f(W2{!O!&P-`nx?K^$dnOsIWKO-LGAVr! z0+2o=Uz>L6ApT#vzVs!`x6*x zvVKbCJ5^zxOG2i1f}nd!;X@LMrQju2uh`R8QATiqi$9XhSrosxSGVxSU?`Gqk-UY@`lIRJ{fBTSY&3saDkaZztxp>5#1eq=TMqv41 zDqR%ho(7l}6Tz_W5=1DjMPa7sP{2?K1V$YX86KxpkvzhTfKn>K%3D~Lzl308`E+%I z`E;HlESO9eQtjU!`3#;S%$-<+`O{%Ae>#dVcRCD)q%us`Qg{)lTY{eF*^H%p3!VrM zM)Aq+bBsOzCqp|T&Z{XLwiRWET;8Ivc9c~Z48tTsAHWD+M+Y_-xf#-qdlCZ6@wF`v zBuz&ea;Bw2OMa7gkwXIWALw9$sA|=Gy~fHhpm#wT%$rES@Yo2p_&BCufee0`Aa_b4 zFzUe-joYZLXD}}N`jsG1qtb|W_#y-|q!LSiE-{8Zvh>VcK?k8$t{>O}J^~{rMqs2% z2n@^G!!R~VW0V7Y%!W&wQF&!B|A`2Ld36pLb$ewpL=>spYERKW2JsRI3C(%d|z1Cn)?bfMVK;J!dQX}ih4v25La<_rvj`RIpv3w&}I?M(kMTtpZ=wqKO| ztV4`1k2HjX!n~?ugW!9WccUqvn2pxZe>b5Bb525oWrF#4+D7V}aLWqyqw>gl$XpSa z`F`CzEuqqHB$A|>%}0<%dbFo1%h2?Lz@nn8m37+*^G6Yw5H;c@qM0 z`wK}$QqElFB^~lH3|R@;Zn8}TW<2jl>2}Hs{n^Lx!V58}h-+9RAWj1jy+o#+ON4iE zz6u8I*KF1XpUw8Eww8Y%fc9x|g zyaiLpqmcXUq76}RR75ZN{ephpm1Ar42cdM%@`d;uelk6D>jmB315d19UuPYCSwEp+qb|hLAboQ>Y8;1^p$&n5ml>cSY3-0 z7zeccav4VQsAou|Jh~h{>yO*A?p>}{`RocBB8WUwL6cF;;9>LhLE?@OA>Y<>#|{m% zx-MQ3|D}v68`xK#vWC7`UJ>RA36)jVHL~!86OsuOl9a`&+NSR+1*1DT@oB{6zmdti zavj`Yuo{PIZpw>Row2V9c~p}CC{_)(0z@7l*IdlV2KE)+4CbA1z(BQao#DR*{gf1x zBgSHc*8v!@7|$z^?#}&Y z?R*BS!3woyP|EfJF+j0qG0udi<8qJ_!Bk}H_!Nem2xMpV3F{IvslH6d{V6Ul4>$h$z=ZQPjAYLSK$mEf>P27x)}^0Ic=cy6azp;#4M?G=h7)gy9N8J`Xb z_V`(&i`NB{T_8_H1OZ>T5h}GB4qgx-hpEHqSAs$(Sg>*?z8$wIqF6ApLySk;nLosN ztf_&{xu{-nNV&Ioh@(#$`l2HCvcE5EFkiy~7;ZJ0jIY~-a!*5CiGJ324ILJcedzMO z9i=%PX6R4+ZzxtAXa6quU`}?L9}Rt$G85!m@{Sb%6OGegI%%%?H-Cit>pn}_x)mb? zn7@W&?Z^a>x#xoU4|9G=!;(k-L-lll$s%a7GD`kkavh>X#k*1|(qM!W?cLD%We}F{=b`Nw@=H?VmR{ECgH1Sa3(p*!L^zCQ@u zTM0D8W$GzcKh;1x^fQlYsw&8?nhE5$6K|ony(}nEa!}QtUx4Bp0WrSnA(O#jB9oRn zJjP6X6$;)ZJ2%23?EG>m(YyM9`B=5Jr${c)`xq8%J$e_scrFQzxO6W%L=5^f zh<8WM7Tz6i#Stg)39s~LABA_AMn8Zq1t^YQLXi?80>)iP|E|T6Jq$+ej}fg(M=N|T z`C6N&Qa%eHM+Tzv3MX8{f1ZvNmuqg+=$jmK5*8yI%g!aKvtB0xhArk+LRyRLF&SOn z<-i_A_t;o3SMj~&4=k5=)u3p|)jBW4xF9ct$)$F0IKjjSRQgGSE+I@(yGq+scA9}M z`9g?I#%Hns!x15az*7Al+sAygosVl3=uo}}0t_2kUIwoM!=#UH6Z{YFnx`X7UJ;QP zl!=scn$ep$P=WaZga|6RIb|@PK@5y|YjlDJtMzG@on`=i6&kQWCUt~bjgZKUQY^q} z{JxVfqwkgi=(Q)JU}9Lb5fVrhUBtvZVd6Rz_Kgze-NStMMjYqtr4^@u|M9Oz<-zYI z)Xybn=YKMp>%W6(vfh6~-C*3PahO3*s3pvj(~K~PuUE=G(b7{jh5o%G4aEcXUk1TF zAuy$dg53!B5|FAoVqx%|UpZpHyz7w3fNU99HCT(SLYTpfXDgeLv7}S*m1sbwRSa@n z6J>RYHrCFUr!tsNs{mFG*LMz402z+nWx_57_dm-=NyJG)w*;sCl<+SK3_jtxApTFm zy!kaf_VArnhaJMY0w%MM?!!2IWm_cQ>C9Y?vuJR2|zxDV1WoFoNL0BBdF^yE2I>FhjS4 zR;*BAKBJ2XQV}HFuBc40tNJo`%)Cf|-MR~Ebcjjg$pqzIC>(XjCl`R`1h;PeO6>Cz z9){z>qm@idk>-5H+o>SN_wbkc{&FPX6=5M|3a_#5C(bOvLLK~!THwOL@i@!DpvGdf zohehiDpBZ)r3`;|Ih~S!o)nb zs95F`O=wqBaIjXHg4qf6BXzt>9Li#s-F}+W*wY8OL@xE22^wWa-bI5QhKfAC_7V5#f;1%f=eLA#rA*L$jH$SF1RaHD@Pl|AX`SxrGu&S&_>9z^ozuFcMIoYP59Hq z#RwoU7+&;UZd?odq@6?$ftAEz_}E*iAsyIPWFgy0t zfWo030v2J=lRJGJ3*6Vf9YMTshsAff1QX^h)v(%6o0lSwTutJGDDtx1@b-fc5t0cK zaB;LqhyI3uEzaM{0>){n?l0)D?eW|6E<&Q`(a-{U3JUPy=!~<${KKFn5+~fmk!#*9 zkC60t*35}32gb^JdA}DhVbHi@N-0qxT4E4MWg&mx*Il=P{pTDEhR?w-1bOChfx;BA zYl^gl9VDj$!$D3I65E@F#!me~#R=!HBGA9(Irs^t$gT4qhvU9-1LJTg z)7$Z74-E}dLLlUodTGrd6ozsg!mS;Bn6gAH;SEl>m<^QQ^#%}bcCz#Q8qscb?&`~j zUPZP8D=FaN6V8_fgc)=9FdETeSBVXHIS$O+BdOfmp~SN3Wbn%v7IjY%wO`*i=83)nP39 zXfhrh$xmW}u~b3Oiq_?{Q(nf`=vPcuroy77qD)I5u}_Ga%E@KvQDeJ8MHpv(5LlY* zF|;ZZBpb-n42M`~0q>(TA}H`-j#=ptdq^fjVvFZhq$tV}Bazy>645m!v6Ub@wCMr? z0R2abm>|U!1q);=`3aIVBA6iwI~sXnO9sY%{4&Jt(Yk$z7n~}SOjAI?A2i-|STN%B^(`$_4XVQnHf~S+S_EbtX{)sJ zHFJ2E6lPCcRJIn|k!(co>gQebIgftA3BuC|;0b5v&bl}CiIL0ABh*8GtDZ?CJxZsf z_Js4*9?{(>%;WW%VCmL;-H;$L#i&l74)=dVxXQ>dPk57GiWSZqu5axd5p^DL96}9)yV3h4@m?Q|9>txVM1e2t>c$y_ANXXu5t82Sxg{vY-K#FoEfytSKaQsCuOT7@r zXcfUcmnQZmvJa!?6tNmGI7DwEJf-L-8WARL)3xhx>;uaOm%nd2EouqL+oDCF_lhPB zOxBH26**frJn;fCjDS@;tiwBv&&5Y~aFCE4?G8Hk`F&`HcD{6m4Xlii;8P@4%J?Rv z)#-vt=w0gOaS`!=D_1CjeGzd(kw3*MhOSuC=I!)5h~gtW)uJ_m8E)8k5@X7u(OA-W z^?|HaeaKb!W&ZId;TCc#JTP(Wkcsae->;7g8q70gU?trxbd?@pBAEOUa}w>AM|EsFfd`p8=A7f37A5fN2ZTVv zp{h3xr`3pS+DjM_nEyf_ zn1R2^@`(@1^3ja^78AazHiV;d$_C9pF+AysK#>yk=$@TZ$7~@+mCKwwl|8B$@%e>0)W4UTOm) zqU9%T-`xKQeToEwFmZnth*6cD zk!8ybV^^x4@Gk5rJZX%1R^q=$Yv{sd6K-g$Gh9btri}OiZ`#V*dKHRrgj6B{hU?IC zBpiiafu^B~TvT9h+E^N(2pIf&B8YIgm5sw1*DWuL#Rv)|lM{_hB^&Sh(35#)M0%p+ zIhH{Vv4u4~4}wCxTYz>1$s_3JUF;XZAPzI%A5k9fb%#Nt={mOnK=FP9BQwekOzj9C zyd#Z8GFecnR1jGXQke+Lu3O$z4#&-JAFd?k#4Ra58GKm^BZpqvaalJCga5*~{CS77 z3fCjHD`J7*l(r*<(laESH$DhVoXjF`@V~H(B-|nl#J;5EW=${-^E0{07U9vy&0NTWx`U|i~v3Hm@3=*Pz`SiqAj zG(%325v$?97X4OmJTgf2WtLiW6;qtZtCLH9z$D??0)Bc*s1Y2(w2jXoT%3-s*veya zMbl5l3aNS+3`r(U+(?chT778X;<)KpLAgy2gg24a)On$mV8*m(5Y#Wxuk zeWAEu)?b5uyPPBq)q6pRx%64@(7P;HsUPo}#{!fTF+v!hmB3m(s_`6)0s{SNJJ_Q? z+a~g(#L5^1l>OFmunVHY5%bdyk;l@Z=0-6Hgygr5lD;x9Ne$KQLi!&Xv=2cc0I?H& zhgQ?y!?eO2HxWso^X*X0BA7P)k6T}g1+*)fHFDd-EJWrfSVw#fsqMe_%ea=DqcfBX zHC6ydSTG-{6FZw|zRx4D+t|YUx&2qxxN7x3qOe{$VAhbULm|_19M0G`cC>FtEYs5h z9zLhSq5oMLyFc&PK90}R4iA7o+r%1lbyzyuPHNO3PqA~o{zriukyu8+QSQhoCQUYq z89Ui>;ncEsL|tPYHQ|sN{f}%4??y&5Bi+rT6|*ZkuwjOwT{{@Hm~2E+8V$N9FJ&z(7200joVt zW&IC*L5_}9%<)u>St$A+RdmGq0Ve3TD#HFm*f-Tg^SoI0~^^ ztj(hppSREvFd^1l{Uo&n*5ij#pBwQy(afn4B!o;1PlO{d@mJY}OW9R4_@YP&yILV* zv9u^W>bNeKZ}C?}`I5ov+J!{W{72SE#Kv(63*ZXwwCW1omgA4L>Jm;}5u3n5%6+xA zN`$Ohj}PlwP=@25%pC`*XLok>rIuQ%J0xD9lm=V$Odn1jnP5@ZvTv7pAx_B6DQcLy zbqH(=Z^>kEhxJFRLF04lTlg@Ro2QvPeqX z9@4ciXF`XtgjN$l(Fqc`m6CbDq{JFVtQ4gL2D-xip=$voFcAh8VN&^$LFASZP6Tf3 z%Da38M_^Jdm2va2LS!~JFquL!87-y*t|GjRjC=XqJ`X)rM9_0L3g26OTiUXvz1oRM)a2CdL}BVo8((Mnbq71oyaieOT#AZ$9G;sm%;5>soYJF3nZL%?wu8AU?8W zg&(}=118)Nm;|f}0R6W&ES7+a(5=oc%R5Fx`Z)n7X;Eb$7)kfY7wOvi)&@vny9 zaKd{ngF$dG`a!IOt-z=#?_sz|JYnMEu9ep%T?;=Qd8+cVBm`UDsu$wGaMbyC(Jnm^ z8e{eCuyrM2j9MHLWVQMnK6(dCG7PL{hx1TboQm{MKS9234wEY4zZU((&!nMN2EcXa zzt+Pb@Cre-2?Red`6{(6y;|2|M~a$XgcgW(dnracd|9qTXwVB7@@^#k5EvN&{@ns` zF3+X#k9!>k7c1<-zf4%f@393?e19m(UT0@ZP#EaX@Lz*|y#G!c!i?n@I}NRvH7_f% zByB%It8gK(R9I25@lk2<^~maMX#X;iLVrroKK+FPe88es(nu^(TtfB8ApFfjuHFa) z;~5cV*ySQwQAFfmSaj9z0yQGMu2ZZEU0gS4sM!S*t)9jxm?K-wCn`nGn8fsmw35<( z7tn|!NMn3roSXsK!W>~N*#)!?2ZNnD%$O{bD`-}h!Rxq|Mpy94JyqPKb{a4ooPJ<5 zX-_5)s86ZE-7g_J8bM>l{%X}glzMSC0h8;g*x!;l3QP=AVAN{yljd7h5lovJXk~9? z@3dqg?Nm||$rELVYrx(C#nF>WI9M#Pgug8VPz*?5az_rBBx?eb3k?KT;4KadBqNo% zbFCVPZXKaaBTRg}-eJT_Bm`sjm+UlPt_C~@mWl?^AT@*SF(fQ z&1f-x#dH|icUv61&%4|J5-amBQ}04LlrR3$A+@1oA;`h#ifM;!Q=Uw+tSQ;85sxkc zpCY43GYLliL#mRL$bnIb&l;Got-<)YOfZ`+sPimKwc-hW`4(<+Fe^Z=Fy-5b4e!6_ z=$8UUVcv_!MV60oEIgIl0HWnkc1<{uIgtJ0D3lZFugH7NHRd-BD_`)AJKM)pOhC)o zf`>VNOpQnf&mI!Bv9p@O)yHi zmWG7%^;qD&yecTo;C*a%V{h69>MFB%A()W5iFIXo5Q> z1uOHc9iolMz-S}>L~!3lJRqo%N^odU@-9gVd2fOfO%UGC_m0Fm=GzBl3a(L|5pr^j zsk7mu7^odoRW4(uY=Uz=+oiH`Lmk3&=(6j#HG5YUo79060>)Rb@7fn1$^(~Zh7Xo; zxE;{G`Rmb7$uQ9#_=1n{018Bi+#ovPL!(v@*DPV=PssY<-iJ^>{&>XS zwX`}4L@8$Qb<`f&k_k>ILR47l|A<1zB@`b5LDLQA&r}~VqA_AITb&F~gn9Un=tk%t zGHWi$2t(pdc^&8{MbK}j7Pvzdug;$~{MS%0*cT-aZB;BsoGd;Tk47v>BBWrbK8JV- zb5R?g0Ex*!H*1m*L;F-hD>s-uVUmbl$E2mOCrYyNlzgTjl|4iKtS= zh2ZV*L}-a9UT$EcRC~i%e=YjSzmwG=#Dr*g+qJWA$<{KJYU&3j3M#PZ9ahG-57A1t z0LexwOvpzS?r66G9iQi2UtYuHfqa0^zJo@|)abt3H4T64fJwX*GgLkr1xz%3U~+Q^ zSosT@wfdiBIr-o%Ffrv7h6vrUGgZ`U#=xArAN>!YR13C?DIV3NT;X5y1LLm~ zTEN#QSVd8ECya6Pd9VL52%o)mgK#&%%W}Ip>|{RJ!$Ii>CLzI}CJKF!&0Rf4js6Ev zLfycm)G#nf?6OiyJ`)9)h+|-+0!0>AusTdqxX+Rvyc-Pah-Qk}$+1+AT47RTQfytV zdQ}q9R;s|8XS|E|(CL46`N&H#VB%2%=3QP)hJ)iLLk6AaAB4neWlmZD11O)#0w!@l zuuxm(qP#j3pE?GSj0AJYdQYo``K8PSFezMzZY#wUfQh~UOaj@!BsZU&DHCiae`;AU z1LKU35C~}1Vrlj{S~(HGyi}wedFie{V6`$LQR3CyeHQ{Dj_uWDI!p(>w;x75J~@5V zxsqcK%%?rjg1m{*#CiIRofhbC-2A-M&R>~FtFlE}PR!0qqdxx6c>n^rI=6eOuW zRD?exT3}Ib0W9;8vJk~3h_LXJAuUQKNS1va6ZG0T?nKFyHy0ycO?QLXrE`D!@S%tZ zu#XXVQDKop&p6>g-i?n0E%V5b+_IZVUM%3K@%M;ug6fLx8jQSK>lv-ZDh6Hzt0uRw zhrNczAaZFKn3Oj$m=Cf7lP|miM&Avk|Zfd#W$ za?l75`SH085FOss8ES{MRBGw++hi!IR}vX{kE z0Zhzik|^Njp#>KY8j?zB8xzwboT!jDfw>AR7juBI{h>ijl#(srBc8x0?;s6vZTo`; z0}`!;u(sFPExkmxgy5~0O5|&ozt>z_-T`1LSlJqqkdGqqNRpWFwoBDvU=m6*H^1<0 zEDP@xvHQc-Hf5M3EVkjv8M{e242Fq6N5o1**T4c4u7k%S;v_GU1fMJL=@~c(aE-P-{#QSAePBPw@ipfZ|o0jBbJ?{ruAF!N{G4wX7El=668apq{v%tT>tPozJ4lIU=$lM*(9i?0;h^X3@bw z-57XrtI-seHd%y-XXd5^3JlFcU|gs5?2g!`&v+wuC8|dkrH#c1WYh3wd(2n}#AAju zF%cMiK3A|x;=gbm>QxnF)>cxBu=FI)^* zZeM?>iA0FZwa-I%6aot-cO2HTmxOPK3MlCSQ$(io!AiQI%u{sJjL)fm175GoLK*O4 zCWm?+?GF@lVq^vQ?24!hpFx5t!siI4C`!2FBgBHE(H|MBzvYRAdz=yGTs(sq;G$OI zh!(D6>5IQf#H1@%j!1u!Z22245xhUFODPBa*?2!Pc{uNsXHpqK=}Mzr zbKJnR@)#`Olt3SmhLQ@(z!HFC(o(J2Qf~b5v~Z0qgnL5p3iu!Y%A$(HjtkXK24|Dw z=~PFNkJ{S1-t4fCz<6&muu$TEDN6vL*ss8Z1p`CG_zA)*1l1@be(Nk3)E`fZ5|Pd! z9lB5Rz;}phdUu4uymAdpjwdh)R~pO=`(RYpVa@ouu&#-tAk*>%By3tF+eo`|wffqP zwL0=n-9Yaw#f(Bi7@&Nw-m>kyk_1e0yMf7vR)D!ONZ=B=5D`-*gaJ|s$*lxg?Ik_! zpebo5fiCm`DYk6^dhY{b!IU``^5GJTM?Z>)j|bDCnB=C2=mahQ)=wITL-n|wL;FM$ zqm%S>m<}d)Ls#QB>4Ow%fsu^lVOH`|U^wgrCb=-ha^1x#ogHEnmf__QgbnWHxaC?p z1(Q3-uq}O8l68WqKUYx8*)Gi}5y0j=F5psLNh($;@VKC)mky7PkmZ!YVqMR4}r~u$D*2T`Pu?>Z=Cx@hM=!>VuJMirbI7!RH3x+7Y)LFv%UE zwxe8V0!Bi+LlY^`!pQ9cqp#V8%cf+vgpUGC6ueu^%nicbZDBstUGR1lV{mhz^lsyl zQwd-)*w7O?qSBo7OQO8M@YO2J+t_sLGd@h~kxW6WrBSUHghd6EAi5P0p&4RIwPE4v zs4%Wk?|Ve#a+kp~Nx}*dCRG#_82mo-0vD=8^jV!;+hGvV!5}bk3j&kmD+1GT>ZCff z5~uJ%N*bbaNjuDY4>L7UVBARdFuTrKgw@(>tVAv|unf6mkMB@og~0S^qqcjO742NX zQ+y^=A;eAOXUJSUVInU@Wg>9p!}0e04Ic?*A(E!dxM_-*xq*rF2>LC+@3+a~5BjcL zw6vUhpH~1y*W4zowbwAUedN$y_F*Ct9>qhClTDKDfS~~S#o+;q@+#yZ-fq!Y384x5 zCTQZl6$~OpN(?3z4O~FB4w&4iVKQ>D8W=S){Yp?ZJwrlS^!_uF$>p{$lu&yIvc_J+ zy&!Ddt~AIVvnfIgfluV%+5LmmNWqXY+76E79@`$39{0%#I ze#JP}J$=}fXHWgq8WNfzXpZD?9TL0{#fv*CqDfhB#Y<&7i@rbmSw&fKD(g+)PK-OQTga9ZHW538f)C6u!1DQUXOlHUO9tF>uyRjty5%5B?? z$Y64g-~>F(&j}BVCmy0aVtD}zR?-E;=8vXDnW7TWrYqN%fWaqZctQ~Z<7$A1k%m*G z-LTO_!oMh|#)@Pz7@>kY^R&ny$zYIeo%&_0Y^KcJ3bpz!xN9ogjFF zw_$}I@#&rEuv=x!1i8c^OSD&bum!$k-8dM+%)hA6>lGXm$l}F^VTKY+OO^!Qfk;Hh zd`YCNivmajM9l%J;SMM?A|))?B4k&G)InYLnGGCU$wai&WicAK;#MMKD6KpjicN{3 zU&oijgUfr_H?GXVDFTE$6~eNtLc1pus~F?S3HwQe5A|+E55yahO|@|JM7nA)bw9}2 zW%Qt8*hi>6`4M?>fe1U-5(8$9@+~ehV?nYEUkZGM$(agTiVWj-{$;MCIWi?Pmi+f< zJ76%CC=4>g{0qU1ob6?=;2`a#q$Du8{A+gw*(7zIB;0w|Hsz7#oU%<_d!=BvE%k7cDWqv#zeSq!bOTn zo!fWLanhKMZ3Tzeba6>=S2al`Sc$or76^e6d=%m#fe6tN$x_5i8jui32-OR35o!sD zkRYfD;_`yh54;#5(h3)ei^6ZLz1QAr{{P>nb6&=tYhK43_c7*Uy?t!0zN;Z^YQbEP zh6U@JY2*bS*wqkqx`bq?Qsj+L+Q?LcOw8cg5UsjShFxAXL%3dgGu*Jy*{9us zlDA7Zt4m+dz*6P`tN50INjZptr@(toP%QY$U_8U_<23RQEVJ>zge#uq0e%G&WD1Od z=TYw5>Z#woUd-w5*>meZtH}e*hhztqZkiny9C%>)9^Jt5?NkOGyKo)%FcOXHTBLVQ z1_8|#Gx>#RDy)`=C0EQS9d1FB!F$);dYl;&SYu!~c+wBE$xiS3_n`)g!=Cr?lBR!HIZF;v$PVGxZpJMaHeybS%gZZyy6_ zjEtt8QukR=jl7K!#$;f1R?l)wB;hzFh;Blcg&ag^u1O}e4lLE~9Tui<)=GKDD<18z zu*(fBoqvyWp6OSaL2}mfae5=bs8TD=fN?ymglS;;hSYq^Ah1Rj0Yaq(L9iJo7uxc` zrdaryf6V-Z;}H%h6*1$MdvqP6VaK^5t&u}Kg&==pb^5wT`?@ei< zXgEb!Y7kzYZkG=;8<@d(-34+dnS7-w>P<}P?A1~|z)Wb>p>b<6?(DIJ7sYr6<}1&I zQ1REvOn;}UX%|cNK1iMMq|NrMk)#+zxX41&na>ce6vr%%KAn@E{NEs%CL{hd&s`bo z;EK~B?vazJ7>;R|mbx7_91#CO3XUzD=biHEOoV368f-Do%!)~`5vVXQa#l_7?8(?I z)zdJMaF|Y(b=I!ldKefDAO|7P)}+Tho$VeGy}a+926zIN;g1G}Ak|?QuJ)Z_`7S(? z)iLAF{@=ErictfPQ$6o7e@9DUISj1gUJH)ysm|m@EmyyT=d+^*w zecV)PN(k5Lyt0(|F`l#Dt<0G*@Kn^;$GypaJFr*BN|RSdp@yRAayCLinf_SAb8#fV zr9TfSv)iQcWnh`zyTd}18rWLPb&k_s6fC&Ls}XR>e*Cyw2xFcJW*H$crv5j-kh5kUsUuN(DiCQL>dEcEo^9{{eXQHJ>MjRq z@l$3w7+)|nGBk6G%19f46t zs=qYdkGOI~7T#$Z+JG>{$72ww$eyK~|jFEpC$Y_Ty>OFx^fAD`}l7lG3^p zo*dSibQb)Zc3A{whdn&zjhx5Wml>KMSa=5qhGx{j`MTG%BXVcEky9_QJ5AfGA!kE8 zssdFzQkb?YaJZ#}y2n2#T}XMbQET`9EtiNh)9#9CcD?t!q{NIWf3XY53^ zxdL={*qIc#XsKxs9hy6+NLlzfNs%?MQVBIMntI;cofJ@KiXfBml2xHBnN(#X*@Dj< z&TXDcy6!kwdE%xW@us#F)y?f^mQAHjhXP#Vn83o*G6OexFq!KZH&TE;u*Kwdf!4V* zp@m_`AcW`K{z(GQOCYCz6_B}11k+nFcrsDSjZ;A zsxAf}T8iJ=9sKa7VU1Q8rdtC;oxIJ$!fw{|!$PJZIufTfRk0FHETlNg6h}y6$}3+e z*2NLT5>Iu6#5RH%w10VlW~X6A))?mk|c&w0xEA{;VhXt z4AT&15))#A!)0o5^MuCH?rI?u8kz+bbT~nHN5hNJVcZc#V7Wz$VM{WtBViONT=-$Y z!d9N)?VUe}zh;?#b5bHW=frfMdMPosQ9?Xe%~MQI-pi>>e7StvzxM|}`aap2dF)CO z-w^m}ToX*+3KkDmc>b6tSwWNK$&TwuOg_qN{+Y>pKd%JNaky89m~CFBsn?#DM9yRy zPwd=UWMXIXRE5Ydu@X8(B0pH+Ag4?b_Hoqow`Q}T+pyJVKU6dYli9xc3H0#v=hA-W zRMzCtxQjPHgu*)XqU4Erd9pTFF~J=L&nM%_yt=qtMRn_u;Uesm(vlN+y3@Y`$=4T0 z|LAZz29mkv}D>Qr3ijDG1F0^{wtPUgm_M3kk;R>KVDnGUm* z=)i=~uB#hZiW*?>X>IrD`eydZ#6Gb6tqsBQc}eZY_+0HWnnF7fzJVp$!)rm;*$!3x1^JB*#SBEQSj2lmU%xNEk@Gd0n^(|Lb zwnI0AVbHJ66yxH`0lYkJb`n~^^qC!w(3mjtSGDsNMGZ_tt#(35lK4!#O{yDUb>G3b z&2lpH3_!wIacgHLyI#A&|3gfpqS7PsP>- z(EybSd(z6K)}$ZaJfY{o1k2*&)LHyL`;#mm1Yx8=lGLo=j07A8g}SVuwN0pJZ4*JUCs>u25Ha`8zIUp7vioY{cwL4LbzXy@x*&=OK_@FFqNV@6O~*8V?K$Vh~g6Xb2&j_Teailr0S3{Gf~31 z6yF-DvfA;tE|=P!7Q&Q86$Y3!9S7zL=N1a{?+%-qP-6;p*mkaz=tSB$=6b~*tgD^D z`4To&&JsVAl3ccWXfN36e;U%pUr@+J&noT!R$Fb-sWNh1J+TWDpBpcCQZ(9N4IpEsn5sf3(55^3edfy7Cz9AkEM?pQ7k zrCaITcTB@q+t>f8u`3n*BySce5?NdfMmTgIzhHt|IQqVhZ+H(+?I&|41tMkZinH6N zyKc+?>Eu#Ojc8E|FN4;+m$z`6ofOd3N+p@>x9kwCXbY2itym;e8jh#Fb)geO`Qz&4 za)gQo7w_|2P}(lFYX#1;9Cb?>7Sen!eu}uU@79SFu)P<}7`B7|mKkZ;sJ2>4TBX*VyCsQqL?<04lanrYgPXa&Wkv&Vdo`w|`0+y9R zXVNHBb;$Qru&mwV+j~mkofM3zEw2e_WRb~-nvOh~SDf@!Lct`p=Ze{h;y68uLAFhA z)Rg+|$*5mh11p)8w?w&t(sXzcN{<+u&_kFyClRJdwyRy*r1#6xwa-_|z8Kq&$JddF zP`D}mhpBVyh&^kyA8HHDrFH=i$a5#?hK1iwv%ke|Jq|FPcVJo4PP8k+m8(N-GonYk zBh~tD!%-NxbValgO+o+8j8Kqy*+jXyYpYe`D254E`kuC0F11z`HR zG%SDB!0MR9gohe!w^U{L^jF7}U#cKSYi}AYK2Am#0uzpT-lkbW^V(&h(i#35nSbVQ z+zln(h=?mY(7e!d+n{4$p1PV0DI+BrC8G{0V>gEF{7q`vD;-LhIEB83@H!*;{{T=zkU|bG~ zfz=Hs+Sd(NA$+~zzwQIoL4NAX@BM^bn>s9sPh6=bvqPFwFbuj+7NM~} zg74xG2DW|rXpPspGxs~_r!xNyEOluxae6hSGF)p{c}QT_Fr|CFo0;ds_Wr+QPVu^c z*FJ@SrGIH)8JPr@h3|da4ijn~Q%=quf7`d|L|GMT%lA-pi0ak8&pnO~aibLeRVmCe zW32xw z+rQQ6=~oPUVn6DY#8f+bnVY88WKb50^+9xRg2$kA>J-|^iV3+7P)KhLay{x3+LKk& zzAz7c_d=#_a`kt2gB@}oEuS`-4X3_*!emm_E-2P=Mu{CGpjhn;8Xb#cM0Kilf~2oJ z>gQ^W#K-*1ysR-nur!otmv2Z<=!RF)e(d`exo`XMN5A~uFVAmfavE4h5`kr!_k3Gw z#K6M2Jndd@pZ+T_FduTCpR(5cz?jBrsrjg=cH)F{-(8XvkQi64rk*qXkmZ~~PE!jp zSu>cRo1Dy8?h7WZwqTgU3AWRZxq^v(<9MqBXX~k5P#L6QYuLY{`7Z! z`TLOpDc&i@xD=%=>qZ{MY5sfHBlQ&w5la~6a$fu8TTDI4fJ~B91IVA1(l@YF1HhW# zOT`bn*+>F+gWZh`Ob%pjl1H|Rc)2?%HcvE1S_Q!>m>Mi|EtD?;43(U=JHEZx!pWu0 zEu`BP{h?*1=~3WpC5V8{PD8?z`Zwi~>zw!|(zbf{03*kZf_? z>AUX8?w=3jPM~rrUSP;ju0)ZKS{;*O63L18T_(sjs>2Fa0*l;;Y1g)|ffa5uZl)nl zI}hdLq{SZpk!3dfAR_y#VI|P((4kbj3Y^l86XH*P^xpPQ|0lor16UEebg^OT*t#p` z@kD;dq(Rq?vIy4kGQJkQW$t_yMNSQ32Xe9eSS5Gy`xQsvrF~+TPod~n(xoEwO)$K% zqOtxZ4k7BneDN{dBoUtInY(~F72Dwtt?d_h(gWiyI3P`L}dc{M=} zof6&na~8dEcINd+rm?G!oIE89qGNYk=@n_P-kuCKFK?W>iltzvbkw^wb&4bC(hOUf zQ>G^kXxddo@9_6D`ttgmjK0T01o+=6{3Ym8!#0C}6^Wk|!28F0HuwW$UU7Kzvn0yl zn{}Lz)UmwpgpxFLx|>3l&ZMxOa}`cV8RQQ=Q;ld;}f~q&hpOkLTz9CQy;ze+sc-%dExB#*-w7uz0XfiO?FsJ zw{L%qWX07RTR36JH83qIw{_xVQp^-ZSokrQr23;s>_>c-tmf&=Ja@HwikZyInKhY7 z*35;7RH=d4*3JvwB`aCri@3FKKeIq04gAeOmB}jW9pqH6Z#z?#jqYu}!sxUZ6lz-) z9ZyVugCgZ_ar36zK&)dco!moLt@tEaxr!wLzm;X3cN;7{QwFIlYcL_RaU^3hJa50) z!eO84S!P2aSGBq-{!HPR=ilpF8KDKsB7VM=4fKPFAhLYE^k+W$A@9+5w}?x1TNMOM zN$KQlN8(7XpeAV9Nm!jO5gOb7^=Bl3l|KcG%|dn7(E;gl6HAgD-+r>Nfn`u6*fpv9 zbU6o@n+hg8Y+Wgs7`TR|6rf$c|3gzG3Y~X&E~iM3Yk}oEQ6>V&kj_DbY{wnZ4x6oZ z`F`W5sC*~c?&V8QR2Hzr4Y@yhW68)MknP#yq*z-3<4knHxt`Vo zL*;AE^KF$^oBj%$WdYPp;8lN};T%4$SP*i3S<=BOlf|azdvRl|DFK@telHtwC{ciF z*yJu?^?5!7%aqa#A|xZfWo1abP>dk8!AAqrT=HWwaw3pao5E%?S`ib~y;4>+Mq{(E z2-u8v-Nne^aaEXy>QMzL;qtRYC$Qc@uGzwR5kPkabycEZM-`niaD{KtmqgdcZn;>= zTup}PSnWis1ng1l)@|B&M8Q29uh zk1Z}g7W><)>(oo%X8qrp%xU|7?4m?zSlR4g3>qz<%jEUJr3<;G>t=<{{@^!XnC8Yp&_)=-<&;l>D2tYQokb*i(-oZx)iuqDcD zm)0hKqB;~ITOCdyPj*P3uie6V>dfRMRJ#`s67#deaj7*d{Q+#9QnRWZ>wm-2u{)u< zSH<%rtpWDslb@bEZ|qM!!K(afkg{-riMBgWaQmr$`=jspLbDXIOy6*FORes;Qgi=~ zt57v#)cB|<46tSx_{H|s=|YOgd1^$r@wwFUQQKPn>xb z$+Skf*=dIHZigEz$TBA)RHv@0h}?6#{Z3=X>D(kR;~TNMG2i6su-KAW<-Vom0xK3# zSp9u~rY^t{q|^{xV7rH}?*6z^s$G|q96NTp-$eW#6Fl8%iz{X)9;43K3vVTvfz@QV z$ZPu<)K-Qz8kmsLx~o$kF3*m>Qn=0ikv>EHd9@{WkjuTO-2^qnqo*^OvM6)D4d3$r zq@jbAUBTHE`4qiZ0{KLxU61`1l#f!ZRp7=nKrmGHpcQp9H} z&E~Zerg&pizvt>z(qWZM99Z#sX;g(=+@#xQ|2|^M)mjU$;5pq^ve3ZNcd%E)trHZn zlc>lcdC_c6v6DW2zJ2%~46`dSWU{&HfH1F``>U7R*LBfhuX=Y)a;cKJ^2)-645DDa zDKqTEf~<65ke|C^@9)eb_~07hT+h7kWb|S>Q^2j;RUE0wtZ}3}k6;lh5sIawhzeL) zaG1P{Vq!x@Q^10z3_E!BnBFH|v~u);m7@==?D_VfD(!-`z)76B-mnvoKvjw#@Lv?I zu+c@9QK>?4F$}AW=iJ9AvRv8UJ-{b;e!oLIA0zaEm^$3v{}17DTN5#gQj1`0MiS9+ znI59sIsCke4Cr&5_KbCi!8?OdogepS;SV{O|G73FC{IzWOPY+8GFHt+r zSal%yURc%|k4#>W>b#MF zMc|Z6D+0%BT?EbpIK?90kYMv**uWNQw-W?zr;_*OFFi3x)dR5NR*Ue25}|mkO3US) z^8QQUB48PKS?Nk>_S^MzwvNI=w02RxIK;AD)218F7%hVOikX`Qb zc3w=9(sKEJ8NzW%^wywQ$;1>UExQv+-aDhmd%XDd2F{JXT(c9p16HLXbf^_oa$`t(wv6dwA*_&wM=H$^Ux+KK$)s`FFwe`<(W!KdSDfk3s%L&CIdJbpGlYF!7khw%s$MkuzWeOJ67Ct;|pZ>?VVP$m?_sY3t;RBMN(OdO$Ij$|WL?KUrC4+BH2p$&Npq>~h-oYZl-#;LxU-Xoc^EoZr|@@X_~_7q z#V&xQA8Q5 zh64zh_#j^{7+{(~W`ZeJ$w#gD5U?_n4J-{0gbvvUmtDA%2M_!u)8o6YXd|%7LjhwJ zIB)B$jsVb)=S^1#qZMsY88y&9t<6xEf2v(V0V5G~K%sk+*4m>3T9CIYL0G3WQ z0c9ypJIs2w!@yOF#L<;)&lrj+T_<=r!U3BFfTgaWU7!0rs*qHiX|*UeGiq}FM;#uL z=`F0$>MCS;R-6`2x<}==jXqNC4ADm-;N{Kg2zNUt{Ws1|Ds={TYF7%$z)~FrQ&Fz^ zJ9%QSj&Kdj{{qHqTOYG;6s#oT3G+?o1z5d?@`ib$)Ji$&-8=O}N;3OAb+1 zD@A+X?qw>rU;6VO$u29xYg#4Z$ZSakjc`<|CRo`z!CHPJSY3Q2XC}<{k;W{F{ZR(z zj-t-6=p^pblO_t)fib$AWwo6NQR7&`MCr%mmWz z^<&L&bf3Hj#GN3Xo~&ZEt#)0^Rjf-(6Jv}m8J+pA2Nqs^-mc+YEP9Jpzr!Y!IPL}w zu9OI{l|K#>cGXJwnhF$odnYg>2VvmK2zqku^E9>@qYU#rS|a%lYJ8m2I5cYzvPdEl z=2JTZmL5Qp$ue)FhTT#{4<;-(hV?AZlUc5iP>gvgj|_jSY%{yc4_Au=Tp2Sa3_nUd z1S`>Utexw}^KBJx1}h5#SXmeb_U3IeVX$Jju5m_g__)gU5xvUb0G1hrwjX^vcIL)} z3A(k_bDMI-lX8@ZDd4>jlO$d=g~=dwxJP9xT4a<$S3(uJw2ld^j!Dg?I;JV5o47?h zWJo~&PTskxkC=Ig152|MSQV85ldTXm0BpVQ5Yw65VLyBE&Ux&hs?vegYa#PcLV9@( zynXPWF*lVRPzPlP1S^~Uz>2kx)P7*eK^*46sU!|y7rEtcBIn#2rXA1#Z(eWT`cLV- zVWyugF@crLVk}R{t*n9RIGM-D)9lXbS{@r2m{;%andO2Osgz_>1V&14sFjoz`<)z8 zrJsep4sY<%!g3RS#}!yR&SIaDwPWDe-v7^S8oe=a%PWUzNY=cn?+mPnqbDxXoUYya zTIyw*+&MGu$wjE)o9!Djr>d6ir>cnLFc=?m?p*xIQE=Ko0((b?OF2{!_$8*~RMtjA zEo%^3PQj|yjBl&f%)qwK{(?1DmZYD`MF;ZS~btO0B?kLHbFJZZM&{?}W68(v)SSL8yLRX3G{TodKRKq75zId^H>%V{|Rr^%) zGM|B!J_lBXqXw3z#kyFOfG zGY2v8)f5SJSP_Q<>lIVq^O&Y~+d9UhL8hc#&T#yF2_w`6>l8e2bNj~Mp}iYz$%c@x2$L}8ShnBW~-06E2|;So-i?)xe_~F1X0#w5l&X+RihnR z#SfTfTd>zfTew3DkHOMq0{OF;#-OK#mm?_ zgFINUV4mx^cUm>Edo>wcA;|+eoEpib=mw@6go`1OkOe;&Fj^({rDUVYAx>Oy>Zxz> z2b5k2rqX)u44EiJ98fi-y`&6&zYoizLi<7wzQC2be{Rd>SOk=g{)X z?lYM(drdLJMLr!VfKy{pi*`OhW-1EE$ZUU;k(v@&nI=l89;qc4$6WBLWL7$VvE1RMNh4gK!iCWfa*$D` z6Q&};feUv&fDfnPN9ls{s1B^|IeSa$;o6mpaA09^`3c*PVJC9!yflyy``W(sKM)_|QmJ|U7y9i+?D-_4H!o&aL1gaOaMTrh(d(%>eZxyx(RR5+f zygFUeMR`|_#%2M5s~v0V%EG5zlX9q#R!S?lmWsPm!ueR<@3Kz=6J$`Zd{kaL-u3zx zNm-FlJJjdgpYdl9byIQ>MO52kC2!um(~;vcP#Ow>!-8Skn$2i3x&*GBfS6+}6N|L-j3( z->SV&!(=)Gd%J!5KcQ8b$Lgnfn>72amr%45W|pUlQ-orz9mhi6(f!8f^S zbn;##L8;qiM7e=0BLr;9;-41BdosXGyB*j)wCEzW4ea&y$zQf8F18Zh6y_ z1PZ+h{-WC{;ZWbYm<_uSiDlE|Y$X;(g^*_uSdtWGp2}M%I5hR) zkgKjN-?suVF5{jEJdHaPG7UM?Yt|L?F634f-CPJ*1ZqsX2s0Q0KLId##$aKroOVsJ zOggj_lNPqV?t*XS2-F05--^KNt|!B@QWLD$uo)y3doU6BHL%Q$>jduvescYDt3~=1 z&y@~Ui1}b^68lGMK9h$*R=Iv*B}L#lEFu$qU{B0iL5~_l*ho#9lP$0Dl+{Y4Mo|>A z3+!j&32lLYfR>V&?jnZNIPH1|r=(9!MvTp|kgLhV$K;?Igkvf1@dQofwo1ROt+s)o zK+G6f2jHcLa>dd=}z&arDH%=1n+*d^4`#}gWt4af46FbaO1ryz+uCILjf3lhR|S0C|>!b}k- zMY%ZK?z7%QQ|PN4fY~9%w!|Qw@|k~>7|MN(h?S3Xb1?$*D9b7>40 zt0#XUa6t@DxN}WLTv6?ewIz{aDBl(A+5g)N$2XTBv%^H>@(hC1#AL*`6n@M*_Bm-b zoHGK?_*1&QbtZPiB1jCgC0Nkudf-aem@yd9a?-CpWD!Up7FfH$J5V2&bHE@E&$oAf zjaZqfA@fr{4!Fa@x;C&(g#zOW4LUdP(4|-jcCA5fTaQx(EVclazRM|<&p(}eA+n@k zGU4Oa`}TuHx*J&>5JOr!1WTjLv{P8%f3a!#n%w-90V_K!&qBKr@xfHesNpk|RDTnk zKkb%HBiqM;YnTpXA6F3;Fb3hc=<`lblECS2@c|ouNEVx4%o@K)>SVu*Qwik|sT|)D zVUw6>m(D$te)C2|Q+_<5UkyuMYBHG`p~DFo$!|S&QDZP;UykW6i~Bf>=}(91U{;4| z@20GK_$$cg1h1r>O#DeG=VWn%6oJdt;0M1mFAI?@ zNuWf@^x%>I>3T8LONFBTw=p)PFlH9G zcWe__ns>B|5Ea`#fgOqUU@32-cvlC^`L6O1rK~e~A!&aaSPJW4jgeE0G6{#^yhYD4 zzRl%84ekMk_vbFij7`j)6vad;Cd-r-rvyi8rC={ItZB9|>o9_`wg058fm_S0Ml zJ3%;1pso0)x~ojLbrq&YUapu9S@;2#{DpxcGbSb~-ASEyb?z!)8a%-+1?f*>4cLoN zPi&RkrrdtjjZ&LHBeHt&jQi?M>dhKv!ncM*j%C&}Y2MJpbhIud4(eS=91}2i7>I6q zGaxzjyfrh3c!U~QR7RaKR7m>Hp%9+l=`Rz~|A8G?ER9lHSCIiVrAkzhtXY$OyM6Vq za@+LnbJgMmcdKl;hz9n2`-Uz&ew54KHzh`7Rjd^dChJ}@*%r0ygi6EP&3#q(_+vnR zha?DKg&1NT3Na?}GS3!l`|N)oX{lrauGLhZ44*;pGbN-o_rj?sUJk42;T6A`Z|@$r z>G1XT;s0Sy(mktRuI7eCV6852kHiSD;vSqKCC^N`gq`y&b5gGA+cT$YAnZvZ9%onz zcVKCFF{d)=4=mKonS16*4(wWx<;co$OO6l3L!QkLG;A_iOJ0sgBAT0=l?36=9j`I#`60!=P?BSkXS>ObN^5s7Ou) zc9GK09LUApKK*~qiH)_EfJzrE>qX77vIG&>yuFd%D*BW6k~Dh}0+%^?9`gPFZ}zF= z?s<=?wx2JfwqK|~&0P>pw`)ntdnFexf98sGkD_pBPu+K~J``eFcP(7q!qW59EnE=e zM+a#TuJloWz1`mVYqLRVVMgrpG2!vsKhZ^{g*r6Mwl+;g$viX+<-%r`4Pq6~-8F1s zAz0~(lk%N6oS(VGXnF)uEv*2K4dYgHk zFzvZup<+F3_-U`vuDAkN$?*eAt^l^Ovh830&X2$Imw2$(P17#(-o;c@-undQW#0P^ zOPk0%bGv=xH`;G_ltaxUGzlZY#$|FhNsHA^LF$6xR1LeBUzYvGYu1lPiObY^cB`uC zZ;c(iV2u?4sNHHqpPLO>`VjXr$79YKZ>U{BW(%7p!=S!>Vlr=E{7@?D27a-9_FY4^ z)7&|=3{!_6Sjtgg58FGRbGT)C_fy&Y!LkCOEupmc@`>WHEHZLha764}?aQYN4)|>Q zx;cFz>-RfP7bCYzl6i7c?a;01f&r|iQ67EGvzpNi^{{>MyLBO2tGdW!ifPXOQ|(YH zU2szcWr3I#UpTPjonTak>{db3?ytf{8EvoWcITVJB$zf9z2PM}2=`nfunv zl&rm~Nc+v1Jr_vV@X&(%$h%z#badA6HS>})3= zzXq`lsRwZ-9*L@VDIPFWWG80xZCxPROjKRvxeJrqzU%_y-&6@r);vzCv_wwq zO-k(A5qxsD81$DxW(>yb+Cf9Sms?1M-9G!ixfp53(?>pnqhIP(jW24U#-A|YoF}V% z4KJ5;N5wPM8Ta*vziCKDs{F=R>7n|4wQlmP|JB3x_35I*J7!nYu`saIyusdV-`2$= zWu-=xQk$>|EH0S%frb@3B6bwT8c}4wXv@w#NX-9!a}rlx{Z>pJOcPOE?aD{3hC-&F z*+DruHOBFl!dp5yuJz?@JV4fxEHkF{*E8`_&YzWR43zR zy6ns)bF4-{$y7-j`uv0K{dZ??3&X}!-BT))yDku}*l&`2`pmRz%;pEa;Lmw)87k9Q zhaXXm6R->VR=YiQTq`3IJ@GLLs&X;Z^i7mUBw-}31PyRt- zi6T>})%#XTX#}TZS|VQ7d5-o~lF1~L=3Y#h-Mmv%FF4O}$^ajGaRjF`rL-_0rK@=N zu3pCk<+9ct7+-f!ChI1?{O!Yji`RIzy-pu&`}8-vKdx(xKN(52NG^#Q|Ka8K&FP|o zxXgk-r@GA|;85k^VSE3tgEv{fetyb|uLFBi(lI11Wd|(d-v%p-;*(o16zI&t0Jm?< zoSMq>hA&ip2oYEY>Ve%+;u@PaabMvtJhW%da;w^_jp-n-H4Xf@2V^^K(WCQlMWfCUltuHTM4xy^~icjKk zNU{jFcti$0ReMhB9hj7d+=WSRC>R&z=UwoM0ntUJ2Z2>wJJ_r3*x<+g| ztg^}WsV=bT!X{y^NtGZ+DF9wYFPjor*_6iZTj;^+vZL0SO)Hw!_ooU<*!?jp=NhY^ z#I$?0ef38N-HUf}<`;zqD+enxi*c;~!_aawCwjwNBr zSrTMImn#;Kor+N@_Ja9u(S>((*I^-s+mlvU1&ms)lwDYtUIJL5wy^WEm0&oJWh?<) z-CVN^@?y@Ea(0GnxCp5`Y{L6;#e8#l6QuK9wX2i%4_KEOL95HmC0v&otX3?qu2e0q z<8^}DU;8Z|e}}Z}yqDg*t4k$Hzv!^glaj4azPc;(uwGuY$-mpjJtN^bd20lCQR_Ux@ZSMdpkpNdOX%Z|JH=O6q@9OhJoD1Pl z+d`x_Z?5iu1it%QCE@)9#k{pi{M31` z3xrV>73VT2#S^T^h~idPQgtFDhAoRXvtkKrlR=Q@PXDRf3|3AE;WevRK1M{L^TlVt z$`XTXW?X`AvtZElmj#0c);=W(-5+EGp@vz6*2nxz$(u*TPjMIhuj51^OVt+lbSNUX zPyiOPN_tXQw#6_0zaqLSf7h*l%ifUK4;H=v*0-t3btY=Vj|6-4xzD2#fvl9L-WiU< zL|};{B|>rVym*#sIAF1UcI+^#5An;y41Ppml(CS(tYpAocdOG!SEUQE*u2Ojd$F#V zF+U$&@QelI3jEL?^X88uu*#2Q7w|YPkS>Y?3F52>l!^RJ&BC`8pypc<%QNnYzz#5F zOfV7dIYGD`C#_vRpQpg+RCbPUxt10cZ3wJ}WzW#zQEmE`&Z%ADF<40>U?Gj{V^ob8 z%E$+QYbufRUP0P8z+PSoUhL3P&DTQ3B@q6+f`U2}?|&)yHMVoEW&I$6$zHPFgVFionPx=_a?|73I^+ zkHynhhk}Iq<9xhQ2_e$RI`GstYceZ@=~(cM9V%N_;aED%+U*8WJS#*fu*&N2Z3U=l zm+69!(_uvnaTAn)IIe@>O1_mLmN?@+q=8er^3A$*(h7nd0D&1%~BSSH`1 zip|b2VWgJg+cJs_Ed3NV^AxTXOJVJa2FHST8kYsnNJ z3v0=3#kNAA)6QO3yCzaB-(mF}8jwX`U%p^Dt7NLF$(?G?cy&r_m@0O8##Hq_5+Qae zUd%hGzTNl#w*8E#2VpqDN_|HGD##A3iiLnxv5uA#e_$0Qvm zwHfUy=M4<~?~n1Z8n}GPKCXbvfu&UfjEOAz<3he1r}f{rUp@OItpusQ5w@$_H6Dql ztE)Iq7oB(7_;z5TuVRLr$aUW*9ytf5*rxG_S6IOQ(%*=18SFN1;i-ulgn_@Oghxro zIOx(LzmQDvI3}?2=}IE5lyYNGg7*GS@*g|VvNd*QvYqql3@jt2!SWS}`L;wju#h## ze}KqEt*)XWwX0}ItE*JPfu#ik?3QhR;2Yz`8zswfV8~jNadZuMox(5@} zPQb{e-A(=jMB?&eFLuWDN`IjuA6IKAuZF-DcL*v#dFyrh!S8_3h1!|1$@7oEaADpSS31f}TE!-P*qR z6JMEJr%@dfb*O(g;(N6aYS*+EtTtRtpVZ5ITOs2Ed&pFMz~-f3=`f>0RH7hQg{=%M zU8rF9M8O+pAzr3&naF8(^ArRVF1R?S#etEhr509N5;5lz5Qno@wSx)z>k}ku)iH5H zCk(eQMu5+yvS8e?zy18mSyW>y8EPuDh3{^x_iPg>+Ycgr51oC-#5In33(J~!@d`1(#Nux)|E+)N_*oTv7HzO!AkcK z3Y9TVqTSYtwNoVo(7O&XLt$~-CqH9@t`j{;Q0#KW@(6vIFELLBrdb*+AE`2Y8};Ua z#fyY@-XOAX(R|#zG062z-aF|YBWM zQ^XN0U1z?`7eI}HqVFenN;@0i_UQp*QcC1p$fZ0_xmQZax)Q+3p#}5sU$$#22t2ERQ7~FfeS4UBzjCAR z6Cag)9jqMZU}ZNJ4pv2fz*wn1{CFN*&f!I#6xMYRvXQEqD05Kh*aJ(Uf6^tdqVipg zHKp}Y3Y-e8G8TNSnto22H8UpdTasC}vyf%K|MnS#MJT8|k*c0`&fkv$l+0qbMRF~*WFUQBy+n5@0ZbjFnkMd%FmvCD z(uo3KaHQ30SpGX6J+gSVBlYE(Nzto|C?a>E#zO%VHL40C%nn+q7bd zNId!ZE^a=sHy&xsm2?eMx#aa;#N?MJX9UZz3X4Qti0>2ezQelvm7#Q>ZXt0zFa`a<2&A)vn5- zV7nZ`r*=DHw?wc@;KFp#+n~uuR4n*z^S>PE?d9H{%MX?q4wvCc56O&i40hDE_lJcVL+eV*p^u z*ix^{a z3a-0wGX`i_Wv#(lK;Y|4*=|ZPCg%kcjhq9Er(75EXeE}C*N(hV9B6#GwGynnVBAv4 zJ<;Kt{(W_a+AU7fFa}JpMhe!S6B4hcN)KoXB96GX_>R zVlbLmPEg=>O;F-T5HpUt4qyT+t0M)V>@#3IqB$_*Q*FPn^!425If*gKqksMmV}O?* zE6h*Bds@})>;x#+>c+eilQF%FQJe7fJN>vC0|uC8(HS_+qVqImI;OxX>R#cAYtgP{ zaZL%mrCM(q&Br}3&w6bkCY)Q%BAdnl5!K~+CQR-~xbOdc`#ClekvL@2N@aqj`solf zw_j9gAe?qQ2Df&Xz~}*{&E360nr{vFKxQy6M;5H2CG^*HjeW4!J;Yn&~~GC8csG9r+c8U0ZgvOmFE)!$37Ik0qDnqV^`TH#`qHvaA$E`fnClqOIe zrlDZIz47w4yKcG=Me71^s0SewS~rVcZ#o0O3scY z=R=TdbI2yQ^++fwd{)S=TjOn?cV>#* z3ZdA(_z%zB4%^~1FDEq^-)u#U$PmM)rRIv1j#wsiyR-rh(+qQ0)r<3g_mRP&$_Qq zIjoye?{Q-eRh!!&H23PTSfoLUhYxHKe}~WkRxMaCCsu=$_m3lzdm`GY*I(a)C9Ux7 zo5ws>z$$TwVps5$AP;duG4PaRjboCrRPQ1A_9!v?TW-vLfH|4%YrpVi@4@ZXa zW@~(GHVCqBi_L;na@F?9J70e9otN9Q|N9q(&*4Yqv7Zo@ycl47=P@&0ko2leU{{*F zu(y)q!Dtns0uLWNONb*Ng0U*+z$D$=eqq!L!tMCRecIpN^9&Cac;4Dv*z!KGkd8z+ z`MAkAe4DRrnlwzR3F4x0W}a~F=R3ik>X5{gyP(igBFj9AS_2CTtX&{nz6lkWh)}LJ zlc@w0?NVADs>^$m6XagX9h_jH+XSyF@N7&d~Fnk3i3=&@~w`Vppg-C1DR1r&DMD~i@ z__hd~Fo*OR61dif+IKcHQdr_5S7!?2q_C=Z2v!+4VCpaBZrOx_y?*vXX~6dJ!}j4n z?qsUorJvS%mxH=sX}g?9?TV$z=1%F31X*?Oefw~6%b!n%m96NkLDH(bKP{LjK>$tB zklCm5aKToW+kP^YsNZ`m{xzmKf-a%g4^PXMs zsC{F~7Sua}^B!b%NU5u%BfORHfVrlt6~le&HKjOXceZZ5yI6PxR(OQf_hh7LCygYC zU#(Slw-r6G;ugRv!a#k4Dl!9Bt}L+f7)))1Rr=+&5+K4QAG_dPoFZJ9T(J~PrdBN0 zHAN$G3~eFDAbmX+P`jcPCS6;oSX5rwafeiY0)D&Q&G>tBTbZF?!J46|?eM+9C z-aN3nO^S_#m6FU3SXT#OEnBAAMF_{?SSucXR4#;1Df77nVT+HehUA-qHK7qR z)#pwyt#4J6IAAxKUHy^Li+H2bCdfJ7Sj}Wg@EYmsE`EWOvcLkKwvithtHJ8YbtCv^ zw@?0=UH(dZ5@uJ@19MF+62=ynmv&stRq&Ma_YBpzxveycIy>a4s9Pd$B8eX3{Pwkf)~QzXj&8ZbqT5OR z%k{X+MZV@WkQ^T0PfIj^ET7Me@q14w!JU=C3>ua%n3~Z_g$fnhr~llDTE#G!jEaZL zL@yCaXnFcoaNG(K1haX$KZiVV#!^YRX-2oX6|SoanCPwSka;eVMPPD9u=#d1=Kl0h z48Y<_QoDjHO*{Ho4g6~R#;*$NtxD{gqnXvbbtECl+q?h#P>dob41z^i!Ad?u>+6CG zkS+GcT2X4FO0pN%%+K9%i}XV)U*`^1`9D(6J%P5iBTj8U_NzijrH?e zT-A=X`2zOinn_Ts*XJi`@j@a_s0Bz)SSJI95EZN*79sSde1h{6rfYi;-m_LP1W?2B z--<9PvJED~Bqzh475KADrL}`@UBL9G3PyEElBo`DZ0!QyNUcsTRBb;yXzl7POX)7f zBhclm#Y`*3$*c)CxeHzVkbGTr4#95anJ>mPQv3iD2?^qQj6o(QH%N*^G!D;d$JJFZ zp%evE6{{K&_iGT@19?o+@zTLeQz&bJg_Lq{r*C82q~S-W0G2cU=qS=XFB=Yz*TV#tO{lhtghlj6kMp=n*R;cQsLoTB9{0@7#)V(7^4|EiWH|TtT3YJNgj6*u zJP_@W{L{x(u@z^j=Pbc02NR4z=rrk_32`r_sd0R;y)#of>-6!CFM<_oXH>gL%!j(Q z5CN`L8jw5NtB^4WhL~b7(`vntJg{PFG6Pbq)(&(ZQ|d1qCc}hi7*8lcm7B%gU7@;Q^)?gO69Y^BOGKvzKhM(8D0e+JF}3(gIue#! zbf4QGO$8=HH^?1Sn)pgV?@S2GNY#xm&YJUM1p;n&_@ZZQwnokunm`wjP3k+;~ z|4&dLTjmz&m8L$;`M+bs9pm=Z>4LUcKPjwJFpi0aZQqzKT9%#6j6_AS!U&d;?cIM> z7p+jhsiM)`7NyUDZJ$gR<>pX5u?ZnqS{Af>xqYUKM_O{Okv}mh3*TYTW~Vt%ALO?p zdy~we!fED5nXlr|_6Pp8kH7C7QDT46Tq?hoXp1@K82oxQXY{{d?p~cUk*m;xeR4nh z^Bv*aEQQ0crSI`~Htu0iHHbT$BwQxRf{42iA_y)pag>n0+4H_>tdDal_ait3}$1+5@I|mwoCYAWGSJNAXkXwHMbxEgTT#k#J8>6 z@3|^?-ufOXsg8svrvwQ(Nu{I;04%{3tRyG)kGF4rA-0<0TF9mTN?Hq{dDWY?kmuWn z{|1^?wHm3-w~Ek5I1?BfOb!oc^Yq7C)a~%q`u17@;!M*<9m!kj3<|d=1S@Z;@XEqj zhUmK*c@;s477MZ8X&ML7JU{YTQ=UhItz6dOXUnS^|1vu@( zFrso_VQfo8(p(G01jS{df&QS*zPO(|3?VK7qi$?JM`P7Y2CKRRI(*nZ{Zov^88l)! z<(~qRGO+HgUW-O(SN=P&$_}8-2vFYpyOU_Zin^DDfh*;}0#F*p0+;QWYl3;%FboQPgndw8e9!2q9?m&RcKfhN#Y$fkN9?qKJRqqL{mhV zl>6Gpl`{t>hCDkYWaUEUEJFD7t@Aj2J2XXxY+Yk8@q?#^d%KgV@oL)glnZ}Dwi8v` z->!M`m;SutRV#VJc99**$xf7Xv6F{R@vcn%Gr@9cXm?c5IbA}^L2cI*Sjx#Dm<{7U z&4nOa$#aGat_%K7+wT#A?b-J6dw&}f!Lsl{S3fQ=&0l+wRdZ#(*5=cbh_Y%fo~&Su zC;?L}IAvBRQR0H(uP@7;QJ1SYSvgB#Jr2k>-?TvOg*5y4R?D2=i#6$WN8R1JoDI8L zp)xI1{qPN6P2Cwjy9^hB%Owo?_Ju^87+BsnUm(usDVkci8IQft~RLQ9~>sVT>|{8L(wp`V)A^o zn|Sh?V5QDYFw>jI#Pla30qtpp34v8uB3Ls$-og~Mw7a?dZX!NSh0+$YmeP<$Y_l$D z#J3{7>f6<#KD3h76_UIA&nlSmmk!CM*&(f=c8f(OWrT6e=8=qcmPaCD^Hrvqh$JY_ z3RuO4%u^~Qc@4hhz*L_sYUta0rpV#!0`#Cmte65>F!EU1k|)``YmNnupL+v4iPR_nn z8Y3rU0O)*sm)WmrCaj`zx#MHTogyj|2b0IdXIj$rTWJrutHOEG)iZt`M%5UY8M+W@ zEctmObeN_<3xU?rAM`CnW6s^U_|M%#>f;v8McE|MAZ1MDHHf^Sgmpai=$t2GHwTHWC(I8PAz2UZhj zZtt1i7ef1}$xz$_fvH}P6{|R5d}-D*NQJX&S2P{$?!vhW_iDzJi3IGLE^qy}S#$KP z!hxMJm%PW*VF>7hgruoB5;|BiHjwqn3ga6DqUZKgBa2i61bdM(1lW;1e3$=pSPI-*{_SKOK7OLzB#OmC z#1f<#OyZdRKer?Q>9FDk-clpd>&h}#$#r5rxoFNEPJe`hoD8elIJ!A+b1mp&}OvqysJpVgNc|5hRFSG@ZC` z7c4I3Pv0`+));qV`XT?}iBSV?1|BguKb{u@5{57o9*yBH+D$FffIXU_K-OreidYDq z+;i-%wKGgW(cuISr@0?}OEH~=njo8%wuJdtcCKAu6Nm}&IMpo?BG)^E^yjzY8tzv7 ztNdq>s;V`xMw-c8h{+&kse=2K1eonw{C>;Du~a_7j)$4B7stnn9Hni2FQJ@QR-wv5 zLVo+yn0@QMhx|uYE~7peU`|H#T3$swu^5qRhp92^?|c<6@*g1d%0XB|a|@@YUtXv2 zX4fttqqT#R0H0$#itDM>35Q8cmnB+^NNKUWPV$M$aR5eO$bliqELZ~eogY)_d%Nsv ze7t@AFU|8t%2Cvt%FN^S_A+{1>FvHP$LsW$lD-Rx`sLik8^2D%DO{o`F@JWNmvq>Z z5qy+}N9pcZbq%Z>z!i2QoNh~PJRrJk^k!iW*vPpBj2vIjQ5TAh8(i$-zC7<$&xGQ#qSolHpw z;e^H|o1lGZbJ86@Qk*9fXORs3mB=yAiR6WpGylXEk}tBMSqBV(rBED*bZoycyY!+^ z=IZ4o=DwX#@B4p~#xUD7|4uMjcQ~&E#x8g;uEYx_&Wyd&-}$BFE8(0X#<^m(kkTxm z+Ct^efR$Z~D9}5|V3P4>ismTYo5(c|j-;>(gcth&E1^g=ni7yD*p$Z3TD#-N?EiiH z6$&V<=D%4dgXIZxuH71aKaK=53ON-O9_jktZpJ5jV)S*MOr-0;+Od!(FH-=zNGn($ z=Sax+f%kE}6%PHQpP7_)NHRlj5=Q=wE-`2?*R za&)_qGe}lQ7?`M$7(~iyP}ph5B2w+LUe8SW6sUU<2lx)lNkgh+b*T=C1G)V)m$q^z9r(>_FZslg|7cPD>i*N)WAhvWj9dqu-m%_nx#)p$a_8+bGiK9n9OHH)CF+OzLnJ`jawS~Mp<2(*P=#a1*+1%{O-gn2_s9mCrqL;S zkrCAc%YdzcWuWW8viKSp={M2DHV}#9Ml%0JK;PV;lm=&zjDZ zKF;|2fn`AbK1lfdhTCUUoOZ14aqYlTx6+X*7ucrKC@hY79yT6hLT+YEwipa~mdK7_?@Jx|%J{f%b#Hd2c0 z5MrLVIHkm6({OuNBRf?1An_Ab3!9V4`1HWf8$l$071KrP>a?b|avrrQr#M1RlNy{8 zWG0RYK8|y@2T{7^nBhegp5UBJF$bf3-jRE1m=6s}XZXPKX`1;KMNEPyJRy=Nd|WT- z4ouintd6ZbnZ0(I@#|X!32(b_5JVxaq5RJv>Ezx&PFgjxWg!=zTx9b4b_##Rq#ud3 z5nnb9Gh_#heq1Yt9*GOcVIPUhobr-L?Vg6QMIRuSFB=6M@JJvOk|m)wO(>ddX?;;virdLC8ij|rG@PTpAvr|3xhEy;4;IAYHXj2@J;W+I7( z+GVv#9dg1PE4eZvu#82WflIoYZ!x0bKj+ne|48^{2QzTi>!bllQkjaevma7+cctCb?*=pOm5Px|3?hT=(c7w8r# zhKXz_4V!@|{mLfYwo|v0&m`nOK#F{>gtam$*ArU&kbsnU!P1v!GD`g2Z^=den~#g! z5*N};?Yi#)3JcEgPp8l-$0CcgpqAY5c}y>rAUw_Hvi$%7jR-TOKEw@u{9Nxw1oHAF0*& zI79#UZwpzyBolsm?Z_m-J&o&8#RBr4ME#75x@Y~j z?H3l5wkd;@Vlp+dQn`Q&g&+7;RtG>rF~Bnt8sDr(M2%Tb1VhpQZkBKo%?q@p=Yut- z+tWg7v);b`UrzdQ5AV2=5{P3+1EHa=g7j%0QL1H)v&08+f9G{yU~a)I`+Nu_n7UMQ zY>hYf-jL{ii5?W+HX6N-@bUe zJ^PE2cGD>&^`>P|m3q=np;r3g|GVSzYtPH&B@(q$XJBWqGRsL4m#f}eG0EyVb*Vs! zqqOYE<`HOyHl@fox&F(yBZ)JGq=|9(a`7b1k_+=>l(lA_eJ)ZWkf+X1mWbySV|DDO z#TpQU+Wv{d?Ssy;MvPs^P+qACdblFQT@s%h!Nd|#4-veiLwCPAL}2>cW|};FL7_?F zo$q20*4Z8;V}qt$%Oaf5sl#%Xm8sfH1SF&+PDL+HIzbN$(!d$0nb(6$tbZHEkQ1`SyfMpEiOeWveW!0@0_pnykK|z%sr|Mt{GDGF!>S%Y=Lb=^{ zFh27Yfd`gq0a#tnDHq55fC$c|x=Pan%;1BGyI=1tU#|+W5gE6`(k7u@K9xT0u7#Lq z+^Zx$z+SO&Yjt>O?Mww$&mj4D*}zbS*sVvvND-WdSwnS)^|nHV>~QQEH9?!z?bN;t zNt}B$-&i(qRRtVanR>>xnxezNQo9E`2jX5NaX_U|V{5?Dgrgn0SM9Qv(o9frP`2YC z2ww7>YmgjY4H*IomL(4jqUJylDX>h$ns!-*a)<56I{1IberX-G3-g#)O{R<{2B}B{ zuwqUFJMZd@KeLfbk%KhVLqLSWRy%jBVac$j_-%@jU^LP0Fe|7a-p(@^%qR*?16qpL zE}sIjV5Y_WMr{A}fA{hCKi2#OQP#BB&V%7jm_TYUV2i2yvcL6Uo+-#=_s+#hUx33<*AED{U`Ca*09fvTxgYL_J-=UWz|ANvX&)_e1s-zNQptYF;ji~qfKws^q0oAG6aYVlx9+{vZEN;(igP(l~jMX*NCZ|sD1 zH^n`Kl#Mp`f?X%El*PBOc`UmLPix>Tyffd*AE6_%126@SS6++evpk zFN8iTVJ_dj+F>OEGAcwQ__V87)PbcAGf8=AFah&^UCN$-=^NEBpC+1tc{k20*%$I~ zmQ{9ED%q}BGn#lPXm?f$Sh5PWzGM}!l2zQqVj@)i5>>!%OyoixhR&(=R4ZY|IJnJ? zj1XnJU6#+7{%Cl)GeXF^KiYrjvpz1@#=uG{M*-5PqTN~`XusN(4`_nq?}L8aSm{*# zs;eU^?Pz%0g^7&K)$w81HD*7l>p8($>$g~`!1U!x3?lJsM?)~-0_(>EYnH;!-|aHd zYsQ!Y_ajfANw7?ayb-kFVkuyyevVF>{D5Lp>gTRJ9Sb@1St5N}i(Tv%m%s|sr|NMc z99Urbo{U+D&YsZX(um;QA%n*;>r3Q_3AVU2a#iBTh%Jd9!}{UJzW+B4IDEDnJ}(9% z!Z|H~ctl0Sf=QanN%K$K5%a3gs*YLur;>Xn+;#MML|HMfBabdUu=A$`^;x zj6Z&*ta>^yXqa2AYI}Dmg1g#f4ZZ14VqCR*6f9G~iYW83V7qFUZ^q0Z6`T&nrd!`$ zgPE=WzWu`Bs-eJu8d!CTZilz!AZ~V2QGWMD_cOj(tA^JND|S-53QZhXW4hwZMMbBA zR88>pV~NX(;+D7!R>m~B;AKpkVvIE~n@SBVa`n>gB>xF6%*4@U$y4{j)c)4LL@7?b0+uvCojzvAs$*UIK?%DRv z|2%c$o8IszcNhF0)$PmeLtRV)TK!bMJV7b>Fuko~!|$PlVOD?VaMCL!niRlk_nXdl z@a@~}+cT%Th;&FkYE#r!gO!AYZ`4+g>msiwhF`*qfP@QTp6LSmR*M8HPAO?6gMZD$ zdB$dd^<(I%Hf*gK_yGO;^#X#t1OLn{9N6x zLO-=z-;p%_d|Uxf1M6)SombmW*Q#T(G2O0$>WxvQzh^R>;J^oWnT~1>$ zb+D_Pwf%#?_VM?=^KAR}uOUtBCOHU6BqajR7?s@2=TI^gSjkj;+9gvF5iWA`f(spC zCmviu%9>yW&S{q~3ffiTQ!iwVPru+oJ#FM;8h;JU;a?q6`0F;Y-_&jDI5%UwbQg1V zZb^42wxZfSG=UaQlKSukH+D#3wuslZBknc5DCC6j%( zW78Sm0qdeo1%pI8X?k_h!0Mu5mkZk+GDl@y%=tUM1D4TIZJ1)pU}bcav{c+fiG|`G zU}cG+1U!~0#(K*XGjI169$RwWiWleZlax(xMY~>ZJY(AT}}ckIZ2VaCO4#k>d&)~D_Q!y6%z-# z;q&dA-$owVSi(fs6vn!{i#C=h>r~1MSSc^C?&5G+$b$szb@DU!3j6|78uyH2gJN!d zO^_d@+c9dLzWv#qW{4x~hLub*(pM&_3M*kT-M0Vp;~$@w`%0vjeo~j1N2R;rcumxw zteM0ttg=Kvu;EX(@+9WFO655qY#*M3n>sL&>pgIbfWlphKZ&Y6*>$eQK+%^agn*S( zpN+2!J5w$6E+*T%my0TTmddA2H z=LYurSq3)`u!#>Lpoj{SKn^T{z9*I2lbUXfm4oH4@-yJ2N_Xs7(q^6`8t+cIFPqnEe~RplpKfZ*OR53HYp~`Is%L3h4 z&ZJoP1*^0t-wF$=cKKea?Pt2`b`w@RV%JIVn@SCFkMOAuuw~0? z3PZV1u0$ETQJC8fP64H3(nkygvu#rtc7%YP-S9V4bZ_S+K3so0BtvLxcs*|3V9dbQ_ zjrMkDX;~s^qmF2!?yymZF}|4-d7%ehD@E+mvYNvs-E!lXbPJZuN!1(DORSEQyo6h@ zvH~y`JQk}GM_8;1tXLJMRJcvsC|e9zNnzpZn|4aIS{9DoAhvLcg98do`jpjp^eY*lzn=`1{+D)o5?4-eb7KKGUPzR>AH-UBZxN|o&G@aF5k36Z7Sj^jk?;*gGFuTrS{xh<-qoK3vSmVU$gGc;{Yp~LZ&WZ z8LWh5n7GIjzhjhh@qR^9z>20I|Jx_uYtuTjQz}Bq$ASw=o*?I!JONhn1Y3VyEfIqk zEd9MFx;b%)i3D;Ci`T0#P?sNUd-na-Q>AG|ClZ?D(7?)p<$@J=7e7|q9jw@utj7y; zKO+I(U~zY_@<2#jC=Uc(ru^k#<$#bGx;P*%NHDImT=7)NDcGCst3NQC*2r}$j(>N6 z%+tlmufQ6&IFY(t$CAzy7kj&9(>Mf@0g4fAOdHE}u1CCF56oOv?bhl5J68~sTxuC) zD#;bBBv;0~l3c~GmgEZ7*!-ZHRn3rHD>;DRpoN$1*IgP|x9hYVuOt*Jqw-!^*@-Iv z7B9mnN}wPr7ApfQRyMEb^#mg=XUzO^ol3m0(IsB6aFyf=R%)4|l;t4@D^`Z%siv6- z;xX7{qAViiFPDg1F>fA&ZE`~*A=8F3)%GyO^w96;o=i5%i0V^?$I)4$vo-pqbNd=AT>4@ zrhK{0^O{VYDi?jB1Xw9E>@EvqogI8Dhp_vr(rwzk@eFPaEJ?g!#bvcB+DFGP+6Pv& zPfXaA_Wj(QVq<(o{J=_W=XfaE=N-@Oogaoyt*CQ77rC2PK5LEY4c1=Z$K9^=bVjX< z!gNL_dBc7D3Sd-+Dv#H|Dt>jl&Ssc2{d2n=on&41DbVN74R1XdhKJWJV5 zz?$3$cSzz)@jP5ucONj|s!h$#u(2c~m|FbZVRIl#&%uFi4CpNz%Sz{dVg{*)Il!JE zun!+>-}(`TiY}cY;IgzSCgp{2?-%Id`S$Gds7}7jY8HGhDb<3NRI3C=QmPdAADNuoxM|Kj0Ql1)E%2Qy+yUBN|1E{2W&QShU+)M2!mDP^2 z*04S%m9my=gzD(dOTo&=Hn8NS3T2h% z08;MRfu)ZPjHNze6b6{Q6s&w~VC7>QSPHygG>+Lez@f8}EXD<9jy&>r;9-@%puOLQMt6CdoLCs^qf zzGXG6NuSb^uP%5EE7@XTsmtX$6~Cvyir;(j0h3tMe$M>rkTbsqMx$043NfQV7D=ay6@jDT%rVXW-?tx+=!Wup za&@kDw^IVO+A$?H>`Z57{F(I=gr=SO+C4#N+L@047oizg(V1uXUz&|Hg}%tpB$CfJJDWa1k06OH0ZDD?+2}SIUkivl^+5KhKDkl^Rj- zL+%34ev;q;b-SyT`n)(IM7MkKSc0cQVnuw2YeoCPO7K)cY_U@Bi<>G>wGh739d4-0Sc!`YiSdWxG`P8YyOTNro0=3b+r?xg>b3GEXSa51Y^y=p zWf4SiW$c{$wv49o3+n{|L4+kVgRxVuD<+CnST`dTYMSjlsg@S*d5|hu08Oa^Ugz3Oy8`u++a_flQZN5< zOxjZ~w}l+)1iM#hU#g9jtHgE{WuFl94CefMo9g=K zMWc&X(JU}2XF0q#eBuDL+Qe!3%~e-kL3tqZ|ltXC7umLV3kw} zrpKAmnT!aUP0bRKQ*=A#j(}!VsCJ~=YDb<-7+dZ6hVNuVR6xp|GV2=`rCJxqm^wd+ zb|OEXX!k^aFT7S+A5(`L_C$wITo&ZH`j;U>sCDdEIvhuPB^P4x%#&);EB6S7{a|2!>L z5*nTyULp7)^r!|FPF4dGe{LlGYRtDbvV3mq6AVUVZM73HyU_HJ3?~BiHpnGf9ju&u z507-{Vwg<3i@M-xb5`Cm_Lz#B>)K;yPwmsg`<()KHimH6=Ug&1*^(Q+Et;A2N799y7J?G z?pEpSmTM+TK5vfjn>6{L=n9zR80syIO!Rl3v0r>(2^;8E5g)MxCA%{IZSQ}9Kvhb- z&;#KIIsOES6->fs!K(Tpr(=0l*^#alF3tiKwv}EH4XY9`7{@^jJeG%sy)0#t^JEd) zc7aN?T&Xjhb*1$RWJ`C9(ls7d%*kL1H5r#yXO?CsH<_g>ZB{$hrh=_WaD!j1-W4A=X=i!gz%c3aq>1h$xTh*cB(V+WhSP2gwFPqm1rzy}Fts4+ zTgI**Zy>|g`tkPZpZ#bLlO?>yRU}7OB|k8N<=Vx_+i5nLTBk`rCJ#7yC>TR;$hh)= zEBkR0hBJN>tf(Uxc`+t9uG`%3v-kCoafRm#XQ+=ezDIE#e%fHlU_w3fTW+SfrP>j_ z)^=DT3snHY>Q(h|e56Ml%;RWlhtiu@Eq*8gqd=hvQLF-1G^`v$;i^@+46K~hU_4m)q@>V4`f}JB^uHVW#NLs`}+QCX* z0jo?gu!?+k9u+tMCXq5J7a244QVlCQmf51>fWXQnI_8aZb}?XGonj|J36SeMuzv!! z3qQDRlC+9aO^I(3y3=$C##nF~V;7WI+cT0)jl;4?gH^SAur*bCj+6g5^#ian-hjP& zOy>|_#ZQn@`5{lU-UopS=apPw4BFL>H7;Qs-IlPLkfGIJE5)Uf&~4H10tnV@H$vHDra1E05VMike};3!)eG5 zw9I;kRS8Y)DtcOOOvQEhab`TjBz#H*HZ5 zq{0qTLayM8^trJh)+-}mFG~6sb&!&eb_Bqm%$2xfxz*||6kV|1?USEpQmB&HRPKrk z0AsGqp%?&a(==;Xm6V4}S0(XGzoY<_oXUk&q(FE?sV+hxiV{q9;W}yT_Pjqk{c=f5 ztC+>*1>%cdZy!8X^Q|r)p)IZ1GeSDNWtKjBEUrxJDMrZ0TwGbjj8Z#Lmb6@tojEN; zU`NvPiGIm%s>$#jr?rxYQ=D<&!j$_h7y&4^pX+$F=MDYZYqDjBINbT1hB}L#S+&F+ z1~cCj(8Af1LQV*oTWx5m#^H zgygYeeVnz$ho^#Qp1y*g3m@KZE?;ly`63L94-@f9ryk0Z_{r6qW?yxJS_fk`cq~%D z)mx?)l5_E4)}oBz77bHncEGASFc?qZek7-xE0m^Jf(6wUdI6zUtdd0HHchQa(1ejJ z{msp#B=%MhA_vk;m_Wf;;S%4)g_XKH>3Vs?8RuU<<`uWmB}4J~El4wDWZY+o)f`L< zTiDw%Hss~w^*H$OUGm^5$P!JQhE>r3jIS&|7E_rBhnW>=#TPQ# zm*!V-cO#g%CFq~O8~b>|)vIC4*wDYQA0id!cP2$YmNH$3<;nYNC1v3+Wz`;+@QT3@ zm|>@O1}jOrFwY()?2$BGwo{=@y{)Q8~z+^Hq2IO}|pdx7H-sGIso!{l9O2yT0}?f;y7@>dgF3-%efR zxUz!54?2Gz1J^kr>x>U+2ro4VmqZW?)znzba*$E=3RYDkd|R0#U{A<@j8;XzsU5|f zc#=x290@M3C+Bj}{&`z_-!1FEZ_PMX|Np|yUdN6ih{6%c21ww5fW!hBGVuP$W+lrK z?5+tB-EBH(F=2=RCB+?hLlK1-x^d+tnES65e^`stntjRH38 znz=>czPLrtv>rzgLplIxckpd^KT?_c*LpGEtR-P{YDt)gmW143EeQZgN90jGWOw!c z%q`(9Na!e`4e9rykEYnY^+GNQ=p`X3`LHA#`w#95`TMfl8Z_ z(X5O8N2?JTAe{Kp{d5qKok%LRu(mY(=$%7IT*o%SE9~!Hce;wSaB*zNf6blhy%p0F zL(56Bs@P8^(P5d6_8&%*3Zk`SrV)R2^R;g zIKxQ27+XV}L4UN8x=eegw*NTs<=X+jNwwy-S+UynP@K@}90ToGHL%)$mjn)K>rmiK z(@DnPwYAuIMn(=F}Llz!2I?L`Xm5}Y6iDp|@DE+I4o$^-(DtPcd;TvcAVfUKo*l8)5}KqA zmLG>;;`QoT06)`E0_!{GZuLAY6%2?jY$~~z(?8z=8|gwYeo{gVG~I#=P3dajVnWlQ zN$Em6+@!KG8z9QLi5=ZeGBk3z)`{;UE6@aMLQ~QnH2!e&Y|I9N{&=+;;!MNx6-}KN zcvhwaG=dNPEXhN?f*>9wg=(Neba)PEmmWvrTW>0=l-oogM$c)hXP4G(N3(%}>a>D; zqDy9=)%{H2U@o8Tmk{;WM-wL=#$h(3a<&0{XgWlp2?&9<-2}5NpiA3$La^j~LCX!& z{ndoohA+$q0=V>1k<1Cr4s6gg4dAln0AE1b5)`yy3?kiXm_ZV|vM`{jMFq5n=Ux2{ugH#UcHtD6W*dnXvK>GI zK2fs`Xlt(0ajRqhwPTJTsG~>H@!Qyjrs4o-W809NU#Wf{C&E@ILt;4n=7E9}0DVYS zD$Z~mYTYT0>&O7l%9FrnV2R5^fT&uVfD`TUfi|r-;jQ)+SxFt!3o6xVM1ZeM@i39a zLrC?4xj>C!ZyhG*89Tpi--x`AdlDpCK1iYlxA#EZn1?>5|5CF*1skHttK?ZVr-zn+ zPOUo3<=LisS6oXT2kG`zO0;^blg- z^cF+S%cRR);jQQC9*{0D{?0VmnsLm3Wq%qI^cPY;FDnPtuXRu3lb$hqL=zziWjFzOKhb=I^|&Qw ze*s6oBfB74KFibSpxICMsSK4|c`7cPJ^V%{7tE3k2h`diUP2t&vgyQhG5zsuckgS! z%3g;?XESrGe0@DiTVHx{I-NcT8BipexHhrSe$^XJajqhkN+2e#qlF6L2BpcZILPxL zF60F1#psycNce7xV|5fY;9aeF=S_w`$voLiZWb3*mgJQD_})lVS~dQUZ=qf{sY~>V z6GxIfKcHEbUQAVmxR6-+=BxKIP8eI9Nm`Z0fk2D4lt66U1z=;CliFT0O#1-GUXjpPnBvE}%Fj?^%_|Ww2JXjQOz*tp z_*7dl{sM4bf1$Jq#u->oM*+RwDKz9CaP;RL)88+5A7FC#`$$Cd|0pes+IEF)q3NDK zXvBQ`9e9lMIkjE5OZ&bQ{mQkZMptNL@{wBFNNgJy3Eoq5I-ai6onLqFci$C;VZhfn z$E_EQ+QdF@30lb#0d^1%(4xzse#Cu1b0utuRR`ROoI2VAZIoCfMH zciuDP095+${&e+f_vO=@2UlMtXX2X5na|Ij+`oEqegkrGb@AEt_0`$w&Eva|{&&dk g?&HTN&tE)!_TuMf-+h0Q&mr`Fa_`>FS5Hn}146`XyZ`_I diff --git a/docs/theDoc/trackerlog.tex b/docs/theDoc/trackerlog.tex index 31ad462b..8600ce7c 100644 --- a/docs/theDoc/trackerlog.tex +++ b/docs/theDoc/trackerlog.tex @@ -10,15 +10,111 @@ \noindent General information on current version: \bi \small - \item Exudyn version = 1.2.134.dev1, - \item last change = 2022-06-17, - \item Number of issues = 1148, - \item Number of resolved issues = 976 (134 in current version), + \item Exudyn version = 1.3.0, + \item last change = 2022-06-22, + \item Number of issues = 1157, + \item Number of resolved issues = 989 (0 in current version), \ei \mysubsection{Resolved issues and resolved bugs} \par \noindent The following list contains the issues which have been {\bf RESOLVED} in the according version: \bi \footnotesize + \item {\bf Version 1.3.0}: {\bf \color{warningRed} resolved BUG 0677}: {\bf single threaded renderer} + \begin{itemize}[label=$\bullet$] + \item {description: correct crash with visualization dialog (MacOS)} + \item {\bf notes: not resolved, but it is an issue of missing tkinter capabilities in MacOS} + \item date resolved: {\bf 2022-06-22 07:59}, +date raised: 2021-05-12 + \ei + \item {\bf Version 1.2.146}: resolved Issue 0735: {\bf parallel build} +(check) + \begin{itemize}[label=$\bullet$] + \item {description: check parallel build with MSbuild to reduce compilation times} + \item {\bf notes: already done earlier} + \item date resolved: {\bf 2022-06-22 07:58}, +date raised: 2021-08-12 + \ei + \item {\bf Version 1.2.145}: resolved Issue 0863: {\bf RaspberryPi} +(extension) + \begin{itemize}[label=$\bullet$] + \item {description: check compilation on Raspi, make adaptation of ngsolve includes to run} + \item {\bf notes: already done earlier} + \item date resolved: {\bf 2022-06-22 07:48}, +date raised: 2022-01-14 + \ei + \item {\bf Version 1.2.144}: resolved Issue 0968: {\bf MarkerBodyCable2DShape} +(extension) + \begin{itemize}[label=$\bullet$] + \item {description: add offset from beam axis, to compute position, velocity and jacobians at contact surface} + \item {\bf notes: already done earlier} + \item date resolved: {\bf 2022-06-22 07:46}, +date raised: 2022-03-03 + \ei + \item {\bf Version 1.2.143}: resolved Issue 0972: {\bf ContactFrictionCircleCable2D} +(docu) + \begin{itemize}[label=$\bullet$] + \item {description: add / extend description} + \item date resolved: {\bf 2022-06-22 07:44}, +date raised: 2022-03-09 + \ei + \item {\bf Version 1.2.142}: resolved Issue 1155: {\bf center point} +(extension) + \begin{itemize}[label=$\bullet$] + \item {description: add key "o" option to set center point to current center point of view; this allows to rotate around the current center point of the view} + \item date resolved: {\bf 2022-06-21 18:16}, +date raised: 2022-06-21 + \ei + \item {\bf Version 1.2.141}: resolved Issue 1152: {\bf Renderer} +(extension) + \begin{itemize}[label=$\bullet$] + \item {description: add separate function to compute accurate scene size, store as 3D vector and as norm} + \item date resolved: {\bf 2022-06-21 17:56}, +date raised: 2022-06-20 + \ei + \item {\bf Version 1.2.140}: resolved Issue 1154: {\bf Zoom all} +(change) + \begin{itemize}[label=$\bullet$] + \item {description: change procedures for zoom all and for computation of maximum scene coordinates; may affect appearance of your models; necessary for consistently computing perspective and shadow parameters} + \item date resolved: {\bf 2022-06-21 08:38}, +date raised: 2022-06-21 + \ei + \item {\bf Version 1.2.139}: resolved Issue 1153: {\bf noglfw} +(check) + \begin{itemize}[label=$\bullet$] + \item {description: check compilation without GLFW} + \item date resolved: {\bf 2022-06-20 10:58}, +date raised: 2022-06-20 + \ei + \item {\bf Version 1.2.138}: resolved Issue 1150: {\bf OpenGL} +(extension) + \begin{itemize}[label=$\bullet$] + \item {description: add shadows (simple)} + \item {\bf notes: activate with SC.VisualizationSettings().openGL.shadow, chosing a value between 0. and 1; good results obtained with 0.5} + \item date resolved: {\bf 2022-06-20 01:49}, +date raised: 2022-06-18 + \ei + \item {\bf Version 1.2.137}: resolved Issue 1151: {\bf linux builds} +(change) + \begin{itemize}[label=$\bullet$] + \item {description: remove -g flag from linux builds, leading to 2.6MB instead of 38MB binaries; to enable debug information (e.g. to detect origin of some crashes, remove the -g0 flag in setup.py)} + \item date resolved: {\bf 2022-06-19 18:34}, +date raised: 2022-06-19 + \ei + \item {\bf Version 1.2.136}: resolved Issue 1149: {\bf OpenGL} +(extension) + \begin{itemize}[label=$\bullet$] + \item {description: add perspective} + \item {\bf notes: added openGL option perspective; EXPERIMENTAL!} + \item date resolved: {\bf 2022-06-19 01:59}, +date raised: 2022-06-18 + \ei + \item {\bf Version 1.2.135}: resolved Issue 1148: {\bf jacobian ODE1 ODE2} +(fix) + \begin{itemize}[label=$\bullet$] + \item {description: fix jacobian computations for mixed ODE1-ODE2 components; check with HydraulicActuatorSimple (lower number of jacobians and iterations)} + \item date resolved: {\bf 2022-06-18 23:38}, +date raised: 2022-06-18 + \ei \item {\bf Version 1.2.134}: resolved Issue 1147: {\bf ODE1Coordinates\_t} (extension) \begin{itemize}[label=$\bullet$] @@ -4345,11 +4441,6 @@ \item {description: modified Newton does not work, no Jacobian update computed when switching} \item date raised: 2021-08-13 \ei - \item open {\bf BUG 0677}: {\bf single threaded renderer} - \begin{itemize}[label=$\bullet$] - \item {description: correct crash with visualization dialog (MacOS)} - \item date raised: 2021-05-12 - \ei \item open {\bf BUG 0448}: {\bf ObjectGenericODE2 bug} \begin{itemize}[label=$\bullet$] \item {description: ObjectGenericODE2 crashes without message when initialized with invalid node numbers} diff --git a/docs/theDoc/version.tex b/docs/theDoc/version.tex index 6ee41562..817b17d8 100644 --- a/docs/theDoc/version.tex +++ b/docs/theDoc/version.tex @@ -1,3 +1,3 @@ % version info automatically generated by tracker; generated by Johannes Gerstmayr -% last modified = 2022-06-17 -Exudyn version = 1.2.134.dev1 (Corea) +% last modified = 2022-06-22 +Exudyn version = 1.3.0 (Davis) diff --git a/docs/trackerlog.html b/docs/trackerlog.html index 8aa554af..45e895b5 100644 --- a/docs/trackerlog.html +++ b/docs/trackerlog.html @@ -15,10 +15,10 @@

ISSUE Tracker

-Number of issues = 1148, -Number of resolved issues = 976 (134 in current minor version), -Exudyn version = 1.2.134.dev1, -last change = 2022-06-17 +Number of issues = 1157, +Number of resolved issues = 989 (0 in current minor version), +Exudyn version = 1.3.0, +last change = 2022-06-22 @@ -38,6 +38,22 @@

ISSUE Tracker

+ + + + + + + + + + + + + + + + @@ -534,22 +550,6 @@

ISSUE Tracker

- - - - - - - - - - - - - - - - @@ -566,22 +566,6 @@

ISSUE Tracker

- - - - - - - - - - - - - - - - @@ -1014,22 +998,6 @@

ISSUE Tracker

- - - - - - - - - - - - - - - - @@ -1654,22 +1622,6 @@

ISSUE Tracker

- - - - - - - - - - - - - - - - @@ -1782,22 +1734,6 @@

ISSUE Tracker

- - - - - - - - - - - - - - - - @@ -2790,6 +2726,134 @@

ISSUE Tracker

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -5094,6 +5158,22 @@

ISSUE Tracker

+ + + + + + + + + + + + + + + + @@ -5126,6 +5206,22 @@

ISSUE Tracker

+ + + + + + + + + + + + + + + + @@ -6358,6 +6454,22 @@

ISSUE Tracker

+ + + + + + + + + + + + + + + + @@ -7766,6 +7878,22 @@

ISSUE Tracker

+ + + + + + + + + + + + + + + + @@ -8566,6 +8694,22 @@

ISSUE Tracker

+ + + + + + + + + + + + + + + + diff --git a/main/pythonDev/Examples/HydraulicActuator2Arms.py b/main/pythonDev/Examples/HydraulicActuator2Arms.py index 7232d5d5..76890f14 100644 --- a/main/pythonDev/Examples/HydraulicActuator2Arms.py +++ b/main/pythonDev/Examples/HydraulicActuator2Arms.py @@ -258,6 +258,7 @@ def PreStepUserFunction(mbs, t): SC.visualizationSettings.openGL.multiSampling = 4 SC.visualizationSettings.openGL.lineWidth = 2 +SC.visualizationSettings.openGL.shadow = 0.5 SC.visualizationSettings.window.renderWindowSize = [1600,1200] exu.StartRenderer() diff --git a/main/pythonDev/Examples/rigid3Dexample.py b/main/pythonDev/Examples/rigid3Dexample.py index 55b89279..3f5efc85 100644 --- a/main/pythonDev/Examples/rigid3Dexample.py +++ b/main/pythonDev/Examples/rigid3Dexample.py @@ -30,7 +30,7 @@ #create background, in order to have according zoom all # background0 = GraphicsDataRectangle(-zz,-2*zz,zz,zz,color4white) -background0 = GraphicsDataCheckerBoard(point=[0,-0.5*zz,-zz],size=4*zz) +background0 = GraphicsDataCheckerBoard(point=[0,-0.5*zz,-0.25*zz],size=6*zz) oGround=mbs.AddObject(ObjectGround(referencePosition= [0,0,0], visualization=VObjectGround(graphicsData= [background0]))) mPosLast = mbs.AddMarker(MarkerBodyPosition(bodyNumber = oGround, @@ -93,6 +93,10 @@ SC.visualizationSettings.openGL.multiSampling = 4 SC.visualizationSettings.openGL.lineWidth = 2 +# uncomment following line for shadow: +# SC.visualizationSettings.openGL.shadow = 0.5 +# SC.visualizationSettings.openGL.light0position = [4,4,10,0] + exu.StartRenderer() mbs.WaitForUserToContinue() diff --git a/main/pythonDev/TestModels/generalContactFrictionTests.py b/main/pythonDev/TestModels/generalContactFrictionTests.py index 253c2ac9..1468e82a 100644 --- a/main/pythonDev/TestModels/generalContactFrictionTests.py +++ b/main/pythonDev/TestModels/generalContactFrictionTests.py @@ -382,7 +382,8 @@ def UFtorque(mbs, t, loadVector): SC.visualizationSettings.openGL.drawFaceNormals = False SC.visualizationSettings.openGL.multiSampling = 4 - +SC.visualizationSettings.openGL.shadow = 0.25 +SC.visualizationSettings.openGL.light0position = [-3,3,10,0] if useGraphics: SC.visualizationSettings.general.autoFitScene = False diff --git a/main/pythonDev/TestModels/runPerformanceTests.py b/main/pythonDev/TestModels/runPerformanceTests.py index 3d36dcc8..8cdb0a9e 100644 --- a/main/pythonDev/TestModels/runPerformanceTests.py +++ b/main/pythonDev/TestModels/runPerformanceTests.py @@ -17,6 +17,7 @@ if sys.version_info.major != 3 or sys.version_info.minor < 6:# or sys.version_info.minor > 9: raise ImportError("EXUDYN only supports python versions >= 3.6") isMacOS = (sys.platform == 'darwin') +isWindows = (sys.platform == 'win32') #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ #include right exudyn module now: @@ -90,6 +91,8 @@ def NumTo2digits(n): platformString += 'P'+str(sys.version_info.major) +'.'+ str(sys.version_info.minor) if isMacOS: platformString += 'MacOSX' +elif not isWindows: #add linux, to distinguish linux tests from windows tests! + platformString += sys.platform subFolder = '' if platform.processor() == 'Intel64 Family 6 Model 142 Stepping 10, GenuineIntel': @@ -106,6 +109,7 @@ def NumTo2digits(n): exu.Print('EXUDYN version = '+exu.GetVersionString()) exu.Print('EXUDYN build date = '+exuDateStr) exu.Print('platform = '+platform.architecture()[0]) +exu.Print('system = '+sys.platform) #Surface book 2 = 'Intel64 Family 6 Model 142 Stepping 10, GenuineIntel' exu.Print('processor = '+platform.processor()) diff --git a/main/pythonDev/TestModels/runTestSuiteRefSol.py b/main/pythonDev/TestModels/runTestSuiteRefSol.py index 1188f303..6165002a 100644 --- a/main/pythonDev/TestModels/runTestSuiteRefSol.py +++ b/main/pythonDev/TestModels/runTestSuiteRefSol.py @@ -45,7 +45,7 @@ def TestExamplesReferenceSolution(): 'geneticOptimizationTest.py':0.10117518366826603, #before 2022-02-20 (accuracy of internal sensors is higher); 0.10117518367051619, #changed to some analytic Connector jacobians (CartSpringDamper), implicit solver(modified Newton restart, etc.); before 2022-01-18: 0.10117518366934351, 'geometricallyExactBeam2Dtest.py':-2.2115028353806547, 'heavyTop.py':33.423125751743804, - 'hydraulicActuatorSimpleTest.py':7.130437437122315, + 'hydraulicActuatorSimpleTest.py':7.130440021870293, 'kinematicTreeAndMBStest.py':2.6388120463802767e-05, #original but too sensitive to disturbances: 263.88120463802767, 'kinematicTreeConstraintTest.py':1.8135975384620484 , 'kinematicTreeTest.py': -1.309383960216414, diff --git a/main/pythonDev/exudyn/GUI.py b/main/pythonDev/exudyn/GUI.py index 106ab6fb..8b9d7a0d 100644 --- a/main/pythonDev/exudyn/GUI.py +++ b/main/pythonDev/exudyn/GUI.py @@ -105,7 +105,19 @@ def ConvertString2Value(value, vType, vSize, dictionaryTypesT): else: return [False, errorMsg] - if vType == 'float': + if (vType == 'float' + or vType == 'PReal' or vType == 'UReal' + or vType == 'PFloat' or vType == 'UFloat'): + floatValue = float(value) + if vType == 'PReal' and floatValue <= 0: + errorMsg = 'PReal must be > 0' + if vType == 'UReal' and floatValue < 0: + errorMsg = 'UReal must be >= 0' + if vType == 'PFloat' and floatValue <= 0: + errorMsg = 'PFloat must be > 0' + if vType == 'UFloat' and floatValue < 0: + errorMsg = 'UFloat must be >= 0' + return [float(value), errorMsg] if vType == 'Index' or vType == 'Int' or vType == 'PInt' or vType == 'UInt': diff --git a/main/setup.py b/main/setup.py index 6536c043..7dafc09a 100644 --- a/main/setup.py +++ b/main/setup.py @@ -386,6 +386,7 @@ class BuildExt(build_ext): '-Wno-unknown-pragmas', #warning from ngs_core.hpp/taskmanager.hpp (NGsolve) '-Wno-sign-compare', #warning from taskmanager.hpp (NGsolve) '-Wall', + '-g0', #deactivate debug information (overrides default -g flags), decreases files size from 38MB to 2.6 MB in Python 3.6 version '-D'+exudynPythonMacro, #'-std=c++17', #==>chosen automatic #'-fpermissive', #because of exceptions ==> allows compilation diff --git a/main/src/Autogenerated/BeamSectionGeometry.h b/main/src/Autogenerated/BeamSectionGeometry.h index 32b2f10d..5e668cb8 100644 --- a/main/src/Autogenerated/BeamSectionGeometry.h +++ b/main/src/Autogenerated/BeamSectionGeometry.h @@ -4,7 +4,7 @@ * * @author AUTO: Gerstmayr Johannes * @date AUTO: 2019-07-01 (generated) -* @date AUTO: 2022-06-16 (last modfied) +* @date AUTO: 2022-06-21 (last modfied) * * @copyright This file is part of Exudyn. Exudyn is free software: you can redistribute it and/or modify it under the terms of the Exudyn license. See "LICENSE.txt" for more details. * @note Bug reports, support and further information: diff --git a/main/src/Autogenerated/CSolverStructures.h b/main/src/Autogenerated/CSolverStructures.h index 46a6bea6..862856ae 100644 --- a/main/src/Autogenerated/CSolverStructures.h +++ b/main/src/Autogenerated/CSolverStructures.h @@ -4,7 +4,7 @@ * * @author AUTO: Gerstmayr Johannes * @date AUTO: 2019-07-01 (generated) -* @date AUTO: 2022-06-16 (last modfied) +* @date AUTO: 2022-06-21 (last modfied) * * @copyright This file is part of Exudyn. Exudyn is free software: you can redistribute it and/or modify it under the terms of the Exudyn license. See "LICENSE.txt" for more details. * @note Bug reports, support and further information: @@ -136,7 +136,7 @@ class CSolverTimer // AUTO: * * @author AUTO: Gerstmayr Johannes * @date AUTO: 2019-07-01 (generated) -* @date AUTO: 2022-06-16 (last modfied) +* @date AUTO: 2022-06-21 (last modfied) * * @copyright This file is part of Exudyn. Exudyn is free software: you can redistribute it and/or modify it under the terms of the Exudyn license. See "LICENSE.txt" for more details. * @note Bug reports, support and further information: @@ -260,7 +260,7 @@ class SolverLocalData // AUTO: * * @author AUTO: Gerstmayr Johannes * @date AUTO: 2019-07-01 (generated) -* @date AUTO: 2022-06-16 (last modfied) +* @date AUTO: 2022-06-21 (last modfied) * * @copyright This file is part of Exudyn. Exudyn is free software: you can redistribute it and/or modify it under the terms of the Exudyn license. See "LICENSE.txt" for more details. * @note Bug reports, support and further information: @@ -374,7 +374,7 @@ class SolverIterationData // AUTO: * * @author AUTO: Gerstmayr Johannes * @date AUTO: 2019-07-01 (generated) -* @date AUTO: 2022-06-16 (last modfied) +* @date AUTO: 2022-06-21 (last modfied) * * @copyright This file is part of Exudyn. Exudyn is free software: you can redistribute it and/or modify it under the terms of the Exudyn license. See "LICENSE.txt" for more details. * @note Bug reports, support and further information: @@ -470,7 +470,7 @@ class SolverConvergenceData // AUTO: * * @author AUTO: Gerstmayr Johannes * @date AUTO: 2019-07-01 (generated) -* @date AUTO: 2022-06-16 (last modfied) +* @date AUTO: 2022-06-21 (last modfied) * * @copyright This file is part of Exudyn. Exudyn is free software: you can redistribute it and/or modify it under the terms of the Exudyn license. See "LICENSE.txt" for more details. * @note Bug reports, support and further information: @@ -573,7 +573,7 @@ class SolverOutputData // AUTO: * * @author AUTO: Gerstmayr Johannes * @date AUTO: 2019-07-01 (generated) -* @date AUTO: 2022-06-16 (last modfied) +* @date AUTO: 2022-06-21 (last modfied) * * @copyright This file is part of Exudyn. Exudyn is free software: you can redistribute it and/or modify it under the terms of the Exudyn license. See "LICENSE.txt" for more details. * @note Bug reports, support and further information: diff --git a/main/src/Autogenerated/DictionariesGetSet.h b/main/src/Autogenerated/DictionariesGetSet.h index 1b435e52..6897d0ec 100644 --- a/main/src/Autogenerated/DictionariesGetSet.h +++ b/main/src/Autogenerated/DictionariesGetSet.h @@ -2,7 +2,7 @@ // AUTO: Helper file for dictionaries get/set for system structures; generated by Johannes Gerstmayr // AUTO: Generated by Johannes Gerstmayr // AUTO: Used for SimulationSettings and VisualizationSettings -// AUTO: last modified = 2022-06-16 +// AUTO: last modified = 2022-06-21 // AUTO: ++++++++++++++++++++++ #ifndef DICTIONARIESGETSET__H @@ -1186,7 +1186,7 @@ d["value"] = data.autoFitScene; d["type"] = "bool"; d["size"] = std::vector{1}; - d["description"] = "automatically fit scene within first second after StartRenderer()"; + d["description"] = "automatically fit scene within startup after StartRenderer()"; structureDict["autoFitScene"] = d; d = py::dict(); //reset local dict @@ -2293,8 +2293,8 @@ d = py::dict(); //reset local dict d["itemIdentifier"] = std::string(""); //identifier for item - d["value"] = data.drawNormalsLength; - d["type"] = "float"; + d["value"] = data.PyGetDrawNormalsLength(); + d["type"] = "PFloat"; d["size"] = std::vector{1}; d["description"] = "length of normals; used for debugging"; structureDict["drawNormalsLength"] = d; @@ -2349,8 +2349,8 @@ d = py::dict(); //reset local dict d["itemIdentifier"] = std::string(""); //identifier for item - d["value"] = data.initialMaxSceneSize; - d["type"] = "float"; + d["value"] = data.PyGetInitialMaxSceneSize(); + d["type"] = "PFloat"; d["size"] = std::vector{1}; d["description"] = "initial maximum scene size (auto: diagonal of cube with maximum scene coordinates); used for 'zoom all' functionality and for visibility of objects; overwritten if autoFitScene = True"; structureDict["initialMaxSceneSize"] = d; @@ -2365,8 +2365,8 @@ d = py::dict(); //reset local dict d["itemIdentifier"] = std::string(""); //identifier for item - d["value"] = data.initialZoom; - d["type"] = "float"; + d["value"] = data.PyGetInitialZoom(); + d["type"] = "UFloat"; d["size"] = std::vector{1}; d["description"] = "initial zoom of scene; overwritten/ignored if autoFitScene = True"; structureDict["initialZoom"] = d; @@ -2517,8 +2517,8 @@ d = py::dict(); //reset local dict d["itemIdentifier"] = std::string(""); //identifier for item - d["value"] = data.lineWidth; - d["type"] = "float"; + d["value"] = data.PyGetLineWidth(); + d["type"] = "UFloat"; d["size"] = std::vector{1}; d["description"] = "width of lines used for representation of lines, circles, points, etc."; structureDict["lineWidth"] = d; @@ -2555,6 +2555,14 @@ d["description"] = "multi sampling turned off (<=1) or turned on to given values (2, 4, 8 or 16); increases the graphics buffers and might crash due to graphics card memory limitations; only works if supported by hardware; if it does not work, try to change 3D graphics hardware settings!"; structureDict["multiSampling"] = d; + d = py::dict(); //reset local dict + d["itemIdentifier"] = std::string(""); //identifier for item + d["value"] = data.PyGetPerspective(); + d["type"] = "UFloat"; + d["size"] = std::vector{1}; + d["description"] = "parameter prescribes amount of perspective (0=no perspective=orthographic projection; positive values increase perspective; feasible values are 0.001 (little perspective) ... 0.5 (large amount of perspective); mouse coordinates will not work with perspective"; + structureDict["perspective"] = d; + d = py::dict(); //reset local dict d["itemIdentifier"] = std::string(""); //identifier for item d["value"] = data.shadeModelSmooth; @@ -2563,6 +2571,22 @@ d["description"] = "True: turn on smoothing for shaders, which uses vertex normals to smooth surfaces"; structureDict["shadeModelSmooth"] = d; + d = py::dict(); //reset local dict + d["itemIdentifier"] = std::string(""); //identifier for item + d["value"] = data.PyGetShadow(); + d["type"] = "UFloat"; + d["size"] = std::vector{1}; + d["description"] = "parameter \\in [0 ... 1] prescribes amount of shadow; if this parameter is different from 1, rendering of triangles becomes approx.\\ 5 times more expensive, so take care in case of complex scenes; for complex object, such as spheres with fine resolution or for particle systems, the present approach has limitations and leads to artifacts and unrealistic shadows"; + structureDict["shadow"] = d; + + d = py::dict(); //reset local dict + d["itemIdentifier"] = std::string(""); //identifier for item + d["value"] = data.PyGetShadowPolygonOffset(); + d["type"] = "PFloat"; + d["size"] = std::vector{1}; + d["description"] = "some special drawing parameter for shadows which should be handled with care; defines some offset needed by openGL to avoid aritfacts for shadows and depends on maxSceneSize"; + structureDict["shadowPolygonOffset"] = d; + d = py::dict(); //reset local dict d["itemIdentifier"] = std::string(""); //identifier for item d["value"] = data.showFaceEdges; @@ -2605,8 +2629,8 @@ d = py::dict(); //reset local dict d["itemIdentifier"] = std::string(""); //identifier for item - d["value"] = data.textLineWidth; - d["type"] = "float"; + d["value"] = data.PyGetTextLineWidth(); + d["type"] = "UFloat"; d["size"] = std::vector{1}; d["description"] = "width of lines used for representation of text"; structureDict["textLineWidth"] = d; @@ -2649,7 +2673,10 @@ data.materialShininess = py::cast(d["materialShininess"]); data.materialSpecular = py::cast>(d["materialSpecular"]); data.multiSampling = py::cast(d["multiSampling"]); + data.perspective = py::cast(d["perspective"]); data.shadeModelSmooth = py::cast(d["shadeModelSmooth"]); + data.shadow = py::cast(d["shadow"]); + data.shadowPolygonOffset = py::cast(d["shadowPolygonOffset"]); data.showFaceEdges = py::cast(d["showFaceEdges"]); data.showFaces = py::cast(d["showFaces"]); data.showMeshEdges = py::cast(d["showMeshEdges"]); @@ -2813,6 +2840,14 @@ d["description"] = "rotation increment per 1 pixel mouse movement in degree"; structureDict["mouseMoveRotationFactor"] = d; + d = py::dict(); //reset local dict + d["itemIdentifier"] = std::string(""); //identifier for item + d["value"] = data.selectionHighlights; + d["type"] = "bool"; + d["size"] = std::vector{1}; + d["description"] = "True: mouse click highlights item (default: red)"; + structureDict["selectionHighlights"] = d; + d = py::dict(); //reset local dict d["itemIdentifier"] = std::string(""); //identifier for item d["value"] = data.selectionLeftMouse; @@ -2859,6 +2894,7 @@ data.keypressRotationStep = py::cast(d["keypressRotationStep"]); data.keypressTranslationStep = py::cast(d["keypressTranslationStep"]); data.mouseMoveRotationFactor = py::cast(d["mouseMoveRotationFactor"]); + data.selectionHighlights = py::cast(d["selectionHighlights"]); data.selectionLeftMouse = py::cast(d["selectionLeftMouse"]); data.selectionRightMouse = py::cast(d["selectionRightMouse"]); data.useJoystickInput = py::cast(d["useJoystickInput"]); diff --git a/main/src/Autogenerated/MainSolver.h b/main/src/Autogenerated/MainSolver.h index 0ad29cdb..fa90e334 100644 --- a/main/src/Autogenerated/MainSolver.h +++ b/main/src/Autogenerated/MainSolver.h @@ -7,7 +7,7 @@ * * @author AUTO: Gerstmayr Johannes * @date AUTO: 2019-07-01 (generated) -* @date AUTO: 2022-06-16 (last modfied) +* @date AUTO: 2022-06-21 (last modfied) * * @copyright This file is part of Exudyn. Exudyn is free software: you can redistribute it and/or modify it under the terms of the Exudyn license. See "LICENSE.txt" for more details. * @note Bug reports, support and further information: @@ -93,7 +93,7 @@ class MainSolverStatic: public MainSolverBase // AUTO: * * @author AUTO: Gerstmayr Johannes * @date AUTO: 2019-07-01 (generated) -* @date AUTO: 2022-06-16 (last modfied) +* @date AUTO: 2022-06-21 (last modfied) * * @copyright This file is part of Exudyn. Exudyn is free software: you can redistribute it and/or modify it under the terms of the Exudyn license. See "LICENSE.txt" for more details. * @note Bug reports, support and further information: @@ -263,7 +263,7 @@ class MainSolverImplicitSecondOrder: public MainSolverBase // AUTO: * * @author AUTO: Gerstmayr Johannes * @date AUTO: 2019-07-01 (generated) -* @date AUTO: 2022-06-16 (last modfied) +* @date AUTO: 2022-06-21 (last modfied) * * @copyright This file is part of Exudyn. Exudyn is free software: you can redistribute it and/or modify it under the terms of the Exudyn license. See "LICENSE.txt" for more details. * @note Bug reports, support and further information: diff --git a/main/src/Autogenerated/PyStructuralElementsDataStructures.h b/main/src/Autogenerated/PyStructuralElementsDataStructures.h index e44d52da..1bd149e7 100644 --- a/main/src/Autogenerated/PyStructuralElementsDataStructures.h +++ b/main/src/Autogenerated/PyStructuralElementsDataStructures.h @@ -4,7 +4,7 @@ * * @author AUTO: Gerstmayr Johannes * @date AUTO: 2019-07-01 (generated) -* @date AUTO: 2022-06-16 (last modfied) +* @date AUTO: 2022-06-21 (last modfied) * * @copyright This file is part of Exudyn. Exudyn is free software: you can redistribute it and/or modify it under the terms of the Exudyn license. See "LICENSE.txt" for more details. * @note Bug reports, support and further information: diff --git a/main/src/Autogenerated/Pybind_modules.h b/main/src/Autogenerated/Pybind_modules.h index d7b62e5c..bab3d36f 100644 --- a/main/src/Autogenerated/Pybind_modules.h +++ b/main/src/Autogenerated/Pybind_modules.h @@ -1,6 +1,6 @@ // AUTO: ++++++++++++++++++++++ // AUTO: pybind11 module includes; generated by Johannes Gerstmayr -// AUTO: last modified = 2022-06-16 +// AUTO: last modified = 2022-06-21 // AUTO: ++++++++++++++++++++++ //++++++++++++++++++++++++++++++++ @@ -245,7 +245,7 @@ //++++++++++++++++++++++++++++++++ py::class_(m, "VSettingsGeneral", "VSettingsGeneral class") // AUTO: .def(py::init<>()) - .def_readwrite("autoFitScene", &VSettingsGeneral::autoFitScene, "automatically fit scene within first second after StartRenderer()") + .def_readwrite("autoFitScene", &VSettingsGeneral::autoFitScene, "automatically fit scene within startup after StartRenderer()") .def_property("axesTiling", &VSettingsGeneral::PyGetAxesTiling, &VSettingsGeneral::PySetAxesTiling) .def_property("backgroundColor", &VSettingsGeneral::PyGetBackgroundColor, &VSettingsGeneral::PySetBackgroundColor) .def_property("backgroundColorBottom", &VSettingsGeneral::PyGetBackgroundColorBottom, &VSettingsGeneral::PySetBackgroundColorBottom) @@ -456,16 +456,16 @@ py::class_(m, "VSettingsOpenGL", "VSettingsOpenGL class") // AUTO: .def(py::init<>()) .def_readwrite("drawFaceNormals", &VSettingsOpenGL::drawFaceNormals, "draws triangle normals, e.g. at center of triangles; used for debugging of faces") - .def_readwrite("drawNormalsLength", &VSettingsOpenGL::drawNormalsLength, "length of normals; used for debugging") + .def_property("drawNormalsLength", &VSettingsOpenGL::PyGetDrawNormalsLength, &VSettingsOpenGL::PySetDrawNormalsLength) .def_readwrite("drawVertexNormals", &VSettingsOpenGL::drawVertexNormals, "draws vertex normals; used for debugging") .def_readwrite("enableLight0", &VSettingsOpenGL::enableLight0, "turn on/off light0") .def_readwrite("enableLight1", &VSettingsOpenGL::enableLight1, "turn on/off light1") .def_readwrite("enableLighting", &VSettingsOpenGL::enableLighting, "generally enable lighting (otherwise, colors of objects are used); OpenGL: glEnable(GL_LIGHTING)") .def_readwrite("facesTransparent", &VSettingsOpenGL::facesTransparent, "True: show faces transparent independent of transparency (A)-value in color of objects; allow to show otherwise hidden node/marker/object numbers") .def_property("initialCenterPoint", &VSettingsOpenGL::PyGetInitialCenterPoint, &VSettingsOpenGL::PySetInitialCenterPoint) - .def_readwrite("initialMaxSceneSize", &VSettingsOpenGL::initialMaxSceneSize, "initial maximum scene size (auto: diagonal of cube with maximum scene coordinates); used for 'zoom all' functionality and for visibility of objects; overwritten if autoFitScene = True") + .def_property("initialMaxSceneSize", &VSettingsOpenGL::PyGetInitialMaxSceneSize, &VSettingsOpenGL::PySetInitialMaxSceneSize) .def_readwrite("initialModelRotation", &VSettingsOpenGL::initialModelRotation, "initial model rotation matrix for OpenGl; in python use e.g.: initialModelRotation=[[1,0,0],[0,1,0],[0,0,1]]") - .def_readwrite("initialZoom", &VSettingsOpenGL::initialZoom, "initial zoom of scene; overwritten/ignored if autoFitScene = True") + .def_property("initialZoom", &VSettingsOpenGL::PyGetInitialZoom, &VSettingsOpenGL::PySetInitialZoom) .def_readwrite("light0ambient", &VSettingsOpenGL::light0ambient, "ambient value of GL_LIGHT0") .def_readwrite("light0constantAttenuation", &VSettingsOpenGL::light0constantAttenuation, "constant attenuation coefficient of GL_LIGHT0, this is a constant factor that attenuates the light source; attenuation factor = 1/(kx +kl*d + kq*d*d); (kc,kl,kq)=(1,0,0) means no attenuation; only used for lights, where last component of light position is 1") .def_readwrite("light0diffuse", &VSettingsOpenGL::light0diffuse, "diffuse value of GL_LIGHT0") @@ -484,18 +484,21 @@ .def_readwrite("lightModelLocalViewer", &VSettingsOpenGL::lightModelLocalViewer, "select local viewer for light; maps to OpenGL glLightModeli(GL_LIGHT_MODEL_LOCAL_VIEWER,...)") .def_readwrite("lightModelTwoSide", &VSettingsOpenGL::lightModelTwoSide, "enlighten also backside of object; maps to OpenGL glLightModeli(GL_LIGHT_MODEL_TWO_SIDE,...)") .def_readwrite("lineSmooth", &VSettingsOpenGL::lineSmooth, "draw lines smooth") - .def_readwrite("lineWidth", &VSettingsOpenGL::lineWidth, "width of lines used for representation of lines, circles, points, etc.") + .def_property("lineWidth", &VSettingsOpenGL::PyGetLineWidth, &VSettingsOpenGL::PySetLineWidth) .def_property("materialAmbientAndDiffuse", &VSettingsOpenGL::PyGetMaterialAmbientAndDiffuse, &VSettingsOpenGL::PySetMaterialAmbientAndDiffuse) .def_readwrite("materialShininess", &VSettingsOpenGL::materialShininess, "shininess of material") .def_property("materialSpecular", &VSettingsOpenGL::PyGetMaterialSpecular, &VSettingsOpenGL::PySetMaterialSpecular) .def_property("multiSampling", &VSettingsOpenGL::PyGetMultiSampling, &VSettingsOpenGL::PySetMultiSampling) + .def_property("perspective", &VSettingsOpenGL::PyGetPerspective, &VSettingsOpenGL::PySetPerspective) .def_readwrite("shadeModelSmooth", &VSettingsOpenGL::shadeModelSmooth, "True: turn on smoothing for shaders, which uses vertex normals to smooth surfaces") + .def_property("shadow", &VSettingsOpenGL::PyGetShadow, &VSettingsOpenGL::PySetShadow) + .def_property("shadowPolygonOffset", &VSettingsOpenGL::PyGetShadowPolygonOffset, &VSettingsOpenGL::PySetShadowPolygonOffset) .def_readwrite("showFaceEdges", &VSettingsOpenGL::showFaceEdges, "show edges of faces; using the options showFaces=false and showFaceEdges=true gives are wire frame representation") .def_readwrite("showFaces", &VSettingsOpenGL::showFaces, "show faces of triangles, etc.; using the options showFaces=false and showFaceEdges=true gives are wire frame representation") .def_readwrite("showMeshEdges", &VSettingsOpenGL::showMeshEdges, "show edges of finite elements; independent of showFaceEdges") .def_readwrite("showMeshFaces", &VSettingsOpenGL::showMeshFaces, "show faces of finite elements; independent of showFaces") .def_readwrite("textLineSmooth", &VSettingsOpenGL::textLineSmooth, "draw lines for representation of text smooth") - .def_readwrite("textLineWidth", &VSettingsOpenGL::textLineWidth, "width of lines used for representation of text") + .def_property("textLineWidth", &VSettingsOpenGL::PyGetTextLineWidth, &VSettingsOpenGL::PySetTextLineWidth) // AUTO: access functions for VSettingsOpenGL .def("__repr__", [](const VSettingsOpenGL &item) { return ""; } ) //!< AUTO: add representation for object based on ostream operator ; // AUTO: end of class definition!!! @@ -529,6 +532,7 @@ .def_readwrite("keypressRotationStep", &VSettingsInteractive::keypressRotationStep, "rotation increment per keypress in degree (full rotation = 360 degree)") .def_readwrite("keypressTranslationStep", &VSettingsInteractive::keypressTranslationStep, "translation increment per keypress relative to window size") .def_readwrite("mouseMoveRotationFactor", &VSettingsInteractive::mouseMoveRotationFactor, "rotation increment per 1 pixel mouse movement in degree") + .def_readwrite("selectionHighlights", &VSettingsInteractive::selectionHighlights, "True: mouse click highlights item (default: red)") .def_readwrite("selectionLeftMouse", &VSettingsInteractive::selectionLeftMouse, "True: left mouse click on items and show basic information") .def_readwrite("selectionRightMouse", &VSettingsInteractive::selectionRightMouse, "True: right mouse click on items and show dictionary (read only!)") .def_readwrite("useJoystickInput", &VSettingsInteractive::useJoystickInput, "True: read joystick input (use 6-axis joystick with lowest ID found when starting renderer window) and interpret as (x,y,z) position and (rotx, roty, rotz) rotation: as available from 3Dconnexion space mouse and maybe others as well; set to False, if external joystick makes problems ...") diff --git a/main/src/Autogenerated/SimulationSettings.h b/main/src/Autogenerated/SimulationSettings.h index b3d03407..e35bf0cf 100644 --- a/main/src/Autogenerated/SimulationSettings.h +++ b/main/src/Autogenerated/SimulationSettings.h @@ -4,7 +4,7 @@ * * @author AUTO: Gerstmayr Johannes * @date AUTO: 2019-07-01 (generated) -* @date AUTO: 2022-06-16 (last modfied) +* @date AUTO: 2022-06-21 (last modfied) * * @copyright This file is part of Exudyn. Exudyn is free software: you can redistribute it and/or modify it under the terms of the Exudyn license. See "LICENSE.txt" for more details. * @note Bug reports, support and further information: @@ -153,7 +153,7 @@ class SolutionSettings // AUTO: * * @author AUTO: Gerstmayr Johannes * @date AUTO: 2019-07-01 (generated) -* @date AUTO: 2022-06-16 (last modfied) +* @date AUTO: 2022-06-21 (last modfied) * * @copyright This file is part of Exudyn. Exudyn is free software: you can redistribute it and/or modify it under the terms of the Exudyn license. See "LICENSE.txt" for more details. * @note Bug reports, support and further information: @@ -233,7 +233,7 @@ class NumericalDifferentiationSettings // AUTO: * * @author AUTO: Gerstmayr Johannes * @date AUTO: 2019-07-01 (generated) -* @date AUTO: 2022-06-16 (last modfied) +* @date AUTO: 2022-06-21 (last modfied) * * @copyright This file is part of Exudyn. Exudyn is free software: you can redistribute it and/or modify it under the terms of the Exudyn license. See "LICENSE.txt" for more details. * @note Bug reports, support and further information: @@ -301,7 +301,7 @@ class DiscontinuousSettings // AUTO: * * @author AUTO: Gerstmayr Johannes * @date AUTO: 2019-07-01 (generated) -* @date AUTO: 2022-06-16 (last modfied) +* @date AUTO: 2022-06-21 (last modfied) * * @copyright This file is part of Exudyn. Exudyn is free software: you can redistribute it and/or modify it under the terms of the Exudyn license. See "LICENSE.txt" for more details. * @note Bug reports, support and further information: @@ -431,7 +431,7 @@ class NewtonSettings // AUTO: * * @author AUTO: Gerstmayr Johannes * @date AUTO: 2019-07-01 (generated) -* @date AUTO: 2022-06-16 (last modfied) +* @date AUTO: 2022-06-21 (last modfied) * * @copyright This file is part of Exudyn. Exudyn is free software: you can redistribute it and/or modify it under the terms of the Exudyn license. See "LICENSE.txt" for more details. * @note Bug reports, support and further information: @@ -513,7 +513,7 @@ class GeneralizedAlphaSettings // AUTO: * * @author AUTO: Gerstmayr Johannes * @date AUTO: 2019-07-01 (generated) -* @date AUTO: 2022-06-16 (last modfied) +* @date AUTO: 2022-06-21 (last modfied) * * @copyright This file is part of Exudyn. Exudyn is free software: you can redistribute it and/or modify it under the terms of the Exudyn license. See "LICENSE.txt" for more details. * @note Bug reports, support and further information: @@ -574,7 +574,7 @@ class ExplicitIntegrationSettings // AUTO: * * @author AUTO: Gerstmayr Johannes * @date AUTO: 2019-07-01 (generated) -* @date AUTO: 2022-06-16 (last modfied) +* @date AUTO: 2022-06-21 (last modfied) * * @copyright This file is part of Exudyn. Exudyn is free software: you can redistribute it and/or modify it under the terms of the Exudyn license. See "LICENSE.txt" for more details. * @note Bug reports, support and further information: @@ -787,7 +787,7 @@ class TimeIntegrationSettings // AUTO: * * @author AUTO: Gerstmayr Johannes * @date AUTO: 2019-07-01 (generated) -* @date AUTO: 2022-06-16 (last modfied) +* @date AUTO: 2022-06-21 (last modfied) * * @copyright This file is part of Exudyn. Exudyn is free software: you can redistribute it and/or modify it under the terms of the Exudyn license. See "LICENSE.txt" for more details. * @note Bug reports, support and further information: @@ -953,7 +953,7 @@ class StaticSolverSettings // AUTO: * * @author AUTO: Gerstmayr Johannes * @date AUTO: 2019-07-01 (generated) -* @date AUTO: 2022-06-16 (last modfied) +* @date AUTO: 2022-06-21 (last modfied) * * @copyright This file is part of Exudyn. Exudyn is free software: you can redistribute it and/or modify it under the terms of the Exudyn license. See "LICENSE.txt" for more details. * @note Bug reports, support and further information: @@ -1019,7 +1019,7 @@ class LinearSolverSettings // AUTO: * * @author AUTO: Gerstmayr Johannes * @date AUTO: 2019-07-01 (generated) -* @date AUTO: 2022-06-16 (last modfied) +* @date AUTO: 2022-06-21 (last modfied) * * @copyright This file is part of Exudyn. Exudyn is free software: you can redistribute it and/or modify it under the terms of the Exudyn license. See "LICENSE.txt" for more details. * @note Bug reports, support and further information: @@ -1094,7 +1094,7 @@ class Parallel // AUTO: * * @author AUTO: Gerstmayr Johannes * @date AUTO: 2019-07-01 (generated) -* @date AUTO: 2022-06-16 (last modfied) +* @date AUTO: 2022-06-21 (last modfied) * * @copyright This file is part of Exudyn. Exudyn is free software: you can redistribute it and/or modify it under the terms of the Exudyn license. See "LICENSE.txt" for more details. * @note Bug reports, support and further information: diff --git a/main/src/Autogenerated/VisualizationSettings.h b/main/src/Autogenerated/VisualizationSettings.h index e5f6bece..a64c3d12 100644 --- a/main/src/Autogenerated/VisualizationSettings.h +++ b/main/src/Autogenerated/VisualizationSettings.h @@ -4,7 +4,7 @@ * * @author AUTO: Gerstmayr Johannes * @date AUTO: 2019-07-01 (generated) -* @date AUTO: 2022-06-16 (last modfied) +* @date AUTO: 2022-06-21 (last modfied) * * @copyright This file is part of Exudyn. Exudyn is free software: you can redistribute it and/or modify it under the terms of the Exudyn license. See "LICENSE.txt" for more details. * @note Bug reports, support and further information: @@ -26,7 +26,7 @@ class VSettingsGeneral // AUTO: { public: // AUTO: - bool autoFitScene; //!< AUTO: automatically fit scene within first second after StartRenderer() + bool autoFitScene; //!< AUTO: automatically fit scene within startup after StartRenderer() Index axesTiling; //!< AUTO: global number of segments for drawing axes cylinders and cones (reduce this number, e.g. to 4, if many axes are drawn) Float4 backgroundColor; //!< AUTO: red, green, blue and alpha values for background color of render window (white=[1,1,1,1]; black = [0,0,0,1]) Float4 backgroundColorBottom; //!< AUTO: red, green, blue and alpha values for bottom background color in case that useGradientBackground = True @@ -185,7 +185,7 @@ class VSettingsGeneral // AUTO: * * @author AUTO: Gerstmayr Johannes * @date AUTO: 2019-07-01 (generated) -* @date AUTO: 2022-06-16 (last modfied) +* @date AUTO: 2022-06-21 (last modfied) * * @copyright This file is part of Exudyn. Exudyn is free software: you can redistribute it and/or modify it under the terms of the Exudyn license. See "LICENSE.txt" for more details. * @note Bug reports, support and further information: @@ -277,7 +277,7 @@ class VSettingsContour // AUTO: * * @author AUTO: Gerstmayr Johannes * @date AUTO: 2019-07-01 (generated) -* @date AUTO: 2022-06-16 (last modfied) +* @date AUTO: 2022-06-21 (last modfied) * * @copyright This file is part of Exudyn. Exudyn is free software: you can redistribute it and/or modify it under the terms of the Exudyn license. See "LICENSE.txt" for more details. * @note Bug reports, support and further information: @@ -368,7 +368,7 @@ class VSettingsNodes // AUTO: * * @author AUTO: Gerstmayr Johannes * @date AUTO: 2019-07-01 (generated) -* @date AUTO: 2022-06-16 (last modfied) +* @date AUTO: 2022-06-21 (last modfied) * * @copyright This file is part of Exudyn. Exudyn is free software: you can redistribute it and/or modify it under the terms of the Exudyn license. See "LICENSE.txt" for more details. * @note Bug reports, support and further information: @@ -459,7 +459,7 @@ class VSettingsBeams // AUTO: * * @author AUTO: Gerstmayr Johannes * @date AUTO: 2019-07-01 (generated) -* @date AUTO: 2022-06-16 (last modfied) +* @date AUTO: 2022-06-21 (last modfied) * * @copyright This file is part of Exudyn. Exudyn is free software: you can redistribute it and/or modify it under the terms of the Exudyn license. See "LICENSE.txt" for more details. * @note Bug reports, support and further information: @@ -520,7 +520,7 @@ class VSettingsKinematicTree // AUTO: * * @author AUTO: Gerstmayr Johannes * @date AUTO: 2019-07-01 (generated) -* @date AUTO: 2022-06-16 (last modfied) +* @date AUTO: 2022-06-21 (last modfied) * * @copyright This file is part of Exudyn. Exudyn is free software: you can redistribute it and/or modify it under the terms of the Exudyn license. See "LICENSE.txt" for more details. * @note Bug reports, support and further information: @@ -598,7 +598,7 @@ class VSettingsBodies // AUTO: * * @author AUTO: Gerstmayr Johannes * @date AUTO: 2019-07-01 (generated) -* @date AUTO: 2022-06-16 (last modfied) +* @date AUTO: 2022-06-21 (last modfied) * * @copyright This file is part of Exudyn. Exudyn is free software: you can redistribute it and/or modify it under the terms of the Exudyn license. See "LICENSE.txt" for more details. * @note Bug reports, support and further information: @@ -687,7 +687,7 @@ class VSettingsConnectors // AUTO: * * @author AUTO: Gerstmayr Johannes * @date AUTO: 2019-07-01 (generated) -* @date AUTO: 2022-06-16 (last modfied) +* @date AUTO: 2022-06-21 (last modfied) * * @copyright This file is part of Exudyn. Exudyn is free software: you can redistribute it and/or modify it under the terms of the Exudyn license. See "LICENSE.txt" for more details. * @note Bug reports, support and further information: @@ -756,7 +756,7 @@ class VSettingsMarkers // AUTO: * * @author AUTO: Gerstmayr Johannes * @date AUTO: 2019-07-01 (generated) -* @date AUTO: 2022-06-16 (last modfied) +* @date AUTO: 2022-06-21 (last modfied) * * @copyright This file is part of Exudyn. Exudyn is free software: you can redistribute it and/or modify it under the terms of the Exudyn license. See "LICENSE.txt" for more details. * @note Bug reports, support and further information: @@ -834,7 +834,7 @@ class VSettingsLoads // AUTO: * * @author AUTO: Gerstmayr Johannes * @date AUTO: 2019-07-01 (generated) -* @date AUTO: 2022-06-16 (last modfied) +* @date AUTO: 2022-06-21 (last modfied) * * @copyright This file is part of Exudyn. Exudyn is free software: you can redistribute it and/or modify it under the terms of the Exudyn license. See "LICENSE.txt" for more details. * @note Bug reports, support and further information: @@ -903,7 +903,7 @@ class VSettingsSensors // AUTO: * * @author AUTO: Gerstmayr Johannes * @date AUTO: 2019-07-01 (generated) -* @date AUTO: 2022-06-16 (last modfied) +* @date AUTO: 2022-06-21 (last modfied) * * @copyright This file is part of Exudyn. Exudyn is free software: you can redistribute it and/or modify it under the terms of the Exudyn license. See "LICENSE.txt" for more details. * @note Bug reports, support and further information: @@ -989,7 +989,7 @@ class VSettingsContact // AUTO: * * @author AUTO: Gerstmayr Johannes * @date AUTO: 2019-07-01 (generated) -* @date AUTO: 2022-06-16 (last modfied) +* @date AUTO: 2022-06-21 (last modfied) * * @copyright This file is part of Exudyn. Exudyn is free software: you can redistribute it and/or modify it under the terms of the Exudyn license. See "LICENSE.txt" for more details. * @note Bug reports, support and further information: @@ -1076,7 +1076,7 @@ class VSettingsWindow // AUTO: * * @author AUTO: Gerstmayr Johannes * @date AUTO: 2019-07-01 (generated) -* @date AUTO: 2022-06-16 (last modfied) +* @date AUTO: 2022-06-21 (last modfied) * * @copyright This file is part of Exudyn. Exudyn is free software: you can redistribute it and/or modify it under the terms of the Exudyn license. See "LICENSE.txt" for more details. * @note Bug reports, support and further information: @@ -1128,7 +1128,10 @@ class VSettingsOpenGL // AUTO: float materialShininess; //!< AUTO: shininess of material Float4 materialSpecular; //!< AUTO: 4f specular color of material Index multiSampling; //!< AUTO: multi sampling turned off (<=1) or turned on to given values (2, 4, 8 or 16); increases the graphics buffers and might crash due to graphics card memory limitations; only works if supported by hardware; if it does not work, try to change 3D graphics hardware settings! + float perspective; //!< AUTO: parameter prescribes amount of perspective (0=no perspective=orthographic projection; positive values increase perspective; feasible values are 0.001 (little perspective) ... 0.5 (large amount of perspective); mouse coordinates will not work with perspective bool shadeModelSmooth; //!< AUTO: True: turn on smoothing for shaders, which uses vertex normals to smooth surfaces + float shadow; //!< AUTO: parameter \f$\in [0 ... 1]\f$ prescribes amount of shadow; if this parameter is different from 1, rendering of triangles becomes approx.\ 5 times more expensive, so take care in case of complex scenes; for complex object, such as spheres with fine resolution or for particle systems, the present approach has limitations and leads to artifacts and unrealistic shadows + float shadowPolygonOffset; //!< AUTO: some special drawing parameter for shadows which should be handled with care; defines some offset needed by openGL to avoid aritfacts for shadows and depends on maxSceneSize bool showFaceEdges; //!< AUTO: show edges of faces; using the options showFaces=false and showFaceEdges=true gives are wire frame representation bool showFaces; //!< AUTO: show faces of triangles, etc.; using the options showFaces=false and showFaceEdges=true gives are wire frame representation bool showMeshEdges; //!< AUTO: show edges of finite elements; independent of showFaceEdges @@ -1175,7 +1178,10 @@ class VSettingsOpenGL // AUTO: materialShininess = 32.f; materialSpecular = Float4({0.6f,0.6f,0.6f,1.f}); multiSampling = 1; + perspective = 0.f; shadeModelSmooth = true; + shadow = 0.f; + shadowPolygonOffset = 10.f; showFaceEdges = false; showFaces = true; showMeshEdges = true; @@ -1185,11 +1191,26 @@ class VSettingsOpenGL // AUTO: }; // AUTO: access functions + //! AUTO: Set function (needed in pybind) for: length of normals; used for debugging + void PySetDrawNormalsLength(const float& drawNormalsLengthInit) { drawNormalsLength = EXUstd::GetSafelyPFloat(drawNormalsLengthInit,"drawNormalsLength"); } + //! AUTO: Read (Copy) access to: length of normals; used for debugging + float PyGetDrawNormalsLength() const { return float(drawNormalsLength); } + //! AUTO: Set function (needed in pybind) for: centerpoint of scene (3D) at renderer startup; overwritten if autoFitScene = True void PySetInitialCenterPoint(const std::array& initialCenterPointInit) { initialCenterPoint = initialCenterPointInit; } //! AUTO: Read (Copy) access to: centerpoint of scene (3D) at renderer startup; overwritten if autoFitScene = True std::array PyGetInitialCenterPoint() const { return std::array(initialCenterPoint); } + //! AUTO: Set function (needed in pybind) for: initial maximum scene size (auto: diagonal of cube with maximum scene coordinates); used for 'zoom all' functionality and for visibility of objects; overwritten if autoFitScene = True + void PySetInitialMaxSceneSize(const float& initialMaxSceneSizeInit) { initialMaxSceneSize = EXUstd::GetSafelyPFloat(initialMaxSceneSizeInit,"initialMaxSceneSize"); } + //! AUTO: Read (Copy) access to: initial maximum scene size (auto: diagonal of cube with maximum scene coordinates); used for 'zoom all' functionality and for visibility of objects; overwritten if autoFitScene = True + float PyGetInitialMaxSceneSize() const { return float(initialMaxSceneSize); } + + //! AUTO: Set function (needed in pybind) for: initial zoom of scene; overwritten/ignored if autoFitScene = True + void PySetInitialZoom(const float& initialZoomInit) { initialZoom = EXUstd::GetSafelyUFloat(initialZoomInit,"initialZoom"); } + //! AUTO: Read (Copy) access to: initial zoom of scene; overwritten/ignored if autoFitScene = True + float PyGetInitialZoom() const { return float(initialZoom); } + //! AUTO: Set function (needed in pybind) for: 4f position vector of GL\_LIGHT0; 4th value should be 0 for lights like sun, but 1 for directional lights (and for attenuation factor being calculated); see opengl manuals void PySetLight0position(const std::array& light0positionInit) { light0position = light0positionInit; } //! AUTO: Read (Copy) access to: 4f position vector of GL\_LIGHT0; 4th value should be 0 for lights like sun, but 1 for directional lights (and for attenuation factor being calculated); see opengl manuals @@ -1205,6 +1226,11 @@ class VSettingsOpenGL // AUTO: //! AUTO: Read (Copy) access to: global ambient light; maps to OpenGL glLightModeli(GL\_LIGHT\_MODEL\_AMBIENT,[r,g,b,a]) std::array PyGetLightModelAmbient() const { return std::array(lightModelAmbient); } + //! AUTO: Set function (needed in pybind) for: width of lines used for representation of lines, circles, points, etc. + void PySetLineWidth(const float& lineWidthInit) { lineWidth = EXUstd::GetSafelyUFloat(lineWidthInit,"lineWidth"); } + //! AUTO: Read (Copy) access to: width of lines used for representation of lines, circles, points, etc. + float PyGetLineWidth() const { return float(lineWidth); } + //! AUTO: Set function (needed in pybind) for: 4f ambient color of material void PySetMaterialAmbientAndDiffuse(const std::array& materialAmbientAndDiffuseInit) { materialAmbientAndDiffuse = materialAmbientAndDiffuseInit; } //! AUTO: Read (Copy) access to: 4f ambient color of material @@ -1220,6 +1246,26 @@ class VSettingsOpenGL // AUTO: //! AUTO: Read (Copy) access to: multi sampling turned off (<=1) or turned on to given values (2, 4, 8 or 16); increases the graphics buffers and might crash due to graphics card memory limitations; only works if supported by hardware; if it does not work, try to change 3D graphics hardware settings! Index PyGetMultiSampling() const { return Index(multiSampling); } + //! AUTO: Set function (needed in pybind) for: parameter prescribes amount of perspective (0=no perspective=orthographic projection; positive values increase perspective; feasible values are 0.001 (little perspective) ... 0.5 (large amount of perspective); mouse coordinates will not work with perspective + void PySetPerspective(const float& perspectiveInit) { perspective = EXUstd::GetSafelyUFloat(perspectiveInit,"perspective"); } + //! AUTO: Read (Copy) access to: parameter prescribes amount of perspective (0=no perspective=orthographic projection; positive values increase perspective; feasible values are 0.001 (little perspective) ... 0.5 (large amount of perspective); mouse coordinates will not work with perspective + float PyGetPerspective() const { return float(perspective); } + + //! AUTO: Set function (needed in pybind) for: parameter \f$\in [0 ... 1]\f$ prescribes amount of shadow; if this parameter is different from 1, rendering of triangles becomes approx.\ 5 times more expensive, so take care in case of complex scenes; for complex object, such as spheres with fine resolution or for particle systems, the present approach has limitations and leads to artifacts and unrealistic shadows + void PySetShadow(const float& shadowInit) { shadow = EXUstd::GetSafelyUFloat(shadowInit,"shadow"); } + //! AUTO: Read (Copy) access to: parameter \f$\in [0 ... 1]\f$ prescribes amount of shadow; if this parameter is different from 1, rendering of triangles becomes approx.\ 5 times more expensive, so take care in case of complex scenes; for complex object, such as spheres with fine resolution or for particle systems, the present approach has limitations and leads to artifacts and unrealistic shadows + float PyGetShadow() const { return float(shadow); } + + //! AUTO: Set function (needed in pybind) for: some special drawing parameter for shadows which should be handled with care; defines some offset needed by openGL to avoid aritfacts for shadows and depends on maxSceneSize + void PySetShadowPolygonOffset(const float& shadowPolygonOffsetInit) { shadowPolygonOffset = EXUstd::GetSafelyPFloat(shadowPolygonOffsetInit,"shadowPolygonOffset"); } + //! AUTO: Read (Copy) access to: some special drawing parameter for shadows which should be handled with care; defines some offset needed by openGL to avoid aritfacts for shadows and depends on maxSceneSize + float PyGetShadowPolygonOffset() const { return float(shadowPolygonOffset); } + + //! AUTO: Set function (needed in pybind) for: width of lines used for representation of text + void PySetTextLineWidth(const float& textLineWidthInit) { textLineWidth = EXUstd::GetSafelyUFloat(textLineWidthInit,"textLineWidth"); } + //! AUTO: Read (Copy) access to: width of lines used for representation of text + float PyGetTextLineWidth() const { return float(textLineWidth); } + //! AUTO: print function used in ostream operator (print is virtual and can thus be overloaded) virtual void Print(std::ostream& os) const { @@ -1260,7 +1306,10 @@ class VSettingsOpenGL // AUTO: os << " materialShininess = " << materialShininess << "\n"; os << " materialSpecular = " << materialSpecular << "\n"; os << " multiSampling = " << multiSampling << "\n"; + os << " perspective = " << perspective << "\n"; os << " shadeModelSmooth = " << shadeModelSmooth << "\n"; + os << " shadow = " << shadow << "\n"; + os << " shadowPolygonOffset = " << shadowPolygonOffset << "\n"; os << " showFaceEdges = " << showFaceEdges << "\n"; os << " showFaces = " << showFaces << "\n"; os << " showMeshEdges = " << showMeshEdges << "\n"; @@ -1285,7 +1334,7 @@ class VSettingsOpenGL // AUTO: * * @author AUTO: Gerstmayr Johannes * @date AUTO: 2019-07-01 (generated) -* @date AUTO: 2022-06-16 (last modfied) +* @date AUTO: 2022-06-21 (last modfied) * * @copyright This file is part of Exudyn. Exudyn is free software: you can redistribute it and/or modify it under the terms of the Exudyn license. See "LICENSE.txt" for more details. * @note Bug reports, support and further information: @@ -1375,7 +1424,7 @@ class VSettingsExportImages // AUTO: * * @author AUTO: Gerstmayr Johannes * @date AUTO: 2019-07-01 (generated) -* @date AUTO: 2022-06-16 (last modfied) +* @date AUTO: 2022-06-21 (last modfied) * * @copyright This file is part of Exudyn. Exudyn is free software: you can redistribute it and/or modify it under the terms of the Exudyn license. See "LICENSE.txt" for more details. * @note Bug reports, support and further information: @@ -1403,6 +1452,7 @@ class VSettingsInteractive // AUTO: float keypressRotationStep; //!< AUTO: rotation increment per keypress in degree (full rotation = 360 degree) float keypressTranslationStep; //!< AUTO: translation increment per keypress relative to window size float mouseMoveRotationFactor; //!< AUTO: rotation increment per 1 pixel mouse movement in degree + bool selectionHighlights; //!< AUTO: True: mouse click highlights item (default: red) bool selectionLeftMouse; //!< AUTO: True: left mouse click on items and show basic information bool selectionRightMouse; //!< AUTO: True: right mouse click on items and show dictionary (read only!) bool useJoystickInput; //!< AUTO: True: read joystick input (use 6-axis joystick with lowest ID found when starting renderer window) and interpret as (x,y,z) position and (rotx, roty, rotz) rotation: as available from 3Dconnexion space mouse and maybe others as well; set to False, if external joystick makes problems ... @@ -1423,6 +1473,7 @@ class VSettingsInteractive // AUTO: keypressRotationStep = 5.f; keypressTranslationStep = 0.1f; mouseMoveRotationFactor = 1.f; + selectionHighlights = true; selectionLeftMouse = true; selectionRightMouse = true; useJoystickInput = true; @@ -1459,6 +1510,7 @@ class VSettingsInteractive // AUTO: os << " keypressRotationStep = " << keypressRotationStep << "\n"; os << " keypressTranslationStep = " << keypressTranslationStep << "\n"; os << " mouseMoveRotationFactor = " << mouseMoveRotationFactor << "\n"; + os << " selectionHighlights = " << selectionHighlights << "\n"; os << " selectionLeftMouse = " << selectionLeftMouse << "\n"; os << " selectionRightMouse = " << selectionRightMouse << "\n"; os << " useJoystickInput = " << useJoystickInput << "\n"; @@ -1481,7 +1533,7 @@ class VSettingsInteractive // AUTO: * * @author AUTO: Gerstmayr Johannes * @date AUTO: 2019-07-01 (generated) -* @date AUTO: 2022-06-16 (last modfied) +* @date AUTO: 2022-06-21 (last modfied) * * @copyright This file is part of Exudyn. Exudyn is free software: you can redistribute it and/or modify it under the terms of the Exudyn license. See "LICENSE.txt" for more details. * @note Bug reports, support and further information: diff --git a/main/src/Autogenerated/versionCpp.cpp b/main/src/Autogenerated/versionCpp.cpp index de944fc3..441a0bdf 100644 --- a/main/src/Autogenerated/versionCpp.cpp +++ b/main/src/Autogenerated/versionCpp.cpp @@ -1,7 +1,7 @@ // AUTO: ++++++++++++++++++++++ // AUTO: version info automatically generated by tracker; generated by Johannes Gerstmayr -// AUTO: last modified = 2022-06-17 +// AUTO: last modified = 2022-06-22 // AUTO: ++++++++++++++++++++++ namespace EXUstd { - const char* exudynVersion = "1.2.134.dev1"; + const char* exudynVersion = "1.3.0"; } diff --git a/main/src/Graphics/GlfwClient.cpp b/main/src/Graphics/GlfwClient.cpp index 4e50cef0..09810e4a 100644 --- a/main/src/Graphics/GlfwClient.cpp +++ b/main/src/Graphics/GlfwClient.cpp @@ -14,6 +14,10 @@ #include "Graphics/GlfwClient.h" #include "Utilities/SlimArray.h" + + +#ifdef USE_GLFW_GRAPHICS + #define GlfwRendererUsePNG //deactivate this flag for compatibility; switches to .TGA image output //needs to be tested!!! @@ -22,16 +26,17 @@ //#endif //we need to exclude Python36 (in fact Ubuntu18.04, where glfw is not available with stb_image_write.h -#if defined(__EXUDYN__LINUX__) && defined(__EXUDYN__PYTHON36) +#if (defined(__EXUDYN__LINUX__) && defined(__EXUDYN__PYTHON36)) #undef GlfwRendererUsePNG #endif +//GlfwRendererUsePNG only makes sense if GLFW_GRAPHICS is available #ifdef GlfwRendererUsePNG #define STB_IMAGE_WRITE_IMPLEMENTATION #include "deps/stb_image_write.h" //for save image as .PNG #endif -#ifdef USE_GLFW_GRAPHICS + using namespace std::string_literals; // enables s-suffix for std::string literals //if this flag is set, the GLFW thread will be detached (which may be advantageous is stoprenderer is not called); otherwise it is a joinable thread @@ -81,7 +86,7 @@ RenderState* GlfwRenderer::state; RenderStateMachine GlfwRenderer::stateMachine; std::thread GlfwRenderer::rendererThread; bool GlfwRenderer::verboseRenderer = false; -Index GlfwRenderer::firstRun = 0; //zoom all in first run +//DELETE: Index GlfwRenderer::firstRun = 0; //zoom all in first run std::atomic_flag GlfwRenderer::renderFunctionRunning = ATOMIC_FLAG_INIT; //!< semaphore to check if Render(...) function is currently running (prevent from calling twice); initialized with clear state std::atomic_flag GlfwRenderer::showMessageSemaphore = ATOMIC_FLAG_INIT; //!< semaphore for ShowMessage @@ -114,6 +119,15 @@ GlfwRenderer::GlfwRenderer() graphicsDataList = nullptr; window = nullptr; + fontScale = 1; //initialized if needed before bitmap initialization + //renderState state cannot be initialized here, because it will be linked later to visualizationSystemContainer + + ResetStateMachine(); +}; + + +void GlfwRenderer::ResetStateMachine() +{ stateMachine.leftMousePressed = false; stateMachine.rightMousePressed = false; stateMachine.shiftPressed = false; @@ -125,14 +139,15 @@ GlfwRenderer::GlfwRenderer() stateMachine.lastMousePressedX = 0; //!< last left mouse button position pressed stateMachine.lastMousePressedY = 0; - //DELETE: stateMachine.selectionMode = false; - //stateMachine.selectionString = ""; - stateMachine.selectionMouseCoordinates = Vector2D({ 0.,0. }); + //initialize highlight item: + stateMachine.highlightIndex = invalidIndex; + stateMachine.highlightType = ItemType::_None; + stateMachine.highlightMbsNumber = 0; + stateMachine.highlightTimeout = 0.; - fontScale = 1; //initialized if needed before bitmap initialization - //renderState state cannot be initialized here, because it will be linked later to visualizationSystemContainer + stateMachine.selectionMouseCoordinates = Vector2D({ 0.,0. }); -}; +} //! add status message, e.g., if button is pressed void GlfwRenderer::ShowMessage(const STDstring& str, Real timeout) @@ -609,10 +624,10 @@ void GlfwRenderer::key_callback(GLFWwindow* window, int key, int scancode, int a //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - if (!hasShift && key == GLFW_KEY_UP && (action == GLFW_PRESS || action == GLFW_REPEAT)) { state->centerPoint[1] -= transStep; } - if (!hasShift && key == GLFW_KEY_DOWN && (action == GLFW_PRESS || action == GLFW_REPEAT)) { state->centerPoint[1] += transStep; } - if (!hasShift && key == GLFW_KEY_LEFT && (action == GLFW_PRESS || action == GLFW_REPEAT)) { state->centerPoint[0] += transStep; } - if (!hasShift && key == GLFW_KEY_RIGHT && (action == GLFW_PRESS || action == GLFW_REPEAT)) { state->centerPoint[0] -= transStep; } + if (!hasShift && !hasAlt && key == GLFW_KEY_UP && (action == GLFW_PRESS || action == GLFW_REPEAT)) { state->centerPoint[1] -= transStep; } + if (!hasShift && !hasAlt && key == GLFW_KEY_DOWN && (action == GLFW_PRESS || action == GLFW_REPEAT)) { state->centerPoint[1] += transStep; } + if (!hasShift && !hasAlt && key == GLFW_KEY_LEFT && (action == GLFW_PRESS || action == GLFW_REPEAT)) { state->centerPoint[0] += transStep; } + if (!hasShift && !hasAlt && key == GLFW_KEY_RIGHT && (action == GLFW_PRESS || action == GLFW_REPEAT)) { state->centerPoint[0] -= transStep; } if ((key == GLFW_KEY_KP_SUBTRACT || key == GLFW_KEY_COMMA) && (action == GLFW_PRESS || action == GLFW_REPEAT)) { @@ -631,19 +646,27 @@ void GlfwRenderer::key_callback(GLFWwindow* window, int key, int scancode, int a else { state->zoom /= zoomStep;; } } - if (key == GLFW_KEY_A && action == GLFW_PRESS) { ZoomAll(); UpdateGraphicsDataNow(); } + if (key == GLFW_KEY_A && action == GLFW_PRESS) + { + ZoomAll(); + } + //if (key == GLFW_KEY_O && action == GLFW_PRESS) + //{ + // const Float16& A = state->modelRotation; + // Matrix3DF rotMatrix(3, 3, { A[0], A[1], A[2], A[4], A[5], A[6], A[8], A[9], A[10] }); + + // //check which offset or rotation is needed here! + // *** + // state->rotationCenterPoint = rotMatrix.GetTransposed()*state->centerPoint; + // pout << "rot center point=" << state->rotationCenterPoint << "\n"; + //} } //EXUstd::ReleaseSemaphore(graphicsUpdateAtomicFlag); } -void GlfwRenderer::ZoomAll() +void GlfwRenderer::ComputeMaxSceneSize(float& maxSceneSize, Float3& center) { - //pout << "zoom all\n"; - //pout << "graphicsDataList=" << graphicsDataList << "\n"; //max scene size from current line data: - //Float3 pmax({ -1e30f,-1e30f,-1e30f }); - //Float3 pmin({ 1e30f,1e30f,1e30f }); - Float3 pmax({ -1e30f,-1e30f,-1e30f }); Float3 pmin({ 1e30f,1e30f,1e30f }); @@ -698,31 +721,31 @@ void GlfwRenderer::ZoomAll() } } - Float3 center = 0.5f*(pmin + pmax); + center = 0.5f*(pmin + pmax); - float maxSceneSize = (pmax - pmin).GetL2Norm(); + maxSceneSize = (pmax - pmin).GetL2Norm(); if (maxSceneSize < visSettings->general.minSceneSize) { maxSceneSize = visSettings->general.minSceneSize; } if (graphicsDataList->NumberOfItems() == 0 || ((*graphicsDataList)[0]->glCirclesXY.NumberOfItems() == 0 && (*graphicsDataList)[0]->glLines.NumberOfItems() == 0 && (*graphicsDataList)[0]->glSpheres.NumberOfItems() == 0 && (*graphicsDataList)[0]->glTexts.NumberOfItems() == 0 - && (*graphicsDataList)[0]->glTriangles.NumberOfItems() == 0)) + && (*graphicsDataList)[0]->glTriangles.NumberOfItems() == 0)) { maxSceneSize = 1; center = Float3({ 0,0,0 }); } + } +} - //rendererOut << "Zoom all\n"; - //rendererOut << "maxScenesize=" << maxSceneSize << "\n"; - //rendererOut << "center=" << center << "\n"; +//! at beginning with autofitScene and when manually requested +void GlfwRenderer::ZoomAll(bool updateGraphicsData, bool computeMaxScene, bool render) +{ + if (updateGraphicsData) { UpdateGraphicsDataNow(); } + if (computeMaxScene) { ComputeMaxSceneSize(state->maxSceneSize, state->centerPoint); } - state->zoom = 0.4f*maxSceneSize; - state->centerPoint = center; - //state->zoom = 0.5f*state->maxSceneSize; - //state->centerPoint = state->sceneCenterPoint; //computed in VisualizationSystem::UpdateMaximumSceneCoordinates + state->zoom = 0.4f*state->maxSceneSize; - UpdateGraphicsDataNow(); //remove from here; just put here for testing - } + if (render) { Render(window); } } void GlfwRenderer::scroll_callback(GLFWwindow* window, double xoffset, double yoffset) @@ -934,12 +957,12 @@ void GlfwRenderer::cursor_position_callback(GLFWwindow* window, double xpos, dou } } -//! return true, if joystick available and updated values are available; if joystickNumber==-1, chose a joystick; -//! if joystickNumber!=-1, it uses the fixed joystick until end of Renderer +//! return true, if joystick available and updated values are available; if joystickNumber==invalidIndex, chose a joystick; +//! if joystickNumber!=invalidIndex, it uses the fixed joystick until end of Renderer bool GlfwRenderer::GetJoystickValues(Vector3D& position, Vector3D& rotation, Index& joystickNumber) { bool initFirst = false; //if initialized first, also reset stateMachine - if (joystickNumber == -1) + if (joystickNumber == invalidIndex) { //check if joystick available for (Index i = 0; i <= GLFW_JOYSTICK_LAST - GLFW_JOYSTICK_1; i++) @@ -989,9 +1012,6 @@ void GlfwRenderer::ProcessJoystick() stateMachine.mode == RendererMode::_None && //only if no other move/zoom action ongoing! GetJoystickValues(state->joystickPosition, state->joystickRotation, state->joystickAvailable)) { - //for debugging ... - //ShowMessage("joystick =" + EXUstd::ToString(state->joystickPosition) + EXUstd::ToString(state->joystickRotation)); - Vector3D diffPos = state->joystickPosition - stateMachine.storedJoystickPosition; Vector3D diffRot = state->joystickRotation - stateMachine.storedJoystickRotation; stateMachine.storedJoystickPosition = state->joystickPosition; @@ -1014,14 +1034,6 @@ void GlfwRenderer::ProcessJoystick() if (!(diffRot == 0.)) { diffRot *= visSettings->interactive.joystickScaleRotation; - //local rotations: - //glMatrixMode(GL_MODELVIEW); - ////glLoadIdentity(); //start with identity - //glLoadMatrixf(state->modelRotation.GetDataPointer()); //load previous rotation - //glRotatef((float)diffRot[0], 1.f, 0.f, 0.f); //apply "incremental" rotation around x - //glRotatef((float)diffRot[1], 0.f, 1.f, 0.f); //apply "incremental" rotation around y - //glRotatef(-(float)diffRot[2], 0.f, 0.f, 1.f); //apply "incremental" rotation around z - //glGetFloatv(GL_MODELVIEW_MATRIX, state->modelRotation.GetDataPointer()); //store rotation in modelRotation, applied in model rendering glMatrixMode(GL_MODELVIEW); glLoadIdentity(); //start with identity @@ -1058,15 +1070,16 @@ bool GlfwRenderer::MouseSelect(GLFWwindow* window, Index mouseX, Index mouseY, I (Index)stateMachine.selectionMouseCoordinates[0], (Index)stateMachine.selectionMouseCoordinates[1], itemID); - //DELETE: stateMachine.selectionMode = false; - Index itemIndex; - ItemType itemType; - Index mbsNumber; - ItemID2IndexType(itemID, itemIndex, itemType, mbsNumber); + + const Real timeOutHighlightItem = 0.5; //just short to exactly see object + ItemID2IndexType(itemID, stateMachine.highlightIndex, stateMachine.highlightType, stateMachine.highlightMbsNumber); + //PrintDelayed("itemID=" + EXUstd::ToString(itemID)); - if (itemType != ItemType::_None && itemIndex != -1) + if (stateMachine.highlightType != ItemType::_None && stateMachine.highlightIndex != invalidIndex) { + stateMachine.highlightTimeout = EXUstd::GetTimeInSeconds() + timeOutHighlightItem; //5 seconds timeout + STDstring itemTypeName; STDstring itemName; //STDstring itemInfo; @@ -1076,15 +1089,13 @@ bool GlfwRenderer::MouseSelect(GLFWwindow* window, Index mouseX, Index mouseY, I { ShowMessage("Selected item: " + itemTypeName + //"type = " + EXUstd::ToString(itemType) + - ", index = " + EXUstd::ToString(itemIndex) + " (" + itemName + ")", 0); + ", index = " + EXUstd::ToString(stateMachine.highlightIndex) + " (" + itemName + ")", 0); } - //UpdateGraphicsDataNow(); return true; } else { ShowMessage("no item selected", 2); - //DELETE: stateMachine.selectionMode = false; return false; } } @@ -1094,7 +1105,6 @@ void GlfwRenderer::MouseSelectOpenGL(GLFWwindow* window, Index mouseX, Index mou { //++++++++++++++++++++++++++++++++++++++++ //put into separate function, for Render(...) - float ratio; int width, height; glfwGetFramebufferSize(window, &width, &height); @@ -1103,16 +1113,11 @@ void GlfwRenderer::MouseSelectOpenGL(GLFWwindow* window, Index mouseX, Index mou state->currentWindowSize[0] = width; state->currentWindowSize[1] = height; - ratio = (float)width; - if (height != 0) - { - ratio = width / (float)height; - } + float ratio = (float)width; + if (height != 0) { ratio = width / (float)height; } - GLfloat zoom = state->zoom; //++++++++++++++++++++++++++++++++++++++++ - const Index selectBufferSize = 10000; //size for number of objects picked at same time GLuint selectBuffer[selectBufferSize]; glSelectBuffer(selectBufferSize, selectBuffer); @@ -1123,16 +1128,6 @@ void GlfwRenderer::MouseSelectOpenGL(GLFWwindow* window, Index mouseX, Index mou //rendererOut << "viewport=" << viewport[0] << ", " << viewport[1] << ", " << viewport[2] << ", " << viewport[3] << "\n"; //rendererOut << "mouse=" << mouseX << ", " << mouseY << "\n"; - ////from meshDoc: - //glMatrixMode(GL_PROJECTION); - //glPushMatrix(); - - //GLdouble projmat[16]; - //glGetDoublev(GL_PROJECTION_MATRIX, projmat); - - //glLoadIdentity(); - - float backgroundColor = 0.f; glClearColor(backgroundColor, backgroundColor, backgroundColor, 1.0f); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); @@ -1147,9 +1142,9 @@ void GlfwRenderer::MouseSelectOpenGL(GLFWwindow* window, Index mouseX, Index mou SetViewOnMouseCursor(mouseX, viewport[3] - mouseY, selectArea*ratio, selectArea, viewport); //add ratio to make area non-distorted?q //++++++++++++++++++++++++++++++++++++++++ - //use function for that part: - GLdouble zFactor = 100.; //original:100 - glOrtho(-ratio * zoom, ratio*zoom, -zoom, zoom, -zFactor * 2.*state->maxSceneSize, zFactor * 2.*state->maxSceneSize); //https: //www.khronos.org/opengl/wiki/Viewing_and_Transformations#How_do_I_implement_a_zoom_operation.3F + float zoom; + GLdouble zFactor; + SetProjection(width, height, ratio, zoom, zFactor); //set zoom, perspective, ...; may not work for larger perspective glMatrixMode(GL_MODELVIEW); glPushMatrix(); @@ -1227,7 +1222,13 @@ bool GlfwRenderer::SetupRenderer(bool verbose) { PySetRendererCallbackLock(false); //reset callback lock if still set from earlier run (for safety ...) - basicVisualizationSystemContainer->UpdateMaximumSceneCoordinates(); //this is done to make OpenGL zoom and maxSceneCoordinates work + basicVisualizationSystemContainer->InitializeView(); //this is done to make OpenGL zoom and maxSceneCoordinates work + basicVisualizationSystemContainer->SetComputeMaxSceneRequest(true); //computes maxSceneCoordinates for perspective and shadow + if (visSettings->general.autoFitScene) + { + basicVisualizationSystemContainer->SetZoomAllRequest(true); + //pout << "set zoom all\n"; + } basicVisualizationSystemContainer->ForceQuitSimulation(false); //reset flag if set from earlier simulations rendererError = 0; @@ -1467,7 +1468,8 @@ void GlfwRenderer::InitCreateWindow() //+++++++++++++++++++++++++++++++++ //joystick - state->joystickAvailable = -1; //this causes to search for new joystick and, if fourn, initialize stateMachine! + state->joystickAvailable = invalidIndex; //this causes to search for new joystick and, if fourn, initialize stateMachine! + ResetStateMachine(); //+++++++++++++++++ //initialize opengl @@ -1512,7 +1514,7 @@ void GlfwRenderer::InitCreateWindow() //+++++++++++++++++++++++++++++++++ //do this just before RunLoop, all initialization finished ... - firstRun = 0; //zoom all on startup of window + //DELETE: firstRun = 0; //zoom all on startup of window rendererActive = true; //this is still threadsafe, because main thread waits for this signal! //+++++++++++++++++++++++++++++++++ @@ -1591,7 +1593,19 @@ void GlfwRenderer::DoRendererTasks() if (useMultiThreadedRendering || (time >= lastGraphicsUpdate + updateInterval) || GetCallBackSignal()) { basicVisualizationSystemContainer->UpdateGraphicsData(); - if (basicVisualizationSystemContainer->GetAndResetZoomAllRequest()) { ZoomAll(); } + bool maxSceneComputed = false; + if (basicVisualizationSystemContainer->GetComputeMaxSceneRequest()) + { + ComputeMaxSceneSize(state->maxSceneSize, state->centerPoint); + maxSceneComputed = true; + basicVisualizationSystemContainer->SetComputeMaxSceneRequest(false); + //pout << "maxSceneSize=" << state->maxSceneSize << ", center=" << state->centerPoint << "\n"; + //pout << "ComputeMaxSceneSize\n"; + } + if (basicVisualizationSystemContainer->GetAndResetZoomAllRequest()) { + ZoomAll(false, !maxSceneComputed, false); + //pout << "Zoom all\n"; + } Render(window); SaveImage(); //in case of flag, save frame to image file lastGraphicsUpdate = time; @@ -1668,13 +1682,40 @@ void GlfwRenderer::DoRendererIdleTasks(Real waitSeconds) } } +//load GL_PROJECTION and set according to zoom, perspective, etc. +void GlfwRenderer::SetProjection(int width, int height, float ratio, float& zoom, GLdouble& zFactor) +{ + zoom = state->zoom; + zFactor = 100.; //z-factor to avoid clipping; original:100 + + if (visSettings->openGL.perspective <= 0) + { + glOrtho(-ratio * zoom, ratio*zoom, -zoom, zoom, -zFactor * 2.*state->maxSceneSize, zFactor * 2.*state->maxSceneSize); //https: //www.khronos.org/opengl/wiki/Viewing_and_Transformations#How_do_I_implement_a_zoom_operation.3F + //void glOrtho(GLdouble left,GLdouble right,GLdouble bottom,GLdouble top,GLdouble nearVal,GLdouble farVal); + } + else + { + //visSettings->openGL.perspective + float fact = 1.f / (float)visSettings->openGL.perspective; + float factZoom = 0.5f; //correction, to show same zoom level as orthographic projection + + float zNear = state->maxSceneSize*fact; + float zFar = state->maxSceneSize * (4.f*fact + 2.f); + float right = ratio * zoom*factZoom; + float left = -right; + float top = zoom * factZoom; + float bottom = -zoom * factZoom; + glFrustum(left, right, bottom, top, zNear, zFar); + glTranslatef(0.f, 0.f, -2 * fact * state->maxSceneSize); + } +} + void GlfwRenderer::Render(GLFWwindow* window) //GLFWwindow* needed in argument, because of glfwSetWindowRefreshCallback { if (PyGetRendererCallbackLock()) { return; } EXUstd::WaitAndLockSemaphore(renderFunctionRunning); //lock Render(...) function, no second call possible //std::cout << "start renderer\n"; - float ratio; int width, height; glfwGetFramebufferSize(window, &width, &height); @@ -1683,13 +1724,6 @@ void GlfwRenderer::Render(GLFWwindow* window) //GLFWwindow* needed in argument, state->currentWindowSize[0] = width; state->currentWindowSize[1] = height; - ratio = (float)width; - if (height != 0) - { - ratio = width / (float)height; - } - - GLfloat zoom = state->zoom; //determine the windows scale; TODO: add callback to redraw if monitor is changed: glfwSetWindowContentScaleCallback(...) //float xWindowScale, yWindowScale; @@ -1714,13 +1748,15 @@ void GlfwRenderer::Render(GLFWwindow* window) //GLFWwindow* needed in argument, glClearColor(bg[0], bg[1], bg[2], bg[3]); //(float red, float green, float blue, float alpha); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - //glDisable(GL_LIGHTING); glMatrixMode(GL_PROJECTION); glLoadIdentity(); - GLdouble zFactor = 100.; //original:100 - glOrtho(-ratio * zoom, ratio*zoom, -zoom, zoom, -zFactor*2.*state->maxSceneSize, zFactor * 2.*state->maxSceneSize); //https: //www.khronos.org/opengl/wiki/Viewing_and_Transformations#How_do_I_implement_a_zoom_operation.3F - //original (flipped?): - //glOrtho(-ratio * zoom, ratio*zoom, -1.f*zoom, 1.f*zoom, zFactor*2.*state->maxSceneSize, -zFactor * 2.*state->maxSceneSize); //https: //www.khronos.org/opengl/wiki/Viewing_and_Transformations#How_do_I_implement_a_zoom_operation.3F + + float ratio = (float)width; + if (height != 0) { ratio = width / (float)height; } + float zoom; + GLdouble zFactor; + SetProjection(width, height, ratio, zoom, zFactor); //set zoom, perspective, ... + glMatrixMode(GL_MODELVIEW); glLoadIdentity(); @@ -1747,18 +1783,42 @@ void GlfwRenderer::Render(GLFWwindow* window) //GLFWwindow* needed in argument, //put here, will be fixed light seen from camera: SetGLLights(); //moved here 2020-12-05; light should now be rotation independent! - glTranslated(-state->centerPoint[0], -state->centerPoint[1], 0.f); + //++++++++++++++++++++++++++++++++++++++++++++++++++++ + //model rotation and translation, include rotation center point + const Float16& A = state->modelRotation; + Matrix3DF rotMatrix(3, 3, { A[0], A[1], A[2], A[4], A[5], A[6], A[8], A[9], A[10] }); + + glTranslatef(-state->centerPoint[0], -state->centerPoint[1], 0.f); + + //Float3 rot2 = state->rotationCenterPoint; + //glTranslatef(rot2[0], rot2[1], rot2[2]); glMultMatrixf(state->modelRotation.GetDataPointer()); + + ////rot2 = rotMatrix.GetTransposed() * (-state->rotationCenterPoint); //A.T*rotationCenterPoint + //rot2 = (-state->rotationCenterPoint); //A.T*rotationCenterPoint + //glTranslatef(rot2[0], rot2[1], rot2[2]); + //++++++++++++++++++++++++++++++++++++++++++++++++++++ + + //glRotatef(state->rotations[2], 0.f, 0.f, 1.f);//((float)glfwGetTime() * 50.f, 0.f, 0.f, 1.f); //glRotatef(state->rotations[1], 0.f, 1.f, 0.f); //glRotatef(state->rotations[0], 1.f, 0.f, 0.f); //put here, will rotate with model-view: - //SetGLLights(); //moved here 2020-12-05; light should now be rotation independent! + //SetGLLights(); RenderGraphicsData(); + + if (visSettings->openGL.perspective != 0) + { + //for texts, axes, etc.: draw without perspective + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + glOrtho(-ratio * zoom, ratio*zoom, -zoom, zoom, -zFactor * 2.*state->maxSceneSize, zFactor * 2.*state->maxSceneSize); //https: //www.khronos.org/opengl/wiki/Viewing_and_Transformations#How_do_I_implement_a_zoom_operation.3F + } + //glPushMatrix(); //store current matrix //glPopMatrix(); //restore matrix const int textIndentPixels = 10; @@ -1948,14 +2008,6 @@ void GlfwRenderer::Render(GLFWwindow* window) //GLFWwindow* needed in argument, p0 += Float3({ 0.f,-sizeY,0.f }); } - // glBegin(GL_TRIANGLES); - // glColor3f(1.f, 0.f, 0.f); - // glVertex3f(-0.6f+i, -0.4f+j, 0.f); - // glColor3f(0.f, 1.f, 0.f); - // glVertex3f(0.6f+i, -0.4f+j, 0.f); - // glColor3f(0.f, 0.f, 1.f); - // glVertex3f(0.f+i, 0.6f+j, 0.f); - // glEnd(); glDepthMask(GL_TRUE); } @@ -1981,9 +2033,6 @@ void GlfwRenderer::Render(GLFWwindow* window) //GLFWwindow* needed in argument, glMatrixMode(GL_MODELVIEW); glLoadIdentity(); - //float factor = -0.35f*zoom * 2.5f; - //glOrtho(0.0f, ratio, 1, 0.0f, 0.0f, 1.0f); - //float factor = -0.35f; Float2 pPix = PixelToVertexCoordinates(10 + visSettings->general.coordinateSystemSize*fontSize, 10 + (visSettings->general.coordinateSystemSize+0.f)*fontSize); //+1.f because of possible status line at bottom @@ -2046,12 +2095,11 @@ void GlfwRenderer::Render(GLFWwindow* window) //GLFWwindow* needed in argument, glfwSwapBuffers(window); - //rendererOut << "Render ready\n"; - - firstRun++; - //if (firstRun == 10) { ZoomAll(); } + //DELETE: + //firstRun++; + ////if (firstRun == 10) { ZoomAll(); } - if ((firstRun * visSettings->general.graphicsUpdateInterval) < 1. && visSettings->general.autoFitScene) { ZoomAll(); } + //if ((firstRun * visSettings->general.graphicsUpdateInterval) < 1. && visSettings->general.autoFitScene) { ZoomAll(); } //std::cout << " finish renderer\n"; @@ -2208,10 +2256,10 @@ void GlfwRenderer::RenderGraphicsData(bool selectionMode) { if (graphicsDataList) { - Index lastItemID = -1; + Index lastItemID = invalidIndex; if (selectionMode) { - glLoadName(-1); //to have some name in + glLoadName(invalidIndex); //to have some name in it } //check if item shall be highlighted: bool highlight = false; @@ -2220,10 +2268,26 @@ void GlfwRenderer::RenderGraphicsData(bool selectionMode) Float4 highlightColor2 = visSettings->interactive.highlightColor; //for text and lines Float4 otherColor2 = visSettings->interactive.highlightOtherColor; //for text and lines - + //Index highlightIndex; + //ItemType highlightType; + //Index highlightMbsNumber; Index highlightIndex = visSettings->interactive.highlightItemIndex; ItemType highlightType = visSettings->interactive.highlightItemType; Index highlightMbsNumber = visSettings->interactive.highlightMbsNumber; + if (visSettings->interactive.selectionHighlights && stateMachine.highlightIndex != invalidIndex) + { + //if selected with mouse, temporarily use this: + if (stateMachine.highlightTimeout != 0. && stateMachine.highlightTimeout < EXUstd::GetTimeInSeconds()) + { + stateMachine.highlightIndex = invalidIndex; //from now on, no further highlighting + } + else + { + highlightIndex = stateMachine.highlightIndex; + highlightType = stateMachine.highlightType; + highlightMbsNumber = stateMachine.highlightMbsNumber; + } + } Index highlightID = Index2ItemID(highlightIndex, highlightType, highlightMbsNumber); if (highlightIndex >= 0 && highlightType != ItemType::_None) @@ -2494,6 +2558,10 @@ void GlfwRenderer::RenderGraphicsData(bool selectionMode) glEnd(); } } + if (!selectionMode && visSettings->openGL.shadow != 0) + { + DrawTrianglesWithShadow(data); + } } else //for global transparency of faces; slower { @@ -2566,11 +2634,140 @@ void GlfwRenderer::RenderGraphicsData(bool selectionMode) } //for (auto data : *graphicsDataList) if (selectionMode) { - glLoadName(-1); //to have some name in + glLoadName(invalidIndex); //to have some name in } } //if graphicsDataList } +//draw stenciled shadow volume +//following concepts of https://github.com/joshb/shadowvolumes +void RenderTriangleShadowVolume(const GLTriangle& trig, const Float3& lightPos, float maxDist, float shadow) +{ + //glColor4f(0.6f,0.3f,0.3f,1); + bool computeNormals = false; + //glColor4f(0.f, 0.f, 0.f, shadow);//shadow + + //check if triangle normal is looking in direction of light (otherwise no shadow is produced + if (EXUmath::ComputeTriangleNormal(trig.points[0], trig.points[1], trig.points[2]) * (lightPos - trig.points[0]) > 0) + { + if (computeNormals) { glNormal3fv(EXUmath::ComputeTriangleNormal(trig.points[0], trig.points[1], trig.points[2]).GetDataPointer()); } + glBegin(GL_TRIANGLES); + for (Index i = 0; i < 3; i++) + { + glVertex3fv(trig.points[i].GetDataPointer()); + } + std::array< Float3, 3> farPoints; + + if (computeNormals) { glNormal3fv(EXUmath::ComputeTriangleNormal(trig.points[2], trig.points[1], trig.points[0]).GetDataPointer()); } + for (Index i = 2; i >= 0; i--) + { + Float3 vecDist = trig.points[i] - lightPos; + float dist = vecDist.SumAbs()*0.577f; //cheaper than norm, but needs safety factor sqrt(3) + //float dist = vecDist.GetL2Norm(); //SumAbs()*0.577 would be cheaper and also on safe side + if (dist != 0) + { + vecDist *= maxDist / dist; //scale up to maximum distance in scene, will cover all objects + } + + farPoints[i] = trig.points[i] + vecDist; + glVertex3fv(farPoints[i].GetDataPointer()); + } + glEnd(); + + glBegin(GL_QUADS); + for (Index i = 0; i < 3; i++) + { + Index iNext = (i + 1) % 3; + if (computeNormals) { glNormal3fv(EXUmath::ComputeTriangleNormal(trig.points[i], farPoints[i], farPoints[iNext]).GetDataPointer()); } + glVertex3fv(trig.points[i].GetDataPointer()); + glVertex3fv(farPoints[i].GetDataPointer()); + glVertex3fv(farPoints[iNext].GetDataPointer()); + glVertex3fv(trig.points[iNext].GetDataPointer()); + } + glEnd(); + } + +} + +//draw full plane over screen, containing shadow mask +void DrawShadowPlane(float shadow) +{ + glPushMatrix(); + glLoadIdentity(); + glMatrixMode(GL_PROJECTION); + glPushMatrix(); + glLoadIdentity(); + glOrtho(0, 1, 1, 0, 0, 1); + glDisable(GL_DEPTH_TEST); + + glColor4f(0.0f, 0.0f, 0.0f, shadow); + glBegin(GL_QUADS); + glVertex2i(0, 0); + glVertex2i(0, 1); + glVertex2i(1, 1); + glVertex2i(1, 0); + glEnd(); + + glEnable(GL_DEPTH_TEST); + glPopMatrix(); + glMatrixMode(GL_MODELVIEW); + glPopMatrix(); +} + + +void GlfwRenderer::DrawTrianglesWithShadow(GraphicsData* data) +{ + const Float4& lp = visSettings->openGL.light0position; + Float3 lightPos({ lp[0], lp[1], lp[2] }); + float maxDist = state->maxSceneSize*1.5f; + float shadow = EXUstd::Minimum(visSettings->openGL.shadow, 1.f); + + //add shadow now: + + glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE); + glDepthMask(GL_FALSE); + glEnable(GL_CULL_FACE); + glEnable(GL_STENCIL_TEST); + glEnable(GL_POLYGON_OFFSET_FILL); + glPolygonOffset(0.0f, visSettings->openGL.shadowPolygonOffset * state->maxSceneSize); //original: 100.0f, may be too big + + glCullFace(GL_FRONT); + glStencilFunc(GL_ALWAYS, 0x0, 0xff); + glStencilOp(GL_KEEP, GL_INCR, GL_KEEP); + for (const GLTriangle& trig : data->glTriangles) + { //draw faces + if ((visSettings->openGL.showFaces && !trig.isFiniteElement) + || (visSettings->openGL.showMeshFaces && trig.isFiniteElement)) + { + RenderTriangleShadowVolume(trig, lightPos, maxDist, shadow); + } + } + glCullFace(GL_BACK); + glStencilFunc(GL_ALWAYS, 0x0, 0xff); + glStencilOp(GL_KEEP, GL_DECR, GL_KEEP); + for (const GLTriangle& trig : data->glTriangles) + { //draw faces + if ((visSettings->openGL.showFaces && !trig.isFiniteElement) + || (visSettings->openGL.showMeshFaces && trig.isFiniteElement)) + { + RenderTriangleShadowVolume(trig, lightPos, maxDist, shadow); + } + } + + glDisable(GL_POLYGON_OFFSET_FILL); + glDisable(GL_CULL_FACE); + glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE); + glDepthMask(GL_TRUE); + + glStencilFunc(GL_NOTEQUAL, 0x0, 0xff); + glStencilOp(GL_REPLACE, GL_REPLACE, GL_REPLACE); + + DrawShadowPlane(shadow); + + glDisable(GL_STENCIL_TEST); + + +} #endif //USE_GLFW_GRAPHICS diff --git a/main/src/Graphics/GlfwClient.h b/main/src/Graphics/GlfwClient.h index d9c36814..a0f5c338 100644 --- a/main/src/Graphics/GlfwClient.h +++ b/main/src/Graphics/GlfwClient.h @@ -82,10 +82,12 @@ class RenderStateMachine //++++++++++++++++++++++++++++++++++++ //selection: - //DELETE: selectionMode; //!< true, if in selection mode - Vector2D selectionMouseCoordinates; //!mouse coordinates used for selection - //std::string selectionString; //!< string about object to be shown on screen - + Vector2D selectionMouseCoordinates; //!< mouse coordinates used for selection + Index highlightIndex; //!< item index of selected item (with mouse click) + ItemType highlightType; //!< item type of selected item + Index highlightMbsNumber; //!< mbs number of selected item + Real highlightTimeout; //!< time at which highlighted item shall be removed, using EXUstd::GetTimeInSeconds(); 0, if no timeout + std::string rendererMessage; //!< rendererMessage to be shown in status line Real renderMessageTimeout; //!< time at which message shall be removed, using EXUstd::GetTimeInSeconds(); 0, if no timeout @@ -110,7 +112,7 @@ class GlfwRenderer static std::thread rendererThread; //!< std::thread variable for rendererThread static Index rendererError; //!< 0 ... no error, 1 ... glfwInit() failed, 2 ... glfwCreateWindow failed, 3 ... other error static bool verboseRenderer; //!< initialized in SetupRenderer(bool verbose): output helpful information - static Index firstRun; //zoom all in first run + //static Index firstRun; //zoom all in first run static std::atomic_flag renderFunctionRunning; //!< semaphore to check if Render(...) function is currently running (prevent from calling twice) static std::atomic_flag showMessageSemaphore; //!< semaphore to prevent calling ShowMessage twice @@ -134,6 +136,7 @@ class GlfwRenderer static GLuint spheresListBase; //!< starting index for GLlists for spheres static constexpr Index maxSpheresLists = 8; //!< max. number of GLlists for spheres (with resolution 2,4,8,16, etc. + static constexpr Index invalidIndex = -1; //!< for some state machine variables (itemIndex, joystick number, ...) //+++++++++++++++++++++++++++++++++++++++++ //link to GraphicsData and Settings: static ResizableArray* graphicsDataList; //!< link to graphics data; only works for one MainSystem, but could also be realized for several systems @@ -159,6 +162,9 @@ class GlfwRenderer //! return renderState object static RenderState GetRenderState() { return *state; } + //! reset some state machines, e.g., left mouse click, item select, etc. + static void ResetStateMachine(); + static bool WindowIsInitialized() { if (window && rendererActive) { return true; } @@ -183,7 +189,7 @@ class GlfwRenderer state->mouseLeftPressed = false; state->mouseRightPressed = false; state->mouseMiddlePressed = false; - state->joystickAvailable = -1; + state->joystickAvailable = invalidIndex; return true; } else { return false; } @@ -287,8 +293,8 @@ class GlfwRenderer static void cursor_position_callback(GLFWwindow* window, double xpos, double ypos); static void window_close_callback(GLFWwindow* window); - //! return true, if joystick available and updated values are available; if joystickNumber==-1, chose a joystick; - //! if joystickNumber!=-1, it uses the fixed joystick until end of Renderer + //! return true, if joystick available and updated values are available; if joystickNumber==invalidIndex, chose a joystick; + //! if joystickNumber!=invalidIndex, it uses the fixed joystick until end of Renderer static bool GetJoystickValues(Vector3D& position, Vector3D& rotation, Index& joystickNumber); //! read joystick values; if changed, send refresh signal for graphics @@ -322,6 +328,8 @@ class GlfwRenderer //! Render function called for every update of OpenGl window static void Render(GLFWwindow* window); //GLFWwindow* needed in argument, because of glfwSetWindowRefreshCallback + static void SetProjection(int width, int height, float ratio, float& zoom, GLdouble& zFactor); //load GL_PROJECTION and set according to zoom, perspective, etc. + //! check if frame shall be grabed and saved to file using visualization options static void SaveImage(); @@ -331,8 +339,14 @@ class GlfwRenderer //! Render particulary the graphics data of multibody system; selectionMode==true adds names static void RenderGraphicsData(bool selectionMode = false); // fontScale now stored in GLFWRenderer: float fontScale); + //! Render triangles with stencil shadow method (slow, but accurate and should be sufficient for some animations) + static void DrawTrianglesWithShadow(GraphicsData* data); + + //! compute maxSceneSize and center from graphicsData + static void ComputeMaxSceneSize(float& maxSceneSize, Float3& center); + //! Zoom all graphics objects (for current configuration) - static void ZoomAll(); + static void ZoomAll(bool updateGraphicsData=true, bool computeMaxScene=true, bool render=true); //! Set all light functions for openGL static void SetGLLights(); diff --git a/main/src/Graphics/PostProcessData.h b/main/src/Graphics/PostProcessData.h index 74316c7b..a34ced82 100644 --- a/main/src/Graphics/PostProcessData.h +++ b/main/src/Graphics/PostProcessData.h @@ -45,7 +45,8 @@ class PostProcessData bool forceQuitSimulation; //!< flag is set if user closes simulation window (but not if Escape pressed) bool simulationPaused; //!< true: simulation sends renderer or GUI that simulation is paused, waiting for user-input (SPACE) Real visualizationTime; //!< this value is set as soon as the computation date is generated from visualization; needed to synchronize text message and visualization state - + bool systemHasChanged; //!< systemHasChanged is used to signal GLFWclient to compute new maxSceneSize and center + VisualizationSystem* visualizationSystem; //!< this backlink ist used for: user functions, WaitForUserToContinue and for MainSystem backlink (but use rarely!!!) bool requestUserFunctionDrawing; //!< if this flag is set, user functions request drawing update from computation thread std::atomic_flag requestUserFunctionDrawingAtomicFlag; //!< flag for user function drawing in python @@ -67,6 +68,7 @@ class PostProcessData forceQuitSimulation = false; simulationPaused = false; visualizationTime = 0; + systemHasChanged = true; // used to compute maxSceneSize at beginning visualizationStateUpdateAvailable = false; requestUserFunctionDrawing = false; diff --git a/main/src/Graphics/VisualizationSystem.cpp b/main/src/Graphics/VisualizationSystem.cpp index 5b0e1e59..41dd6724 100644 --- a/main/src/Graphics/VisualizationSystem.cpp +++ b/main/src/Graphics/VisualizationSystem.cpp @@ -97,6 +97,13 @@ void VisualizationSystem::UpdateGraphicsData(VisualizationSystemContainer& visua systemData->GetCData().visualizationState = postProcessData->GetVisualizationStateUpdate(); postProcessData->SetVisualizationStateUpdateAvailable(false); } + + if (GetSystemHasChanged()) + { + visualizationSystemContainer.SetComputeMaxSceneRequest(true); + SetSystemHasChanged(false); + } + EXUstd::ReleaseSemaphore(postProcessData->accessState); //now visualizationStateUpdate can be written again in main thread try diff --git a/main/src/Graphics/VisualizationSystem.h b/main/src/Graphics/VisualizationSystem.h index 93a6dead..f7724c38 100644 --- a/main/src/Graphics/VisualizationSystem.h +++ b/main/src/Graphics/VisualizationSystem.h @@ -60,6 +60,10 @@ class VisualizationSystem //: public VisualizationSystemBase public: virtual ~VisualizationSystem() {} //added for correct deletion of derived classes + //! systemHasChanged is used to signal GLFWclient to compute new maxSceneSize and center + void SetSystemHasChanged(bool flag) { postProcessData->systemHasChanged = flag; } + bool GetSystemHasChanged() { return postProcessData->systemHasChanged; } + GraphicsData& GetGraphicsData() { return graphicsData; } const GraphicsData& GetGraphicsData() const { return graphicsData; } @@ -107,7 +111,7 @@ class VisualizationSystem //: public VisualizationSystemBase virtual std::string GetComputationMessage(bool solverInformation = true, bool solutionInformation = true, bool solverTime = true); //! if the system has changed or loaded, compute maximum box of all items and reset scene to the maximum box - //virtual void UpdateMaximumSceneCoordinates(); + //virtual void InitializeView(); virtual void Print(std::ostream& os) const { diff --git a/main/src/Graphics/VisualizationSystemContainer.cpp b/main/src/Graphics/VisualizationSystemContainer.cpp index 7139e7ab..04a761bd 100644 --- a/main/src/Graphics/VisualizationSystemContainer.cpp +++ b/main/src/Graphics/VisualizationSystemContainer.cpp @@ -63,13 +63,13 @@ bool VisualizationSystemContainer::DetachFromRenderEngine(VisualizationSystemCon //! OpenGL renderer sends message that graphics shall be updated ==> update graphics data void VisualizationSystemContainer::UpdateGraphicsData() { - if (zoomAllRequest) - { - zoomAllRequest = false; //this is not fully thread safe, but should not happen very often ==> user needs to zoom manually then ... - //pout << "zoomAllrequest1\n"; - UpdateMaximumSceneCoordinates(); - //pout << "zoomAllrequest2\n"; - } + //this is now done in GLFWclient for zoom all, InitializeView done + //if (zoomAllRequest) + //{ + // zoomAllRequest = false; //this is not fully thread safe, but should not happen very often ==> user needs to zoom manually then ... + + // InitializeView(); + //} if (updateGraphicsDataNow) { updateGraphicsDataNowInternal = true; updateGraphicsDataNow = false; } //enables immediate new set of updateGraphicsDataNow if (saveImage) { saveImageOpenGL = true; } //as graphics are updated now, the saveImageOpenGL flag can be set @@ -211,13 +211,14 @@ bool VisualizationSystemContainer::WaitForRenderEngineStopFlag() } //! if the system has changed or loaded, compute maximum box of all items and reset scene to the maximum box -void VisualizationSystemContainer::UpdateMaximumSceneCoordinates() +void VisualizationSystemContainer::InitializeView() { //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - renderState.centerPoint = settings.openGL.initialCenterPoint; //this is the initial centerPoint; hereafter it can be changed! - //renderState.sceneCenterPoint = settings.openGL.initialCenterPoint; //this is the initial centerPoint; hereafter it can be changed! renderState.zoom = settings.openGL.initialZoom; renderState.maxSceneSize = settings.openGL.initialMaxSceneSize; + renderState.centerPoint = settings.openGL.initialCenterPoint; //this is the initial centerPoint; hereafter it can be changed! + //renderState.rotationCenterPoint.SetAll(0); + renderState.currentWindowSize = settings.window.renderWindowSize; if (renderState.currentWindowSize[0] < 1) { renderState.currentWindowSize[0] = 1; } //avoid division by zero if (renderState.currentWindowSize[1] < 1) { renderState.currentWindowSize[1] = 1; } //avoid division by zero @@ -237,58 +238,59 @@ void VisualizationSystemContainer::UpdateMaximumSceneCoordinates() //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - if (settings.general.autoFitScene) - { - //for now, use nodal reference coordinates to estimate the maximum zoom level - Vector3D pmax0({ -1e30,-1e30,-1e30 }); - Vector3D pmin0({ 1e30,1e30,1e30 }); - Vector3D pmax = pmax0; - Vector3D pmin = pmin0; - for (auto visSystem : visualizationSystems) - { - //! @todo extend VisualizationSystemContainer::UpdateMaximumSceneCoordinates for objects, markers and loads; maybe better to first draw all and zoom to full region? - for (auto item : visSystem->systemData->GetCNodes()) - { - if ((Index)item->GetNodeGroup() & (Index)CNodeGroup::ODE2variables) - { - //LinkedDataVector pref = item->GetReferenceCoordinateVector(); - Vector3D pref = ((CNodeODE2*)item)->GetPosition(ConfigurationType::Reference); - - pmax[0] = EXUstd::Maximum(pref[0], pmax[0]); - pmax[1] = EXUstd::Maximum(pref[1], pmax[1]); - pmax[2] = EXUstd::Maximum(pref[2], pmax[2]); - pmin[0] = EXUstd::Minimum(pref[0], pmin[0]); - pmin[1] = EXUstd::Minimum(pref[1], pmin[1]); - pmin[2] = EXUstd::Minimum(pref[2], pmin[2]); - } - - } - } - //check if some bad coordinates result - if (pmax == pmax0 || pmin == pmin0) - { - pmin = Vector3D({ 0.,0.,0. }); - pmax = Vector3D({ 1.,1.,1. }); - } - else if (pmax == pmin) - { - Real d = 0.5; - pmax += Vector3D({ d,d,d }); - pmin -= Vector3D({ d,d,d}); - } - Vector3D center = 0.5*(pmin + pmax); - - if (renderState.centerPoint[0] == 0 && renderState.centerPoint[1] == 0 && renderState.centerPoint[2] == 0) { - renderState.centerPoint.CopyFrom(center); - } - - renderState.maxSceneSize = (float)((pmax - pmin).GetL2Norm()); - if (renderState.maxSceneSize < settings.general.minSceneSize) - { - renderState.maxSceneSize = settings.general.minSceneSize; - } - renderState.zoom = 0.5f*renderState.maxSceneSize; - } + ////for now, use nodal reference coordinates to estimate the maximum zoom level + //Vector3D pmax0({ -1e30,-1e30,-1e30 }); + //Vector3D pmin0({ 1e30,1e30,1e30 }); + //Vector3D pmax = pmax0; + //Vector3D pmin = pmin0; + //for (auto visSystem : visualizationSystems) + //{ + // //! @todo extend VisualizationSystemContainer::InitializeView for objects, markers and loads; maybe better to first draw all and zoom to full region? + // for (auto item : visSystem->systemData->GetCNodes()) + // { + // if ((Index)item->GetNodeGroup() & (Index)CNodeGroup::ODE2variables) + // { + // //LinkedDataVector pref = item->GetReferenceCoordinateVector(); + // Vector3D pref = ((CNodeODE2*)item)->GetPosition(ConfigurationType::Reference); + + // pmax[0] = EXUstd::Maximum(pref[0], pmax[0]); + // pmax[1] = EXUstd::Maximum(pref[1], pmax[1]); + // pmax[2] = EXUstd::Maximum(pref[2], pmax[2]); + // pmin[0] = EXUstd::Minimum(pref[0], pmin[0]); + // pmin[1] = EXUstd::Minimum(pref[1], pmin[1]); + // pmin[2] = EXUstd::Minimum(pref[2], pmin[2]); + // } + + // } + //} + ////check if some bad coordinates result + //if (pmax == pmax0 || pmin == pmin0) + //{ + // pmin = Vector3D({ 0.,0.,0. }); + // pmax = Vector3D({ 1.,1.,1. }); + //} + //else if (pmax == pmin) + //{ + // Real d = 0.5; + // pmax += Vector3D({ d,d,d }); + // pmin -= Vector3D({ d,d,d}); + //} + //Vector3D center = 0.5*(pmin + pmax); + + //if (renderState.centerPoint[0] == 0 && renderState.centerPoint[1] == 0 && renderState.centerPoint[2] == 0) { + // renderState.centerPoint.CopyFrom(center); + //} + + //renderState.maxSceneSize = (float)((pmax - pmin).GetL2Norm()); + //if (renderState.maxSceneSize < settings.general.minSceneSize) + //{ + // renderState.maxSceneSize = settings.general.minSceneSize; + //} + + //if (settings.general.autoFitScene) + //{ + // renderState.zoom = 0.4f*renderState.maxSceneSize; + //} } //! any multi-line text message from computation to be shown in renderer (e.g. time, solver, ...) diff --git a/main/src/Graphics/VisualizationSystemContainer.h b/main/src/Graphics/VisualizationSystemContainer.h index 79460d5c..d507dcc1 100644 --- a/main/src/Graphics/VisualizationSystemContainer.h +++ b/main/src/Graphics/VisualizationSystemContainer.h @@ -114,7 +114,8 @@ class VisualizationSystemContainer: public VisualizationSystemContainerBase VisualizationSettings settings; //!< general settings for visualization RenderState renderState; //!< Data linked to state variables of the OpenGL engine (e.g. zoom, transformation matrices, ...) ResizableArray visualizationSystems; //! linked to all visualization systems (placed in MainSystem); links need to be kept up-to-date by MainSystem Add/Delete - bool zoomAllRequest; //! used to perform UpdateMaximumSceneCoordinates() + bool zoomAllRequest; //! used to perform zoom all() + bool computeMaxSceneRequest; //! used to update max scene coordinates and center bool updateGraphicsDataNow; //! renderer signals to update the graphics data, e.g. if settings have changed; reset to false after UpdateGraphicsData(...) is called std::string computationMessage; //! message of computation to be shown in renderer window bool saveImage; //!< set true: signal to save the current state shall be rendered and saved to a given image (with consecutive number); will be set false, as soon as frame is saved @@ -127,6 +128,7 @@ class VisualizationSystemContainer: public VisualizationSystemContainerBase VisualizationSystemContainer() { zoomAllRequest = false; + computeMaxSceneRequest = true; //always done at beginning! saveImage = false; saveImageOpenGL = false; updateGraphicsDataNowInternal = false; @@ -202,7 +204,7 @@ class VisualizationSystemContainer: public VisualizationSystemContainerBase //virtual void SetVisualizationIsRunning(bool flag = true) override; //! if the system has changed or loaded, compute maximum box of all items and reset scene to the maximum box - virtual void UpdateMaximumSceneCoordinates() override; + virtual void InitializeView() override; //! renderer signals to update the graphics data, e.g. if settings have changed virtual void UpdateGraphicsDataNow() override @@ -230,6 +232,11 @@ class VisualizationSystemContainer: public VisualizationSystemContainerBase return false; } + virtual void SetZoomAllRequest(bool flag) override { zoomAllRequest = flag; } + + virtual void SetComputeMaxSceneRequest(bool flag) override { computeMaxSceneRequest = flag; } + virtual bool GetComputeMaxSceneRequest() override { return computeMaxSceneRequest; } + //! any multi-line text message from computation to be shown in renderer (e.g. time, solver, ...) virtual std::string GetComputationMessage(bool solverInformation = true, bool solutionInformation = true, bool solverTime = true) override; diff --git a/main/src/Graphics/VisualizationSystemContainerBase.h b/main/src/Graphics/VisualizationSystemContainerBase.h index d478444a..fb2de44a 100644 --- a/main/src/Graphics/VisualizationSystemContainerBase.h +++ b/main/src/Graphics/VisualizationSystemContainerBase.h @@ -28,7 +28,7 @@ class VisualizationSystemContainerBase public: //! OpenGL renderer sends message that graphics shall be updated virtual void UpdateGraphicsData() = 0; //!< renderer reports to simulation to update the graphics data - virtual void UpdateMaximumSceneCoordinates() = 0; //!< renderer reports to update the maximum scene coordinates (on initialization) + virtual void InitializeView() = 0; //!< renderer reports to update the maximum scene coordinates (on initialization) virtual void StopSimulation() = 0; //!< renderer reports to simulation that simulation shall be interrupted virtual void ForceQuitSimulation(bool flag = true) = 0; //!< renderer reports that render window is closed and simulation shall be shut down virtual void ContinueSimulation() = 0; //!< renderer reports to simulation that simulation can be continued @@ -37,12 +37,15 @@ class VisualizationSystemContainerBase virtual void SaveImageFinished() = 0; //! renderer signals that frame has been grabed and saved virtual bool SaveImageRequest() = 0; //! signal renderer that a frame shall be recorded virtual bool GetAndResetZoomAllRequest() = 0;//! get zoom all request and reset to false - virtual std::string GetComputationMessage(bool solverInformation = true, + virtual void SetComputeMaxSceneRequest(bool flag) = 0; + virtual bool GetComputeMaxSceneRequest() = 0; + + virtual std::string GetComputationMessage(bool solverInformation = true, bool solutionInformation = true, bool solverTime = true) = 0; //! any multi-line text message from computation to be shown in renderer (e.g. time, solver, ...) virtual MainSystem* GetMainSystemBacklink(Index iSystem) = 0; //! REMOVE: get backlink of ith main system (0 if not existing), temporary for selection virtual Index NumberOFMainSystemsBacklink() const = 0; //! REMOVE: get backlink to number of main systems, temporary for selection virtual bool DoIdleOperations() = 0; //!< this function does any idle operations (execute some python commands) and returns false if stop flag in the render engine, otherwise true; - + virtual void SetZoomAllRequest(bool flag) = 0; //!< request ZoomAll virtual ~VisualizationSystemContainerBase() {} //added for correct deletion of derived classes @@ -77,7 +80,8 @@ class RenderState { public: //GLfloat modelview[16]; //current model view matrix - Float3 centerPoint; //offset of scene in x, y and z direction; initialized by user, then by UpdateMaximumSceneCoordinates and hereafter changed in OpenGL renderer by ZoomAll (z not used, because it would bring objects out of near/far plane) + Float3 centerPoint; //offset of scene in x, y and z direction; initialized by user, then by InitializeView and hereafter changed in OpenGL renderer by ZoomAll (z not used, because it would bring objects out of near/far plane) + //Float3 rotationCenterPoint; //additional offset for point around which the model view is rotated; standard=[0,0,0] float maxSceneSize; //size given e.g. by initial state of system float zoom; //this is a factor for zoom diff --git a/main/src/Linalg/SlimVector.h b/main/src/Linalg/SlimVector.h index eb79c499..2d758b5c 100644 --- a/main/src/Linalg/SlimVector.h +++ b/main/src/Linalg/SlimVector.h @@ -490,7 +490,23 @@ class SlimVectorBase for (auto &item : *this) { item *= norm; } //changed from "item /= norm" to be compatible with autodiff } - T& X() + ////! get sum of components + //T Sum() const + //{ + // T result = 0.; + // for (auto item : *this) { result += item; } + // return result; + //} + + //! get sum of absolute values + T SumAbs() const + { + T result = 0.; + for (auto item : *this) { result += fabs(item); } + return result; + } + + T& X() { static_assert(dataSize >= 1, "ERROR: SlimVectorBase dataSize < 1 for function T& X()"); return data[0]; diff --git a/main/src/Main/CSystem.cpp b/main/src/Main/CSystem.cpp index 85758c2b..1fa1853c 100644 --- a/main/src/Main/CSystem.cpp +++ b/main/src/Main/CSystem.cpp @@ -2054,23 +2054,22 @@ void CSystem::JacobianODE2RHS(TemporaryComputationDataArray& tempArray, const Nu { ArrayIndex& ltgODE2 = cSystemData.GetLocalToGlobalODE2()[j]; Index nLocalODE2 = ltgODE2.NumberOfItems(); - f0.SetNumberOfItems(nLocalODE2); - f1.SetNumberOfItems(nLocalODE2); JacobianType::Type jacType = object->GetAvailableJacobians(); bool jacobianComputed = false; - if (jacType & (JacobianType::ODE2_ODE2 + JacobianType::ODE2_ODE2_t)) //any ODE2 dependency + if (jacType & (JacobianType::ODE2_ODE2 + JacobianType::ODE2_ODE2_t + JacobianType::ODE2_ODE1)) //any ODE2 dependency { - if (!numDiff.forODE2 && ((jacType & (JacobianType::ODE2_ODE2_function + JacobianType::ODE2_ODE2_t_function)) != 0)) + if (!numDiff.forODE2 && ((jacType & (JacobianType::ODE2_ODE2_function + JacobianType::ODE2_ODE2_t_function/* + JacobianType::ODE2_ODE1_function*/)) != 0)) { if (!EXUstd::IsOfType(object->GetType(), CObjectType::Connector)) - { //*** compute object jacobian, e.g., finite element or rigid body + { // ++++++++++++++ compute object jacobian, e.g., finite element or rigid body jacobianComputed = true; //matrix size set inside object object->ComputeJacobianODE2_ODE2(temp.jacobianODE2Container, temp.jacobianTemp, -factorODE2, -factorODE2_t, j, ltgODE2); //minus (-) because in numerical mode, f0-f1 leads to negative sign (RHS ==> LHS) + //ODE2_ODE1 missing here! if (temp.jacobianODE2Container.UseDenseMatrix()) { jacobianGM.AddSubmatrix(temp.jacobianODE2Container.GetInternalDenseMatrix(), 1., ltgODE2, ltgODE2); @@ -2084,7 +2083,7 @@ void CSystem::JacobianODE2RHS(TemporaryComputationDataArray& tempArray, const Nu } } //if (!EXUstd::IsOfType(object->GetType(), CObjectType::Connector) else if (!numDiff.forODE2connectors) - { //*** go the lengthier way: compute connector jacobian, e.g., spring-damper + { // ++++++++++++++ go the lengthier way: compute connector jacobian, e.g., spring-damper CObjectConnector* connector = (CObjectConnector*)object; const ArrayIndex& markerNumbers = connector->GetMarkerNumbers(); @@ -2143,59 +2142,97 @@ void CSystem::JacobianODE2RHS(TemporaryComputationDataArray& tempArray, const Nu } //if (numDiff.forODE2connectors) } - if (!jacobianComputed && ComputeObjectODE2LHS(temp, object, f0, j)) //check if it is a constraint, etc. which is not differentiated for ODE2 jacobian + + if (!jacobianComputed) { - localJacobian.SetNumberOfRowsAndColumns(nLocalODE2, nLocalODE2); //needs not to be initialized, because the matrix is fully computed and then added to jacobianGM - if (diffODE2) + f0.SetNumberOfItems(nLocalODE2); //size also correct for ODE1 derivatives + f1.SetNumberOfItems(nLocalODE2); + if (ComputeObjectODE2LHS(temp, object, f0, j)) //check if it is a constraint, etc. which is not differentiated for ODE2 jacobian { - Real xRefVal = 0; - for (Index i = 0; i < nLocalODE2; i++) //differentiate w.r.t. every ltgODE2 coordinate + localJacobian.SetNumberOfRowsAndColumns(nLocalODE2, nLocalODE2); //needs not to be initialized, because the matrix is fully computed and then added to jacobianGM + if (diffODE2) { - Real& xVal = x[ltgODE2[i]]; - if (numDiff.addReferenceCoordinatesToEpsilon) { xRefVal = xRef[ltgODE2[i]]; } + Real xRefVal = 0; + for (Index i = 0; i < nLocalODE2; i++) //differentiate w.r.t. every ltgODE2 coordinate + { + Real& xVal = x[ltgODE2[i]]; + if (numDiff.addReferenceCoordinatesToEpsilon) { xRefVal = xRef[ltgODE2[i]]; } - eps = relEps * (EXUstd::Maximum(minCoord, fabs(xVal + xRefVal))); + eps = relEps * (EXUstd::Maximum(minCoord, fabs(xVal + xRefVal))); - xStore = xVal; - xVal += eps; - ComputeObjectODE2LHS(temp, object, f1, j); - xVal = xStore; + xStore = xVal; + xVal += eps; + ComputeObjectODE2LHS(temp, object, f1, j); + xVal = xStore; - epsInv = (1. / eps) * factorODE2; + epsInv = (1. / eps) * factorODE2; - for (Index k = 0; k < nLocalODE2; k++) - { - //use local jacobian: - localJacobian(k, i) = epsInv * (f0[k] - f1[k]); //-(f1-f0) == (f0-f1): negative sign, because object ODE2RHS is subtracted from global RHS-vector + for (Index k = 0; k < nLocalODE2; k++) + { + //use local jacobian: + localJacobian(k, i) = epsInv * (f0[k] - f1[k]); //-(f1-f0) == (f0-f1): negative sign, because object ODE2RHS is subtracted from global RHS-vector + } } } - } - else { localJacobian.SetAll(0.); } + else { localJacobian.SetAll(0.); } - if (diffODE2_t && EXUstd::IsOfType(jacType, JacobianType::ODE2_ODE2_t)) - { - for (Index i = 0; i < nLocalODE2; i++) //differentiate w.r.t. every ltgODE2 coordinate + if (diffODE2_t && EXUstd::IsOfType(jacType, JacobianType::ODE2_ODE2_t)) { - Real& xVal = x_t[ltgODE2[i]]; - eps = relEps * (EXUstd::Maximum(minCoord, fabs(xVal))); + for (Index i = 0; i < nLocalODE2; i++) //differentiate w.r.t. every ltgODE2 coordinate + { + Real& xVal = x_t[ltgODE2[i]]; + eps = relEps * (EXUstd::Maximum(minCoord, fabs(xVal))); + + xStore = xVal; + xVal += eps; + ComputeObjectODE2LHS(temp, object, f1, j); + xVal = xStore; + + epsInv = (1. / eps) * factorODE2_t; + + for (Index k = 0; k < nLocalODE2; k++) + { + //use local jacobian: + localJacobian(k, i) += epsInv * (f0[k] - f1[k]); //-(f1-f0) == (f0-f1): negative sign, because object ODE2RHS is subtracted from global RHS-vector + } + } + } + + jacobianGM.AddSubmatrix(localJacobian, 1., ltgODE2, ltgODE2); + //pout << "jacN" << j << "=np.array(" << localJacobian << ")\n"; - xStore = xVal; - xVal += eps; - ComputeObjectODE2LHS(temp, object, f1, j); - xVal = xStore; + if (diffODE1 && (jacType & JacobianType::ODE2_ODE1)) + { + ArrayIndex& ltgODE1 = cSystemData.GetLocalToGlobalODE1()[j]; + Index nLocalODE1 = ltgODE1.NumberOfItems(); - epsInv = (1. / eps) * factorODE2_t; + localJacobian.SetNumberOfRowsAndColumns(nLocalODE2, nLocalODE1); //needs not to be initialized, because the matrix is fully computed and then added to jacobianGM - for (Index k = 0; k < nLocalODE2; k++) + Real xRefVal = 0; + for (Index i = 0; i < nLocalODE1; i++) //differentiate w.r.t. every ltgODE1 coordinate { - //use local jacobian: - localJacobian(k, i) += epsInv * (f0[k] - f1[k]); //-(f1-f0) == (f0-f1): negative sign, because object ODE2RHS is subtracted from global RHS-vector + Real& xVal = xODE1[ltgODE1[i]]; + if (numDiff.addReferenceCoordinatesToEpsilon) { xRefVal = xRefODE1[ltgODE1[i]]; } + + eps = relEps * (EXUstd::Maximum(minCoord, fabs(xVal + xRefVal))); + + xStore = xVal; + xVal += eps; + ComputeObjectODE2LHS(temp, object, f1, j); + xVal = xStore; + + epsInv = (1. / eps) * factorODE1; + + for (Index k = 0; k < nLocalODE2; k++) + { + //use local jacobian: + localJacobian(k, i) = epsInv * (f0[k] - f1[k]); //-(f1-f0) == (f0-f1): negative sign, because object ODE1RHS is subtracted from global RHS-vector + } } + //pout << "locJacODE1=" << localJacobian << "\n"; + jacobianGM.AddSubmatrix(localJacobian, 1., ltgODE2, ltgODE1, 0, nODE2); //fill into ODE2 rows, ODE1 columns } } - - jacobianGM.AddSubmatrix(localJacobian, 1., ltgODE2, ltgODE2); - //pout << "jacN" << j << "=np.array(" << localJacobian << ")\n"; } } }//isActive @@ -2253,9 +2290,6 @@ void CSystem::JacobianODE2RHS(TemporaryComputationDataArray& tempArray, const Nu { //++++++++++++++++++++++++++++++++++++++++++++++++ //for ODE2-ODE1: - f0.SetNumberOfItems(nODE2); - f1.SetNumberOfItems(nODE2); - ComputeSystemODE2RHS(tempArray, f0); //compute nominal value for jacobian Real xRefVal = 0; for (Index i = 0; i < nODE1; i++) //compute column i @@ -2321,9 +2355,11 @@ void CSystem::NumericalJacobianODE1RHS(TemporaryComputationDataArray& tempArray, Vector& xODE2_t = cSystemData.GetCData().currentState.ODE2Coords_t; //for diff w.r.t. velocities + bool diffODE1 = (factorODE1 != 0. && nODE1 != 0); bool diffODE2 = (factorODE2 != 0. && nODE2 != 0); bool diffODE2_t = (factorODE2_t != 0. && nODE2 != 0); - + //diffODE2 = false; + //diffODE2_t = false; if (!numDiff.doSystemWideDifferentiation) { @@ -2437,21 +2473,24 @@ void CSystem::NumericalJacobianODE1RHS(TemporaryComputationDataArray& tempArray, Real xRefVal = 0; //for ODE1-ODE1: - for (Index i = 0; i < nODE1; i++) //compute column i + if (diffODE1) { - if (numDiff.addReferenceCoordinatesToEpsilon) { xRefVal = xRefODE1[i]; } - eps = relEps * (EXUstd::Maximum(minCoord, fabs(xODE1[i] + xRefVal))); + for (Index i = 0; i < nODE1; i++) //compute column i + { + if (numDiff.addReferenceCoordinatesToEpsilon) { xRefVal = xRefODE1[i]; } + eps = relEps * (EXUstd::Maximum(minCoord, fabs(xODE1[i] + xRefVal))); - xStore = xODE1[i]; - xODE1[i] += eps; - ComputeSystemODE1RHS(temp, f1); - xODE1[i] = xStore; + xStore = xODE1[i]; + xODE1[i] += eps; + ComputeSystemODE1RHS(temp, f1); + xODE1[i] = xStore; - epsInv = (1. / eps) * factorODE1; + epsInv = (1. / eps) * factorODE1; - f1 -= f0; - f1 *= epsInv; - jacobianGM.AddColumnVector(nODE2 + i, f1, rowOffset);//add rowOffset argument to AddColumnVector(..) + f1 -= f0; + f1 *= epsInv; + jacobianGM.AddColumnVector(nODE2 + i, f1, rowOffset);//add rowOffset argument to AddColumnVector(..) + } } //++++++++++++++++++++++++++++++++++++++++++++++++ //for ODE1-ODE2: @@ -2489,7 +2528,7 @@ void CSystem::NumericalJacobianODE1RHS(TemporaryComputationDataArray& tempArray, f1 -= f0; f1 *= epsInv; - jacobianGM.AddColumnVector(i, f1); + jacobianGM.AddColumnVector(i, f1, rowOffset); } } } @@ -2561,15 +2600,8 @@ void CSystem::NumericalJacobianAE(TemporaryComputationData& temp, const Numerica for (Index j = 0; j < nAE; j++) { Real x = epsInv * (f1[j] - f0[j]); - //if (fillIntoSystemMatrix) - //{ jacobian(offsetAE + j, i) = factorAE_ODE2 * x; //add Cq ==> factor only used for Position constraints ... jacobian(i, offsetAE + j) = factorODE2_AE * x; //add CqT ==> new factor - //} - //else - //{ - // jacobian(j, i) = /*factorAE_ODE2 * */ x; //add Cq which is lateron used as transposed matrix; factor is usually 1 in this case - //} } } diff --git a/main/src/Main/MainSystem.cpp b/main/src/Main/MainSystem.cpp index ee11daa2..bed77365 100644 --- a/main/src/Main/MainSystem.cpp +++ b/main/src/Main/MainSystem.cpp @@ -52,6 +52,12 @@ void MainSystem::Reset() //mainSystemIndex = -1; //... check if this is correctly set? test several SC.Reset and similar operations ==> this MainSystem would not be usable any more, as it is not linked to SystemContainer } +void MainSystem::SystemHasChanged() +{ + GetCSystem()->SystemHasChanged(); + GetVisualizationSystem().SetSystemHasChanged(true); +} + MainSystemContainer& MainSystem::GetMainSystemContainer() { return *mainSystemContainerBacklink; @@ -181,7 +187,7 @@ void MainSystem::RaiseIfNotConsistent(const char* functionName) const //! this is the hook to the object factory, handling all kinds of objects, nodes, ... Index MainSystem::AddMainNode(py::dict d) { - GetCSystem()->SystemHasChanged(); + SystemHasChanged(); Index ind = GetMainObjectFactory().AddMainNode(*this, d); InteractiveModeActions(); return ind; @@ -281,7 +287,7 @@ void MainSystem::PyModifyNode(const py::object& itemIndex, py::dict nodeDict) Index nodeNumber = EPyUtils::GetNodeIndexSafely(itemIndex); if (nodeNumber < mainSystemData.GetMainNodes().NumberOfItems()) { - GetCSystem()->SystemHasChanged(); + SystemHasChanged(); mainSystemData.GetMainNodes().GetItem(nodeNumber)->SetWithDictionary(nodeDict); InteractiveModeActions(); } @@ -475,7 +481,7 @@ void MainSystem::PySetNodeParameter(const py::object& itemIndex, const STDstring //! this is the hook to the object factory, handling all kinds of objects, nodes, ... Index MainSystem::AddMainObject(py::dict d) { - GetCSystem()->SystemHasChanged(); + SystemHasChanged(); Index ind = GetMainObjectFactory().AddMainObject(*this, d); InteractiveModeActions(); @@ -561,7 +567,7 @@ void MainSystem::PyModifyObject(const py::object& itemIndex, py::dict d) Index itemNumber = EPyUtils::GetObjectIndexSafely(itemIndex); if (itemNumber < mainSystemData.GetMainObjects().NumberOfItems()) { - GetCSystem()->SystemHasChanged(); + SystemHasChanged(); mainSystemData.GetMainObjects().GetItem(itemNumber)->SetWithDictionary(d); InteractiveModeActions(); } @@ -731,7 +737,7 @@ void MainSystem::PySetObjectParameter(const py::object& itemIndex, const STDstri //! this is the hook to the object factory, handling all kinds of objects, nodes, ... Index MainSystem::AddMainMarker(py::dict d) { - GetCSystem()->SystemHasChanged(); + SystemHasChanged(); Index ind = GetMainObjectFactory().AddMainMarker(*this, d); InteractiveModeActions(); return ind; @@ -817,7 +823,7 @@ void MainSystem::PyModifyMarker(const py::object& itemIndex, py::dict d) Index itemNumber = EPyUtils::GetMarkerIndexSafely(itemIndex); if (itemNumber < mainSystemData.GetMainMarkers().NumberOfItems()) { - GetCSystem()->SystemHasChanged(); + SystemHasChanged(); mainSystemData.GetMainMarkers().GetItem(itemNumber)->SetWithDictionary(d); InteractiveModeActions(); } @@ -893,7 +899,7 @@ void MainSystem::PySetMarkerParameter(const py::object& itemIndex, const STDstri //! this is the hook to the object factory, handling all kinds of objects, nodes, ... Index MainSystem::AddMainLoad(py::dict d) { - GetCSystem()->SystemHasChanged(); + SystemHasChanged(); Index ind = GetMainObjectFactory().AddMainLoad(*this, d); InteractiveModeActions(); return ind; @@ -979,7 +985,7 @@ void MainSystem::PyModifyLoad(const py::object& itemIndex, py::dict d) Index itemNumber = EPyUtils::GetLoadIndexSafely(itemIndex); if (itemNumber < mainSystemData.GetMainLoads().NumberOfItems()) { - GetCSystem()->SystemHasChanged(); + SystemHasChanged(); mainSystemData.GetMainLoads().GetItem(itemNumber)->SetWithDictionary(d); InteractiveModeActions(); } @@ -1072,7 +1078,7 @@ void MainSystem::PySetLoadParameter(const py::object& itemIndex, const STDstring //! this is the hook to the object factory, handling all kinds of objects, nodes, ... Index MainSystem::AddMainSensor(py::dict d) { - GetCSystem()->SystemHasChanged(); + SystemHasChanged(); Index ind = GetMainObjectFactory().AddMainSensor(*this, d); InteractiveModeActions(); return ind; @@ -1158,7 +1164,7 @@ void MainSystem::PyModifySensor(const py::object& itemIndex, py::dict d) Index itemNumber = EPyUtils::GetSensorIndexSafely(itemIndex); if (itemNumber < mainSystemData.GetMainSensors().NumberOfItems()) { - GetCSystem()->SystemHasChanged(); + SystemHasChanged(); mainSystemData.GetMainSensors().GetItem(itemNumber)->SetWithDictionary(d); InteractiveModeActions(); } diff --git a/main/src/Main/MainSystem.h b/main/src/Main/MainSystem.h index c01dd2b9..9384ebd2 100644 --- a/main/src/Main/MainSystem.h +++ b/main/src/Main/MainSystem.h @@ -81,6 +81,10 @@ class MainSystem: public MainSystemBase //! backlink to MainSystemContainer; add const as it cannot be distinguished by pybind11 const MainSystemContainer& GetMainSystemContainerConst() const; + //! signal CSystem and VisualizationSystem that there are new items; system becomes invalid; + //! visualization system needs to update maxSceneSize and center + void SystemHasChanged(); + //DELETE: void Test() const { int i = 1; }; VisualizationSystem& GetVisualizationSystem() { return visualizationSystem; } @@ -158,7 +162,7 @@ class MainSystem: public MainSystemBase void Assemble() { cSystem->Assemble(*this); - //visualizationSystem.UpdateMaximumSceneCoordinates(); //uses reference coordinates to obtain the scene center and its size + //visualizationSystem.InitializeView(); //uses reference coordinates to obtain the scene center and its size } void AssembleCoordinates() { cSystem->AssembleCoordinates(*this); } void AssembleLTGLists() { cSystem->AssembleLTGLists(*this); } diff --git a/main/src/Main/MainSystemContainer.cpp b/main/src/Main/MainSystemContainer.cpp index 7c6eb054..8dd4f021 100644 --- a/main/src/Main/MainSystemContainer.cpp +++ b/main/src/Main/MainSystemContainer.cpp @@ -32,6 +32,7 @@ py::dict MainSystemContainer::RenderState2PyDict(const RenderState& state) { auto d = py::dict(); d["centerPoint"] = (const std::vector)state.centerPoint; + //d["rotationCenterPoint"] = (const std::vector)state.rotationCenterPoint; d["maxSceneSize"] = state.maxSceneSize; d["zoom"] = state.zoom; d["currentWindowSize"] = (const std::vector)state.currentWindowSize; @@ -41,7 +42,7 @@ py::dict MainSystemContainer::RenderState2PyDict(const RenderState& state) //Float9 A33({ A[0], A[1], A[2], A[4], A[5], A[6], A[8], A[9], A[10] }); //convert 4x4 into 3x3 matrix as position part of A is [0,0,0] //d["modelRotation"] = EXUmath::SlimVectorF9ToStdArray33F(A33); - Matrix3DF rotMatrix(3, 3, { A[0], A[1], A[2], A[4], A[5], A[6], A[8], A[9], A[10] }); + //Matrix3DF rotMatrix(3, 3, { A[0], A[1], A[2], A[4], A[5], A[6], A[8], A[9], A[10] }); //++++++++++++++++++++++++++++++++++++++++++++ //old, with numpy, gives problems in output ("array( ...", "dtype=float32") @@ -86,8 +87,11 @@ void MainSystemContainer::PySetRenderState(py::dict renderState) RenderState& state = visualizationSystems.renderState; //Vector3D centerPoint; - EPyUtils::SetSlimVectorTemplateSafely(renderState["centerPoint"], state.centerPoint); - + EPyUtils::SetSlimVectorTemplateSafely(renderState["centerPoint"], state.centerPoint); + //if (renderState.contains("rotationCenterPoint")) + //{ + // EPyUtils::SetSlimVectorTemplateSafely(renderState["rotationCenterPoint"], state.rotationCenterPoint); + //} state.maxSceneSize = py::cast(renderState["maxSceneSize"]); state.zoom = py::cast(renderState["zoom"]); diff --git a/main/src/Objects/CNodePoint3DSlope23.cpp b/main/src/Objects/CNodePoint3DSlope23.cpp index 5b9294de..ecd643a3 100644 --- a/main/src/Objects/CNodePoint3DSlope23.cpp +++ b/main/src/Objects/CNodePoint3DSlope23.cpp @@ -60,7 +60,7 @@ void fRotTest(const ConstSizeVectorBase& q, ConstSizeVectorBase q0; @@ -143,7 +143,7 @@ Matrix3D CNodePoint3DSlope23::GetRotationMatrix(ConfigurationType configuration) //! AUTO: return configuration dependent velocity of node; returns always a 3D Vector Vector3D CNodePoint3DSlope23::GetAngularVelocity(ConfigurationType configuration) const { - CHECKandTHROWstring("CNodePoint3DSlope23::GetAngularVelocity: untested!"); + //CHECKandTHROWstring("CNodePoint3DSlope23::GetAngularVelocity: untested!"); ConstSizeVector q; q.CopyFrom(GetCoordinateVector(ConfigurationType::Reference)); @@ -174,14 +174,14 @@ Vector3D CNodePoint3DSlope23::GetAngularVelocity(ConfigurationType configuration //! AUTO: return configuration dependent velocity of node; returns always a 3D Vector Vector3D CNodePoint3DSlope23::GetAngularVelocityLocal(ConfigurationType configuration) const { - CHECKandTHROWstring("CNodePoint3DSlope23::GetAngularVelocityLocal: untested!"); + //CHECKandTHROWstring("CNodePoint3DSlope23::GetAngularVelocityLocal: untested!"); return GetRotationMatrix(configuration).GetTransposed() * GetAngularVelocity(configuration); } void CNodePoint3DSlope23::GetRotationJacobian(Matrix& value) const { - CHECKandTHROWstring("CNodePoint3DSlope23::GetRotationJacobian: untested!"); + //CHECKandTHROWstring("CNodePoint3DSlope23::GetRotationJacobian: untested!"); ConstSizeVector q; diff --git a/main/src/Solver/CSolverImplicitSecondOrder.cpp b/main/src/Solver/CSolverImplicitSecondOrder.cpp index 41541b1c..a0c90ec6 100644 --- a/main/src/Solver/CSolverImplicitSecondOrder.cpp +++ b/main/src/Solver/CSolverImplicitSecondOrder.cpp @@ -302,9 +302,6 @@ void CSolverImplicitSecondOrderTimeInt::PreInitializeSolverSpecific(CSystem& com //! post-initialize for solver specific tasks; called at the end of InitializeSolver void CSolverImplicitSecondOrderTimeInt::PostInitializeSolverSpecific(CSystem& computationalSystem, const SimulationSettings& simulationSettings) { - //now implemented - //if (data.nODE1 != 0) { SysError("SolverImplicitSecondOrder cannot solve first order differential equations (ODE1) for now", file.solverFile); } - if (IsVerbose(2)) { if (simulationSettings.timeIntegration.generalizedAlpha.useNewmark) @@ -545,7 +542,7 @@ void CSolverImplicitSecondOrderTimeInt::ComputeNewtonJacobian(CSystem& computati //Tangent stiffness //K-Matrix; has no factor computationalSystem.JacobianODE2RHS(data.tempCompDataArray, newton.numericalDifferentiation, *(data.systemJacobian), - -1. * scalODE2, -gammaPrime * scalODE2, scalODE1); //RHS ==> -K + -scalODE2, -gammaPrime * scalODE2, -scalODE2); //RHS ==> -K; Residuals are scaled ==> scale also derivatives of ODE1 variables with scalODE2; time derivative additionally has factor gammaPrime STOPTIMER(timer.jacobianODE2); //+++++++++++++++++++++++++++++ @@ -554,7 +551,7 @@ void CSolverImplicitSecondOrderTimeInt::ComputeNewtonJacobian(CSystem& computati //Tangent stiffness: for ODE1 part, the jacobian is de facto computed for RHS while the ODE2 jacobian is put to LHS by multiplying with (-1) //ODE1 K-Matrix; has no factor computationalSystem.NumericalJacobianODE1RHS(data.tempCompDataArray, newton.numericalDifferentiation, - *(data.systemJacobian), scalODE1, gammaPrime * scalODE1, scalODE1); //RHS ==> K_ODE1; no scaling for now + *(data.systemJacobian), scalODE1, gammaPrime * scalODE1, scalODE1); //RHS ==> K_ODE1; no scaling for now; time derivative additionally has factor gammaPrime data.systemJacobian->AddDiagonalMatrix(-2./ it.currentStepSize, data.nODE1, data.nODE2, data.nODE2); //for qODE1_t part STOPTIMER(timer.jacobianODE1); diff --git a/main/src/Utilities/BasicFunctions.h b/main/src/Utilities/BasicFunctions.h index 8e3cc644..6386d2c4 100644 --- a/main/src/Utilities/BasicFunctions.h +++ b/main/src/Utilities/BasicFunctions.h @@ -293,6 +293,26 @@ namespace EXUstd { return value; } + inline float GetSafelyUFloat(float value, const char* parameterName) + { + if (value < 0) + { + PyError(STDstring("float parameter '") + parameterName + "' may not be negative, but received: " + EXUstd::ToString(value)); + return 0; + } + return value; + } + + inline float GetSafelyPFloat(float value, const char* parameterName) + { + if (value <= 0) + { + PyError(STDstring("float parameter '") + parameterName + "' must be positive (> 0), but received: " + EXUstd::ToString(value)); + return 1; //any positive value, should work in most cases as a backup + } + return value; + } + //a function to wait until flag is available, then reserve flag inline void WaitAndLockSemaphore(std::atomic_flag& flag) { diff --git a/main/src/pythonGenerator/exudynVersion.py b/main/src/pythonGenerator/exudynVersion.py index 055628c6..d45aea3f 100644 --- a/main/src/pythonGenerator/exudynVersion.py +++ b/main/src/pythonGenerator/exudynVersion.py @@ -1,4 +1,4 @@ # version info automatically generated by tracker; generated by Johannes Gerstmayr -# last modified = 2022-06-17 -exudynVersionString = "1.2.134.dev1" +# last modified = 2022-06-22 +exudynVersionString = "1.3.0" diff --git a/main/src/pythonGenerator/pythonAutoGenerateSystemStructures.py b/main/src/pythonGenerator/pythonAutoGenerateSystemStructures.py index 46c2084b..0f2d9cc7 100644 --- a/main/src/pythonGenerator/pythonAutoGenerateSystemStructures.py +++ b/main/src/pythonGenerator/pythonAutoGenerateSystemStructures.py @@ -12,7 +12,8 @@ sortStructures = True -typeCasts = {'Bool':'bool', 'Int':'Index', 'Real':'Real', 'UInt':'Index', 'PInt':'Index', 'UReal':'Real', 'PReal':'Real', +typeCasts = {'Bool':'bool', 'Int':'Index', 'Real':'Real', 'UInt':'Index', 'PInt':'Index', + 'UReal':'Real', 'PReal':'Real', 'UFloat':'float', 'PFloat':'float', 'Vector':'std::vector', 'Vector3D':'std::vector', #'Matrix':'Matrix', 'SymmetricMatrix':'Matrix', 'ArrayIndex':'std::vector', 'String':'std::string', 'FileName':'std::string', 'Float2': 'std::array', 'Float3': 'std::array', 'Float4': 'std::array', #e.g. for OpenGL vectors @@ -39,7 +40,10 @@ #return True for types, which get a range check and does a .def_property access in pybind and a set/get function def IsTypeWithRangeCheck(origType): - if origType.find('PInt') != -1 or origType.find('UInt') != -1 or origType.find('PReal') != -1 or origType.find('UReal') != -1: + if (origType.find('PInt') != -1 or origType.find('UInt') != -1 or + origType.find('PReal') != -1 or origType.find('UReal') != -1 or + origType.find('PFloat') != -1 or origType.find('UFloat') != -1 + ): return True return False @@ -690,7 +694,9 @@ def CleanPyDocStrings(s): fileLines = file.readlines() - typeConversion = {'Bool':'bool', 'Int':'Index', 'Real':'Real', 'UInt':'Index', 'PInt':'Index', 'UReal':'Real', 'PReal':'Real', 'Vector':'Vector', + typeConversion = {'Bool':'bool', 'Int':'Index', 'Real':'Real', 'UInt':'Index', 'PInt':'Index', + 'UReal':'Real', 'PReal':'Real', 'UFloat':'float', 'PFloat':'float', + 'Vector':'Vector', 'Matrix':'Matrix', 'SymmetricMatrix':'Vector', 'NumpyMatrix':'py::array_t', 'NumpyVector':'py::array_t', 'String':'std::string', 'FileName':'std::string', diff --git a/main/src/pythonGenerator/systemStructuresDefinition.py b/main/src/pythonGenerator/systemStructuresDefinition.py index f99cf474..25bf0705 100644 --- a/main/src/pythonGenerator/systemStructuresDefinition.py +++ b/main/src/pythonGenerator/systemStructuresDefinition.py @@ -348,7 +348,7 @@ class = VSettingsGeneral classDescription = "General settings for visualization." #V|F, pythonName, cplusplusName, size, type, defaultValue,args, cFlags, parameterDescription V, graphicsUpdateInterval, , , float, "0.1f", , P, "interval of graphics update during simulation in seconds; 0.1 = 10 frames per second; low numbers might slow down computation speed" -V, autoFitScene, , , bool, true, , P, "automatically fit scene within first second after StartRenderer()" +V, autoFitScene, , , bool, true, , P, "automatically fit scene within startup after StartRenderer()" V, textSize, , , float, "12.f", , P, "general text size (font size) in pixels if not overwritten; if useWindowsMonitorScaleFactor=True, the the textSize is multplied with the windows monitor scaling factor for larger texts on on high resolution monitors; for bitmap fonts, the maximum size of any font (standard/large/huge) is limited to 256 (which is not recommended, especially if you do not have a powerful graphics card)" V, textColor, , 4, Float4, "Float4({0.f,0.f,0.f,1.0f})", , P, "general text color (default); used for system texts in render window" V, rendererPrecision, , , PInt, "4", , P, "precision of general floating point numbers shown in render window: total number of digits used (max. 16)" @@ -581,15 +581,19 @@ class = VSettingsOpenGL classDescription = "OpenGL settings for 2D and 2D rendering. For further details, see the OpenGL functionality" #V|F, pythonName, cplusplusName, size, type, defaultValue,args, cFlags, parameterDescription V, initialCenterPoint, , 3, Float3, "Float3({0.f,0.f,0.f})",, P, "centerpoint of scene (3D) at renderer startup; overwritten if autoFitScene = True" -V, initialZoom, , , float, "1.f", , P, "initial zoom of scene; overwritten/ignored if autoFitScene = True" -V, initialMaxSceneSize, , , float, "1.f", , P, "initial maximum scene size (auto: diagonal of cube with maximum scene coordinates); used for 'zoom all' functionality and for visibility of objects; overwritten if autoFitScene = True" +V, initialZoom, , , UFloat, "1.f", , P, "initial zoom of scene; overwritten/ignored if autoFitScene = True" +V, initialMaxSceneSize, , , PFloat, "1.f", , P, "initial maximum scene size (auto: diagonal of cube with maximum scene coordinates); used for 'zoom all' functionality and for visibility of objects; overwritten if autoFitScene = True" V, initialModelRotation, , 3x3, StdArray33F, "EXUmath::Matrix3DFToStdArray33(Matrix3DF(3,3,{1.f,0.f,0.f, 0.f,1.f,0.f, 0.f,0.f,1.f}))", , P, "initial model rotation matrix for OpenGl; in python use e.g.: initialModelRotation=[[1,0,0],[0,1,0],[0,0,1]]" +#V, usePerspective, , , bool, false, , P, "if True, uses perspective drawing; use " +V, perspective, , , UFloat, "0.f", , P, "parameter prescribes amount of perspective (0=no perspective=orthographic projection; positive values increase perspective; feasible values are 0.001 (little perspective) ... 0.5 (large amount of perspective); mouse coordinates will not work with perspective" +V, shadow, , , UFloat, "0.f", , P, "parameter $\in [0 ... 1]$ prescribes amount of shadow; if this parameter is different from 1, rendering of triangles becomes approx.\ 5 times more expensive, so take care in case of complex scenes; for complex object, such as spheres with fine resolution or for particle systems, the present approach has limitations and leads to artifacts and unrealistic shadows" +V, shadowPolygonOffset, , , PFloat, "10.f", , P, "some special drawing parameter for shadows which should be handled with care; defines some offset needed by openGL to avoid aritfacts for shadows and depends on maxSceneSize" #V, initialModelRotation, , 9, Matrix3DF, "Matrix3DF(3,3,{1.f,0.f,0.f, 0.f,1.f,0.f, 0.f,0.f,1.f})", , P, "initial model rotation matrix for OpenGl; in Python use e.g.: initialModelRotation=[[1,0,0],[0,1,0],[0,0,1]]" # V, multiSampling, , 1, PInt, "1", , P, "multi sampling turned off (<=1) or turned on to given values (2, 4, 8 or 16); increases the graphics buffers and might crash due to graphics card memory limitations; only works if supported by hardware; if it does not work, try to change 3D graphics hardware settings!" -V, lineWidth, , 1, float, "1.f", , P, "width of lines used for representation of lines, circles, points, etc." +V, lineWidth, , 1, UFloat, "1.f", , P, "width of lines used for representation of lines, circles, points, etc." V, lineSmooth, , 1, bool, true, , P, "draw lines smooth" -V, textLineWidth, , 1, float, "1.f", , P, "width of lines used for representation of text" +V, textLineWidth, , 1, UFloat, "1.f", , P, "width of lines used for representation of text" V, textLineSmooth, , 1, bool, false, , P, "draw lines for representation of text smooth" V, facesTransparent, , 1, bool, false, , P, "True: show faces transparent independent of transparency (A)-value in color of objects; allow to show otherwise hidden node/marker/object numbers" V, showFaces, , 1, bool, true, , P, "show faces of triangles, etc.; using the options showFaces=false and showFaceEdges=true gives are wire frame representation" @@ -628,7 +632,7 @@ class = VSettingsOpenGL # debug: V, drawFaceNormals, , 1, bool, false, , P, "draws triangle normals, e.g. at center of triangles; used for debugging of faces" V, drawVertexNormals, , 1, bool, false, , P, "draws vertex normals; used for debugging" -V, drawNormalsLength, , 1, float, "0.1f", , P, "length of normals; used for debugging" +V, drawNormalsLength, , 1, PFloat, "0.1f", , P, "length of normals; used for debugging" # writeFile=VisualizationSettings.h @@ -667,6 +671,7 @@ class = VSettingsInteractive V, highlightColor, , 4, Float4, "Float4({0.8f,0.05f,0.05f,0.75f})",, P, "cRGB color for highlighted item; 4th value is alpha-transparency" V, highlightOtherColor, , 4, Float4, "Float4({0.5f,0.5f,0.5f,0.4f})", , P, "cRGB color for other items (which are not highlighted); 4th value is alpha-transparency" # +V, selectionHighlights, , , bool, true, , P, "True: mouse click highlights item (default: red)" V, selectionLeftMouse, , , bool, true, , P, "True: left mouse click on items and show basic information" V, selectionRightMouse, , , bool, true, , P, "True: right mouse click on items and show dictionary (read only!)" V, useJoystickInput, , , bool, true, , P, "True: read joystick input (use 6-axis joystick with lowest ID found when starting renderer window) and interpret as (x,y,z) position and (rotx, roty, rotz) rotation: as available from 3Dconnexion space mouse and maybe others as well; set to False, if external joystick makes problems ..."
line notes
1156renderState JGRAISED add description of render state from C++ into theDocDOCU2022-06-212022-08-20
1142 item functions checker
0972ContactFrictionCircleCable2DJGRAISED add / extend descriptionDOCU2022-03-092022-05-08
0971 Renderer
0968MarkerBodyCable2DShapeJGRAISED add offset from beam axis, to compute position, velocity and jacobians at contact surfaceEXTENSION2022-03-032022-05-02
0957 JointRevolute2D
0863RaspberryPi JGRAISED check compilation on Raspi, make adaptation of ngsolve includes to runEXTENSION2022-01-142022-03-15
0862 Vector alignment
0735parallel build JGRAISED check parallel build with MSbuild to reduce compilation timesCHECK2021-08-122021-10-11
0734 continuous integration
0677single threaded rendererJGRAISED correct crash with visualization dialog (MacOS)BUG2021-05-122021-07-11
0657 Delete item
1155center point JGRESOLVED add key "o" option to set center point to current center point of view; this allows to rotate around the current center point of the viewEXTENSION2022-06-212022-08-202022-06-21 18:16JG
1154Zoom all JGRESOLVED change procedures for zoom all and for computation of maximum scene coordinates; may affect appearance of your models; necessary for consistently computing perspective and shadow parametersCHANGE2022-06-212022-08-202022-06-21 08:38JG
1153noglfw JGRESOLVED check compilation without GLFWCHECK2022-06-202022-08-192022-06-20 10:58JG
1152Renderer JGRESOLVED add separate function to compute accurate scene size, store as 3D vector and as normEXTENSION2022-06-202022-08-192022-06-21 17:56JG
1151linux builds JGRESOLVED remove -g flag from linux builds, leading to 2.6MB instead of 38MB binaries; to enable debug information (e.g. to detect origin of some crashes, remove the -g0 flag in setup.py)CHANGE2022-06-192022-08-182022-06-19 18:34JG
1150OpenGL JGRESOLVED add shadows (simple)EXTENSION2022-06-182022-08-172022-06-20 01:49JGactivate with SC.VisualizationSettings().openGL.shadow, chosing a value between 0. and 1; good results obtained with 0.5
1149OpenGL JGRESOLVED add perspectiveEXTENSION2022-06-182022-08-172022-06-19 01:59JGadded openGL option perspective; EXPERIMENTAL!
1148jacobian ODE1 ODE2 JGRESOLVED fix jacobian computations for mixed ODE1-ODE2 components; check with HydraulicActuatorSimple (lower number of jacobians and iterations)FIX2022-06-182022-08-172022-06-18 23:38JG
1147 ODE1Coordinates_t
0972ContactFrictionCircleCable2DJGRESOLVED add / extend descriptionDOCU2022-03-092022-05-082022-06-22 07:44JG
0970 PlotSensor
0968MarkerBodyCable2DShapeJGRESOLVED add offset from beam axis, to compute position, velocity and jacobians at contact surfaceEXTENSION2022-03-032022-05-022022-06-22 07:46JGalready done earlier
0967 ANCFCable2D
0863RaspberryPi JGRESOLVED check compilation on Raspi, make adaptation of ngsolve includes to runEXTENSION2022-01-142022-03-152022-06-22 07:48JGalready done earlier
0857 GetInterpolatedSignalValue
0735parallel build JGRESOLVED check parallel build with MSbuild to reduce compilation timesCHECK2021-08-122021-10-112022-06-22 07:58JGalready done earlier
0733 ContactCoordinate
0677single threaded rendererJGRESOLVED correct crash with visualization dialog (MacOS)BUG2021-05-122021-07-112022-06-22 07:59JGnot resolved, but it is an issue of missing tkinter capabilities in MacOS
0676 single threaded renderer