From 80eb4f44caf843503bf8f7f5488005af18da1c80 Mon Sep 17 00:00:00 2001
From: ThorstenB <brehmt@gmail.com>
Date: Sun, 10 Oct 2010 14:05:42 +0200
Subject: [PATCH 01/14] Fixed "Position aircraft in air" in dialog. Setting a
 parking position (e.g. by default via command-line) caused "Position aircraft
 in air" to not work as expected. The "parkpos" property must be reset,
 otherwise heading/glidepath/azimuth do not have any effect when
 repositioning.

---
 gui/dialogs/location-in-air.xml | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/gui/dialogs/location-in-air.xml b/gui/dialogs/location-in-air.xml
index 63e104414..ce16f3fae 100644
--- a/gui/dialogs/location-in-air.xml
+++ b/gui/dialogs/location-in-air.xml
@@ -260,6 +260,8 @@
       <binding>
         <command>nasal</command>
         <script>
+          setprop("/sim/presets/parkpos", "");
+
           if (!mode.airport.getBoolValue()) {
             setprop("/sim/presets/airport-id", "");
             setprop("/sim/presets/runway", "");

From 757ec0e6bed0efe42162fe32a15f620b8fdd306b Mon Sep 17 00:00:00 2001
From: Anders Gidenstam <anders@gidenstam.org>
Date: Fri, 29 Oct 2010 20:39:40 +0200
Subject: [PATCH 02/14] preferences.xml: Manual revert of unintended changes
 from Alexis merge.

---
 preferences.xml | 14 ++++++--------
 1 file changed, 6 insertions(+), 8 deletions(-)

diff --git a/preferences.xml b/preferences.xml
index 940cbd3bc..334cfa354 100644
--- a/preferences.xml
+++ b/preferences.xml
@@ -54,7 +54,7 @@ Started September 2000 by David Megginson, david@megginson.com
    <terminal-ansi-colors type="bool">true</terminal-ansi-colors>
 		<season type="string">summer</season>
   </startup>
-  <rendering> <multithreading-mode>AutomaticSelection</multithreading-mode>
+  <rendering>
    <debug type="bool">false</debug>
    <realism>5</realism>
    <filtering>8</filtering>
@@ -281,12 +281,11 @@ Started September 2000 by David Megginson, david@megginson.com
   <systems>
    <path>Aircraft/Generic/generic-systems.xml</path>
    <autopilot>
+    <name>generic autopilot</name>
     <path>Aircraft/Generic/generic-autopilot.xml</path>
    </autopilot>
-   <!-- 
-   replace the hard coded helpers, which are gone now
-   -->
    <autopilot>
+    <name>autopilot helpers</name>
     <path>Aircraft/Generic/generic-autopilot-helper.xml</path>
    </autopilot>
    <property-rule>
@@ -593,7 +592,7 @@ Started September 2000 by David Megginson, david@megginson.com
   </airport>
 
   <atc>
-   <enabled type="bool">false</enabled>
+   <enabled type="bool">true</enabled>
   </atc>
 
   <ai-traffic>
@@ -602,7 +601,7 @@ Started September 2000 by David Megginson, david@megginson.com
   </ai-traffic>
 
   <traffic-manager>
-     <enabled type="bool">false</enabled>
+     <enabled type="bool">true</enabled>
      <heuristics type="bool">true</heuristics>
      <datafile type="string"></datafile>
      <instantaneous-action type="bool">false</instantaneous-action>
@@ -612,13 +611,12 @@ Started September 2000 by David Megginson, david@megginson.com
 
   <ai>
    <enabled type="bool">true</enabled>
-   <!-- <scenario>nimitz_demo</scenario> -->
+   <scenario>nimitz_demo</scenario>
    <!-- <scenario>balloon_demo</scenario> -->
    <!-- <scenario>aircraft_demo</scenario> -->
    <!-- <scenario>refueling_demo</scenario> -->
    <!-- <scenario>lead_aircraft</scenario> -->
    <!-- <scenario>vinson_demo</scenario> -->
-   <!-- <scenario>mp-carriers</scenario> -->
   </ai>
 
   <multiplay>

From 357335521b76c6c2b3eb9b01d3747db25ec5673a Mon Sep 17 00:00:00 2001
From: Anders Gidenstam <anders@gidenstam.org>
Date: Fri, 29 Oct 2010 20:40:18 +0200
Subject: [PATCH 03/14] joysticks.xml: Manual revert of unintended changes from
 Alexis merge.

---
 joysticks.xml | 1 -
 1 file changed, 1 deletion(-)

diff --git a/joysticks.xml b/joysticks.xml
index 3f800d4d3..0062f800e 100644
--- a/joysticks.xml
+++ b/joysticks.xml
@@ -20,5 +20,4 @@
 
 	<js n="0" include="Input/Joysticks/Local/joystick_0.xml"/>
 -->
-	<js-named include="Input/Joysticks/ThrustMaster/joystick-hotas.xml"/>
 </PropertyList>

From d373245285aab944aef3bdb1165b3751e5d28b92 Mon Sep 17 00:00:00 2001
From: Anders Gidenstam <anders@gidenstam.org>
Date: Mon, 17 May 2010 21:51:16 +0200
Subject: [PATCH 04/14] Nasal/controls.nas:  Added per-engine axis handlers.

---
 Nasal/controls.nas | 45 +++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 45 insertions(+)

diff --git a/Nasal/controls.nas b/Nasal/controls.nas
index 016a35402..2d3f41441 100644
--- a/Nasal/controls.nas
+++ b/Nasal/controls.nas
@@ -74,6 +74,51 @@ var mixtureAxis = axisHandler("/controls/engines/engine[", "]/mixture");
 var propellerAxis = axisHandler("/controls/engines/engine[", "]/propeller-pitch");
 var carbHeatAxis = axisHandler("/controls/anti-ice/engine[", "]/carb-heat");
 
+# Joystick axis handler for controlling subsets of similar properties.
+# Shouldn't be called from other contexts.
+# The argument engine can be either an index number or a list of
+# index numbers.
+# Use only when perEngineSelectedAxisHandler() below will not do.
+var perIndexAxisHandler = func(pre, post) {
+    return
+        func(index, invert = 0) {
+            var val = cmdarg().getNode("setting").getValue();
+            if(invert) val = -val;
+            if (typeof(index) == "scalar") {
+                setprop(pre ~ index ~ post, (1 - val) / 2);
+            } else {
+                foreach (var e; index) {
+                    setprop(pre ~ e ~ post, (1 - val) / 2);
+                }
+            }
+        };
+}
+
+# Joystick axis handler for controlling a selected axis on specific engines.
+# Shouldn't be called from other contexts.
+# The argument mode can be
+#   0  - throttle
+#   1  - mixture
+#   2  - propeller-pitch
+# The argument engine to the returned function can be either an
+# engine number or a list of engine numbers.
+# Usage example (controlling the mixture of engines 1 and 2):
+#   <script>
+#     controls.perEngineSelectedAxisHandler(1)([1,2]);
+#   </script>
+var _axisMode = {
+  0: perIndexAxisHandler("/controls/engines/engine[",
+                         "]/throttle"),
+  1: perIndexAxisHandler("/controls/engines/engine[",
+                         "]/mixture"),
+  2: perIndexAxisHandler("/controls/engines/engine[",
+                         "]/propeller-pitch")
+};
+var perEngineSelectedAxisHandler = func(mode) {
+    return _axisMode[mode];
+}
+
+
 ##
 # Wrapper around stepProps() which emulates the "old" flap behavior for
 # configurations that aren't using the new mechanism.

From 00cbdf38b79b231a7b17393f7494398843c802e9 Mon Sep 17 00:00:00 2001
From: Anders Gidenstam <anders@gidenstam.org>
Date: Sat, 30 Oct 2010 13:31:15 +0200
Subject: [PATCH 05/14] Input/Joysticks/Saitek/Aviator.xml: Improved the
 joystick configuration. - Prepared all bindings for per-OS number selection -
 Use the new per-engine axis handlers. - Added missing var keywords.

---
 Input/Joysticks/Saitek/Aviator.xml | 206 ++++++++++++++++++++++-------
 1 file changed, 159 insertions(+), 47 deletions(-)

diff --git a/Input/Joysticks/Saitek/Aviator.xml b/Input/Joysticks/Saitek/Aviator.xml
index 4d3febc29..1f0e6b23b 100644
--- a/Input/Joysticks/Saitek/Aviator.xml
+++ b/Input/Joysticks/Saitek/Aviator.xml
@@ -1,9 +1,8 @@
 <?xml version="1.0" ?>
 <?xml-stylesheet type="text/xsl" href="joystick.xsl"?>
-<!-- $Id$ -->
 <!-- Saitek AV8R/Aviator
 
-  Copyright (C) 2007 - 2009  Anders Gidenstam  (anders(at)gidenstam.org)
+  Copyright (C) 2007 - 2010  Anders Gidenstam  (anders(at)gidenstam.org)
   This file is released under the GPL license v2 or later.
 -->
 <PropertyList>
@@ -21,18 +20,27 @@
      # TM0: All selected; TM1: #1 & #2; TM2: #3 & #4
      var engine_axis_mode    = 0;
      # Valid only in TM1 and TM2.
-     #   EA0: throttle,  +mod: propeller
-     #   EA1: propeller, +mod: throttle
+     #   EA0: throttle
+     #   EA1: mixture
+     #   EA2: propeller
      var quick_view_active   = 0;
      var old_view            = view.point.save();
      var pressed             = [0,0,0,0,0,0,0,0,0,0,0,0];
+     # Map engines to throttles for TM1 (0, 1) and TM2 (2, 3)
      var engine = [0, 1, 2, 3];
 
-     # Do per-aircraft modifications     
-     if (getprop("/sim/model/path") ==
-         "Aircraft/Short_Empire/Models/Short_Empire-model.xml") {
+     # Do per-aircraft modifications
+     if (contains({"Aircraft/Short_Empire/Models/Short_Empire-model.xml" : 0,
+                   "Aircraft/Lockheed1049/Models/Lockheed1049_twa.xml"   : 0},
+                  getprop("/sim/model/path"))) {
+       # TM1: the outer engines, TM2: the inner engines
        engine = [0, 3, 1, 2];
      }
+     if (contains({"Aircraft/DO-X/Models/dox.xml"   : 0},
+                  getprop("/sim/model/path"))) {
+       engine = [[0, 1, 2, 3, 4, 5], [6, 7, 8, 9, 10, 11],
+                 [0, 1, 2, 3, 4, 5], [6, 7, 8, 9, 10, 11]];
+     }
 
 
      var goal_heading_offset =
@@ -46,7 +54,7 @@
      var kbdalt   = props.globals.getNode("/devices/status/keyboard/alt", 1);
 
      var quick_view = func {
-       dir = arg[0];
+       var dir = arg[0];
        if (dir == 0) {
          quick_view_active = 0;
          view.point.move(old_view, 0.1);
@@ -99,7 +107,13 @@
  </nasal>
 
  <!-- Analog axis 0. Aileron -->
- <axis n="0">
+ <axis>
+  <name>Stick left/right</name>
+  <number>
+   <unix>0</unix>
+   <mac>0</mac>
+   <windows>0</windows>
+  </number>
   <desc>aileron</desc>
   <binding>
    <command>property-scale</command>
@@ -111,7 +125,13 @@
  </axis>
 
  <!-- Analog axis 1. Elevator -->
- <axis n="1">
+ <axis>
+  <name>Stick forward/back</name>
+  <number>
+   <unix>1</unix>
+   <mac>1</mac>
+   <windows>1</windows>
+  </number>
   <desc>elevator</desc>
   <binding>
    <command>property-scale</command>
@@ -125,6 +145,7 @@
 
  <!-- Analog axis 3. Rudder -->
  <axis>
+  <name>Stick twist</name>
   <number>
    <unix>3</unix>
    <mac>2</mac>
@@ -139,10 +160,18 @@
    <factor type="double">1.0</factor>
    <squared type="bool">true</squared>
   </binding>
+  <!-- binding>
+   <command>nasal</command>
+   <script>
+    setprop("sim/current-view/goal-heading-offset-deg",
+            -90.0*cmdarg().getNode("setting").getValue());
+   </script>
+  </binding -->
  </axis>
 
  <!-- Analog axis 2. Throttle 1 -->
  <axis>
+  <name>Left throttle</name>
   <number>
    <unix>2</unix>
    <mac>3</mac>
@@ -155,43 +184,43 @@
      if (engine_select_mode == 0) {
        controls.throttleAxis();
      } else {
-       var val = cmdarg().getNode("setting").getValue();
-       var ctrl_pp =
-         "/controls/engines/engine[" ~
-         ((engine_select_mode == 1) ? engine[0] : engine[2]) ~ "]/" ~
-         (engine_axis_mode ? "propeller-pitch" : "throttle");
-       setprop(ctrl_pp, (1 - val)/2);
+       controls.perEngineSelectedAxisHandler(engine_axis_mode)
+           ((engine_select_mode == 1) ? engine[0] : engine[2]);
      }
    </script>
   </binding>
  </axis>
 
  <!-- Analog axis 4. Throttle 2 -->
- <axis n="4">
-  <desc>TM0: mixture, +mod: propeller pitch, TM1: throttle/propeller 2, TM2: throttle/propeller 4</desc>
+ <axis>
+  <name>Right throttle</name>
+  <number>
+   <unix>4</unix>
+   <mac>4</mac>
+   <windows>4</windows>
+  </number>
+  <desc>TM0: mixture, TM1: throttle/propeller 2, TM2: throttle/propeller 4</desc>
   <binding>
    <command>nasal</command>
    <script>
      if (engine_select_mode == 0) {
-       if (!modifier) {
-         controls.mixtureAxis();
-       } else {
-         controls.propellerAxis();
-       }
+       controls.mixtureAxis();
      } else {
-       var val = cmdarg().getNode("setting").getValue();
-       var ctrl_pp =
-         "/controls/engines/engine[" ~
-         ((engine_select_mode == 1) ? engine[1] : engine[3]) ~ "]/" ~
-         (engine_axis_mode ? "propeller-pitch" : "throttle");
-       setprop(ctrl_pp, (1 - val)/2);
+       controls.perEngineSelectedAxisHandler(engine_axis_mode)
+           ((engine_select_mode == 1) ? engine[1] : engine[3]);
      }
    </script>
   </binding>
  </axis>
 
  <!-- Axis 5. Hat left/right -->
- <axis n="5">
+ <axis>
+  <name>Hat left/right</name>
+  <number>
+   <unix>5</unix>
+   <mac>5</mac>
+   <windows>5</windows>
+  </number>
   <desc>quick view left/right, +mod: horizontal view pan</desc>
   <low>
    <repeatable type="bool">true</repeatable>
@@ -238,10 +267,12 @@
     <binding>
      <command>nasal</command>
      <script>
+      <![CDATA[
         trace("Axis 5, Hat: low released!");
         if (!modifier) {
           quick_view(0);
         }
+      ]]>
      </script>
     </binding>
    </mod-up>
@@ -249,7 +280,13 @@
  </axis>
 
  <!-- Axis 6. Hat up/down -->
- <axis n="6">
+ <axis>
+  <name>Hat up/down</name>
+  <number>
+   <unix>6</unix>
+   <mac>6</mac>
+   <windows>6</windows>
+  </number>
   <desc>view reset/quick view front, +mod: vertical view pan</desc>
   <low>
    <repeatable type="bool">true</repeatable>
@@ -270,9 +307,11 @@
     <binding>
      <command>nasal</command>
      <script>
+      <![CDATA[
         if (!modifier) {
           #quick_view(0);
         }
+      ]]>
      </script>
     </binding>
    </mod-up>
@@ -296,9 +335,11 @@
     <binding>
      <command>nasal</command>
      <script>
+      <![CDATA[
         if (!modifier) {
           quick_view(0);
         }
+      ]]>
      </script>
     </binding>
    </mod-up>
@@ -306,8 +347,13 @@
  </axis>
 
  <!-- Trigger Button -->
- <button n="0">
+ <button>
   <name>Trigger</name>
+  <number>
+   <unix>0</unix>
+   <mac>0</mac>
+   <windows>0</windows>
+  </number>
   <desc>function modifier (mod)</desc>
   <binding>
    <command>nasal</command>
@@ -327,8 +373,13 @@
  </button>
 
  <!-- Center Button -->
- <button n="2">
+ <button>
   <name>Center button</name>
+  <number>
+   <unix>2</unix>
+   <mac>2</mac>
+   <windows>2</windows>
+  </number>
   <desc>brakes, +mod: Toggle parking brake</desc>
   <binding>
    <command>nasal</command>
@@ -352,8 +403,13 @@
  </button>
 
  <!-- Left Button -->
- <button n="1">
+ <button>
   <name>Left button</name>
+  <number>
+   <unix>1</unix>
+   <mac>1</mac>
+   <windows>1</windows>
+  </number>
   <desc>left brake, +mod: PTT</desc>
   <binding>
    <command>nasal</command>
@@ -378,8 +434,13 @@
  </button>
 
  <!-- Right Button -->
- <button n="3">
+ <button>
   <name>Right button</name>
+  <number>
+   <unix>3</unix>
+   <mac>3</mac>
+   <windows>3</windows>
+  </number>
   <desc>right brake, +mod: trigger</desc>
   <binding>
    <command>nasal</command>
@@ -404,8 +465,13 @@
  </button>
 
  <!-- Button: T1 -->
- <button n="4">
+ <button>
   <name>T1</name>
+  <number>
+   <unix>4</unix>
+   <mac>4</mac>
+   <windows>4</windows>
+  </number>
   <desc>next view, +mod: zoom in +Shift: next weapon</desc>
   <repeatable type="bool">true</repeatable>
   <binding>
@@ -442,8 +508,13 @@
  </button>
 
  <!-- Button: T2 -->
- <button n="5">
+ <button>
   <name>T2</name>
+  <number>
+   <unix>5</unix>
+   <mac>5</mac>
+   <windows>5</windows>
+  </number>
   <desc>previous view, +mod: zoom out, +Shift: previous weapon</desc>
   <repeatable type="bool">true</repeatable>
   <binding>
@@ -480,8 +551,13 @@
  </button>
 
  <!-- Button: T3 -->
- <button n="6">
+ <button>
   <name>T3</name>
+  <number>
+   <unix>6</unix>
+   <mac>6</mac>
+   <windows>6</windows>
+  </number>
   <desc>trim nose down, +mod: disarm speed brakes</desc>
   <repeatable type="bool">true</repeatable>
   <binding>
@@ -498,8 +574,13 @@
  </button>
 
  <!-- Button: T4 -->
- <button n="7">
+ <button>
   <name>T4</name>
+  <number>
+   <unix>7</unix>
+   <mac>7</mac>
+   <windows>7</windows>
+  </number>
   <desc>trim nose up, +mod: deploy speed brakes</desc>
   <repeatable type="bool">true</repeatable>
   <binding>
@@ -516,8 +597,13 @@
  </button>
 
  <!-- Button: T5 -->
- <button n="8">
+ <button>
   <name>T5</name>
+  <number>
+   <unix>8</unix>
+   <mac>8</mac>
+   <windows>8</windows>
+  </number>
   <desc>retract flaps one step, +mod: gear up</desc>
   <binding>
    <command>nasal</command>
@@ -542,8 +628,13 @@
  </button>
 
  <!-- Button: T6 -->
- <button n="9">
+ <button>
   <name>T6</name>
+  <number>
+   <unix>9</unix>
+   <mac>9</mac>
+   <windows>9</windows>
+  </number>
   <desc>deploy flaps one step, +mod: gear down</desc>
   <binding>
    <command>nasal</command>
@@ -568,8 +659,13 @@
  </button>
 
  <!-- Button: T7 -->
- <button n="10">
+ <button>
   <name>T7</name>
+  <number>
+   <unix>10</unix>
+   <mac>10</mac>
+   <windows>10</windows>
+  </number>
   <desc>Increase magnetos, +mod: Engine throttle/propeller axis swap</desc>
   <binding>
    <command>nasal</command>
@@ -578,14 +674,19 @@
       if (!modifier) {
         controls.stepMagnetos(1);
       } else {
-        engine_axis_mode = !engine_axis_mode;
+        engine_axis_mode = 2*!engine_axis_mode;
       }
    </script>
   </binding>
  </button>
 
  <!-- Button: T8 -->
- <button n="11">
+ <button>
+  <number>
+   <unix>11</unix>
+   <mac>11</mac>
+   <windows>11</windows>
+  </number>
   <name>T8</name>
   <desc>Decrease magnetos, +mod: Engine throttle/propeller axis swap</desc>
   <binding>
@@ -595,15 +696,20 @@
       if (!modifier) {
         controls.stepMagnetos(-1);
       } else {
-        engine_axis_mode = !engine_axis_mode;
+        engine_axis_mode = 2*!engine_axis_mode;
       }
    </script>
   </binding>
  </button>
 
  <!-- Button: 3-way Mode switch -->
- <button n="12">
+ <button>
   <name>Mode 1</name>
+  <number>
+   <unix>12</unix>
+   <mac>12</mac>
+   <windows>12</windows>
+  </number>
   <desc>Engine 0/1 throttle mode</desc>
   <binding>
    <command>nasal</command>
@@ -622,7 +728,13 @@
    </binding>
   </mod-up>
  </button>
- <button n="13">
+ <button>
+  <name>Mode 2</name>
+  <number>
+   <unix>13</unix>
+   <mac>13</mac>
+   <windows>13</windows>
+  </number>
   <name>Mode 2</name>
   <desc>Engine 2/3 throttle mode</desc>
   <binding>

From 81e0e06a31d905f23b15610a2ce925bcfeabea52 Mon Sep 17 00:00:00 2001
From: Anders Gidenstam <anders@gidenstam.org>
Date: Sat, 30 Oct 2010 16:42:07 +0200
Subject: [PATCH 06/14] Input/Joysticks/Saitek/Pro-Flight-Quadrant.xml: -
 Improved multi-mode axis control with the new per-engine axis handlers. -
 Prepared all bindings for per-OS number selection

---
 .../Joysticks/Saitek/Pro-Flight-Quadrant.xml  | 237 ++++++++++++++++--
 1 file changed, 221 insertions(+), 16 deletions(-)

diff --git a/Input/Joysticks/Saitek/Pro-Flight-Quadrant.xml b/Input/Joysticks/Saitek/Pro-Flight-Quadrant.xml
index a0ba91fee..bb9ac4ccd 100644
--- a/Input/Joysticks/Saitek/Pro-Flight-Quadrant.xml
+++ b/Input/Joysticks/Saitek/Pro-Flight-Quadrant.xml
@@ -1,35 +1,122 @@
 <?xml version="1.0"?>
 <!-- Saitek Pro Flight Quadrant
 
-  Copyright (C) 2008  Ronald Jensen  (wino(at)jentronics.com)
-  This file is released under the GPL license.
+  Copyright (C) 2008         Ronald Jensen  (wino(at)jentronics.com)
+  Copyright (C) 2009 - 2010  Anders Gidenstam  (anders(at)gidenstam.org)
+  This file is released under the GPL license version 2.
 -->
 <PropertyList>
  <name>Saitek Saitek Pro Flight Quadrant</name>
  <name>Saitek Pro Flight Quadrant</name>
  <name>Saitek Pro Flight Throttle Quadrant</name>
- <axis n="0">
-  <desc>Throttle</desc>
+
+ <nasal>
+  <script>
+   <![CDATA[
+     var self = cmdarg().getParent();
+     var data = self.getNode("data");
+     var engine_select_mode  = 0;
+     # TM0: All selected; TM1: #1-#3; TM2: #3-#6
+     var engine_axis_mode    = 0;
+     # Valid only in TM1 and TM2.
+     #   EA0: throttle
+     #   EA1: mixure
+     #   EA2: propeller
+     var pressed             = [0,0,0,0,0,0];
+     var engine              = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
+
+     # Do per-aircraft modifications
+     if (contains({"Aircraft/Short_Empire/Models/Short_Empire-model.xml" : 0,
+                   "Aircraft/Lockheed1049/Models/Lockheed1049_twa.xml"   : 0},
+                  getprop("/sim/model/path"))) {
+       # Map port outer to axis 0, starboard outer to axis 2 and
+       # the inner engines to axis 1.
+       engine = [0, [1, 2], 3];
+     }
+     if (contains({"Aircraft/DO-X/Models/dox.xml"   : 0},
+                  getprop("/sim/model/path"))) {
+       engine = [[0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11]];
+     }
+     if (contains({"Aircraft/Nordstern/Models/Nordstern.xml"   : 0},
+                  getprop("/sim/model/path"))) {
+       engine = [0, 1, [2, 3]];
+     }
+
+     var kbdctrl  = props.globals.getNode("/devices/status/keyboard/ctrl", 1);
+     var kbdalt   = props.globals.getNode("/devices/status/keyboard/alt", 1);
+
+     var axis_handler = func(axis) {
+       if (engine_select_mode == 0) {
+         if (axis == 0) {
+           controls.throttleAxis();
+         } elsif (axis == 1) {
+           controls.propellerAxis();
+         } elsif (axis == 2) {
+           controls.mixtureAxis();
+         }
+       } else {
+         controls.perEngineSelectedAxisHandler(engine_axis_mode)
+             (engine[axis + 3*(engine_select_mode - 1)]);
+       }
+     }
+
+     var trace = func(str) {
+       # Uncomment the line below to trace button presses.
+       #print("Pro-Flight-Quadrant.xml: " ~ str);
+     }
+   ]]>
+  </script>
+ </nasal>
+
+ <!-- Levers left to right. -->
+ <axis>
+  <name>Left lever</name>
+  <number>
+   <unix>0</unix>
+   <mac>0</mac>
+   <windows>0</windows>
+  </number>
+  <desc>TM0: throttle, TM1: throttle/propeller 1, TM2: throttle/propeller 4</desc>
   <binding>
    <command>nasal</command>
-   <script>controls.throttleAxis()</script>
+   <script>axis_handler(0)</script>
   </binding>
  </axis>
- <axis n="1">
-  <desc>Prop Pitch</desc>
+ <axis>
+  <name>Middle lever</name>
+  <number>
+   <unix>1</unix>
+   <mac>1</mac>
+   <windows>1</windows>
+  </number>
+  <desc>TM0: propeller, TM1: throttle/propeller 2, TM2: throttle/propeller 5</desc>
   <binding>
    <command>nasal</command>
-   <script>controls.propellerAxis()</script>
+   <script>axis_handler(1)</script>
   </binding>
  </axis>
- <axis n="2">
-  <desc>Mixture </desc>
+ <axis>
+  <name>Right lever</name>
+  <number>
+   <unix>2</unix>
+   <mac>2</mac>
+   <windows>2</windows>
+  </number>
+  <desc>TM0: mixture, TM1: throttle/propeller 3, TM2: throttle/propeller 6</desc>
   <binding>
    <command>nasal</command>
-   <script>controls.mixtureAxis()</script>
+   <script>axis_handler(2)</script>
   </binding>
  </axis>
- <button n="0">
+
+ <!-- 2-way rocker switches. Left to right. -->
+ <button>
+  <name>Left button up</name>
+  <number>
+   <unix>0</unix>
+   <mac>0</mac>
+   <windows>0</windows>
+  </number>
   <desc>Flaps up</desc>
   <repeatable>false</repeatable>
   <binding>
@@ -42,14 +129,40 @@
     <script>controls.flapsDown(0)</script>
    </binding>
   </mod-up>
+  <mod-shift>
+   <binding>
+    <command>nasal</command>
+    <script>
+      trace("Button 0 + shift pressed!");
+      gui.popupTip("Saitek Quadrant: Throttle Mode 1");
+      engine_select_mode = 1;
+    </script>
+   </binding>
+  </mod-shift>
  </button>
  <button n="1">
+  <name>Left button down</name>
+  <number>
+   <unix>1</unix>
+   <mac>1</mac>
+   <windows>1</windows>
+  </number>
   <desc>Flaps down</desc>
   <repeatable>false</repeatable>
   <binding>
    <command>nasal</command>
    <script>controls.flapsDown(1)</script>
   </binding>
+  <mod-shift>
+   <binding>
+    <command>nasal</command>
+    <script>
+      trace("Button 1 + shift pressed!");
+      gui.popupTip("Saitek Quadrant: Throttle Mode 0");
+      engine_select_mode = 0;
+    </script>
+   </binding>
+  </mod-shift>
   <mod-up>
    <binding>
     <command>nasal</command>
@@ -57,23 +170,64 @@
    </binding>
   </mod-up>
  </button>
- <button n="2">
+
+ <button>
+  <name>Middle button up</name>
+  <number>
+   <unix>2</unix>
+   <mac>2</mac>
+   <windows>2</windows>
+  </number>
   <desc>Elevator trim up</desc>
   <repeatable>true</repeatable>
   <binding>
    <command>nasal</command>
    <script>controls.elevatorTrim(-0.75)</script>
   </binding>
+  <mod-shift>
+   <binding>
+    <command>nasal</command>
+    <script>
+      trace("Button 2 + shift pressed!");
+      if (engine_select_mode) gui.popupTip("Saitek Quadrant: Throttle control");
+      engine_axis_mode = 0;
+    </script>
+   </binding>
+  </mod-shift>
  </button>
- <button n="3">
+ <button>
+  <name>Middle button down</name>
+  <number>
+   <unix>3</unix>
+   <mac>3</mac>
+   <windows>3</windows>
+  </number>
   <desc>Elevator trim down</desc>
   <repeatable>true</repeatable>
   <binding>
    <command>nasal</command>
    <script>controls.elevatorTrim(0.75)</script>
   </binding>
+  <mod-shift>
+   <binding>
+    <command>nasal</command>
+    <script>
+      trace("Button 3 + shift pressed!");
+      if (engine_select_mode)
+        gui.popupTip("Saitek Quadrant: Propeller control");
+      engine_axis_mode = 2;
+    </script>
+   </binding>
+  </mod-shift>
  </button>
- <button n="4">
+
+ <button>
+  <name>Right button up</name>
+  <number>
+   <unix>4</unix>
+   <mac>4</mac>
+   <windows>4</windows>
+  </number>
   <desc>Gear up</desc>
   <repeatable>false</repeatable>
   <binding>
@@ -81,7 +235,13 @@
    <script>controls.gearDown(-1)</script>
   </binding>
  </button>
- <button n="5">
+ <button>
+  <name>Right button down</name>
+  <number>
+   <unix>5</unix>
+   <mac>5</mac>
+   <windows>5</windows>
+  </number>
   <desc>Gear down</desc>
   <repeatable>false</repeatable>
   <binding>
@@ -89,4 +249,49 @@
    <script>controls.gearDown(1)</script>
   </binding>
  </button>
+
+ <!-- Axis reverse area switches. -->
+ <button>
+  <name>Left lever reverse</name>
+  <number>
+   <unix>6</unix>
+   <mac>6</mac>
+   <windows>6</windows>
+  </number>
+  <desc></desc>
+  <repeatable>false</repeatable>
+  <binding>
+   <command>nasal</command>
+   <script></script>
+  </binding>
+ </button>
+ <button>
+  <name>Middle lever reverse</name>
+  <number>
+   <unix>7</unix>
+   <mac>7</mac>
+   <windows>7</windows>
+  </number>
+  <desc></desc>
+  <repeatable>false</repeatable>
+  <binding>
+   <command>nasal</command>
+   <script></script>
+  </binding>
+ </button>
+ <button>
+  <name>Right lever reverse</name>
+  <number>
+   <unix>8</unix>
+   <mac>8</mac>
+   <windows>8</windows>
+  </number>
+  <desc></desc>
+  <repeatable>false</repeatable>
+  <binding>
+   <command>nasal</command>
+   <script></script>
+  </binding>
+ </button>
+
 </PropertyList>

From 1ff1469fc11f70dd18bb02cd3dacfac9854d5942 Mon Sep 17 00:00:00 2001
From: Anders Gidenstam <anders@gidenstam.org>
Date: Sun, 31 Oct 2010 12:29:02 +0100
Subject: [PATCH 07/14] Updated WalkView: - Added a default key binding file. -
 Improved the documentation.

---
 Aircraft/Generic/WalkView/walk-view-keys.xml | 198 +++++++++++++++++++
 Aircraft/Generic/WalkView/walkview.nas       |   7 +-
 2 files changed, 203 insertions(+), 2 deletions(-)
 create mode 100644 Aircraft/Generic/WalkView/walk-view-keys.xml

diff --git a/Aircraft/Generic/WalkView/walk-view-keys.xml b/Aircraft/Generic/WalkView/walk-view-keys.xml
new file mode 100644
index 000000000..5471e9026
--- /dev/null
+++ b/Aircraft/Generic/WalkView/walk-view-keys.xml
@@ -0,0 +1,198 @@
+<?xml version="1.0"  encoding="UTF-8"?>
+<!--
+  Walk view module for FlightGear.
+
+  Copyright (C) 2010  Anders Gidenstam  (anders(at)gidenstam.org)
+  This file is licensed under the GPL license v2 or later.
+-->
+<PropertyList>
+
+ <!--
+   This module can be used to add suitable key bindings for walk views
+   to any aircraft.
+
+   Usage example:
+
+    Include it in the keybord section of the aircraft's -set file.
+
+      <keyboard include="../Generic/WalkView/walk-view-keys.xml">
+
+
+   Note: If the aircraft use other custom key bindings for the same keys
+         the walk view bindings should be merged into the aircraft specific
+         bindings. The walk view API commands return false if not currently
+         in a walk view so the other alternative action can be put in an
+         if statement. E.g.
+             if (!walkview.forward(4.0)) {
+                 # Perform the non-walk view action of this key.
+             }
+ -->
+
+ <!-- Keyboard commands -->
+ <key n="87">
+  <name>W</name>
+  <desc>Walk view: Run forward.</desc>
+  <binding>
+   <command>nasal</command>
+   <script>
+     if (!walkview.forward(4.0)) {
+     }
+   </script>
+  </binding>
+  <mod-up>
+   <binding>
+    <command>nasal</command>
+    <script>
+      walkview.forward(0);
+    </script>
+   </binding>
+  </mod-up>
+ </key>
+
+ <key n="119">
+  <name>w</name>
+  <desc>Walk view: Walk forward.</desc>
+  <binding>
+   <command>nasal</command>
+   <script>
+     if (!walkview.forward(1.0)) {
+     }
+   </script>
+  </binding>
+  <mod-up>
+   <binding>
+    <command>nasal</command>
+    <script>
+      walkview.forward(0);
+    </script>
+   </binding>
+  </mod-up>
+ </key>
+
+ <key n="100">
+  <name>d</name>
+  <desc>Walk view: Side step right.</desc>
+  <repeatable type="bool">true</repeatable>
+  <binding>
+   <command>nasal</command>
+   <script>
+     if (!walkview.side_step(0.5)) {
+     }
+   </script>
+  </binding>
+  <mod-up>
+   <binding>
+    <command>nasal</command>
+    <script>
+      walkview.side_step(0);
+    </script>
+   </binding>
+  </mod-up>
+ </key>
+
+ <key n="68">
+  <name>D</name>
+  <desc>Walk view: Fast side step right.</desc>
+  <repeatable type="bool">true</repeatable>
+  <binding>
+   <command>nasal</command>
+   <script>
+     if (!walkview.side_step(1.0)) {
+     }
+   </script>
+  </binding>
+  <mod-up>
+   <binding>
+    <command>nasal</command>
+    <script>
+      walkview.side_step(0);
+    </script>
+   </binding>
+  </mod-up>
+ </key>
+
+ <key n="97">
+  <name>a</name>
+  <desc>Walk view: Side step left.</desc>
+  <repeatable type="bool">true</repeatable>
+  <binding>
+   <command>nasal</command>
+   <script>
+     if (!walkview.side_step(-0.5)) {
+     }
+   </script>
+  </binding>
+  <mod-up>
+   <binding>
+    <command>nasal</command>
+    <script>
+      walkview.side_step(0);
+    </script>
+   </binding>
+  </mod-up>
+ </key>
+ <key n="65">
+  <name>A</name>
+  <desc>Walk view: Fast side step left.</desc>
+  <repeatable type="bool">true</repeatable>
+  <binding>
+   <command>nasal</command>
+   <script>
+     if (!walkview.side_step(-1.0)) {
+     }
+   </script>
+  </binding>
+  <mod-up>
+   <binding>
+    <command>nasal</command>
+    <script>
+      walkview.side_step(0);
+    </script>
+   </binding>
+  </mod-up>
+ </key>
+
+ <key n="115">
+  <name>s</name>
+  <desc>Walk view: Walk backwards.</desc>
+  <binding>
+   <command>nasal</command>
+   <script>
+     if (!walkview.forward(-1.0)) {
+         controls.startEngine(1);
+     }
+   </script>
+  </binding>
+  <mod-up>
+   <binding>
+    <command>nasal</command>
+    <script>
+      walkview.forward(0);
+      controls.startEngine(0);
+    </script>
+   </binding>
+  </mod-up>
+ </key>
+ <!-- Remove this if you for some reason have 2d panels and want the default
+      Swap panels function on 'S'.
+ -->
+ <!-- key n="83">
+  <name>S</name>
+  <desc>Walk view: Walk backwards.</desc>
+  <binding>
+   <command>nasal</command>
+   <script>
+     walkview.forward(-1.0);
+   </script>
+  </binding>
+  <mod-up>
+   <binding>
+    <command>nasal</command>
+    <script>
+      walkview.forward(0);
+    </script>
+   </binding>
+  </mod-up>
+ </key -->
+
+</PropertyList>
diff --git a/Aircraft/Generic/WalkView/walkview.nas b/Aircraft/Generic/WalkView/walkview.nas
index cecd081c6..105015900 100644
--- a/Aircraft/Generic/WalkView/walkview.nas
+++ b/Aircraft/Generic/WalkView/walkview.nas
@@ -100,7 +100,8 @@ var active_walker = func {
 # NOTES:
 #       Currently there can only be one view manager per view so the
 #       walk view should not have any other view manager.
-#
+#       See Aircraft/Nordstern, Aircraft/Short_Empire or Aircraft/ZLT-NT
+#       for working examples of walk views.
 var walker = {
     new : func (view_name, constraints = nil, managers = nil) {
         var obj = { parents : [walker] };
@@ -124,7 +125,7 @@ var walker = {
         view.manager.register(view_name, obj);
         walkers[obj.view.getPath()] = obj;
 
-        debug.dump(obj);
+        #debug.dump(obj);
         return obj;
     },
     active : func {
@@ -216,6 +217,8 @@ var walker = {
 
 ###############################################################################
 # Constraint classes. Determines where the view can walk.
+#
+
 
 # The union of two constraints.
 #   c1, c2 - the constraints : constraint

From e00d8d30ea3c36875c7fd70b36ca6e91beb106dc Mon Sep 17 00:00:00 2001
From: Detlef Faber <don@Pasyphae.(none)>
Date: Sun, 31 Oct 2010 16:36:20 +0100
Subject: [PATCH 08/14] generic logos: add Logo of the day >:)

---
 Aircraft/Generic/Logos/pumpkin.png | Bin 0 -> 57809 bytes
 Aircraft/Generic/Logos/pumpkin.xml |  12 ++++++++++++
 2 files changed, 12 insertions(+)
 create mode 100644 Aircraft/Generic/Logos/pumpkin.png
 create mode 100644 Aircraft/Generic/Logos/pumpkin.xml

diff --git a/Aircraft/Generic/Logos/pumpkin.png b/Aircraft/Generic/Logos/pumpkin.png
new file mode 100644
index 0000000000000000000000000000000000000000..98edaa7b7ec2a54d7b01add92a9e9c8d51b90013
GIT binary patch
literal 57809
zcmeEN^;cA1w7<j9Al)q}Af3`F4bn)L2#6>lAd)kHNOvP0(p{2+h=A14h|&l{=THN~
zJib4?U*BKw)?IhqbIw}#p1bzmXXj@}>FcULAY>o}0N{b9hKeBoVBHTv06y;h<7eWy
z^M5lhLv>}KcARPFeuDc_TU`af{C5>}m!;gV5O`>qd)>c2|KAN#=Kk{Wei6@G^SLVC
zA3_#Fj;GgQ!@~f;2571%8Grn<-|d%EV&WrzmlLp3TG?6V9Bz;MIfxb;7w2(N5x1Hc
zLq@r<aQ3%H1MU+lus0NE;wZ1E1+j0A;ta(DkF(1k@wk;M5%Xa2gkm+u3;h^H8k!uv
zKe|R6934pe+|(TIzT3}hN1Rpc<khxSE?4@)rQm+!xYz^~k2Dh5ltTZ1@P89wX2=PE
zWvNWIXjQCOjd3x!202m;N^p7xIxwlSVjWWe(t+Vhp?nqslUm*U@kK{q{i^dv)RTgb
zJ#UL2#k=biZGTCcgJ7>tuI&*~yjoLMLGo%+S^w2BVsU-ySG~}zNrgVD6bH1dpZ<A$
z{JPj)o$-P1_@V~IoEF;iN-GST-XcCW6;&k`@9gdJ=y_J8fK@4?YFaYbu6eS)c#Jba
zoZ&<D!oMW7uoUhNoL=EIUh5JLeAe#|A3G$?)x|d7foo>y$c05I$wNAoYxray^ggfJ
z?`nIR@+!kHn%UpeS4b3G(8b;Jg6?eSm>Q2jM4u(M|Kv-vA?@o@q2k*#c1P8d(!R_X
z)4!VP77(Gh4Fq9}uRkg9wx(1!4?_XYC$RMd0Hs~_*G2b4xz(!i0jEu4_x6bL51(#z
z@#$Hsmh}k4ZRD$2xF;ek9Pqh$qxCWdZVj(m!?1T!Qc}248dRzXG9e-rZ8o{39a-Go
z4AZ0~e{0d_D^L*PV0=lWIM-1IWJTL^h!fbe#v!>)zWgjjvd8PubByGaG>&NG&=M*&
zDv~?C$cSo^mG8t+P-Ej8rTXN2`tI#LNghu5JLIlwhbgMO?mtOsF@#X}oU<u)6s7s!
zXk_2rztv=-hj4+icyegUldzdb|B5QwE_PuO1!eH<EJoQ(Y9vb-hY)Txg0k`B9<?*{
z+OJuX5-XAcNpnY9Mcbt+Gv}z})2bw%Os5f@13nqn-ZmOfCAp%cueL@iIw~{cjlOiQ
zwmp&45O0RT{Mh2xa=uC<i}P<12n%%6yZ;Em_^m)nB=&wP41=r*&C7%dJ73h}5;Hc_
zRL$kxgasMYC)<*_{kc14WZTXHMWI1Nf!S&$Gq$Cgr!qhCWWa1rmUK;mywSxVod|6<
zAt0hMCwbt6*(JFvl}BBtw@Y`X@U3e9m{>P%Zy4=W$A(LC;G`79Y3ot+9Vv86*+aWz
zCPIxNPEg&V&e<s&TrIhD)YE?WcSB6`E*4rAF~T<Vkp7&~T0Z%!ZA`O#pax7(Sgg#z
z+q2|6^lV3~qU~$i8J?nrE42$c8%KVu)P-q9?$a6Vf&wsVr>JV-ZZ-CE6a-+KyKF-4
z8R{P0EMGaW;{}_Wk$C~a>cLypB(h_YuT0bGcTG0bBA*nRRH;t$H{#HYR!f$R;MrtV
zL^p^6qdK#C#&#i*k&G@VPk<|emwo8rqd_hMWQtSqi3r~9WD`hsB`mi`7^=o(%iw~3
z0K`4Cy%`mYw;h8TDdYB9RFsjNzb+!W7Y4WH$t#_-(=XF%Qlgv?JOGP3s%V<MMuA2k
z;-UP-F*(yC+eed9np8o`ygp1|J6HF{UK=4_z&mn#Mq_V-Nt*SuNflL0W6?*5%jgK8
zGj@U!q|;1>u$Q8k#YOKA3TgN~%Z?|AUe?%tZ3)&bIoEM~kE60BEj&DOD(Yx%Gv52^
zyhn|_RQGYIz?=%gVvAYT{LpUo&?6jMDiho;8NE#R<UC^A33VZQHb(5tgHE_VhfhjB
zYW(z-jw|9TyWg1;ipkp(z9%%bOHfJdpDg-0i{`UHCTr&N&2o(jXYLw^=oCta{iX4)
zLWcWGr>Ap=0&&-SQ<-%@J@8Vs*?`w4id{M-)&G?Z)lusxj8Px~07yPuQ`XEhU@w|k
z1mHkBcXL|U{k=q=+jinxBv!Z7RCC|;iNHY66B3z<tVa^_^mI;JQ<);Xgyv?*5{<nW
zj?%oE=H<%8LV=g`>s_afUDATlL|g5x5`ZMRVgYs-Q*~n)^zwBLY;exTH4_%<b|-Tg
z&*<KN;#T9+OoluXYZBVB^fSL>fx6y0aMUO)Xe5`NLK%v8bP>Lp*WI&_1dxX(g(|GH
zB{-8}zrP;w6KIjijSxK^lOlPCB}v))0Qj>eLIAMgd!RImPlCir`!1-*H_t$c4KxFp
z2~=}Ec%!BuNxrxZOZJ*UyeIXJYE{#IK@_S9>_su`HP+A9W7px-CnH1s%qg@#A)AiZ
z{l{sz1R^<)Ja5|{MYF&%2c-us8N6)G)7@LFBbMh>++9j`Tq}oQ@G|38uzB9f&}hD)
z1x(EFO%sJEK2L6*#CnDcu`7Q|)4n%uFkR2=J&D7QA~QCksE*f@)Hd9en(4qo8_iMp
z=~=PDoz#=*e&wog_}K)BZO?~u`otC*ttZAoun6!s1uJ%?&^x%G3sW0MjS;&=>{1=!
zLFf24G2GEW+miFO%uaRI*`QUwj>N4-R_tD5obMJ-yiae@rNVI1jKSm}<wO&KE-Sr~
zmSC+k4y$j}mB<fY3jswYRm;yqyi+=!<Z!V^eErv^j~_gBbzYeM<JZ%W<_LQod!5RT
z8uakPCO|2q=2WJ=;Tyk<v1{<hs-arvmbT)#PHc4$uG7vfx`Ka5XSQCtON1iG>N%`f
zLO_z4Fv^I#C3q=aSb5ST)e`ZM9+Ya)DcIqf$A7~63Cv3<V0fNe8RniC_LrpdW<R+X
zX6Wwrb;mU*Hv_r2`$-{I*TBl0!DwEy8K?Kq;~E>+j-NMp>3L!2<~Uk+`6wo-%%#){
z#<!_@0`oJl8l$dhqkCcZQz6Gqo8o?rWG3N?cwAxVdjaMYqkCEUz@ycF@<MtFg`*3P
zYdNUquH}wfu)V%BLEKhd$P3h{x{RjaG125e0KnDeM3cLXX4v);LV!*4NRvt~0r=<W
zr(QKJB`7#@b}!cjDUR;hT)-*_#){9;J3x1@*%<}0*znAo^}snj(_Yq;#C&s3`GslH
zp;;9v2={}3*K4ZgHh+GdZD=`Mkm3WuZvIET3LxXu%}qdht<iiTMtCUXCWqR;xd-E0
zdEIHGsFs22tq_7U5$eKZ>ri77E=&t>cikM`n}&TTaG8G3Usrk|i;Ca5BUl~hTi%C{
z=E+IEbsA9}367lNtWglYPm~PG-Z-ipu&MWLTE;{q5oNoe;&ju|gy1`9jxFOmu{+h>
zZX<0#XrNi6BI!*+Z=(}2o)7R%d4uP?ji7hgg8=8A;*bI3u*1h=v?dbQ0oZIb5|<L2
zatQro>Yrsq4lKJe5O4Dki6~_`Tt!FoWubekU7L$2&Xv{sDwCTVE^MnN;RyY?MQqh<
z&`rZ9O6_?4qncYjpZ2HoS<zLp@W6|~Wbv()zQ<Ir9>@fT`{TmrG40+8G=tk9r9LYz
z`@iNFkqih@fVG+j<!o^fE9{t#aL+vS9^a?>`C4Y=sn6*xb!p4NrX6?@AI`%poJ;%D
z^!~#~UEK1PsheZt17@yuq~i)gfI=NSEMu*`q^MHrPGLy@8=_%$4B)QHABe$CXJ^dT
zY&3oH6DUtXfN8J#4UiR&qVpOfx$VBj;V%WR-)Ot8yo$Xhb80)Si7DQmPMRZicV2i3
zkbcq@9b%Xc`bgf*x>hBHg}o`4LEdKg8|xRYfW^zwyNA!GS1Lb$c<!uv!Up)xFm*I#
zeVylK?<QmDb$!S=J+=p_<Q|a#zR}z8lak9dkPqhb$6b%~Wtx8076qU!S6RcMatBY^
z#jtwLE@Ln`nLPf26S=33s$%Zx{!=bY7@>PN=Wp)#3gZ?n+;cnW-m)8wHRLtXoR}V!
za*we7bG%ju<i#;unn&1YBYlr&xyrD96WH;RKgNy~nQ(Hll#0j)U6DXpKP9{|*@onL
zm4Q&U&RlFvJ=17IAmnivfFs+m@H%kL%<{wOZTT)k9~4;4zjxB&!kbSz+F1uIjP7N3
z;Ex0``GUe%{{+);?Kf)4yIxW>y_xI`HQO^?Qy7|#A4#=?iDw2_!1i>QMZ>e;c&o6h
zpv@QH*brq1gCfgOUY$xC9cNYWR_Ft>M)Jt!;O-Z@e&z;D3hw;{=hQAt3ZNhHhp)ai
z@+ssoo}~{<;g}DFYa*Z4oO4i5Uf-+6Rad*_O{aQMA;;?O<SfXW8ni4}!sN5WL}k-?
zTP^wn-G}F`yQs--+aU>4X+^`^KQf=g$7L8-LxE0W5KyZ5@=O+%8p69Jb&;AR*8OYq
zFk)fKn!(H0JRRbexnjLg&Gy4K6IRgDqr-bH$^NIH%9=M!-q)4?t-I8pOX9P(?}5b)
z7h2x)A}hQwFk!xX4QRXbvv4Q-3m&;yIxOGmzINWx@eR!%`Wbs(611Co#hu2*;fH~H
zeZ|-rr%E})y-vUi-TLv^*rNrxezJl?k%GosWrOqt(%r7tAGW?qM(cY1H1MK++1|%<
z$ZxXqPG|ov5A>~xdt}k<h90ORiH99scI^7{#&3XhS<CD8>pHJv^G9#g#S>c6rt_=c
zDpsLjaBMzR0q}9WJ;{s(3`Rc)|3OyVnMHpe0pM6yDh%~)PED$9h}wX*s$c5B3Z`V}
zlrcwbqYAvyMRuzT1|D}UvzNix`p)>qaqIJw0V0ihm0vE{Z_7~u#VGpOdaSP^Ky6I#
zCN_2YLsB!<h#$jwMSPg9q_1_^_d&1Fz^&iJ#^XSVQ6sXoIjc<9ug{86=JcVp_S;kS
z=Jum7;WOC!L|*CPUPawV<Fp!)j8OSYSZ&Sx{2CP+2ST>0P~+C{(TWcXT8;WrO;F#*
z!bc5sIs6943Bv_jg7a9|0in5NvK&nEtErHWCkAlTZ}d1H1#zs*GDFzZA4V+)d0-Vy
zM!WXCV6;nRGsC;<2x(3i+Fpb=BLsNHh3S1N>U5y==K3p+tr3aM#$9=%ql(#_T^WUL
zJF5N^vHdw(S1CKiw)LsH<<eq{H;hG)09YIzMF@END*FiQ+oWG+HwKp3_h6la(@0bY
zZObmnP=XK?`O`6Sw03U#?CtpX5jI6!AWjSO7(cSg!9W!~e(fBJE>`{1``9M=_8Ggh
zPo8U{mcuf=*hkIx2`w}hd*Qg=1#Ud|Yx1^qXEs1SGC{@+fR4iEmrS_`!y-I@^X|(Y
z@(C{h%pa>5dgwo#r1k5|>`KY$z$|(rO?V<yJd(#Tfp^p0q|Hhn`XTSKa}ijjal(Bf
zJ_L{fsROri!6acSBs>71!`CYUx6*GHuIb{=GktRR{fc>}bp7*Wke!DcOW$N;WFtSy
z1tP9awmN-NF>zz?9sApv?|$z`9|#`{qv_yt)4|rN6&ZG*9Q=eg4sZi|{9)3e${1*l
zZDA#0=z5g3g#!^McKWJo5IAFY!!zUS&14KH&T<#JV+Rt#1$$58LS&XrR(Ou2a;6gy
z!dOv?mmA8z)cYF*qJ0Oet5~@9@ZKY*fU#k_=BhIfgfmIz=3{B5u(JubL_95rzP`Lt
z?JmW-p#xdixLN1f>Y!T7PNy``o7a7OwttEt>#!x{+6#;55MDkFM%?CZ*pk{+cSv=v
z5jG}k9Sv4(IKBf+FMTK8MZLpMS47L20qlR)LF_B|i47N&z}HZefMyX6)vmB;N(;^X
z7F1`n-YisrqWuRw{(xaS;g4G%jKjXAMOJDf-yhEfEGh8^oCZ4s13ch*^4`ycK!0A6
z=KZ**LxJMxT}OvF_H*u#7`a4NY4Y4MR9t;mLMFYRL05nPlK#~;sf<PMWuL0~pJ%<-
z;PY-|raI>FGX&|1C+dhD0y)GD*tfNQ5EA%6{W`(KzZ=y1br%!2+u(?^S}}Ef&JK9=
zmXwc|87w5535B(P>;^l5@g>V@>1H3`i_RGuq}SmOcM{KE9aku@1Gz;XmxRV4{9vfk
zJKxFy`VnRNm^&KgimQrms+mjvruZDIZHL#$Lh8CC<7hcf;@*K>i~uadv@V3l&;yr)
zTn%fxl;kBTz;ukS2>POLlypd}=%O=d#^`^Qfq1F#;bDa3mLLlQ>xkk~MtGn+T_T{k
z8_bSe!2xOybie*tZNTw-0C?2V7iOTmRv|`?cns|I9v6?v`Rt5-BXoUS@s~38Rs9Oi
zSyeo(pGO0jIyJi07N*AB&v#lK)x4sRH@~@Ts{p8h?I@*RQv3Nt*C|=ov)c;&nWSA`
z_0G;5%T5%`*bQP_W-F@50+^XT!T2NJhcwo6sn=<g8_4Mvn;vuh#ooh>W%`D%Sdp@*
zYI@dPAhd;p-;UWl^=70o1j-{>Ag=@Yf}~gXdOBGiIL#jqZLdfL!Q=;9mY)~G4oLb=
zMzCyGmcK3b6l2tRmsa!_K(xOs1py6gGL3NE((Qa&eF?o)#T`si<(9wq&$3eCOS7#u
zoH1(}^R~o_sty^Be-)#F8{dh6TYSZ$6BX{yOsQ)|SEs_k@xjF1eVv-#cxBs!;o5_F
zMe4uQLtTb&-XRbm=3Wg|F}>Ln=I?KZh8|VM>hIInb*z_yDRE|wu-Mp@ZK!OU=04Nk
zjc`0Dok_~%UD;IyCCzciUe~u=NJS_jZRfQG=@nw`l+DcxSqY#$Byy;31LkRpjwK3^
zBA=rFGXR7yWJ@@>bnI>W0o;zX#_RSjrugs+2fxv4Xg&xc@Lg+9VLlVg$!_NQL@?U+
z!JAImqBI8SGz4JAFzCMj?|Q`{J}Mp$3?$-0KmG8IF8;KUL1I32CW7UGzhvO;Qkobr
zsZH>@utb1Wf|IGE7)c1X6VuoGtIhcxzGLpG(2w>RR(Kt=s$~KF#lQ$SjP`W#vC<m*
zF8otbZC)NTV(r5h0>sv@7Har9DSE#ff7&s+e&7CrPqCdh+dJ(2zh1ul?_R5c%pFwd
zfn8q$Ag8vyrMZE2K?3J&b?P(o_dk!t_jBK3d`MtncSVj11XK<eB@-Pl`@!F_bmrKI
zUpn0fOS4P^mjYk7iw2|jLbkvdfO{(2p$2A7=cTo&Hzx*^$GqM<g^Wu{m+<e1XASzY
zDUxg@k@s#5<BLs>j7afJmg0CnpILqXfv^0>uichSMbZTud_jgN>@-9yZE>*SsulGR
z?>JE3qHr=<cF>w9t22?Ml+FT@joG3@TWWtdo;MSHjw#G_Yy(|QDXm}aeLd2|EeNp*
z$pr&h-_lqBkIDAYN!AxTP0AAI>g%2crC*--t9I8`aZwMpPQF{psf|w%?(8=EK>2H1
zo)YCQ6rg1%7IAn6n!;#GSd%QBud1kQ|GP$j&tYBr`7d^ph^&8%j;3<{YREy@^2N0u
z+t~rPL|p=yBc4O`iK@nopeFv1VS2P!58srR3F?7o^)qDrvX`QRkq;wn0eE(UlSg0Z
z;kIJ?1eX$oUzrC`QKze;YEma8eF>0cnynJe{gHs{e8DbHafE#qI(PNs07_X*O+aT@
zJr3;b<pRuC?bY1zAP+c$&#lkVlAhl+VApLoZFL#T_|@@~s9wLr9KjMRCF(_i#D_1~
z#S#LcI1;@hlh-xFEc;c#z7WAr4tOZb@J%uibIKANhaJQn;tj;c9Nl)|YEhvsIak3w
zBBSLXK)}#h-DvbAO$Zu31Nt@=bMIC5S={)3h~IRZ<S`A*<~q$VE&zj`BQ4yl4&5L=
zF_U{`zQ#7s0AM~;f-|vobcL2Z+n4;u*6!t3kBL$M+buHU?e)n6C?BV{IFX;vAqmsa
zA3!eRlr^zW#_2B4F)uom0Y}u)FIWnUVetN7zImllaVE@%IT998QE8Zq&Z>itoYH-C
zH8pMDC}SYgcLu)#$V@vr8>SRYe>By-{3jiXGn40*5EI$+kg2s3w)CS%ROvGjV5OeG
z^p`gz;0YZ8J(OFp&sQmwS2{;6s3yhs(&$pErku{TE;34>#BI_xFJtps$vVT7z0_v!
zMYEv(k+Y)WeHuq>X=f3u-~&^q#U`#@Ee-3=Edjb%)Y>~(5_$l%zL;57Bd?Lb#`#TU
z&>N|EMo}n}C}hEm*oHWZEe3I5L5J{_h~6Z~p$xZ#gE;LfMdTgF0=`NSBeb*)7|zIn
znJ3Zkw7I)w5e1AUARymgj4^#v(*RxC8x8j4OwwBa=v6YKK0o}IrT27_X?$fTDQ0`#
z1Qo2}BVz@eH)yFFA<KY8XdWjj;MlqwUM{J2ao$O_%8j!8C}H~ab<nxABIZIDa-0c%
z)OhaOF$Kw>InGkJ?Lw}Y-N?K0$F|J;Iy)0m`M!X)8E&8zaax=0M5U@nQITGl3;Tk-
zJry!07Q_gho+ktsyrIfLNR8v+yHy{mA#q<zhWq|SGV!mdK$PGbrJoM(G@yhrHo|#g
zxW(J>vGz03?G{pLoR&U-Tkw6xTWHne#4zPy(C83c^<KQ-r?=}<nOuC+Mqf*gs~b3q
zOx>gf<h<7N);j~-M|@d|aP5rlQ&t=qe#G{`kcI0XzdLC_0jPgyxGQY2r(MkL|1t~V
z47yt8@xAj=KzFs)T^?hB)F;c*ywXMG7wN3aM&7Hmfib%CuQDbw>s4!CPwYT`$e7}-
z&KG8kk96aAk4KFNe8%cdgGF7Tp=v0vA^33P?Hh52JCvjUIOT@HdGrJIK|$*_{(&0X
z?EA`qDXHeM9<sJv1_OD0ObV6uyBnLz^fjJ`U#RS@%vt2KxS(sNGGkuI0OiH!d)#gV
z`!$w#o&tLLg#9ZjZIzHBEYJ%&Ts&+;rNQ>dKx6I?W&Yg;$V-xWe)9K<C2@C2MZs(F
zUnDtc6BX$yN&MeMh6CjL^kLw4RJDS!QUOv-keL#Rw^HpVrzgywQ)Xog>8tD;(-+I>
z?tKg_+{!Ajx~O=88Z;Z!H6keI#jbm^AyL#F2rxJ3BIvbrQp|2S60E_24jPm1RHDmq
zRW8GjkXmWFjE=u-P^bgy!i0_O8AKw%>&{IwL#gghJ`UyU2?Yr|6<IZ!t6}8J7vR@y
z`zjBA0~ExHWsS^F{Cz-9Y1{II4tXSYa1q(r;-^fMm`zmiwAWzU;AnalKeu&VUd}<A
zD?PCPUw|sS<w_ig-7S!O{jdB!vs|Aztl;!@D)T-?;T6LE-a#Njco6il8Au+%1#a(*
z{2r26#_b9s^;zV;c55um(SfA0jaVp)O-uKfx{OYvv<fK_9(uT7Qw%NBC#sbu#@+?r
z8FSaT%3-5SgPvB+pDEDtvIky5c&U0G%SXiHVevT$f}|!s+hHhJF_5;r$&VXbMhsDg
z{iDQ|ALf6@yTvn5`<$PPzX9^(lD|R-0D?0|bA$UR{-!Du(heVg6ray~89@3B1A;oT
zyb?04q_iv4{<sw&5WX<t9eANbf=uc-O1OLHzq*WuxR;vlH-H<%^;_4pmV8xv4KFE?
z2_zr#L#jpV!TUBl3qlfg{iVPng%B?^MhX4C5zMdcb5|xNu>)D`@%l%b{iTS0kd%xY
zOF}}8*6HR<d=I_BjdG(<{X#wnGiNxft>(7Dw_D!SNSecxx8#|ZKYdjI8VOACzEgIq
zax-(oEf`lMr)ka4Hh^Ut9rnk|g6(7<pOry=1!HC$K>rE~TtfCYjRhAjSE_B?yF>t^
zZ4<=sy4*@ghH^XOGOfdeLe3C1F7+(B7JsOPvVE}Q5UZVF^yP<`8H>b?!Gu_t=gc*S
zdSX#l?m5XZ1-a@2W!cJc{;vnw*nmYvt|*Wf`9<@+i~Z=`eRu?)l|Pi$EZR2m2aT`L
z1BYrT-fprt0(LOt!6W!i#=E+Gkj=t)*&8IB8l{<S6My|dtaAo!1^|!uKVxsy>|!2_
z3M~5^*>0hjp+d@VZTRG~`mox)-dRj@zq5=r7>keOm?hD1GVarI{Xx#w-c#oM#wT=d
zvv?Q*+%Ud}%%)rg5{d6>G@tRdWJLl_@y%{(77*@{vk@)Ve0^a9pVR6`@vN|d9)&WM
zQKC8Y>!{Cm`e{Ax`1?$QS9{`{kE+cI-XBbEim(cB{d;mGZru~CqH-Yu!?l0q{rum<
zHn7v|nGR93zPv7v&mnyX75W{N-oFVq)tM=0BfpY;zxCtF6#mflzbWq8UGlDyW4yn<
z@weAsDGklQwaC2N%%^X-qt#~?em4KKpxU+ZJv<=mFhWUAq4Lj)KHA%l3W9(0vld4#
zGpbLL;C_7g2R>T<2S=j%`0qMHWu9DgXMEB+1NzcuCBGrxAF#x74ZEXJJP-!)<$PN_
zS#t`Ll#3Ax=#8hSs|Yu8FP8ZGqm7ngkybh1+Vf?|9Z5bhIwoQfUhV%tLj9Gp?9($W
z=#+z8J?`7y)`oW{&hgUjugY{I-<hl4&U8L4M<vDXj-?$ex6yzA0&iWD5I2tJaNd#k
zzAw@R9k*a-EM6ZO1~JOBZ^LnTIVT6eIDqj3vQ@vFE;#Yb`T1}~@DzS*A#Bh_t@nLp
z#tQonEViMRj_I`bQiGMkGB|}@+$#pR@v5&0^bOT_v^l7Wp7w4cxx$qU*F6t*+qovj
zf;w{?9}-81Dyz{^4=`kQ=hqtLOJ5i`=tXT=NU!}b79cyiW^FgSyz_UI1_*o3H4UqI
z^il@Fml@}l;Fc__oUs{XZr&4?wKUgkDmIOL9COWLeJ=Py9<DHtT9QtOzTpnU9Q_M{
zw3j`jS!f@plghC5LmknQxRTc}uJxBqFg8B}BW*<z$&~sZ`K$Kz95N#HSW=fX$K9S2
zePPFolS;R*oVp1z0TKz&?j{LvxurU=Wz}<*j)VOz@h^J1-)Z(2gL5xLMN{*x@8*hh
zzG2ze>NU?*R-CWUsGgkmWo7_Z4AA?U8sp0v4!(hF(J&g&9W5BZHQBjIsl6@#J_ij~
z(lV7O3!v)OG>?xSnap?9mW?K5(eB-bUvgnpc#XBEIO8+0OeB`u^!Qpj?6ZHD9}0O?
zOZN)|o=0sIK_m>SIau}#v88ZnacbldFdN9>r<i%Uyz;7B>v4$C*wQA>oEvYVV-H@F
z<yBR<3vrFOT1&8>{pbk)8Gq6o*UO}Bh+1JwPrcYy5bwXM$7Yv!lQRuL$4IRQ6N0cb
z)7>wwRnNo0?j{OLt`8VmMp(2bkaQt$0oS#?V0L!D%Ugc(lP?TQ8B6jOU6-whE+g{a
z&7ThSj3sExB`2oI;RZ!LB(KGX!~epW+uuwRJPA`$d4_DAOg7)muR>XF#bz0m!9}_?
zfn-Vfd#peep~D3kR5JRhDdP*;SWqOsMMd0pYd5JJlGmaDR6a6$6AR!<KC=D+%)CP;
zhY4GS<n8VGn#59K88FVkM{!YS@Ag$`4t=!jzwHw4-P$w1x5$XWwh}I6K3)!tu6rDt
zX(c;DP6ZRi=2yBNK`I@pGK8_$n>-wQj>_H;u<&Ie|5k>7#%95Z`>pp+njoXo%)hgW
z=-<v$SSsFAWYI^4VL@=Nv+(HcMe6w5py9kXSlG50Kj<O2iRkXO{q8x^|KMRxG5Clq
zsoARb@pL#YT3lYl$F%IGXQ{GE^*vPX(h!G^3~H9p{noV2$wx;3fYxE&6(056eaVJ@
zXbB17V)D5gg1nP`>QlYawZyOTiKn>RsS4mfOH)CXNG)@K3&i3jWWI2P^zj9lHAI{?
zQDU5D(SEyHAgGdet~>U>pRZ+iS3atRzDc!}hDcTVT2m9GvQy;KkXQ*^dccoTOAjVv
z8r12ByK=FCyWhG}@5LzL2hs0S0fu3)T&+NX5xr2`6AuNHFMhKubb^L3KLBAd2TeDj
zC3sZ4>oBO`wB#2{k5HI-A(JASRn+6}6E`$AK*!C_P%pzgMK>OSTGCJK;yY>`2qaS}
zj@~A&Iaf9CwIhq%j->X$I_+;RYrEqknvo1-HNFX}PsJN{L??WiY-m9JEw6v@KHw`;
z(PQRX*J1~_uB4E=>>rz2(x-X3TB`a}<kCC4fv>DXU*W_R9521`tlU@R`K>|^cz?P>
z<o$rVj#F0|WAuIpAKp_>@+<rr9+VrV#3mrRx4)O2I+a-k$hx?RsyFR_S3EzG=c0F2
zaLR&IN4D}7mHjlBv9?jge(oJ@&(g8MWdS{P)pKb<e0w~5B%or>%*$MI-uub>E=ql}
z^9y6o+V&k?_Y3(-VHTS1!2Bv!jh{CcrdKq|zu4hI9uKxPKW(_hoL$l<Oo7???Xmy8
zw)G>aC6s&yxvL{Xn9NE3S7y`P5FeEH-={b6mQFqM9cq1TzPm4OD-V=i-%3W`RdbKT
zOfVNTz3m&FC!aJoQ;zsN@|eN3Jp};=j*rG4(E;JYd(@MA$&z<Lr88@QF1E*rh%`hT
zT9e{h!S5v4!Jrb;G{}C15^O_V-$)Pi3%f1EzXFyFSrBh?!<Z@S5OwSPllg{Vl#x#|
zL8?>`1&Y}(w!9W}=f)M~K*C`khW_dJPVdr7?=mhU*euQkI<S>8b>t@fa0lg0EHRy@
z2*r{P7>lFp@eOWhl$%01%>8k<+}g}@Lh-xu(=?8{)+UsuIAUC@<w(~<LC3dUe1dT;
z!LAg8_oaAN_u*5y5gg#QE8n(+V@E7};ifIk4(s1o*-$Y9;^-7o5lQl|mjux-!xE{#
zZuQ6H(*ZDKHs;!bQ~3dD#hz-a#w+YZOJI={9f^&fNDZqE@-Wm7bdyYkVXH{r=+Kc}
zw-3|wb+8xAvX`-5PfWJ;a|~18@|D-rbhq)P|9u$n{uPs|?Y;Y=0x&%}N8i`+XGCDZ
z?KZt;H>!X(L%K2bgMt)<V2<Y<x^YDW)|i4gify@*hB{;r0QwL1xN>WB7JiAD?o3X8
z9k9RN&v%%+{caTnpdB)Er`uS_JmKcXD9%p2>}^{tnwTM5H)3p*#A%YVL<v7%7n_RT
zPK1s=D*2C~EaR``cB=LC`R$<gY;y(R_1l^J<<_S5_y?J<ufm^>64U9s)?MdQKhTX_
zP8>MdW3S1|6678}jk?DKtc!#q>KI%No+B;!uJ8bX;ZvKPTe<7E_M^^mEf6ggJ?o(}
z^=Hx$h+;y1v3mh5xtq)Y8e6~lbCe~9Eyi1ILZQf%=1L3)(3tqrNKJ&;qmrls6rWH{
z#UbBDBA$d7yA?y4%bsn$CoDLf!g;5(_v=H6p(La&@wJu;Ryd-oG#MeTVS7knH!2`+
zVbXXwbfwLh@cehW4pA(GzF*8!?}Qn+tfP|D+_*xSxtf%6YCQSL;ex`PHU=u$q}QqW
z`p+BwD@^y>uxjtNr-yd&T>_bP-;OT&GMTpz4a@`(b#H#xX#mIMqXHgjuGOU^znarl
zj`H!B(osjazEZ$46<_|B$-<w)YAT0D+wP3ZY%F`dYMjVses5+QY{9=5C5M}Rg*UMp
zoS}(9+tkQmn_&8hU-+=&OnFwt*#`b9&Ag@!`(j$(TudL)pFcNR-WS;r%Zd~u71lRj
zcf7FaHYKCu=PfWog3+Y(uD0Q&2NHCkV{9Qk%E_UZ^opju#tX$#KSeMKLYOL`Roe;J
zJq-#@>#;217&Q6NPoNT-yjK82SO-KOIJtGU-wLc}d^u-FUgG&;S7vB?f5q86q#Y5L
z4cj1V8|fZ7=@AJ}iV>Xpn1oU}hg_RWi5)#nKBx=MFhTbyYdgEUZU-ymcku8+H8<Sj
zd+fZc`2B=Q65f8#{MPg>FkILD9>H;>W>KZ}!-@SJ5LvvvEg3Cu#c(F*Xx=j-1i|ga
z6qsIHBlzy&A|xPZH3Q@;EEWov2c=XrqBF&xL09m?@6%H+MBq5LkIgbnP_@qncfO5|
zX{Yl&gLKEvI7_8KbZ%i!fOch!V*Y2l<(K5wGSFOy3*2$f6WQlT-x<kn?=QEpWns*P
zF^$~r79||7czSWDZzdR(<TrD_)DQsw;C)Rvz5BJrvtKcLt$CAI`XWz%-11Z1IvnXW
z-tgvH5+E??!`DAXzNcV$b7%%HS={WE3a<#n`LTlYLC4eW`vlNwC8Yjy@AwzH=2{gE
zZ&ELdDp8vV`<lmqDY4&esJBA)5B%2&MH%C^0mj{oZF_$lI4A$wZF0*>^s5n+)P7>`
zWWq@L|GiM_o{y3x6eLG}p}_CvVE2#`i|CG28^449Y)>eJ?PlP_*na}OCYo5C=stPf
zt+ObY3mcU}`2`N_YubM3^{h&|``dwDOu~Q%CSu<H!>JQnJ9M?YsaM_$=O|sKbjclB
z4ur3X0MX5Jo>b^O$DUCOBB8JlnMwX3&*_->!paN-6GB^@gKpeaM-3o-VDTdWQxL~H
z&N!1|va?OFF}W)NmJZDd+9D%V0J1{Zw6oQ3sKNI;sj@oRfr7OKa=Z?X!a8Q8;8c?T
zks)!r`m6-@w7$Qcjlg9V1@Vf!eT+tzo-gK;9p+WX_qyC;SI$wW!y~V6l{}af;q&>3
z+-1d#D_iU<I6diNHta*V?$Onwc-!aJ%z2vHTFj5xxl0q@bc^DQi_i5m@$~xek%-z6
znCbO$k|~)aWEJl7e5qGKkb1j9pwxdND8>qJgU8{5GfB<4)l=_G6v{q{aAGlcB0g}>
zNdSzKmVae<m|#YM?I=-INK#%*WQ+QDA8f#5G{lNZ>~U%UR=3s$Ig<7wZJTvyQV9Y-
z{FJd?&;I^()KCcrU?|nwU^$Z@Z*wk(iF<&0$C#i=tL<wf{I22X;`Z{zHZt3Q3e5l<
zW&;djL%2mP@o96$PtM{yWUYgo$3;YV6yF0qZx?#LB0TOI_3Iu2os6k1tljH1#@NJ%
z?V|RiuQK4DwJs&>F5WB;5do=o%nx%4V#<jMec$K0Sy6s$4u7^Hm;?DYdB^<yeKSt?
zkvD8}r|AR>$Hn<pNj|tNmAUT(Tvc~)H1vaY=8FHgh}{<Njukl8<Mn)RQK1mo%pw*<
z?4uNN*!YpH=)v*lgUHL@(*cF(5qrG!zv-hm0In1S@}l+G<^y|TtF*&NA*STK3@LG1
zdfpQ=#O)HxflnX)P@nXm&QK1_mYE1iOWuOb|0KZQ@p(w`CMPy;!Kbz4pe~UN32XEU
zeQ2xtg7yTPB}xmKAhrdXk*}j3JSxKQmzBURt7(n1uX<R$KY*`R3H`pU#HCu4zZf(B
zZY8?yeEsZwO@f3|>EP|9&+W|fA2B#r?lVvzE5<kN@I7G}AJ&HsK6C6c3}YpNQ3>K^
z`(i=jQyv{0SHq4q3V`+p(4DadWjsw~Rxa*Slg72v67u68tvyP@>EtuS2{zS}f`Sys
zFb7N>u#T;uw=<B2wM=ZYg1gQ_zw6Y(pf*HCP3DhjRB3I!8$P4rnbcbFx}7Rh%MH`K
z!%ocn=a)b^?)6~al=f!EfpmPUS2!ePn>BTf{X^L;+2l7?P%II6wNFzD#=7mk`D-Fy
zG{rbyl+DP7&|XJBBq?%gQ_?<zB+;v5DRbP#9-mVdH7%jjSlNb*Z}3vNa{YN?ie&Bf
z+3<YQ^!??w!gv|qK{r2SQ!6)r4mD}!Z*!<f#9LJS;y0Rd7jZJ!_hi^|U3Hj5V{l!{
za@)OITR7l)Oyj{#n^HYwoL(k3iCA@A^`@~`=p-~^(SbR~+UsebD&l5RfwknxxGzH!
z5z4CS<kQD^Lu{G%V&6z__Xa-xZK=Egp1zfR81&RK17&HKsvWx|;e7cr+z<lj)=qi5
zx_B~}985>B;sc7}pA~6##QNb>=nc=bD}~vDpo-L5AQ1-*t5udFL3bj2$Ug_%jTXZw
z5{goWsR=lKviD_JVqV(MtWJLXDqZ#&0LFoR>T%oUSDyJRjiNfF?$&Pk^Fu#7+|D%P
z5PvBana|tVNJmt9(Gos~zy_EX7l;(FA&(C(%@q}8O`OlFxtY?8$G2oVA22vOl%xmI
zu1hiYeQ)0l(!{uzBcHn+>iqN?UVo{Ep(vOl0yKV;@b|XuZ?Mun9brx(xTr0Eo5CmH
z-Em~$|2OaM=9zzBP==1GwLhur#EGv<79FH@vxMranPjVz6BWNU>0)yC8yvk8VSiAQ
z#tTcb`l%;SB?rIUX<sT>%&8GvBhh1M4`<ym0mq{*DT;d;1oc!J`$b*QIJ_bZ5_zBg
zBXY6JgMv6rp*c)t_azhh`lqt~dHkts<a{nwYJLpxFYwTcE<_1Ou65wL&ZJCmGodYK
z3d)~FQ{=D|Dy6*K+I-1%&HG~NJGsH`Ts-bh+lu&oz1cT@bnIsDBl8|-@iGm{G`Mq+
z3JZ`#XEeh~dc>XT7N6R%txb8i7u>WsOGt+@>j($%l&eBa6|1DVB<Mzkg9Mfk00a*m
z-t9vvt$pOHumYR&QIOw9ZpA$R9ur-k#<}bhbaO!+dsi6sp<3xe4~3w{1IUosG~2%o
zyf^wZN1jR{BAL7A%M}$lsRjxCC*r2O`DKgydc`JI;DTq6hBC9{L*L#~DsCGh=c7OV
zB1qDM5a<4XvOvblz4uqu>qFFxt)Dq^O^RBoHEFixy0-*Z%ul=QHo4dnaSwZ1eJFSF
zmiRKPs#^vuH~^k7pYI?cfjbX@g-ubLo#yFjv+Yl#N9t+Q-adjPlCFhe?~u{H>T+nk
zNrmD0oj{&U)rI8@{DHomI;&I4Vn|9kky_5QZNyz%P8J}LvONou{5**cVnB<_z5kd%
zUvL)Yjj@}+WVlHQ<M0dheYn25V0lLAO9N{u!Z+P3dl@y-8Z3|p3+NynJbl2OeXlNS
zwo<84j1&ChmbUa@dg``Gg<r#}#92aExZPOnys7GiruFkwga-+mpA-+@TfF#ux30>|
z<oT$Gk$+r*_9&yOoP%~Ihxgy~HZ_GNc#@v%Tszv9NA?Zz_wOaQz;SBa;N!i1x1)y-
z6fakHtRFweR0kds=5I9Q9l|YYjnMWclb=-jXTR3fnEmlcwueG<nh~_y(r8v{gN8*n
z1klb)=siBOlQ4Z?Ku+~-Mj4DoU$*0+m=iOk(;Yr^*6wwL05}#<Dq0{B5K_b(3pvA?
zHd+1POG=pXWn#1otYc2j?xL|UObsKEo7s~pCj2-2+LS#s8frb?0wY)*;jLC5lss0j
zYbOyso8X8cWxG-@nF%j#8OdWvqpZVyhtT46T*kN4KA#@jXjM*<=@XV=fYXD@WOWy;
zBcOX<d~tgxeMD?^x8XayA$Qg%39!VW$*V_sdJK_$#cOj>m&pNYijCkqm1k15Z8<*x
zpou7m&UIx6K6GVp!kcU$E_xR5u@sw|eZT$jjR5qh`k$1VMgCE<l_c;=)w4->t5~I(
z<Gu%?juX5p&sj>9Y6x?v2||N3aE4}<UvDDY3M>m@HuaD!U`cH|l!)OUlwY~7dyaa>
zXF^+a*n+)6yWNhSeKaqNb#~ia9Uy%oBI%LvYjTe&nW%>l30Go6(w_bLa{jhAkXg3M
z$A9JJ=Ki_*AXn2S&U19tOk&v)uZ#cXZOUOfw`GfAad4-b3o)as!rRzuT_)AK_~O?i
zZwLXan8G=fskW=&k5&6uBLe_{4)e*z0>07Yk}I`I`NKn?Dga=*x)B>z)#Z-=b7a!?
zUG?OOvif#DD+^J<1dW=;#a;*Za&%;9H$IGm>B{&#c(eB8Day<1517+%O`BAIXpse%
z4ITD`H0U>q`B!o8lH4Vc7}la+??nI7Pc50J+(i-a*iD>7#wISo=oRea{P_5x=%Uw;
ze#JbJTgAu|zr19PUtkn<dANp4?pb|)<UH3y%?o2wZG6X(HoaoJgOOhA4_R(~Ds|K+
zb>_2ei`YFy8#9aYn*r^)DRQ|jSh1bvEbRbls$zIKAd4o|A;?i(*Rnp^Ncj@&xkZMu
zo!N#d{3Ml>Bn&{LC5@q|iz9v#cOK8MMxOM(TNndsEnE@}O{T*-mCX%q@1cB~vzPH*
zd<q4r9qPQ)Qn_cDN(@san(2k|k2`?Mq^u`X{v|?N)c1Am8Zj_5TMR0S<)*0ji0U~{
z#YnD{^olAO#d8_5RVqKirkJQ9Bc=-D!yF1E>5Qh_;Fm%eU48hSql}u$P5f4dRB+Zv
zo#i`=ww%FyID9*Q#z&tfU-b$44#g}?qlFO`)gZrE%3BfL_+*;CVsq4!a1WxY5ZfX+
zc5=FBGybaT=;)lqaNISSFfX$zJihZBY(*dO$0{@+*n!yG33?w!w1u^U*-fE@BV7tn
z8`>cPZ?hq^+#GZM)-I#>uua+;J3_@qXi~wM1pYDHhU%TFG#fPts*Tfe<EXCmO!AZp
zt=;;ngwLI1yYsP~2$~yjJym%{9OdeDn|Dj&&#Xw&JESD%!)LP;OcL{54vm*Pefb-P
zXmI4@`*xKu@^pIH@~n*sI=#4$oH28~FEPFa@{i-&SIh$L5uQvyD(%nifj@e@r2?_V
z+sNzah({XSBNW7DPIphBH@#M&L!nYHSAz|A?W5)_Gc_K7Q!}$DYcR0*77Wx;2aKZ1
z>Y8wLbmy4}FyhV{xzQYq9**j`M#qyN+jf8Phn5y#ZeOUZ&?Odd%`%aHV?5Y-A4o!`
z;V?n2rbzH(?)$!Q_a{^+3*?m`TnWvZ+IVt>6knROAQA;suv>LHA*tw}Ajz?JS{3hr
z@>~RK>)hQgbfd?;28XgR1wjfreg|-$-L}OXVkL2*R?5IQqp|myzxy<WAP`8=yX2Ld
z*m7}jkH?MeG$KHV2?!KvtY3v6@O3ivp7S2lUvD_J0HF6`?jd&%O&#M7JN@$vkcMHk
zWD}(~i`yOt1_y?hYdh&oIs?jjEmuoY*RAygH4J~2nJEMKJ`+<20l+a+2c+KM*6WvR
zYtEwL>`;>sDj(Y2=12)F!`79e=Mrjxo}GW!=5+OrGau%CkKQ7#sRuH(s|E|WM{IRB
zt~NY<quE}OvCa7y8KfVH%moK8LkBVsuoo#@mY9-7O1YyY8!sG6g%hj@fK?8Yi=5WC
zS)PRYb|1ccVN8%&FAU1^#Y6q|`qKx}#&gH!=RSK&HaN7H>xI+}vCf-}EHB`QPogCF
zrA;|xv)s{_+fgJRP%attP*83kiTkbd!ol84A*%s1&Sds|j`g8BPpL5%ye{*{HF#;Z
zW9al&1abRwMev>Tf~`dIzs<uNAGHDzz6{XE%X+R?S+>jLjY&?~Jww7NUQmFY{RQx{
z2GcFH)$jP>*7!_<0Q=GFjF~plPnOCUW}|te_m45`W1^E+&{aAqNO!HQS}`nB^0FMQ
zNnY@3+x<wKy#_$~iVSVq``Go2ul;4H_m~*DPx>i<BBMSQA{A0_@15kE-yv7kRFf`q
z7Jq-8slTkH-Wa{SZwAO09<Z&t`E?IqdAYTxn%f(D29H^<?8`&|-<*exI=FbFMG3BY
z4i6t2JgWy%RVKqrh4nzktRtuGA7^ZrL>Q!6bZhZcpEr+h+d?1m23ZH>FVY@P5mkJY
zErysyR3E3Q`jWYTB}#rgM<gTj_WrI!ESCtF_acgbh3PL27f6AuOI|rbj|u(!Fq@|=
z`CTtugeH|&M4!3z-O0r40gJu>aj$2tEGE0*V#<$%zp3czDRcx+^1!sYaX(EU2tNAu
zzs7_Fi^wxt_~rVCbTo5})rKsU++)u`EGVK*5qTsd)}H+$6twdD#^l1y%8ipfSSo3{
zWl4N;<?^WP+7PL?IiiBBom|P2c=9%W+EwanfCB38#p2lP?Ui=NzkXee)0-)vSIKNq
zCP8+uewtydR)EiAMIy{1K<nT1Z6VmRXy6a?L2bN^9Ng2uhUy+6m3!FjXP%duv3bBw
z9jR+@t7ku2OtX5MyZGlxG+x@kKiU2QLH3vI>yM(Bo8EqC;Cy*byP%=|gxQ_ltuZ<S
zhiKKwffspsIWlY`wNuA*%n*F;t}bgsL{sRtkp~7f`kKBtL0}1aze$DYujOZjT__m;
zE8^#ph=2Llv`zRe@kB0lklsns{g1VNxnWF~{&MsUc7JwOWU$!aXOKRM7a0~?8TT+T
z@U!60Iw~4P+n8E1pq}M#I#JnnZ@Yrhv;m4Fwyg{3WgXbe8<C4>Vk`ylbT1u_Jef~E
zW+{7%UZdBnrj;+t<UZGvDYBjY20`AG<p@c?9v^)8crQWIhO+ciILX}ZIDW1@rpKFY
zoyy^W2ox9;>9B&m`dR95#WZ#EnYKe@R=e2eSYg<=PhOqkywOduEvhCtlBQ&eDk`2-
z@4z1S%1&rFMu5+Ww&N9xa{5{G5<uG4(e{wL?+LPQC~dmy-@aSBi~ivvXTpb1cC;3K
z_$u41Q%$yX`K`2Tq!t54qm-LB<2`QCD-XH$S_kX22G7^K9*A-tje}Ml@V31bdY}%L
z&vGy^GJbbBuKe^{FiR1|h6{;5<`)86m1$Vzxp&$s{i94SK@3o@3`!0^#a{df-oeG;
zq-D3zl}y@SBm7zPs0hzrFJ$qd_ok1LeVW7#S6zL(!3xZ04iI4d*=C)!q+Pnn1)U!G
zyz5Rr-*{$*(OdDhdjFKh<_eEp@n`?^Wm>+xBBFz~H|-gVjCj9rXH(I~`j+%qVN=uj
zYr}tAx_SB5shgkhhVUk#OzM-3&Ce^dX;W$2VO#-(Xb#yW8o{=~02P%z-G@t`W!ndu
zsK(7|2?Rbh4zDSUkECwfp15LLZ~viSM*pr<x(F7pUl|sCok;3%Y?uGcr+UAEF+LvB
zu#2`nc2-nbTy_Ok=UPx8I#<DawF?Gn%{kN89c%ak;u~746#-I0Fco>T;fR!E)Px?I
zQ7}7S#l86J-apT25Hr3;I7{cCjvol>{jZi+xs_Z7!EY3Q_f*$e26{KQmOcn<v4kbf
zN?vxX;LTnVGpzdz{TgyYmla10dQ{Zo6hTtyjh?#nG=5eHWjt-X6?ZszFoFzJ7#%r{
ztmf|d<Q8+>+e-l4w+<Fb#JZaUz#Dd8;qP8fdrUk-AHF1bl@1tW(oi`hJ@XhAxcQX3
z_M3}1KHot!Pvn_?awA&r0yVNG*XTYEn^nD4I&m#&Fn~G#XmD9k%*F9ze6YJOVQag=
z3bx!zY3O?POn&OunL|wDqS50Q&eNewZ<OY=<ou;pVti9lJ7c!24Xi&c$C47<Z4Oyy
zKr%qk>IF~f-QV)GKlMI7{o%Y^@~q7U(ErF6(o8AkM7nq4>-9T35>vo1->vihb}NMe
zZZ~2^eB}(4xgmbru-=W~Wd?4m9D_IRL1<-STMhTru5!RadjsSlRRFMb(yN`^p=ti_
z;Y(T^9sI#A^6tk<6eq4HvH~5x-i4Mt%Ato|__l6jt})!bEo8qgp3#SAY}=YL5gbpR
zP{GDe9H7q-4})!+PBS+Kk^Rk43+zv{wjXWD#`^@HFHJWQ+6J!;O-k~<HD>6a^XP*8
z{8cL}6SS8V$MyTYC*y7=y%za!P^)C}lr~6*TuABDFK*?kg#z|C{r;%kKv&bMreTF~
zIo{)({|t$-%R%Qfw||IXrTc)Q2?epL_xO7-gAhHj-v43&)^4pk^RZ9Ih3lSS`f5r1
zuRr1e|E8GnNM6mt-gbv07Oj;I>HKA|nw`sDJxHvk=EmNTcx?v{^pOe6L1)in6#RFc
zQ0w9~-^8dgK2u`-<u+Wf|Kbz;la%vjmo5*v>a%-yqmx6+**f8w_vIrqSKu>Q^!K<y
zuD3BiLm<$^HsV$`dGUuWnjlIxoj2jX9;wZ}-4>a9%ILB?K7W`aV0x|YKi{ZMJzDq9
zaRG7PA!Ns-`qz0Y&2&Q<-_9^vY%=A+S@HmvI#?h$Dq2(td|0E{yQL-U7+-tn*$7O;
z0i4K$S#Khx*hnU;a}RAH?Dy&4PN~dValRJ|p|Mz80Nf`s^Ap9cy4P^C6<KM)tJn&f
zd>a74+LNbC&sZqzFgCPxE|$zm7sauytDCDksH<>0v}Ig1W~3Tbl%(I3R7B6!D)m%r
z?2(#il%|AHA7sT*xJS<ZX-rHY!Kdn<x4%XI2gg7-zoLuIJ~FwelQG&EkmZa{26S>p
zUI48&Ph7CQxqq_7`}a@rzE+8!Dd4UcxM`$`JCj7+mL~L*@7&+Y4#Frav)2ArJJ0_t
z()ztg6kX(6kE&{5Qc3~91z17>VvYDI02fj3uk?Qc-GM+&^l#ym?SL*-$LOC7Di??q
zBGQ&%!|gmz1OrIuO&^uIUpE)TVs_zPIS2S32IQ|f{l8%AnBLzuJ11NA)U3q0iN?;Y
zo7E9txwh3D9l=N=!AP1=!!X&bgQ=;ha{3`#yZRq##Eq1i`}dV2>qgN`65UK<q|G$K
zkMGHF<b%gx@?I7Eg7sg4&|!YrGt+<R<Ul6}vJB{Cj84wT3ZRpzY`SIlpL=+7|Kt?!
z-{0Z~EO565Zc8KFGCD$cDn+;6xUYThLCUgxIWNm23uAsaiK4g1TDw{oa(F;#{RmSo
z4If4GL;<o3z*X7qL3b?ZIzhX$Fc|VC+x^^NkcNofWjl@=3gW<qTgD-40pxHJzc*L5
zBwEy0>kqqyi`Hu7fAUE4DS2U^)=22-ryNJ4$86U)W;@}yBNaxP#N>AMxW*j<n9%^E
z!N6u0)6evIQt#L}BE0vCHg7p^lx)dZtN{RkJhOE62^x=naMXJ}n)$4Wz+hmU8RN{@
z!A#uAEbW_Q?AqPE{cJa5*KUgkWsPiNn!m3Vz8=T)Z7_Z1mUjD&gTxTrTpIJ3(wIlZ
zQS{*?incK`5x`0*0`TBv1OQy4|1PCAQ2~GlDhALwb-!ascGeid0yNOyb<`0oT|<C>
z7XU=)6&=edqJA493!Nn|04Om#hi@_5kS<zlwEsyXjiao^^NNz68Kvgz^G{YdW}C*b
zM=5OIqM%g2-d8`A(=%}YhY7;WVlM*F&KNKLgvEw21z-uwG6)#gpbO89W=@Cz?(Gp{
zFpz?AI5Q5n0IUTjCK-G7Gw!|L;%B>oUAryDnoaE5V|Q7LZ$=v5iX!!mo2T1X9VEIB
zW`0*z6z?v|@^6zkevwwH+d|R(0?u6S6aX-Lyr%>J6O{qjgKqJUi@IgHKsxopGXha%
zJbb#}(Sfpv&#eNL?MD!42RU9>vI!F1mjj&te7*W>#^L|sDdYOaTe3?>n)JIzY@x@W
zeVWF(rzL#iF+_PmC`zy!(Bt}bxq64)%{_#=IWRMpulj_U89%zC#Fr-&ZQO{Z82|vb
zWQ;cm4sdYqMX5U&&)+J@)NCj;8^E^1x@mB&h@uFHBP6X3pL6@&e9o<R8T!c`j4k&x
zG1cO4?w`aLEcmnAHme){_r7*(4cmgR7G=4;D9aZlas1|3>m#a<XZ;GK0b~@N3sCNK
z-;D$w^VkBZ_kN|nn*-29e|<p<y*5DCvge8o+kyd5=#3$lj$Upd^y_)*e)qvY&65UL
z)pFuUV@IChw>NLVOHMpSZ+^&w6wW?XW3)+}6(DP8G_^Z>kNb2DgG%__G1hhuj5XoS
zpKM|MNh4Jo-=ZBF6bMb#wLNym7FFlQE~x0883E7=*tnjsaXt8i9h!(3ktReDSSvo_
zp8NSJx8220z4cCu<L(^6eS7Tg={Ej*y3Jo`Ht_i$x3gVq83)*I*U{^>Qh$@g@zbgr
zfF&0JM)O1hu1zl&QNRNL?yr>5A$vI*(+r62wNTzz7#6v@Q+5Gl;&0NauM?4gj3#7{
ze_5mS!0dkAHA(FQz-j9m58XS-FPWGwp82dN#^V>9t$FJfg-!-o3u<*{7SqhAsvoV>
ztQ}DGmx8fCtIc@b7jqnO)(C9Li+BGO@aSZW(S!yk3B0>zojVa(2J!;P3lKAK^frZK
zwi6zI0U?gS`zHDPyLR!zZn(v~?&jOAIdQUaU8~I>-?W}SdE@@hkJhL$cwb%=?<<Pp
zH<CF1GevZY<z>Hwxdzlr25`J`{*rQM4-CkGIWB_N=xyF~#f8qsun06d;uz!EqY+_8
zWc`t24$2zmKi6pPHK+gQZySqu?Jk}lYrN!~Q}nqPov(4)@rsq|>H`4o<W&$)eYUQa
z<{0d(yGJw=#$WwM3-@emqRES6{p7j}6#-l@l<G$I{dzs`na!-wDGgAR-SU|6QKGX>
zVeC9za}qHbOIv=n$3FMw+xgdSyv1P4-RjQU@3mKtHt@lpbh1ycQQg1CSo@52mYoo3
z{YFLfoJtoL-G)eW{9Wz=a1*=M12`PO4gkjkIJ$}k41iq#ehT1@3Lxx5f2+<ox+_Ju
zptm4sQqcTPVRPZg3B7HEo6%cG?C3{Vu-K`L(=Gt_RzDvQpdiQW0-!bN{7)WjT$p8i
z`32`hXFc)42uB{#?HI8ZeS5B#fqDWF!7_sxc+vY>Sif@=)-0U*7rVDnW{inDb3FMd
z;8~AID{D+$558<Gc)MS3)lCnjy2Ep<VSN9`hQ4u~#kDt-cR|rVClS5nrl~c}3_KRV
z7nk`t<u=fU(7{arwgWh}x^1iM!vugk0o-2c-yZblf4Ka;Tqo}8dt9_H_jq&!0Enx{
zZm8_erpk`Ubb<o_d(fT4woBL_IW(+pwC|ddvo>v_iK*$gZdy;j|D;F9(FJE~PGV4L
zz@X({V9m@(W8gzy>frNbjOMsrwB7>%X~N{aIW|s|xa_ehjy_z0nfi`fu6Hr>nnbJ=
z6I<~9DW-3H$KV^^HTLfN>}N(A>hFFu-Tv$v*8LN!Yk${L6n&7mf;~CUd#rNATLBzX
z-L_VWy0<a{Kdp?wKJ?mr+(MD{l`^lZUc=G<Z7=2Eq6Y^aMk~d48_7lmrRYF|%TeAB
zU^n{50_SVp0302q7mqaP?dP4TAN0&iVjdd-m4>)G7>=+!{*wXjX5Y0UL>k!jfW;qt
zyp0VzM`6qEF>@<vH?iP2#O{P^LTl2X+*RP5QHzt0(70>2fw92x+ceHOA;Q*;8pblZ
zl;tu48T5MTsKOaq6Gw{ani~xM>#7oW+-pBk8ocTDBKt0a$N<0<*U13jFaSqZ0N|)f
zAG1p5e~NBZ^nK{H__{*CF`>V14Y<qsmtM-jMeuHIuzT#r%62p{dv=IpC+<V9Td9ry
zROFf*)BT|F#=7YaUbpQqdeze|j_|OvG&)(AC392tmfDHx?1$64Sa<*SfiJc3#XQE?
zrum)!j16L*N$8UTik#8fU1EHqz+;b5XcvrqQx@w+6&`$Cgp-eqFw!981=q5F%ksw1
z`>dKN@x8k(KKJ#KuDRaazi)!yylI1a?{$0HokLO4=MvZ2<BIoO@9&l>5;(dt2IG|y
z-cuQYdn#pY33Tt!yqg{<Qwtr;9=mJBIk;9L*B0dV2e_F6vQ^Rb5l^9i>~D!RII{E9
zvBvp%!SB4}5%EKwcwxlr#y~}ZWkkwd{jipi#00H?tA9}7r}r8BY_G+~zf<6hC$H}s
z2jh_S?7cBcS0F?IN)x8{8|=HU#QM_U=#=rO<1{WfBS9Jy^0NC{jTrdpeFoS4q{Lmj
zE!H&%J5P#m`Y{nE+YGhLQNe7G!rV-W?$~Ad%BxGd>f7aaiSg=N+SwNZ2IyM}oO+IU
zYsCWYs3LP+f$lr1AmF}A2VE<$>;!W2LR{*uC7iy@={x%*0mwLdOU7K)e~JDYrG0`~
z%+NpkV@-koM;yH_y8W*FPfk2q{oyknAM3MDRouyDra>;N4FDM9BZOOb8GQH0CH74-
zuKaF>2evhE^l51q{F_Q|W_girTW>eY2TTD>>?zUOQ{vdz;`Gf5k2x*EsmDf`Y6FUZ
zkrZg>z>T*T_`#h9os6;LFoj1wIDu9`X|Mu%-w$*m4V0Gn+c%c<xo?!_N4ML*K714X
z$#r`=?EnCJ_q*J^0|BEV64+iv0h=qu+EW>TyQ<%((7&!T5h(?KET}{2auOlXzZl5P
z5^%G}BXPVOS?s8PfAZIwi2zPt-`q4gX+LtoIr?$WeR9HMO^~tR<zV`Hlv@`Ok2Vy(
zc4LlfZYnU+03LZpf+M$RG-6=)ev2!v&GDU|G45&uoGLWeb=g-^KoSx5Jz%i^?gEEz
zjd1iRa8#3V{8ojX$HzEqy+Ry!^L5f_`Lti88LbX*-K_<_^`inO9jWol7c|hydVpiO
z!9ewV%*>=UajVVv_bUs!^6K)&btCF2-=ApTibGrcx&Mv@+*Hy3+p7SeSvm5%E8X8!
zv2p(X5ceEzWU#Ci@|SB#`y=f}Q-FVeLg2Ju73C~|x>|r$Ehje{FH94>{nwuok3RHF
z&87s2HMGkEf*D9+!gQPQiEnhUcam}X(Hc8XiZR|KSO&iR;{sRSSm4Lgggpf?wn0Nh
z-Lm~8CS)y(i3bewNrMxQim@ZM*tVW<=Fu9b?}*TBC@>ht%x3l+@Q8G`7GT$2i!XgI
z$KFYc=RT&1E#nIL61$CtwE<cIH{4?A1OJip-U<BaPdc4H4FI5bj5Go=5;&|f1cz0B
zpRA()d#Z>)7W5GM=li<?M1TFJU$`gNktX6iB9W%BA`*~GeR2#g2wb&tY}~kP$2NNV
zi+?5IqqY*tvg`Jj!vRW%d+#2L|GqZIWXIyMXC>HqQjF=2%b&~FVl-kx90Aj9#(n!N
zrrV59U7g|Z4GK@aAjP)L3ZMN}jyvx&_|?ZWVQl}o&UNm7t}u-W_w2Fwx2rnXzKQVo
zb5pDzQ78<ra8v+RiZRs!{mln6+<GU!_O`t9){qLA(K}ZUFfKsA*2)%GbklElR{&t2
z#{fDz;%tc)&bv-W*-J$vp8m^uAV%oBT=$)$zW;yK%1I;X(FFR;C69>CeEQ>K?y`NZ
z>uWhcf7jvW1#s=n1-^B2f$f_Vo_1jaiSDv<5~Kq_qzP%<t;E0UK8w;=Tz9L%wKo^I
z^t=>1PmYn7jQ4!HjVC-L!3o<V7~3<m!{}_!J}^d7!bh*_;Eww&E;=j58OO#bO|NWg
z1#AEVOw2&D0lwlYL;wEy;>ShFm;5BlZavr)e3)aDP{OqOxemR;p3UeL_U*1Hz&#Zp
zko3D#S~)e0F}qivF?%1msxcsPl(7U7@~1xwVAU4?oif@uhk<{4<|WZdms}8WRxA(O
zCzU^m37@+*!|l5ab{wv8$+-!LdX(E-FJ^636!hf`rC~h%!Uob9u$E?MHDiExeY%C;
zd+Nx73_#sEClN5!20ndF2b}_V=7kM3;%?F4%A^Kn00Ad4<161X^e>+-ZrZ#-{lYc(
zwjMY{0RV*Fr6Lj^uk`+~3ION|@c&Gt0NNq~mzxCTN^w(T1AG9WMGz2q&mkw5=IE~@
zT2tWvD3!kXjFa?hU-<OcZr(_$EYTa<u?&%JGa>x=UW2dSn8R4c!%s_a=5Z0G+H>dL
z9S}$&;0JdYeD(SQ=bWhVhzBL;j^OIvKavvu<LV5f4dB8v(^(b%3uPzA8o)Px&}9VA
zIWfW`&qy$xbyI^Y$OeFjF*yzUw;#>b_kV0(aYxyC`=JZ~>QVuc32?=Eqt&sK=uHfq
z7WBUL0EKkka+nZm005!Cl}HW+lF#8!0jrzqy(;DSwDGRfj#vLbd*2-<$yHr{?yJ;c
z^6YHRD{T%+t5uE&WrVVX5eN`TfMsm3z&~sZ7-KLd8APzbMg}23AQV6n%0f8@6p?nd
zL7R7Hc0z{=@BaR%s-D+xswZ^!jApc3-&fzv&UUPN_r7z_z4zS9KXRePnKVJlxQ(Yi
z#-DKrKfNQ5o;>5sH4dh?8Sv%sSp@=P(=Lf$-dn&2Pf4StLBLOl$eF_|;a7j1!)GqY
zKyq#0ftg_#ghG*V{euM*T*ik^%b?(n9sr2xQ6Yd`UCdwkQPIm4aQMr8g(vq?Ccw~G
zxOft1Bl?Gd#f5#H(b=N_fIzWjfpSGZec(<E3P?*u7@7|d+G7F?6aWh}fH5wQWzFeD
zuE+O%;2dl6npGzIVQX7Wm3=DccPzr|+XDRRz5))}-^5`{Y@{qIF=~~3fchF~hj7(R
zIqWyhzzGM~@B)-Y<T0IZ2;jjNeC){uIBm6qKvq|vtiHEp68`+Uhu=Tq;_M?GEShD)
z^+uHqWM(GI1YdWXPdDD}UAG}9p1(H(0BBKoOvS~;IdNf+J_#(Q<J1a#Rk2G~+tNjP
zbcH{Wz#=4#G3E-J|G10(7dJR9o=*>6begr~l%q@(iuGxUVP*&d0twvmcoA#2NL+SG
z3fUAPkORdw29LxE*WQ~)$|jt9WD0p#ts$rkIR4-N_Th`~$)f1hD~}g;34G^<9FAIM
z<FF+bJb$#)0^zu`f4-_n+jhxA|B@>{wif~b)#faPj*p9aW37Kie|w*rhfj*?)dg5-
z*p?~)CN$u$0svj@PapP!@e2OuJI;q@PBngb<p(UbEvoCrZyCV4Z2^AwU=d4ZTR7`5
z8@+|{9Q;sGzaU^|H{-u=$>EB#GjJ@b=sQ#z|KS&X5HZ#)worSALiky-DZ*_}xOi@z
zhs#dMz_F<$R5Tie!T`Y#%nv*j(EncV-tlUoc+%d?03d;iS5pFUUfx$W{sIQJ;HaCh
zYQVtI^1ONkk>p4uDv$3RSI2(o)H&_Vbj=l)*!Gl3L}5>C?d^OrqWf-qsE93{5@#J|
zV{(g8mfsuJ>qv$l06)4Vhl`F)V^VW?xrYKLvB4Hx#?S96;3H?G;Rp3ATyiYJ<FB}Q
z@I@aN9-BgYV+d+S#}NQhG7AE}a8;4Eck<yc_ZA-Bi$Q>zhKub!_5qCYJbV%575GWE
z4{d{%L--%n4<rQ<fyM}o%gz7LDcRJvUH-35Kh`?)!c$CkL%N@8*(^EK`hz8aO*<w2
z@K_P^ry4kQwS(LU0*koQ$F_hwo-ATpm&B!SOQWwieE(qx;F`PhIAN8INzI~W+f=Lf
z4FUZ4wmfFE8#wFm{_j@*ARxRBmdSYVsQ~|VoqP8>w|K(d$^cXX0kJbM6=RI6`_*Y&
zx*<{m<N^lL|Ip||XvVKPfh5Jhahdy@C7i2|S#4hO{<AHX92$Nt@|r5$_tdK%?s~?>
z1;?Z?V^X;Bi(zU7lmvhzV|S0lFYYPe6K7?sVkDRuFKqD9*(-76QoF7KMe#(z>;9C7
zAqW>7lS0u0Mkg!4kP=J;eERDJ&lF<%<2!P@uy-A#F#)>$8;YIj<9Buajlpams63E|
zhOmE`;6ujU=D(ydbr2Em`J4CHjr+|O9978IrMt(mfbZUr$NXsqPCCee<T$@Sd}4u_
zkxdc4d3_GYEVr?2j#&}}8}7%9srzsIrVoF6Zl+EFK>2I0+v?-mdkXmQ=@~SpsqSJz
zG4KEY!(iO?u#f+}-uvbzF8=M_2mtg*Ky?HvC9h8fQ;Tqbp*8piQ|Z&w2N))kFm9;-
zC5@@cQt~73KgXVX=t_hAAT02&mM4o*svt&Bp7E30@;GvtjU$#?r9Amaj3V4vffv>X
zc=$yZm!Fxb3SpN7MNHs(H|Fr6)6ykls$2gu7y@DY(9iEK;BVfUQHrMO9~Ce&@7}}s
z+;@t9{!6Z~axY{7ROZdZz`T5XR2siKT>BsD{geLA6?^~<<9)~MnD01$x8H2z>z{g`
z9S-KI!=@#pG~FFf74iJ~0H1hAT1oSb+@F|&@U`pu@WE5kXvk32dK}D*f(!iap*-Go
zd>Uagtv&!C_L?ah_`x4?SU$(Zn#I<r=m*4slOdRY_$!wl{c~{q+CuT3w}L?%bpQ@(
z?p;;$ODevTBQSg#<gvOz>+eAooP!P`#`Kuyq)wXDLQntWM^nx7X9)^|67Hv37H2j^
zxanaRPrc^j6K7>GsaZso`847U*AT!1&wJRmJ8b7G`am`8MEssXz&K*5jsLhVhvQdS
z2xR>(Jw>-N;}DKnVdJWs^JvZrOlhU4Q=q<#01;6`1~3hpvTXwuI{n}Q?41W`_N><4
zc&I#lXSf5nXc&*<1pmQ91O|AsZ2!_DTSVtpzWLm@Ss(l0`4$HfB;x+QDmUsVM~%)N
z#*c5!<B)|GPCwLvAB-Gmm!xw+_>bT8;p6YfAmb1O#r99t*b6KZczugRYlA@A8M!|i
z%(pPY6y=&lHs07JaqD9)4q0eHO0HY?MEHK;^^puZaH+xfJszAly&?1OTXIGDRx#vi
zo~P&J4UOUp5@<L%jMwE6K1Mfk8UctHv&dkMmHOnWMdBM*yxZo0`;EUg1RO^FKe{E4
z3y)1<?qs8?UitX-1TpS;)`gV7i3d7~RsL1Q=?px#&WA670~eU15t#!BMT!3SWD&c%
zCEk5P8hN+A03fb(wk`0Nf9TT2t@6YddkS~$rJKJ<@BylAjuZe?%hKs-LjCpV&9?o6
zIx-F2z4E!gxx}8kY(G)e2A#C#Q+C)d9|XYp$E0eq*RVwx_~-xY!)GrF8@fbYQg(o2
z0ssE%K3sW076os#t}-K6WL$Mq4ws*iLCPiwQTLPpGc#@2BKeC~6`xw~7Z2WB82}{E
zYpTHq2}Uo+z%f<o7*P9<)oNlf7L36BRO-J^Tw{FpBNy5+@~;`5ng($H^Bx|2(Zdz*
z4AFWl(^<`eH$?b)UI3hMfDOs@LF;k!Fuh&i_m38_W|2KWB&ZINc{I2Pm^Z~hYoowV
zZY$u(<racEiU-9n6G+f82OE6vqyBqZ4D*LOT)%fOW&#)k$80BU{5%Gq1qnfknx0hC
z6@<zu#kw8)XPo_oz`8Gf+-aXRRS={0s6U?2`PE<MaK;)3s~1^ij9)dcD+J+-KkLKi
zFUdkm)Unq-{H&9j1zz6dV|u$7rS{!$cF9QxI{42UbC@y7Kub0peO|}+BO*deBVlrz
zn7;NUnz2U)H%(*%Hfp}RL+9Vex&l8*H^4-B;ga4<ECz`rsy<Fx&|t}&c<?>%u+BXD
zZ6>>3?Y;d{hV4B+x+RZ!(+r%k#wlyF8~JO8U-#ur0k(ApIOX6}9XJ2}_mDE2DZY8P
z#MD+}6z@JE>kyXBF>%#RIUKgcs%!0m(n3XRRvLWQqroNfn$2&$(dRSvzGFD{FUQ#S
z)y-eGeM_@_)&A>#%r;Z!&7Cg(^o5V5j7*9^f`A(9{VWrB{&gSMKTyP{&(FfKDYE<O
zBXr9oeCzr?{Ovi}y4UH1uS1yHDsc0oMI5@wjwt%kiMhNWOb6cbn2Wp%%<3>u|7qDo
zb7v6u<Zy7;R<XG&2qvsPh*2jekaUUPjOu&U_|*z!RYo}OVb&GJbT*)-&%U(L>FDg`
zSFgOxS#-b>!JbbwZ~n|7&Go&Ta(MsA8BA{%kW5u>{Nd{{fSw%Vw#SQj*YPQMqcVge
zysUGk7`XPHB92;SmD=`32Lpt;$3ynF@b%yH;qb+_62aFA1P~!*gBH#e**`uMoY58d
zKiW%KfTYwLzX|qF2^+teVE1-HAV3L>KuyOy+xhZgtIYrW<a-?kKtfQ}uN|kj(hlL8
zy9*!!E;=q9w)NKNQ_?o$dpCwfdTFP6UoyD8FnkFZg0QPwqN90qSb+F7{eZD@o`qL8
z2YBi=7c1w*#ewx&@gb{m&=M0bycWE}_N?1?y8gz!6#yhT10GFUZIFmxbpVF4`NzG=
zDfIU&$Bw~FhzQiz9kCPJKkF=XY_a~!S2)>@HUdY}x~r%CLW=&mbv|x?(!<}JovkZM
z|IY7n`1|v-DERe7|GE=!y)aL|yGNqEDZJF9CFU1LMQ=O6!N2_~heH;cFhm`lTeK=B
zwGvV`rf+#&Se=2tx77nw3IrHqTWqI`gBjZ9AKQLBM9fkCPbAnrY6$}7r&7N-<w)zJ
z?>pOKKLA7>_;k|%{_U4JoVg~2Wpm7$buYr10EBDrE#T-CHYT@-QIpt>UFrVQP5jRv
z^EmzhyHp1;3It#neKIg-iUETNw?1CPfeWnqr5>a9jX*MvIoQOl_xqR3Y%spQH6QqU
zI{<jIj-fXHly;^yC!lMKSDhD}XQfV_K3P2SrB67pErJkK6Xh31vxGlB;UZULTy&g+
zqE|abA8YM@<GLI^dvOB_?&wb4ifaKD&M@%fTMIaTl|8B~Kz#TCaQrG8-@PG+1NXCF
zi28t>kOUww6D^r9__<f)F=o;D^)AoffqlnV9(u~p)FS?Pc7g5#94!FQ#f3&}|5u#d
zLEF~`cVBX*ea2bGn{Yjf0`%%PX#gmCz_+i@;Zx^jkhc4y^qTw%fEPCS00^t*nWJd;
z{YTLcBj-S()VDu+;6Gdzt&L$D<HIj`SUTH;tS=`;%%COng>mcs!2x?@@QZx_V0>);
zrse<~ZSzkle>XK2KsEjmZBYwSslQvYKwN$0WhoW}5~6x#uejhRZ39=|k;lBL298*2
z!H)*-)M`9J0Kd7vfKygGNZa+!`B(l<MGxr7GaAxVa%Q8pGenLcY(=#2&ENFl=;d}@
z^PJHDBsyrR;5!})&f4kv-`uxSEe%!x03ZNKL_t(1kNM`W=lfLvpacK3!UX8)fT}=0
z0IX=qv_Ai0;h9ff>KuIN3WFoz8>&_PuHc4UKA$`%Q)+9i$3)OT0@puS#D&K?rJA2n
zy;0HUUO2<R)pz7^)UvS&003ZWt3Y3Y@#JeB7SA;5_I+dj($+#;C}PphP2#0JGI)L;
z02n*t*Q<SX^lvMhz4|lB`1Kr}Dj=jQ4GxU_?bL6NKh(J5@{4SaL^!Bc7Bpo6-}+q+
zZ$HSve$$N-daZ{8*tkPtTc^b8Mb?NEzUpBx3#Oa+?fpd@w4XH!1v<&^D;YRpm4h!`
z(}!bL*mbK8jw21n2HIPw`Sn*sTW8?kx^HhDGyB(zef8)+rTGB|mFs|#QUJOi7;r4i
zIEPv${_@WsOSR3JF5*F6HAVgeVEZ14tM4q}%JZ|O+MIgWzGD-<{_8$`^6c!W2<HqA
zJP2>>l$be5z%<6@y_tb&Z326G882=Kuwa@|^N=!iiAYIUxk%6>&&u-}VSHn!8@LlG
zdY-7LU#0zYc~aE@*ch1iPXY&NjUA{|C^+C)+>m<l@{6sr-*cA5u1_@;5;2FTZ4$n7
zLs*<Mtxd#vr<(P&<No1m?#|=l<5FOzF>?U%XD~!06d`#`06=^cJjOp<+<<TWt`C+;
zb*oS#0;D85=3tYT%%{Iz(wN#CRRYJ-_LGK!nH88nTLA%90zlC1U$=b|gA@nOcbs$g
zn{7PujVn`VYmVaFn(Q=Ol^b?Q-1dZvE6>j&@7B*qh=AWeQpCAOr{D!+Tcb@xU@(qd
zVdK8%TxF=x=m#AD;gCfZB!{VwSb?z~OOlAm_kq9uD_a&_{Ba@~l$ZbpKNJX{1oWRY
zs6=%DMg<3w)GDZJ256DLbKB(?*^3WaYOw3Y1>#hbfu?QX2RG+%&QT7UGNGVFy^P;B
z2|u_whfkiJMQ?%YWCSDo488=G%rWtoHv)`Rp?FCvKr-HaVj4faJr7IN^Sv2)m+A70
z9nKf=t9^U*n1TUy^G^x@^zI)612sa71pC)p1<MR^X_K>L&UA6z-+#d2aC|h?w4j*7
zcG<38i94Pw;sYnAqs_lQk-ua{p~%?QDY0Oh0U^c~`~v_nFr`&s^KJ=KjBTx`l)%Y{
z*m&T154nOYU6*<+MInf1Od)afA?9HVv#EFN0|52%sslHA^>;DI=C7mvB*QLSA7v1{
z+~7qr`cM7)*>AJnzG9)^i1w>0B99khT$uO$-{)}pVGbrWiMkpHGh^LWA2T`xYzw2(
z@-y5oe!zSaPrd3zYF%R+g|syYtej`!u4g>NN`>`!T|orL2Ay-FxoEDHx^&+jJ!(<E
zKyuBGrA7Vf#-G&xuiCyotY}c3faNVt6A?ZA*~=VOMp9EXHmPnx1&{GRw-<2vJ2KJq
z&ib^k5fK~{_~{*ay!*t|s8!()Cj#&SMsr3WR|LkoQ{3|jAA3gz-?~1BlvQ=3SCUI3
z&j&6!(_(}0{e1wSK1Q!o{iJQ=mS*@4`e&5u#Xbg-Tl|vdh{wNITp4pM=d6R4ich`s
zL<@nej`kx03<G#=vj@i_7y`KVo&t_tVPkUCD_hU~*)oCOKjPx_)hY0sC|g5BNIQh?
zJi`=>vBn@ogjMrRbmt`2ZLK#8K{)MLliOSIop-Fr5cVClZu&`-zlnh($z$7(PnG>s
z3w)FG3RIg9FpL3ag#sS<$B#G`sO<BOc=OM>jGf(KG@L6i{_B=J{^6o5^2PdfQpbVD
z^Xmhwnm=|mKZ8Z$YnE7e>=k#+!9T#r7a9NW;w--U>ps|4c_3B;t_e3(B3y8)Iem`l
zd~zZfnlVm|9~A&VQn63m=97*#{)Xtxpg*54P+sM$8oP)7@ue=p8RqIJQ(plCGHVFT
zOWSj%PZ1A)>U}Bc2VC_iUuK5u1Mm4tAMSY41&Fa=x`D;B%sP*>3<ZClTjyiOBm?bD
z0z%Zsxm1nB14eH?oMM(ui7^KOj8HA`+ItH)Xg^DF5cOfL+FOM4hkJdeGw|=+x1ZMp
z{*4NozZ&hwwjbMnR<VDT^;0+fcv@j>|3$?Ic$)2(fq{9p^Yf2f=$yD<wg@x+RjwOD
z0N31A#J^tcq1$!w%BBDxJtGU(uWw5(5s+~R|NF;0E;%s`FCe^$`#*>XGuj1y`+$qX
zm)2hzd}t65E`r$|2JU;##ljh8U1*l5u7DQIGWhZ5gHzI;`0_447}o=X#5gp5oq`*z
zw?8)gMgYwKS^=~Jm;_)lfDQm{(f`LSf3Y#U37fvB00VuNxdec|aJ4@2srNZ7nFSGX
zwQGlnaL=<vWROO%rxE{k1LLJlK1_oKP=mD|O&P);9(8f}5-X}HcyohOL4;Eead7ja
zMG%dBEdl_zKI46FPvh!4@-U71>4h@`M;st{avObSd2`m<x2IRN`By6NRa<&9k!?2t
zXo+mSJ+k|b$PctckFyj2;A!^nDnLNDeO1v=F3dQ8b<Aq>U29etaj||)p#1j7eRNnE
z-1nypZhbUBJYcS#8={nq+n;iA#$nEzLc1q@_nsUh;{bx{JhF2HAYk@n1ABTI-8rrc
z3lP7y=QEvqlF0#!ua9?w6XWc&s6D+xqx#g`eoEQ+8!H%pM+5>UMSpLKo@Ycx?MEAb
zAv%j%^dD&SAOnzdEa(3&JJ+6)O_v5{RK0pFlX3n19-2%G44~ai;hNtIeEm0lu*`mA
zsfSm+?!F@4dr}I0h4CR-AG05>$D=9=GL*5J2C!(RiD%b(bp;{$0_cKMEcE33ukPE|
zhi(5uRrjZqh(Bifnj_m+?SHZo0K_058$B11ZM%x?$M)}OK|sj|ID&XZYideMlla;D
z&bHX~x#l+CXV>}Y-eW^@D3j|H8gTKy_G10^05#SVmf2Y*MR@8j9+u29>!Kr2mq;0e
zvyVvO#)pb;3iu}?_yOa6C#P}M%{ip)y1q6ay3(Y!W?XUb<gBv~01W?g5Gv>SY>n<y
zjlWenn<Im7Rh+`4=-*Az^W!vtmjD7hg#ru|x=_xyQ)eA<p!x1YSBRQnD>JZmi^S`j
z%@B`ADj!XzjfWmd;jh2f1G^3&fEjRX!p5Berneh!y78AG<$!V6QX5ab=D#UUApRW3
zuC#E^vu-I0sP&`7^&p2V7nss6KE7sZCbMsU9~Su6tNN4L_Tr7dNwfR-Y*FmLJ@NrD
z2xy32kI_&67Ze|$Gl3=WUz9BSa=81-%N%yyc&Jy^Rtd)<Tzy9Y?WUs+m_kd?gpYr-
zh(}-XVAR~D64p@P{BRK$9+xT&4I3Z!4|KE$tlut?b>2Lm)K_49=(G%e^2dBB=&A$g
zqI`k*;?pc_-Qj<J9{?CSKt%=AuUGZP1wQfSucH4r(r<}afwcCVMwI6UMFI#YDj-0O
z0I;kjlWl9EYd>&~#hxG1ytNpnWibBl&OD}=DKPctz=#MbLty*H2E6BMJ#b8_*$F)O
zyo+O2*zkk#HL#9|aPWQ>9)HDyA?Qs30kJya$KR2`k8a7svFcS7%y2!z`6rv!#;w7G
zC<qz{o4=93_{FxL)@(Tj`t8aYgM76JSgj4nM1QxV_e%-@l5+oYw&{HFJ!e@<nj6A)
zzuNRT2%WtW&%7!i!GKbfCz&zH%;NJu_VM8JahFQ9DKdg>GS+VoFs)6D8}J_=MGu(N
z6sq*S8Tg+lY_V=_Ahb6UHtvv+bxH#e5goMD;8|0}C)P|&Ipf**#sdJTg#I0E6IYEn
zjslt$<R62A*w`JER{*OcK}F>0)nXu({#SE=GM@{+d)awbDz2cd&6WraX@Ps6j)(--
z|CeA8!S8IuMPKO->53{vtW5)WdaaM;bBuB4077G76kLX5;Y~{e#8-XEY!iRk?AJ{p
zkePAdQiEqs6<6%r=Z6LU)moo8;?GpDe-#9%XAA&RnytsLYofd$Fwj`PGWJgZSeS9z
z7S1*P@%TeadH)(02;<hri<oSrp$dk^%n=h~vYEl>f9m6|r(M`4RmB7{GhTTkz|z?!
z`~Ytn%Qo1tVxEEL*ZX)g>k=4*Q&*>O%VR~@M*RX2KOj2oShHc%Hh#}O05G%z&?|k_
z3V+q;)k@#2;vCYNvryXr<L?<8yVN3lHRo4`{w*S2+LWHV-yGx8r3;MO#Jx*~2|W6;
zhcwJk_EUe!u&*HewYw1){7Vm9zd8fnxrZ^eO~4BXZ+7udrD&)*OX$w=sGE6w?c>WB
zU(Zk~m~qm9Hg0*;g=N&|vk(ykfHf<Pj@gED{J#CZBKTK*fSUG8D|X$e0RM&ryU!}W
ztEzr+`>#ZKabJ*N_p0qP!j3iRdi2x3I>Tbus}JLpO%d*W&Vxmj-LE8Is+qwzuVq|)
zXAT)>WFUZ<VHkuvpK@{Bs*vy)Zvg-^W9B3yta%tk22i#4q+&mcn3sh!!T>;hPOaZ>
z^)f@YHqj^c0f1!VR|R?Ws((uX02!1Q{lv~7Hu4zRCy9or{lu{o&|7_y90LPjkD0rB
z<^R0@Tnj}PT#rR6i1FNd7g^y{HcI8s>0%?!`+P4RdD(+y4DAHM{|+S%Zg{AO^NvcD
zh6|0iLo#E|6cd|v1a)@+akyq0jI<LL{Jpxx#{)081ArG1q2MwOUuxlrSN*CP7yUj2
z5_HVL2B#eQ)V}?`BI~CX0IRwGlxF))(b=Fx`Krc8QtP1J{--j1Nw!~N{cIvEZAz_N
zu~3|`V3wd-TK-C#cUUEkEn5t51wc+Q{3oEzbnx3-EqwGpyCDQdAYmJR&P<9>bQwhB
za~U*e1$K2ym;!ZgeU2H%v<+laKzEMu@JlW>@0J60cxK@32iy3~{RL!G^$C`Uh%;#t
z%l9`{EJ!&E#^W6@-$Vx>Fu2N>mB0eTs9zoI5mSAnMEO4YbNoKa`+e0GAP>ncKOBK@
zENpOAAF$XwZc00G5TNGD-*^(&&+c&1EHcRqfU+sY3%SE+#J~M-5jQXH!N<?aU`~gD
zqR-%j$yS2G!av6Z3a*4Zj;B;J6Xs4a@YJgw=1((gHalj9WrRBaZ|n;2`$t^7xIyC2
zYb69MI1qqc#G(IW!7|J5rVxa~7F+n2U-V(kA`7`<ZKa-ZlgRYRgjv(*G-G=v^I}gf
zw{P<=0sbTgFt&eN0|8l$*;DP`R5tlQd7nVD@g)0K(|x6OUjXbfb8jF2=ljmKx#%+0
zK0=y6#Q5dC1-Pz2)}moOCu5q}y{QqWf3^poy3odv%N=B$a8jWDnHUVmBnSe2d0zqN
z9O-~deBwA;2*i*~$T%VRHjLW9RqQX*4xy_Tc<hxT9)3B%6VLnDoikv=fB@s7lYPAV
zgp4*Cn9y5bTzG66H$PIu@v9sRGXH7VU(xj#Cmmt%qt6AO1#sEk4gd(1g+5~RFO;A0
z-%=V4sDc1B&lf{CPXPl(0674C(a$`}D}MDTpd<;(02d1Q(uJp*@cr7`Rhbz=0Czm;
zB5Rp|H?#mo*fN8tP0+@+S8aUws|C!S8sOw3P0XEaV0xQ?X%KqyjBQ;3HtY;=&l5gY
zEim!+gB|z*kIVdj>;z^`61ef9AS{RA>aHt5a4cZUZpL*F<nhe&z_y))4&lHu49v5D
zfEi4LPU%Ai3?vj-=8B9<PfFv)hl_aIfp*QRY0N;bz;wz{Ccgg*_cH+gX)oUVbu~WS
z_A8C`jR8QM0!%BwUl;mOg}dS^|JeTfklgX3Du2cxfcH;3%U7>3k7;Q{-A2e3J>b#5
zcyN#&-uj6z90SvhCj9Uh9{$V8VfhlqNr%{&+9J@94$GOg?3U=tF&_G}3y^?g0nJ%~
zqBmZb1Hli%Zh+2SiAl}X>(ViR1_!w1Nf);~=wsbFz>+pvOb6`*G+QCtSd@%Hv5*MX
z350o54gBHJB2GUP$h&o^1>(i?1hqBO2i9)iy8(dEoPbC$epS<3AL0=+0c!r=(TrbL
z_$x*mehxrSboNG$ps29`Y6QRlcyW`{IDfiva%&TD5Y)bdhI;Xg&R#}q1ED83yoDWC
zFA5?U%$RMZVD2Q`_S*n?_7RXDK8Aq|1X_dxTUvM}lfy^ONTKMBXGL0q>obH1qn2uz
zcR@hWm-zCveR$y+15-sBX#vc#!rXpPdRz#md>;rn8Q>EUCbs|^wg*VrRI~GpS%AY<
znf(20z4z~>06^XJb;i#`@;nbq`?o6krB?H+z+YwjTxIj`RcyaE@(Hp12Nf7V<O=xE
z+YUD&nd+23W8Cy`0p}j+;43c=&+Y-hASyYzHq(R|SlIp?<G-Kw;gVOns3|5iz(Bj%
zfDO&PxbRdfktG;s93WQAHSx?^A1ACbhJBSeuAk;mN8}HWyZGU6i)hNFkufuvCc+9%
zN#TP<G*rO|hjvvQ0pR(Jw;ycdo@ZSgy2z@>5GKkO3CFHB(0zC6yjOCC>&6=*AM4Fu
zV4#$*p6gRvcANx<ppNg%BrpOh{g;o7zguwvx#-l@{{j_w=W=-ev4<L{$L1fu?9c8h
z;F1$l@cp5)39Qi}CIFKNCKF6zWK9FpEC+MUH0GOW%(K#%ZaHWagp^>+pJu}K#%J}f
zdbmE&(M;Hrlfz;FxWB3gk{Lg|HIIuvmq+3G2Fx+ju#9MQa%A}W1Q-dzU>%WxBpk57
z#B=NFmpk!&;J_uujOER#`FrW+ug>w%HT>1hJ+^<fh*!0L_3>#fEf6yTai4!70{h+3
zsRIC2_(!Gx0RVHRix174NzBZ3DEtj&uXpYVivS5!G0n`%PkltGMImuz6VPs1m}#al
zH?sfPRtg=Kg%p5Iy8;}w%pT{Pe+aneO*Qc9<{*+MAHFZOP2i<XKF<4mH?IAezyh}k
zO{N*zdo-L&M8B5=W(X*_gS+1Srki+igAdEBUpLU<t4ws~_`LB*$&Hl*ND}zbjbH8S
zZ$o)czgp-gDo}?y#TYw*yp{$?(*4$DKaow-dCL|Ubt(K~W|#({ufX9XK0^Xb6$^nF
z0}CQb)lmdkpt3o~Wy8&hutx?sex)7e|Hiu$0O6=*HvaTy7sDyOVFnsfz@5*!_}~}%
zu;IQG4lpxio4pZ5PWl+hxc5`a!SB^!i)}pkf{SnxbM5!v513Xj7wGKfx9_E!f6{VR
zfqyLL8~5|KMgAZL_XY+Q^;R0)3oQVM&pr$k{P9s<_$vWmf#V#!e1F41od)L!0)Fzx
zJT5yW9TtZ|4jBNHt>w~}r7#L2DicXje_CKHUtp9Z#mDo(%#l1XkQuUDKGZ`H#3*>c
z=dbR=e|#^%!dw$NEE7y&fJBNP7_j(=2Ca!AA_Ow*PS~<5sN1B_Nv+`7Q|W}g4FKqE
zK7@fqez6mXmA%>lOaU-0Iy<7jXQSt+Eq$`WPkq3LF7#8>jGq$#I67LzQLW8XkIp|B
zg7C9D^SJb+H2MmRBUXkBO)t;kgw0>)NOd~IQ8#}M(NYlsCN+t1?*L+&d{&3RYg+;s
zV(@k+Lol}Qk+}3L-MIZ1ghhS>GNK&q>yA_3HHK>Bj#Ua9(iCa4*CP@DuUKfnGU@!i
zkO8RF=4+!|*ee$Fni|>ul<41a5MZLen<we4G~lP8(f(@fk4!{(L>C{hSa3bY=Jt>L
z4s|(}%(h_JUTGdcCC99*A|=_rrO_xU0D>7!&HZb6yfXl<&zRIi=<Ka5coetrWmANo
z+@8bb|CEFId<OfOPT2Cu<v>Z*lsBNZiSUq{9y4(Ip$=|(qzEDE<39sQv|@j=V?ipl
zay(ssbCeBVbpXJ?As?zENTa;fC#(FQ3gqIppE$yY0tnQIzgI*5c_a`0kx5QqVJ3Cz
z0ZRl5MGRW0KitDI!>V1|3^)Gevu*sAT{N-{M3E|Ms7bAgv@lR2O?M1oiXe0blP3cm
zO%(P2kMDz-(N_qI7)>Jt1X5C|9>6ewqRV*sjR4pGsepCQ2&^)jP&63<0dd>D8QoAC
zWHADOP2u|t<pj<<I)!WQF5q3qrNf*o)$$!dnH2H<bLiM9y=nWAt$Ft?zUiX^?ow@E
z4FXgaFirv3T4Zl3f0G)0ujl>y6uZ~weI(`mbx!DvCG!pV0jSosO+>i!=^{=!IAr9S
zGeA>w0NF_c001L-^r;>In3@lWoubJ=XCQI(0oJ%K{w-%m2(u>}c=S~d$1bxW2#9Cs
zi7<7K-Mx(4A9r!XT`rauvRGvr@WGHo1EM!|b1<~)$`WYG4qj{=1^|E;0BM^_3`K40
z09d_3;17S|^8q~jRtEr;s{M@w5J2d!<X3Zi4GIX*pQ}@Ss;+lT^~JfrJ?PK-#~{E*
zx!yPH0KoJ4&;_#uOIdsS4>RM%4FQ(TF~d!b2uCipAX42BzEigGCpiEM11lu;q-Yr!
zV20Te7S@Hy?ujv${;4M!pLnqkZPS5<cA%*-?3v!V4cNUIu)9snH?wFlQQG(kKwP3h
z2{aBXw12z^GiikCYBabLa7<uFmqcR*=*ia}=`fh)&l1KT?(-J`cy2G){F4g*D1o4f
zmv<b@#vMPZnxD=jluQ-ngS~Pn&--^PV4#3<)jwH@0qAI>MUD*)3bo&N%K$d+2=KOp
z90UQQI|p2Rf{h>k%0tF5OPxMQxH#q@%%5H{X(Fr*SO*`|TFeP!_XOaPSAA^0PvG_$
zeQ=t9j;SGQ+SSGA-UaM<oiI;0I9jBT7YvSyYh%D4Xpx`+t)g4;#qBL($fRB%8K<tc
z@y91z9I-T>pjz7=Fk`adwkA4kOZQuw0icASOCWi~r%>({X-J$jr(kN)gev1HBL@&0
zeq8jYR{zETz#VGy4*>uUpEpwwYHS8&4*ScWe$B_}Yn&3r)l&dI_D%=iyVgV2FhL+N
zCC@-MDmVc3RGonzFb+P*j4Ig2zY`!LG-L=<VBl~s1G%2zy$<*s-uPJpm<@t&0s%41
zXyYd$$O;QCzM+O16>wM;+>i#Gs4Zx)>r?O;E9aYdb#s8pEwyW@2a>ROo`K)r=b!Wz
z1^`I`K+>|-#kyFD=2f;&m-HpYW>wklxY)Nx0sU&%Pfh~>Wj+7uhhN&1TE1YGK+&yF
z<$q5eXv~N*Ch?tzr|^TDx?y-tWz<8Z$ln}>?b{Lf4;mzv%rxr~xsJsVFr%fBFw;!K
z+s5#>G2EBKo6}A}2NC933_r48TiN&t<vHB=hDpWtg|c7*2Bx-(A#?jgghew=-28AK
zPB_4>Sxbe8(9{65G|_PwM*u*Kg5je=<exOwH>UX<l(+J!qCKip(9;Q|J*S{W{+-d!
z*bx-8*Odv>Ux<thtmtT^nx%h<5VihEG-ary_brHU+G+<PlaJcdxO7AG3#MK;y?w$#
zc}qkZz;^a9qgh}Ar2k7G2@Lp<VU;roDM82@gtS4h5Vi=K#IT|{3F>uGQziN=S)qoH
z6!ueRvlQv853Rv)!T~n!e9DbRKXa{n0cK4lZb;D)Z_$lkBy9Xi1HRO;-nMcZ;{eV@
zd5?Y)s8Ib)Ebfz2z<*bC#sNXx^^?^4S9bV5FPk|<)Ma=UGw}3l9uD5$DixkGGkWrj
zPrTDXr`JCYS0qp)N%PS4x}TEmGoulNVuOSs0Gb#C00@9%5DFYXP*~uYHNw*o1cMj`
zQ`iBO0Fcz*MFP!ST8xp8nbIbPp{B~n7a7f2fk1Mdq=A9C(}g+Dab~_10YD{bPrda|
zozNBM{F)Kw{o?^XP&V|K){moiwXjD&)oOqBjM0BlNdd^g06<5(m=ws`Yv>rj8#^WT
zn{J@smcLlu1wMOm3Ol_5Km-vLsOU}7mF6PHUQ`7E8D?w|0S;emV?1jAR{}|{$8aWd
zsnWCTq!|2ASqZsWfh{o-06>4}$Y^YoA@##U({`~$uw&JOO<_!#Bq)`_X?p?nPYKId
zPwzD;wjWFT#sOPVv1zq(U$_4_t(PCf{?+;)e<=DtU&Q1|t+mhmiB&0|e$B(O*+$vK
zPXKt^K@KKQaYN}}POg-!1pd|j=~4k85mF2+JxHLpFtL`-{HX$410NPRA>~0ZX<!|c
z9t0Q(^l}-XBEW}_#?<h@KR`HcrHy-^^H85oAkd<D0z^3VtposQkiRF@v&8GR5&dmH
zlMq(>C(Z3vmHc`uocd;;LwU}>m=O5~l{WvCt(m4tEii(h4mC8)xcw;?Z$H=>aH-;U
zv&H*)AZ8e#in3^fQGjtMm1dxo2s=|gECUmw04P5C3XByi3`mx+h!bla)LiFaQGnhB
zP}+$Y2m;3HrJ+8;P?v{@z!I1<#lYs>vgRlt?g^eXRiyV%r<&fP000T#-_QbpOl0S+
zn(fD}f3d(<Ozrn6lzyLL^F0Z+UrF&(l>}x~Nc}~QdTvK+J%BC2u>sR0^cBiGTZjm*
z$GGyM6gvHU2>v-4$R^pp+5)J~J>Mi<%xpF4GS+r1SI*H(ZM+5-DJIxFu;5YO{F7|n
zKysd`ABi$D4UD;yhoAYL+A6SRR{+zf-Ip>m=FbvLpu^uv0Du!{IlcN<O=YWWfD>)@
zEs^o-jv(&;m60*`DimK#^CwaLIW1!F2ig1wSc+uX*4#iwAZx$jjz#EGs@n%d8y@2`
z7i6)^&qFXL(tkz;DsW%~05meN_z(j<Ii66v2ZM0R!497BUD!;Cl5plA5rCP1{0E!_
z<k-XXw&ABoBr|4DHn4F=P!~$o_X#tm2na!|-onwpYWqpIDZZs~v0s}81X?4%5O)B%
zC@=2Yqx?*w`eSxL-}u#D|BBWf08?9<>f!K#mpAqo|LTC8h_Gyqg;mRZ2!twil~RC%
zwf>bRrZMm``#AYPdz`BOS6V!bq6bV`3^Y>6_$AdgS=#1r3;_hn=x7ep2u?N#XMhaz
z@}wO?uE-F$9PiHn03ZNKL_t(kp9z7J+Xw*0jqQuN`tX5KK+;6Mq#VA`(gTgkskQ^f
z+Wx(f@$Uw(Gy1tJ0s`Gigixqp{9I}Ck2a%}ZBbn!zO)lAwtO-9{{<1IwhA1(ItY8k
zm<Lc->V{`0umCCu*dRSjYY}zRE+5M@z?=?&?T%ma{Ob2L6Bqz}(>Di61B46!qd);x
z%&~?~=@DVZBm<l31ONibJgtKeNV(!I$N*FV0wUpWI$ID||HrMs>cqcT-7f|L-I1-w
zcE2n7y$j{_KJE~kf2Bo`u`Q~7_6Hb`z8p%*R(h*kk@2~Uve@MJlo&vPWD%fB8X#!^
zDQ2`0upS;VjsOu)sHNlki~|>&*y8)JnaliK5(8ijW$Su6AW{ZhxioC;9&P~V2S96s
zKu^B*iHcz%Adzih+}M7-YXDT^Pnz_nGP1gEw_fyTpj_lCUJDUOFDv-l9XW)q2pFgp
zzp)e02Yytv5Mrckt9Hc43~bmgF>jiIU=Wde*JoULej~QZK3EZUPs(Shy^={o5;Dwq
zUiw(QzcnFukU$dVEF*vzR^$ZCK^Ood!4ZfG5kOc{PH3O$qcJ^vbwmO%sfn;-kE~Ns
z716Xwf;|uO-hvyy?gvDLTcK9*dkJ<*8p~}fw>o}a3<SC&+wWAE!2$*r{0?{X2Y{?&
z*Jl5*^zW`79(27C5p0Wa$;k#>8H6lg6a*x(00Ke%zJCS=wgEZ-(nM%vpkaTCYK<mV
z0Kfo_KhVYt?7@jt4wLi_bXHWKAeRILC<6c6gCdSwZo?nuz>!!La7t@9vbY|MkRO1j
zO`>t*pzB=&K!Z2|eIGLvXQ1}-yC@&ospjldV4+t2$6!De|0yW+zb^VSIPELhvCKLE
z05G2Xix+OlG}Pt?TzaO7zQ8YY0+m{V%mhlXkqEEB$GoWqCQ1RI79C^FAr>}yeo5-I
zQZ2w>`M)IkpP11teVnw$Mo*qcWVNmjI98oFKmb!ahysbFZ=vX)2T29!g@8Is%Ss@i
z7y7v<?*f2g`>ND$pJM-UVW67;{)emUm#&nu8%ea6al#K<^oCkGg!jHJgDx`%Ghzjk
zirA8v0M-6?A;7$7{>Owvkwj=t6U-SBnF@AqYPO%0`qP#F`WGLei(IT(Jkt3HgvGPM
z*#NcrR3gChfN33srA_I@Zv_A_l<0@PZdJ)@NBOtf=L-!KBsqp6%E$N?wMZgq<4=_P
zP5e@Vf<U5X8qE}hExRSAw2DD<a&d9knQKz$Gm4><B~e99faLLsj79((5g=vJgem}3
zm(#2^1Am5FwlFHy0hogTfuwezwX%SBu5myk5%q|qN}IDH>Z`8Z2~27Qn6cn36!{Cy
zr|3&pXRTA3?VDOaAQk(KC4E)f_cZoE4II?}uT<^NL!cR-Q7Z!gboMYhnnk3@H)PO(
zGmbG(^kpdxXjDiA=o?^s5x2_#4Jn#f1%S#`7lM#$kqEe-0kkoA<-b5>VTsb;m?6P9
z;b;S$J#xhMI;%tA^=(02e5xNXb+ijGV_Xac6E)wpWT&8~094~wbNun-uPpk9ex$TO
z4~j!@mFPZ)^7cTz#V1MXR}RO66SL<BsJW2FFv7@wIE)h!A!8HP9Kw*S6s}aDQ3mF`
z2{wR+)^Nu5L_OLX1a@a79OeNkXL`lI7=-pW6zY#69r2^q5PV6X5pLoH!punm8+Qb#
zeJ~sYOh~8Diiv$xvi+oS-@3x5e#Vpi;-J7%Zm}x(rMCsE#l9-tulD)tf^b9IKj3;^
z?E%299*MTb;eqi$0%sqQ!X7Gw^0!FNpC;A3gto!hB^h(48WR@$2LZ7EToW7pFb!Z2
z68#&fT>Y>2{~G{a@N;<oN$C;WZ(Iie!jSUe!~LF_6yW=^<*mX1B<1)-g`ia({Tpil
zG$~*pb_A&eb^yx8Ueuxj)dA=|{=+tWWjFSGA2p}ZjA-KLaKr?d8LrQ`@YpoA28A#M
z5DvVC;ACYLy`s_sFumPCATc2iB1S`suqz!Pjj$c4k`qYE0S?If0i_{9uLgO1;N)~9
z#xn97JEL7-)6SqS4uAp9rs=KF2AE|3ItJ5Q0QH$4s_n=2AA<oi0SNdg&+)7M{W{}U
zQSEPt!}WdC>;QUljHav@=GrGrZV{NXD1gZXBLc4Kg$0r;s>8<-`oNgcE+*_^k_;^9
zFz_0Jk{*C+|Dr-5P-*B_d~GBHhaQZmIC7*uDVz&H08CMzEMPWGaD6mRWB@=36ksK`
zx{?~03I;M2Hhx{}g%o2}X+jn0tLl(k9RNUKIDO(nUR*J}=s#X)M1*-$46HdqVrOFx
z>%9Uj3M1B-790#fYzhKcX<$M!fYF6F4Zz8S%805SK&1#krTcU$FurcSWUN}vXm1o%
z-c!c(Ne157DN&Ew3YMTuiYBh7POj`17`!E0PY39>pH8rSGXe8T&HmMYSBm&~gkP?A
z=)C>VM|Ymlm>K?p%M}@ypP50=)E>O*=TMLmLb3ZK`5Fd;L9iHj4nCUGG+`GNGoz!C
z&<z>t0U&wc*<b~K1JeK$g8$RfRVzDskqmIHbs_PQNfTs%^h9R>r~*5!r)g{?*KZi8
zoW|Aft@@rod3sl`Ki~>~ANH*?4cgw-BLkyG7j1}mjOECjz!hg_@x9Mv@aexc@s!;I
z5SI)@=U@Ybz3Q(80d764h^dpr1O@<r9{{sD47e;|gA()qgNgn0FUrty+C+H4=*6cm
z$iVZtDrrX|Ldp)siVRV^2apV8(hx_?$eI)I77Zo%Gniz9r9H+#WidBV!ESYi7Z|+F
zaKxd!0c`BtQ!9<e=*dYmj{pD&B1~%&`2OEE;s;+!W7^S0yzCcBvoD}IIT=N_CIMgZ
zdolGm0mq!U001DgGzv&!ID}F=pw9daRrnjr{t`3x1U^nVgV5GceO;84jP@om=(yq$
zF#stbkmDl-C~A0K(#U1KKwZu2rBGh{r&IiDb+1m}1Ld6nK)IlhRUt4;nh!JN@${}-
zZ)Z0LhEYSj#|$sPh!v!W!W@1e2@9qf_~n-x@zSJT_|fceHPi_ritu6I#q-Cz`23|=
zFaum;l*$}}jp2x25Y@*h;v<m2oK}H{0}mNyn9*5D?suU6H%B+0U@~yO*Nt!dT{cqw
ztIi29_eTL%owjU2AkSxGf_iGb&eGIuQ0-1t?cdf|K6TP3YxbX1w5JyuTiR=wNERa+
z(E>FLY}~!4)-_GYyHWSZh}K&4Jd^N|(=zz*hfO@{_k}qS=91k@4oBg74E(Fzjn8~O
zgBh&`9GmK-ThBw*Krn}MPQoCkK0YAp5Z2oPAZ1wrpkDJ(sogh}RAv~&=nVq!l04pf
zVj6+0p3xy9%<d4_usuLM+AD<sxIe8u;Q)X>*W19r85J>|ug<B_Y5pX-PX_`z#h+Bj
zrw<&e1Oi5M=XQ6YTZrm!Hxt42fRt4oh=}*8ToL%ur<(A}^ga|N0~|U4Fwi3z*UCQ3
zdoOVLscCfQ8Kyxs7pf73bFjaAV;>qbgFA`)p7pS`OV-T+NC`AL0*gOl;HN<z*=PWW
zrGWsE5GIDGKU`EBy&_(p-HZSHhb-Eg1ca#VdW2meA*)l5!}B2@+cr_=wI#BCDy6SW
zQt0!kbedmp@=*P{p5D`Y_~TRkEJ-Xv)nfjRjn3VBMiet70Xzf&k9dr1Z1+S2$-v5a
zCO-0E8;^Q9*hC1J!*RDnc)}~<h6R22?msmm;}C*?VNh+wi_8ou!(l~#e8L^nt{c<9
zcW=re6@i?3_<)Q<IP>ieez0F2+x#FLZH|Gx<Hi8`iAw<hOW=v14+~E7@YN4AqOTBx
z|LQ+iTcbc{Z+(iZTn`Y0+(c&pV#8B4DfA6r&+n_iz}7ZuU|=z!p7Uo6p5v=jlr-X7
z-&f%Eu3P=0rZAF#=T{FR!bKZSrTWeljo5WS9(VeEc)@pZo!^U1#}x2|FJ*AlQX5`C
za9zMQ>w!@jw>(?KqYwDV7b{-_AqX#T_VL|s6wp%)9Y^i-c-S&^$UF<@U+Lg0=s`A~
zk-!5fKPvO~AxOBBdT`Puz`uXA0d0*Ua>C<>8YKdX-h>lsNUHZy?Z0d$l?DLPn(aFn
zIO11NDO9rk__`$(`k?|g9MR3UOtEoyx2&m}o+A)YyO<c^p!p^~@L>zLTRr%*@8Ti9
zh~G8$;INMfeDQ+~2qZy>F!B#SGFACr;m?#s`1VyfytXB%nDSy~6g=SR`z5|}W8a9G
zj!FxxDMRS$Wqjd-S=@U>5ido`fI?yS67#<trVRe#yV$h258wJi1{WQZLf);9nbp%+
zi(!4)xBvj=2n-(ys9UYiN?~A+e^T$S-sS_1{?ns-y%s=ytg00-RMr28s6av3*xADe
zH&k6z!>|p47t~HA3c+wa#%C_fqIfQ2-L?QL=Q=35VGfWvG=5hyY_k?;6J}V7KI6e_
zd|Ze$o>=E%)oeQ%t=qubR|C8YjrixU_2BEDYbb$*>YXQ{xq;BtCo!ejz~}!li_d<e
z8<%xwku?Mi2K;C|aA{FQgOs-V0bZVy!~cA&34sh17RTjIN`U9_#L{XV$o{GJ?<AZ_
zQ>%5>PaWqil?|K+q4K$c?dt&nReyhYQ|F$jjW?*)mH@+ud-7}B90N&MIoHHbzSM{p
zH~N^;D$tT~;QEN>)Q3|mWgXU~AqYRZEsqO!WpMRteMmb%Um<x(JhR@zYS?JJk8o{k
z0p}f&LQOFMF(ik#-w%LKo}0x_+w*wwCLixK(<QqnFa$zr-&o?;2I1DA7Z+b@<LG5s
zcs?MR>NXNt5K7~mYi9pEh9HcKd5vO(P9TYPvlYbOfUvEnN%<N79=G_|7+BB^luHAv
zA|EO!(1n6xVUVO=U_CMz(b5zG8#-&s0}_Nlom%p!L<yRLu>Uj@1s4MbjF=*9S*hLu
zgvD-O{&62J<_zW<1~%>FiZun6Nf0{;f`Pwv8}N5u?THE>Yoi0(8w7Uugg)K22tWEl
z6COOSh}*mZED$W>C|qF(W|%~{U-qHlG!NgqqA9BO<*IZ3l|q1e#S#Q?(Zxh*)=V1n
ztq$~wqx&rS`}%d;Z&VlnD}ky9%GE&imR{1pLHyX*_I2I=I6$Z_Dl&|XyZ10mqn2CF
zFh!UKsO43N;*(JHfO%6)WNd;LP>I$i3j2*~S?MwL|MF%ZeRlvYra)>t!LCqL$Y5;R
zC9$6{aj0pbcmv`0j~8K?wfRgbLk3WYFj9WkQ7N2prH!lFda%{^kwvK{8bl$Y-0b_f
ztD^`1`cD}gzSx2v)L#gV>L&z>q6-+t_^|(xFaUb~PwneZVPFrh9to(kYb*?`){QT(
zhw>VLSO7?!@D=|%k8*JkefpP700P503<Fy_yCr5#6;&D(B1(>G4M+woM0LYf|85$n
zNd(9cjQ_s9fFswZAq`*(4BXdMfFYa#i=Ua%TVOQ%1~Ooz0DP^l5uf~8559e6BfKCk
zBpUhmZp?->;GD_fwd=_-K72|B>kbKU!|i?8{uHnf7JLA&z(eyg;M4C+V^TArKdW9}
z2T;d52!N@xn>S3r=pQJr;#cc@vdZtO;-_9C;9y{mUZQ_Kh|2EiAYaw}P;I}c`G%xo
z;$bs@&vy2?j-7&GK%vz~e%Wj*+_dYt6f05ulB;h~i*4Hwz_-7f$KP0uC@`Zn5a`Zx
zq8%H8uys#>BgjFDfOAY6xBt3`n=BWnA7CSp)qR+N!|!5H<iMFQwOQa_KHZ34-CMxz
zj}$OzhlwT#bb+z4!NYN9n)v7ujiWjPLDUTZFm`n@9Gf=5ofrT>kN$NEFlGQ^A&-o*
z$=llF)YDRoQdVFAT+IQ*df)Nr-+1<S4&^eSdXMmk834<m%^?F&-J*&SBaJxuP`we`
zCL#u4<eyne#>Sli-nbQ5X&Uf}-~-scmXWf6ygP77yu8)NG+!WN5}Fuj1mmi%M*RKv
zd+{$HZGc}T2=II^MINzCav*_OtpZnElm%VPcyg@|X5f<9Y1o!P5HJEsHRV7@3c#wp
zPdhpR0$!N_o4>9<qXqzKr%xRHXEXqyvV^t<3Jh)Y_cYM&p<D(ykMeQgeafjbfcnVq
z5!-)PH#!BOrI!2cSYw%nin?~Hi2MN{n<9Mjdp)=m4ahT)A;L5kcwv)=g;TA>@3wiZ
zM23I{FwzA4m6^i-U6aS-O+F5sYgXqsF))8C1i|we=N^^91;;Wr@0QrSTcRl~uw<5l
zq6ZXx#%Ky4#tdw&hh-AB?UE3JUY#f@fJ&;A@o8&OK&<T5jB<59UH4nf>-n0I$D@9C
zAsqL+6To)mj3@uaqkmNfz*n3=k`DNAN%wWT_5g;czNA*h6y8{bX%wn~$tpqtW`<z^
z|M7!7jy2OLMw@>g3~N`V);Gq^ZizW8LVaffT8Pj>z^B(|@NYlQl?sDKnhq$sp@Y$x
zj(9p(APFnySXedJf@y@C|7gmeGBZr0G|j8#W5+Ir5ctak006qCMv@Y>YX2(z-=Kg3
zRo+`oCB)!Aj^K0A2HzRk{*DCO---UIpFJoa{1vl*x;WT~ZCEna_Vh8;67@M2q3Dj?
zjWP_1Y8FN!dK%`{e|dia3tvq|7m?utm;nRZyJcbu&=i2NlVF392B86jCNMr|rSZs*
zJiNXms8Vwyr1<rx5`_ZZen9AG5?D3Y!n`R)$gqU|dQ^SD_B|3EEuuz060)@0b}}-J
z=7a(ONkBlKOsW2^_WY(4^dG-gyh#@{3cnZqBR+Ql*al!LfGyFvEph<6A_t&O|5NGz
zsyF`lD0so68#hZ>R`vO89@D9up@CEbI4qO!@4w99=v)?gaR1N+0vuPMuQ2c$5D~U?
zNlbxJYSj?{d?GXnfis>>;a{)mMb@D*nsHbFz+*UeWrtOA6jc7V(M11t1ZHZUw8o6>
zof4LXO%sR#(AfaJ1Hej%@>3|E?O~$4#m`kXes%NT69Ir7k-cwG&KMBvj{HPC4@6}E
zf_m6L7>{k)Q5)%NTZDqgV`Tk+V}`afTn`Y}>g?!d-20mVGc6MyQFt=YEDXHSDPd^#
z#mvaNK*}YUQJbzAUGQFJd{|`g^KTZhy+@9?Gbm;;cnEte)jo^~xMIAr$;YCZW=%_q
z2(V1>_T7xf-{_I!&A^9xoZez*XpTUy@;5Zlpa#Zz#NQnmetdRCM&212{0?Q~?@}m0
zb>wf1{Hv1x)Q|O^Tim>Zr6H=1E}7#mK1K^Q5(^s1+eyiI=p_$@Ck>c_;1VfC7KBWm
zuwi$(00uK)8NjBs5-EegMDR*Ck<mwl7DM2mCsX+L4LMlG$f|K&A7Kh$oOJFn1KT?#
zrniflCap08hDq44MM98xa)K}bK(g$w+6kmr`Kuj1N%kM-@cW`=)1%pbr@{in_P<Nn
z_<N(xKb{BRVW3_}tvl-Tn|Da6<)u;<;Cf?~0wCDt@KX*P711`N1wMCGFOIRY$TPv?
zF#0c02<G2dD=~01I$=v!fJ_gS5M2R47ZG|v*aOCUMHXNGY7TjCWC2v1!W&OLGL}K;
zD=-|ZHqgP$=;~$Ui+FlGBK+Zi%q0DPHOHT%@COVW?Hfn@D(a6n{n*gEl+C^;GWtHn
z@KwaG4r{KDU^{@K%MW*Thr{Hmd44P&Ggia7V!$!nx0B2$`i$@YxQPAD6g(ohkpqZt
zQWG24lPjkI<0{>tlVMQkG;-jOmu0|ZV3%aP2p=!L5TGYN5~VN>832ngo<vR8ZuK#L
zT6K9%^}0DW@bWswE4lo=6951tP4<Ka0+NdS)E<ASFn+Ga`1PTm^53o4f1KjmgMs<}
zIO11rzb5Vf3eNh`4V!tyN}lS`+9<HIXY6(|+oEAJR73>FB7EuRy*Q|+0e#Hy2yltQ
zq6-E*BFL_=II!G@F}e$kb~Z{hZZ`v6%;+IT5rk)a4^6g#8y_l+NIp9*njS9zfVsc5
zx*qAj*EdNpaQk>MaB~DsK#vU6DO)Nlph|qk|F8G$>SvN;h-pC&<!wH?;Rnk5jHudo
zsH5QGiCug6@TrqfRXFMg;YK-D0H9RvJk0lVEW)>bmxBOdbKql+VL~lhmdt2`fj4$}
zSUTM*GYZcKygq_YKn|foSrY+|`#$cnikN<+z&S@c*l%hIz4?)`C`Au-5f-T@1-N#r
z#0jhHNM((xb|$$zu(MOXgo%CV(!6>~P-Otrf;=z5_ElgI7xd;)Ue}}M_tj|MM{@sv
z&Gx^xSbS{5Rs)8?9LVY{xT9HMM^{iwE5Qf>08sRYA1rL?lz8YdAM@d1rD=y+BH&UU
zQ2_9JLtPN{b`udc?+(xm6NN~QToS=$;Fn$j-SYz+akPccEl$HS0B-~}I`PBC3jshB
zGAqoesl^%qgdl!py(D73b0Pr%9Z?g?dvQHwb5><KRYk9Oo_D-Qc?yzOPu1`X3C6Fs
z2g%Vu{u%@D=Pf%VP3x#mU5A;`oF(++YNwBe1ps7}9~<W5U61jpbF<)cfSVsF;QnXw
z*z=mefx^KIVL~D-ELyux!dMjonmG5?Ta@s&0|gUc3EUPG@ZwYtr=8&7Uk++O5CDPX
z3L+vy0RTqI9y7l=<UKS6p*ts$al*EwT8^zdnDYgU8wW7L4Idh#=PIWv+pDU!vhvt?
z^H$sUT#XehXuiQ!{D=A;mC}9n@&UZ7le?s(mTJ0cVma+xA*^DTW3Zz&qy&0$62p<1
zCj#0V1%CUrCcM5~;t!AIao7C;W(5{j8BS<-L~uI^T{%XhGD=qv@Y>n{ON0d<gbmWi
zZ)6@bjuN=!#57tnVXBOo;LDNOaH*4FYzwFc1xh=67?YYsNhqxbfJQH`lUQGLClmvq
z8<sA_kw>|xkD4!3dw!t-f%y3`;#aGA)t+9xuV0SE<{uqTY}g`k$Z}L!X-=5lCa`%|
zfO%6#fACu%BPvE<STZO?Vbw4ZaO!FY=Ny>=0l4{z0v>oW4{w8k={Xa*?hxgd(0RlF
zbTQ*Pk%O^P;@u~t@$u<t^cKSZV=k}WAIUWfWTd=>H{S__R4Gs_Mr}qlin_eAUQ*HH
zyC>kr&sszuNA0~RpV<<hDU{a%#K2$m19>I#S3!Z^*5_-WKS>6-?)Kl8=Vy9ze2imL
zRoLB)TGLD;R_q(yqoslH@<usApFx<}Zs5bGrtz8c1)f^#;hsO|@yHVr*<A*5U=&?O
zqtkDT1faJEcuIPBqs_(Y<1Kvqh(_d!;bUU;!;xRJu*1g?kzCd|F@YCe_pyAAQIjuX
zW)zCxtvmU3A3SbEz(&FVsAmiS3Mg;gjEy>n{&v6^1n>|*qLAPOd?XJA(c61Q1z%^=
zc<GI83_;AY%J6+!n}Jt12bec?^lzq=04VGS9?7N@B5y*$4MENc%N?9?ND2j)@%$zq
zFRqIbeg8x~&y!elmVtL1>LBe9T#wOLRB6I0X)+3#0}zc19*_Za=NK&wR8#cN%xoG&
zk3a9Dtx4RnscS+-|4H`mY929A0)n^=FoS-*58dghKqATh{R*2ukUS~0?#J#u{9<p8
zj}1Fgs!IU^^&22HBml??boF^7hRt!|U1u+2PKSZ_otQzx>A)+S13d783mKGycm`wE
zEP<8B8(2BJ5j}ZE`B<xJQ)GmmoJ3<<jE{xS;V`F-JAIsZfK#=wSsX~L-yG299rAbM
z$+$-f00QL>yPEOGx%#-WH`V}%`+!Y_4pj4buJTi-6f5cc%h5Fa_*k|umEXDB-4;kp
zsn&N+Yd3K3b1pCj(QJtUsPb*%#VrJ(;D!ddbcTr)vn&L%fAKRj{(pPl9Uj+NrT?Dq
zyZ25}vt>)}af@T8IdO`eMhaOHQVAgm5Fqpp3%jtJU08mw3!w&<7TVG_l#m3{$tFNL
zDNdZ`7I({4mSlC!%x&Lyet+D1M_1#Ktx>V;<i5`{kL0m5x^w3{=e(y+u9JAn=@L4O
z2E^O*Mgl2EZ|3%B#Q=A-Da@W?j3@+1L{xAzzp{lNYjW*84i9jN%+Vk}6NUKmVML${
z0|x^|H9>w!RIi-;d;2l|2Zi_-4Y<b2ovj*^CmO^0;5`+1vW7f3AJv3vLT4|JD0fCg
z;Wj|R)CmGtpP2~`K+O0lO}O&RG?Zra*>QtEa{boP$Cy-eXn6lb1XBW?y^NZyD6Rw_
zh6;fY%um0hD3hX_4~;DVLni>hz(pN#_3UC`K~5CX??wNVuy}h=6h|qxnq%KV9$p#G
zzm)xtx$pzP9WQq4V`|cyJs*vRto(En5hhdx%=%#TtZHUtQUbQiA>A1HTHqk0S2}i>
ziXXsezb{$bpKxg800j}YwJ4l0-vp0fxd=1k`8Aq+pKr$Dg~;fZ%06M>=w2_B{T%k4
z1CYYNb-!**SHwqrmxlb~@;}z;zI|W{ys%?8W62^6Yao!)jBGk6Y8{F9I8<GeG6@AY
zSdhabe68p!mpm8g1<j*J`s3*A)u^u#hs@zGIE-vM+O#<QsjyN2FTA4mY_{!}4kh6p
zY6O4=@x0>#8L{>#3>XdnD1C_7?>HDZ?z42Ek3UEV@}QxumpA4Md`4|`<sUqAFxD2}
zuo`xZ87l~rY6$JUjJhg;L#mH%h_*%wg0C5LD1`qR5E9tlrf~7nRJdAncsDg=5kK*~
zqRA8Gy*t|vE8~w6`R7>FFaEuZdGc})`Ii`258z>7Az*x=&tUC+2km4`tfL*f+cXF~
ztj%%+!punmJKGc*CX9U;K<OZJE(PFg9G2+l)o7e>=n#O8K8=Q25f(rXzx!v~Zl>LB
zeD|Stzl{nML0tO@46MS9djcXR*zu`>(eIV+`SxSRUhT*82gV^QoR)ZQ?PmS%Ws55x
z==}Ay001BWNkl<ZHAw_`e&9u##@G`80I07awD;(M033GqKVaHY&>>L-L=>b`h@ycm
zG%Vo<fSoOjS2nAAcW7ttVW^j*@IRHvZxj`fC6R#AvEhRa1XCq4A8+w1mH&fI{#SO|
zyA31LAtfg2VIIiYQzW(@Bm&@v^SY!wTnPZ9x4<}Zx)}3_$xz5Yf$`)T4;P<eVFVFL
zPFbMa9`sOOOW)elb7<XhF{DprpvPajt*hJ`&(hYOXoycQ`j>e`1Ae069yZF4^yD%`
z;Gkj7bn7R-z0d0u0?f>n&$ai0wV;NigQC6aYb4tH4o~{e0CF~?CQXM#A22gx#Rd<j
zEwYBKP>G0B7WnoDe5$UZ&mEqA*#M%?gBb2|@*mCgh#ryL$Cr6UGe6>KfOzg77{%dU
zm7=SMzkK(@K7}hmxU$b4IC_?WSGKEza`{S!J(%L~JY+%;9G77lG_J-!`s`8`p}9k$
zu0{;&dO~|ad-gJ~*`yy`+hcD&<nH+}lt5`EzK?xp0(gTch4{dq(mvq9miUaD@B_dT
zJ9-sse%t@t?orADS9%Z_grjB}*tp9-DDPr&9igr3Fpd8K=(8Esnep!cU}l(-@Z?$#
zCoeEYqyXAF7^^p`zrWIJuRctTKL(Ng((Rpt$-j$%b3GiCZ}%-X-(y@4^A^Yc?%faj
z>%04)nVBka0HV>{p5lWt*h+;wBOm~L*c~)M!5|~cI0Ozo1MNK;vl<NK?BU%@B4Wz~
z-}yJ6Ov#@<B=7kMy@67Xpfn=jm-*f=Ar0~G%NhT1$NHS}m*-ad_ix;;qX+<3a=VV3
zV_?lTA3VlFNd!!<7ueOV!-AE=mjI0S)dvfJ0%g=!z%VzP5gQVG&m%r5#h=Bi1La77
z#=dDhuZ+Bxd#;@9k9?WWC_)N;<Iiq)g=GSjgn@|&t{-%@q^+^PPERo`GmHfA;Z*>{
z9JDV-5rFZ&76RkWCmmdIMrv5a)ZwBfYVT%#VXb;@W5Id()j|MD6@e=AHQpIey63wz
z*T28vK8FlaX?olL-s!QFl_i6S2$O0Ftz8<180#e$9E7TQ{Do+^*Pknd1YjJ8fip8S
zGah{2#U)Eq(8I__M&5sO8{?5@)dO2xXE|P7(AYPRuTg%~ufHGpFP-mk$jSbOywkL1
zqx#PCYZZusRN#<rl4jJ`3UufAAe?E!+^G`VTGU~8n4%4Tj>oW!@!bVLM5xYC(eocp
zHi8IjNbqm(@r7o*|B#KkjG|Y763;-DAqC}ndP~{<A?doV?Xr8f?9~7A$Z|!22B_>Z
zZ8z`&#x}JTcpMBu%D}i9(cubSXP?G|s!CQGjm>pbr3h=c`8c9+c=<mfLdpXF^fs3!
z*5G}3b)%g8>oO!^u=L&`Yy2aed`#+J|MyO>yYgZ%!f~?=tZwoT%5~10DzSBsIxG*7
zrx=DoVY}`49D`^@^7ET~EL~)TU0jtr5X?*)nlwGT%D;JI-d^=;Cjh{{IYJ)7bA!Fc
z$SvU*V5fGz^ZWbU?a`>)p&D4tgxV~jC(mQ9-F!c&UNz+S7t#!aHDhnL#-zIO4*_m#
z(KvFtgs*7WukzS)incfFZ@k=TH{;ch1Ihbf^3S6r`!tsFf9I+ml`HT^Z@u3mLk^u;
zGc#sR7TDgZA;cI*wg{LzRbp$40w0Do0JZ~ErzxBRLgS``EQ9duIuA?co5Ru_0Fbi4
zKmLQqQya|>9m@Ay97JWH2k`*(C<uPEmN>qXptKh`zNcW=NT<YAKf1-GltmRN0bq8c
z#Ev$Fv5swN2BuDwXzkKC%mM)Y1fW`s+Y+E?{O6Nv9h`BDIUI$}%#7|{#&7QNc5ii^
zf5U4Fr5!_qJxYnfNOYKt>43N%C@1^FK3SV==a#=dtyVO*F?0n7qc$th-m78Av0Vs8
z2)d1IH`rl+SREQ><Q+y$hJsPx<A~k@Bb$oWAXk1LO#}SX+dRrUe9ekIea>r<0E|R&
zRBHG|%;2XGOdrf37(<*v|2WcUBx&hTl8QdzH9dvr)^1k6dhrz%ABcCr!##V7KvRnz
zbFZ8TnAIS#bMN681`KlTdRWI{wC*245~HJ!QJbwS{2vwm0MOt1rRx##2}m#$kA1kh
zD=z;g`X>-ZBgnHc`A^3jf?+!YDT^=u>1{4qLrk$n=O=9fwmbG`TI*mUsA(K#hk*#Y
z+7+fx8o%@(2Q!cH#2N?ZE>4A!hzbuSfgfL?=*buS?{CQ2e>~Lh`(fHKS`>UE6zX)$
z=vN_FMp6r4V)&>F|6PY*Nl{h!I}stMhzKm2FW>*`JKb&_GzA=ROehgyR)a)Siw_~j
zJ~uyevJ45pp&bG!y$=L}VIZ8jJswIRDAamvm4|;=V!`!?UW^nBE&-=3!ViD%iq;N&
z>H6GZIrQgHCH&=xzlr{l<5dXu57dN@38Cyyh{=Dnq$o}ZDslwY=bW~t-TG4xKIxMX
zLyKN`3Ya!2h{}yMlx8RenDX#D5ZhZ7W;Ki-b0Gq<X~HYp6lOG3Ui+gpqotkcS9f|V
znmp%Ihl?RSTs?<~`A4(HBLy%4z+?bZ089li4Z!s9`>6mLL&Z>o{zXNlYm4`b``6~V
zCx>f)d#^`QG7sgPI9?EzBaH2YD`v)o8i9`9vHUw6^LP<X?*q&V3J;^7lY+6gN5K%m
z+R<!^;HmK{03y_62+P-bSUA%tRwfVmy-3C%AM~(tz5d1)$N4J~jFtRH1i&hh{~7@G
z02)I1pH?FOQvgf~2|*<L5fK=&F5Koh-@o<${FS}AAmVf2GtW5VXcJGZ^~Ri(GYC~_
zLctwdM}x!dph3%Au<}??u>fw!ui^O&+Y8#3cXwz^ok-)9{tK@AzU2<CIxCHWQ&HCj
zGc)@Ne8bNir>;hvf4B(KVHPMVhV7y-o)uF9X$%ba$3uQmC2}-?B!^%TN%XM8*LKjq
z@o>M`Y}@xc%Tsrqd6K+h-b}$np#AX&r5Q^Xns{NOkHzzhF*D9Y1XC~yPPBhu<V$s!
z<Lh}DRcV4D2~B$yc6BJU7c{nPR_JMFTz**!3#UkUiuSvdi~(d!;JbI{vEd0|{^`JJ
zN1IqQYdl>S#vh+>aorm-C^(f6D1sEsPrs<>o=3b}o4nUt-v3}3enNk`&x%C=vau*&
zoYY6VN22z_XfkObrUMG-A74J?yjfKSSN!+Q&XzBKGR2O&|ARtAsL2AYT^cEq;CN$6
zVu9(C1a`M8G}OsaeO+dTWfHO}pwA|3YW2~P)7aLk(7u_GZ6Lh+4QY5PC`2x&ccKx$
zk{Dat6~6hy0@5J7=e;SUO@iYO{JDci{()?Y@XB_D3r|T^u=$U{3<80_@)L&%eDq80
z`JTf?sEor*0mO5D<--42^sga}NP&#moM>ffq#)uUz(`RHSqU69C;OJ0eqYFa=lXPt
z8BD~3k^myYDGLmI<MteuEHKA(<*i{5Tn`WefExY+3m|C6sm=r&0UuiFVnd6M9ji5_
z>?KTg1?Kw_i(%jlVIn06f4I@X+G~7VesT)B<X%KV&CC!0KJndNoW83Ha}9x><&57w
zUBJv`jCa)t%x#qDv-^KOx`!j!bb7$|Ysw%GdC3F|N>}hlh|#o5(=YCDmp6IN+Y(zn
z=EgsA08%ByzbYpGR`~zX@A@&q-xqTZ;(H2)yr^|mm%VjfA@%wDA6GYAaE63Fz~G%e
zn=!p!pgYe<8Dm!r$Q*P6G_@!+)Qv2k&fz?f>I`B1E+5Zq@~~l>53wF-v;}5567wK&
z3=Cup!d_qFpI_|5ji0R!w*{8hgO&l@`@DmvZqc~HsDVq2zx>F<hB^;ZCljtXEscUh
z@Kq@Z7`qLj1mLcx99(mD3a&Ra@)7AX%VhrMFI{TctIyx;I9m@l!8#m;-w1^}6=VHz
z<6m9k1yE?%qw&Li2xgIYhn_$m`qvm2D!I7%snqLFUt&D;fwx%j{DB8&;Qn}q5Wr9W
zT)?N_oJGzayO{ujfV-czasG)GGO7Jn)W?l7QLwvQYlf?UXV$q`w@qQ=3WbK8#Hlc_
z)Uc2uz>8Vpc(XS#@O!_2%dWRDZGs3%M1MF^2w>e#g&+K^fGbrs90EL0;C?Yff$*GP
zK(5ZmX{Sh>eVm0kQzT4@;+j(x7CM!i&_$s^j{Y@pZew}Dj^6vDD;*p;-N1}VL(cy(
zb1=N<UvG5w*44>b&o$>9BpB_eU%ckWD2e>V4S(bWRFx3?(iOygq3rj?WZwbMR_VnZ
zl})ez+CQZi)K-Hi+!xCTT|zE3evIEeY~vm0Wx_K$`U-#<D7YFAz3Afd)6*q7Xz<^O
zHgQS;*gm7ZSL2ZvTx{K;(6<Iy2m@zH6LU$zqd@);%A;n6CW2yy58&qubNKwbtKjQ>
z9RSND-0=GxYF;q0z%b!ZAp3rJox8P<=XC*#P9hw4gn<iAwqO~-GBq$kaiE{dz9;I}
z3DNrA_(a4=50#T`BH)(~=JCNdX7;)6!5yTa;{WEmJ$mF>_0L;f`@auIW__r8{P8xw
zh_$C<>_6`PXJg)f+yemmXOc(Zzup)Th!zrchsvNL%r;WDeE!3!x6Pd?8DNrvkVyrz
zxqI?KdrR5`vS|TdF&<y#;vY`3ieaYF_6C@N=Qg;QI#FU)qZnW)i_v@r7(ve65Ww1<
zKDM+ftbEx=UkgBc2*<$0@rH>M_3wC<U=UNVB`@|j0}{Yc3>ZZCetj>#cYV!(Tx7~5
z-1fMQm+xVmXJ*jH3?Bra!f|m7coZlD34uH`Hu^5Q;G@0~nA`wNnM{~7LtxrO3DW>-
zGXfclkT!v|MaZTIQUq6~G{f_QG>Fnb!DVDED$BeCF@Ahs0iS$R7VZ$kf0`LuLI3-I
z+dhGgc%i+}lGy7}H~dr*@r&pEGcgCCDi#Sy#mIkjJiX8X$i+y1PYD5Nt@I)nWYcr!
z&Y&%y`%s!aKQR6oEAVoA@{GJ4$V63&P*+9x$)5}O)D;=D_r_&$^upcDjI>4g>HT?p
z;Efr0erZlUFp3O@AqZ9JVCMbCR)y!+dT8Ip=-L2G*Ah#FiCNNs8|KF)2$BL?EikYJ
zDw+qcnemwK;-rrW96i&35LCRbf(Lx=TYb17Uj<17j|e^j9pFV@gHS36gk8ReCiXz4
z!mPOh)m4nyGYRvi8OT_{u&(M1A#D)S79o=&q)h7HH|;Zg70AEi1$9b>q_T$m(UmS1
zOgAuNvN)hljtG-sfFF3mr$5~9|9G2kf9!A#tsSbuPqA=+swCu}!oF=j@yh;qb$?|1
zBL$F0fBvsG<`LM#i2wk=vZ?8G!9mCWd?}M&-Q?3_t2}Jj;UiyQNWoz^Ebs^v19^vW
z@=+#^n`7X0$6H7lK;G%MOCwbX%#5~fjdeSGoPB(1z`@O?0z<iClZVyYJ-oQahr3gt
zHYYI$CK?Tas<0JLFvB1~av=C|R}2`q7q&<On4tl@?7KMbLjotvHHu-so9@elA2l(@
zFyRuzXTT>aJ0mtC1PXz7p+herrx~_p<e^c30t*HU1_U4^Lr4OLJ{UNN7PwkNNe?%?
zry7f98T%Z20^^p)Y+Qa?3K@%rpa6n*Y)In&{E<z&+Vt@obI$6-W{+ybue80_j2ZTH
z8QG5vf4tQ<Zv34x1R(la2%Uprb!{ABq`vgtE37ZRewo4lx5A;7n|<tTQ;;GmiVKXe
z(m=suG}Z|$o^RsxV@w=9OCo27t9(bPK-iRwn;)|A_H)uf&^**Vh6Jk80Wo=OwTt!5
zJ~q9ik?ob3>YA7-B<h8L2ra0jsE8sk{&7ZD8kmm{bw~sF(S%<7<nuMi*}*;N%4>Z2
z#sV(#tKl+3mB{@7*=N9~K=u_AGzIfbY%uaZqX0%83LX?-Fqi-mfRF&m{@vBlPK1`c
zjf+mT@Xv3_4!H9ELS*1a_Z9HT%QNtXmNI34Y1IaWAN<a}e~aT>aySdyp&ITNC9FRc
z^X{uKu+KjmQw~<_bySJ)=gWlqbFtJwE>r{+qt1{wS}FaRY4rkA>H;rwu<#p&;lN%y
zsC=C?LEy~eEL?tC3Q`0IHy)PX?>Q_9H4-sIILrE`d-AyM4H>w;#?xy(Y-(0`agC4O
z7J(TsFkf1zBT?*3kQ^pgDe&|qsHlMn1N)_-2bUuO;fHkByk30cLp4wu`0hP9WS>Z(
z!H`9xU%EYJu<cOAq4A;OP#lytlv_ff5g30J5|LKFfD6uGeCEokeR6w|0_d|D4?OGQ
z>T^;<2$zP&-vIyk7ME76(bsHo?AsH&J*rW^(r|yN$6s9{`*E*7`h5<MPPB=zbTx4f
z16Psz0J?^G-PIFK*<Dws>4-^^QdZPcUcMxV2w=_F)2-2KGme>S;+nHlm@~zI(i}zx
z4ji`cPp!q$j6@Iu`15iH=bdQ6G6}oe75=`;L(^V`wJ&H?YXkEr@a`oMh#8V7lzG4i
zBYXx17F|&Z0pQrzA_)lP?rGn~wbxsiQYVmi7@zq{4sQ|FC@_k~e=zwkT@>MmDTe;%
z7#dV|`3!@D<q}NDYac3`!`DAhg#|PE$NI+atto-;{3(aeTvZhoXC9D*F*9RtC*wc9
z?`+y^+eaPl0(U5e{3F93@AHiWKFamg#7IEAl`ks#^Gm{h`I4}IA*KN0Yf38}+I>_*
z4Q^jB)mU7eAyz@*3Jt}JFNTt25CPcLsd4f`6PGMYVeS+O$L9fFwj=_HfXSO-+l|&h
zd#^@kj*+)Dy7G({H~47p2G(y<@cIY>64PK{hG8Hbdeg+Auv5R0kF;)lw3;l5#SS)3
zZQ$s~AnNgVzkn}%C4;}c=-`z<5#|~ee4+uHqEs1yAIhWLvWZ9mfe3p&2Q!aw@%guB
zF=LW|ulFTXQMmM*x99M$S63adIy?HjEQ9#g2R*v?5&yq-DEo_v-5%AbpDaWC<6-_t
z_N%dP$4_)rqvPd-@*S7`zL@ckLjP_oJy;P8fq$DfMSN{;gJfSZRZ=`wth*76EiD=o
z>I5!0)xx>QTTnWX??|=;03ib7Zc0Fg^50irwD&T4^BRuNShvH+hHV;qJAvK1G(1;e
z0u0O)5|gDFj0on4<O8y3{IQQ7pfd7LDBmxsOB?{wj5SMhxc)8Gc<+Dq;4-@w`H&o_
zPzR_%jJ_U3Ck(b!#t-G5iJ-$egm#s~+b<OO;2X2($#XFkQJTWr(yY+ZrE$j5=8)2{
zS~DCEeEqlWzDZSL#uLr?-h=>*F7uZ$<DV{L{G&%r?D=@X56UqAc+pRk^Y0D+KiWwi
z{Z1wI`5!!Pruf;kiGp?DwGaD#hJ$2ayTJB#g%cN;SU5`tjGBWGSYMveXERzmHTLWU
zayf#~0<O)_o&YhS3I?i$KvodUpf?f3fTW=EJ__f@1zrwf@I{H&zrR_k<(9_x`3kvn
zZESvwaEi#l56Q>=gjz*xKPoKRkHIe%ABI263>35vCzHoNUYWvqi!C@F$_jsE(U-6H
zP@N$hJKG#m>O~61W6vqve7F0XEv|E2Vz)=l_{WF)7#LXN6B+-w>{nsm37-@T`MWXM
zkLUY)V-A2FBLF)5eyFIa%i!S?=g3n`8S(wfEBoSPz>q*wt46QGc>l#gE2;`3PL2!o
z6f}Brj9q&f9i4#o1hh}^YygU2L81l{SxHEf2=nz3*^knA3<I=Zxi8fLrNvl-8plZf
z!>GjbnH(lA1R7t=Kt!@%Mh8TZJD&j#Wk32k{{XTdFF*zZ+x#5PUBdX(6;-H7BiN2w
z#;`{n4nMd%hfiK!Rs6XFME;lv_}q6L>dWg{YkQoXuZED@p~U{pSk5n1lHZFP|Hu=F
zTK%G);K=@XF#(T+zc=<ZR}%V<lh7eee-MO!J!PK!Mon4-$Cfan2DSd8dd9Xkji$XC
z6SxKf0wQGS6z1Wgd^{m2UK6qWoZ!GSklY{2kN&@$kRQnK$CUs|lmL|&{nAJPG4PPz
zi?fYtC;~KSfWQtAY-VTza;(v#JWMpw1C9J3-$xb5zGAfKKD_-x1Mho78jepzQU#PR
z{9yq9bAJJ!cvE&Ltv}4nv~{P(*MIIlyT!4WC3bt%(|)DKKVIBhD*M@(@sC&g`!VC6
zFOmD``{@5{^sg(9j^a>|o>E6U7tb;#X=V;0ek1Mb32FsgpRszU4?Aa}R-{2h5Fp5~
zls8_BLs7^-F1xXCz9^~Pk^3?9azAn}%B23N4EZ0h0g4%I+D8lfSR~U>2y*%5<XFXi
zcdMVrbeRdBi;)FAnDOTz<=5rAsBN_ImG@R*TD^#+Q3q*91mm7(94uR8qM=R<spdyY
z@V9>H(#CD-tW5>y$ybB$9ZGWmWXU--V#1v%3HPP3Z=sKi{$kWf0mKJ><YGb}_xe@I
z85|0(T{1_0qb5!90YD=X|EMybh;YPYfyp(5t?fB<begD_DUguG99Q&nfsmFcfKcEg
zVT%{<lp6VR#(ppbfHH=Euqc2I8I1<8%&bP9gN=xq%5Q~H9PBPr475(nLF5g1?%+y7
zBWM@Y;qSG2d7N>w#*f}qg>;Hwd$iwN9#POW@QvGY_@^ra<9{G%&FIO2Z~T?J=a@Oh
zSzFd8mU|4Me{uP@Vq_o_iw2ao_o7TTDNX?5@?R)P^~Fm~h8X!1G`WV?E}kXpHTRpB
zk=O18GdC;)SUTUt${ilqXY}@3s5dMy^@q75Lr<l~AL#eALyup@ZmM5~@Y5h^zWo`0
z>_`5K4<clRfw?e{r&x-vjOQNdi|xLHs`(!BThowI>|^+gd*(UN0U$z`??cwu_{TR}
zxagExboDVb_jf*&el8s9jJ7TfrGRM@1r#5s;vcX~;$Ph1(wdF>qubT1!}uc>GCx#u
ze=?T$D>vOQKHwu#01@ktSNZpqc>YoTFFyItkC6af0sCKY^bGlEV=Xa_a{pfcp$%H|
z7SA{E#p}}O(GIqE+1Q;^APty8LO>usdyr!t$Xq5T$1x!q@Rb2YT=dRM^KoA6=ElE|
zKNrPYz1R))!ZsflfJ+3A`hPF}8bKRS@aEU2dU5-gYH{yVE`(zZC;}W9EeL+T#kVnS
zj*S~Wn89VIrDKW|2P~d^;CUCz7MYlk6(F&{)yWL4!Ab#N_`c(sCeMFjXCar^?NKEF
zrKCUd?8|lel+N&vj%&QiKa%;<v|lbp{-Yxs7l{KRWAeSr<{QhRg>|E=0|?RV3Z)p|
z{BRW(&11Ct1*~ay;D>bqCW)f5C>G*|<Y2Hp?4`1=V{$)OF21x%-z%dBO69-*!GZjT
zI=}~&$bIa=jAq}%g_mo*{zMB;K8GR!h<j&#7$xNJ^>_Pyc>kLTUwCH~W=xWB{rz|F
zM8-U85x##{9v{0rX!#xV=Mfoy;LgAK^x)sse{b{c8(vMqH{KBd5hEh;319I+AMxt`
zs5ppX_D#hi0P$fTc?_)lwFk-jRlxp%DRuOhS@pz9j~4SE<b#of9c>yDstF&tB#Td6
z4is#SM^|}h?kHeYlaJO8Mt3j4b)zt$2w4&JM+2B(5CEp|<`N7dm=G|-?~N#x5TzQz
zfg16p3sEeM!teLVsSOqh2#H0xMe#aRL_~zOUN3%ieHA<(m^O>ix*A1cSFx}n1IQ@_
zRg=e8Kaj=ZdFi0ne~6`<%#57PXzA3r;3R9m6WpR)rVxxT-sF(u>V@lbPDf(1M^*ks
zNeUod{}Y$}C>khAh`)~6qj=F@B>#Oe(qD*02Y48fzjrQ~BQMoV9H#q6UHYTSenS#k
zyBMb*ZQ;ygEo3a<`3)XcZ}YIT-NyRu8XY~1e4e1SfC16($rA;sK=jML3}wGx<_RVV
z7~mjH5X!!YMb3&Ie<<%1*8zhV%l>pA6_sk-DJk6pt(j5K3Ug0(@wT(8v2(9Nk8okZ
zD5m$gX!r@N8M{>;=Pd<pzNQ+UPXh+99f<gw2H~cA^Z3-8vj^PHNC1;yJn_7udmi!r
z*yK6?{Av?GW1NK_7}#ZI#st2!_%Gh>XO<`dKPKe)lF(mV_~T^NFFBJ#!N(U)lXH|l
z2n#DX7-XS!AUv+ekcPndC#C=d)$67KNYOu(r!%L~*~{=0!}S4QG5QLOr`CEn{TLID
z*Z;h){UD^sK+a+8ZqwM)%IN3?$QLN&0VfYA9TXQ;L7+woq)8MD?zp7pDc%+o_2TLQ
zWMH5IKo~0A;T7=ZkEBsoC1AUZ%T7z-hL;@F8&**PFaTRK3T7VHULtYrxwXjI3}4ZJ
z$jO0>zaa^~cp#6@yd?`y4gNXC7X0wHe&N!dHa>T&>ugJG_NW{Gc;Rp9gwObR?|8wV
zz`kw1g%Z*qCjn8~&nqMQLnZ$-r$Kx#n<5TR`q*gzBBTsPcTR`tCm?473uhTvILm;P
zK?=)|L4hkFkm;6Aje-Yw9v6pS{ps&E-h4(HJ+_A9MzXJic0&NJ&*<!9?AW8x-VS&+
zL3=<x2Y624N@O5WO9B}wi-i`tgbb9c0oo@m5I6o&M*stQS^@v>+8Q_>aO5<JOuYxy
zm4Tv|uHYczx9~_8Uw>;grc4ONomVnDfe3i!6%WVHF_1FpK<$<cFg7-6`o*8Tr?<M!
z)vrb&98UsJy4JI_?I+&zTOA7lM&W;jfkl5h76FJ4`-pq|Zj3PKlCye1%xe(eOc_Dm
zU&jV~j2Q<Q(BDt}cMZWpk*IIAzmhnZHZ~x~BN)%T;^E{YP1r8>dAl5X42JCA=miAr
zMZE<^-eqXbSijT9+9r+8KF0d>8aYp(5hf-Z7DQONTS^FYnTSB~hKG5)Zr{UY7Xl~D
zGvKSB&FR#mOw3=@i{_1Hpy`RQ)63(MGZ`PbxC*8O@^<A#7ikOlyoYl$001BWNkl<Z
z!QDB$|BV^As{g$XX8cnY@po@_=#{PdT}`h2SYors#Q2w+@EH&NS7YFQkEl~Mp0SEA
z`^sbBc<(6ZACZ5Bfhpx7!4&w+?8%}&s`S@-?3dN(eMSjWkr3pafxb60Ba;%yqy|d&
z8<wPCyNtzi%(AV!gn&etq5K2EP@=A!M&4mKUNEm@#d-%Voxrx88atYSEDTH$2CAhQ
z4(#b4F&bZw%7c-BFgn>p-MHhEwXofwV7Ds|eDlLqxaNjl%r|SGm|?Sqm(JnK@6TY_
z!hrbikGz+YX9kcfXsq1o;lmea;re{Q!oSuI<{N+Q?l|jI>#VI$+OJAM91j9eI_M`p
z=_~U5OP74a|82#h2YxIH5N`vDr<<HIo_|Hck06}>fyO$@u5b3a#t`UJn&&o37z7ID
zO^>od5R8-s2oW&({h7P|@K-q+OPDfIpsh=zCcAI0yI4h~`lpcvd2~W;mQb4wo|`er
z!1*VJX@zji%44e>ys|To$DjAn*DW!DOw<Vr5V4SbOeydHGQe=O#@<v8?>Kit@ozH&
z1qb-n2WoKrFMILwS_8EcT>Sh4)tJ=~RQEEdY<2(sh?F44z0bHf`*;ggX*y8ek4*!(
z`EHk1uGgP$a_!$HHhWZcPCV})C;st*zcdCe^~%P`e^k>J8FVZ3^yBg$PYc97e^n{*
z2Y_ky;tTD4nr%BUbD0d$lv+SDM!gmY%y4{QV$INBw)~C@V9_iCcR%gm__=1NNA{I{
zX2A6Whay<|$;em&87q2i#?dp)u<Iz8xVNW6<KdSbtlC<@+BE?os23?%LKKVoN^270
z##j(x2lwL2*ISTbhft_zF|k_UN1sUJvp?yD;}hQcdV!B!QUluy)*M%Mw*!5aHi56+
zQos%GsYc%60}_T@f$^1}IDKhTEd0%rJ^IxwjN`%nBgSuGVB253?>AoYJ6H_>#f*RH
z(7HGQEv@vgcu{uNz}MzTso%RK?dc!|VBNXVp<S$a`UC;pedjk^UEKB<z1QfB-o@w=
zMh`=Dkw~;rqB9Z%!C(;4YeW}aq7x<22Ek2)=tLX6_crRh^ZW<z^Y!_%*ZFYHI_vDc
z*WSN<ovW0nF*jQIQdEWgbj4$}Ei0Xhqu<OlpIloVvajMkX&Cbx?SyGa##sC`P<b3V
zp6D2KtxsTxmss=ecr8o0(#mjai>{oX-fS#1rj&>70dcbbP{w-)&YJ8`>H-f)-dVnR
z#JQS%SkpCL)1t76A>A6-#hYyZv^e5X6{hWdCWhapA{D9H1;G>>h6KO5^T~D!k*%98
zs`l25R-%4>mi;jLI#V+Dbzfl!9X|2&r)-mb`=zc=8oh!$gp=0FJtvOOpAw>G=1byQ
zv)J|E483hv&N?czUFWg_(}T3}gn~TJoRFid#y{a9HIpC*v0NB)>1|<o1d+gV`o*`7
ztZ<djM!5o&bIYr<`c$0nr?f3%Lr?Vdz!cDru*Xh%#DKU3YpTOmu?%0j?|YPOxFVI}
z_Wsn&%d&5c6xcMaqVP54ri;Ry$ZHkkjhUbOhC@hdOJEeLqDL<fEAJ}<Mt3Y15whf~
z{yun`y}^t`!)FPGm$B;iZ}@4L5Z$OIkObpOA`zfh<K8$1ra*wMVq&+w-@Z1jU+AA;
z5oa-SBeJXc`qh5Gp<(<;N4c?oL}r3!cV(6}lM(G@gUakL16LR)K<j8|ODD*01Ac^?
zCP>8)KISzuO712}Gc&3I2dDgc)L-JY{)2J&mHK~EfioV8=F<n<8g!aKWn%ZG;fobT
zP*q=oT>RDeIv^~r!z>HzTS)Qw^qJ>vkrATHcK*0H+^>_{8`W6#!9nT1t#E06b)oT(
z_u?lUs;zAn_qSj4wgNC=2RjVe&Y`AFUGOh>-v*e89tiomStG&+pl541i%pamw!E9-
zHB}T~EtDl6b#&Rua34&NX4S`ez*(n@L!TyC^KqGY!j(naZR#I0Kni_~&U68;4R0q*
z(v!KL$Jhp{n!Q4oZxbz^{A5_H9YT@zyZY3JPyV5D2SG{k$+}MR4VHSft9kZtrPWTQ
z&+OHWrdqtI0Kc7q&N>rZxBHM&7`;*=JmKKn*#`pPViEmQHTJFA9PGPhZ(W)Cj&ZeP
z$6`xY;^FD=uLzalod-k@FNMVcgZ8jR73(uoV@zUb?EQY)(B;Ei4_{sJh`)T$WNsO~
zuWHCH?~1s*OySYM-;V_$f%Ub8UsZb=>uH}J4!Kx*dlI>L7taC1<NXycU58wgz<lvK
z2T~>^SuDEr-^L>B6TojqO~~Pp{!sfC|0ZGTIbNSFCB*6BB<A<&!-rPs$fTRTN4n#z
zJ?#$TTtRnD?DzXsW;YxcJwsyrM-xwD5WZzMThFI|2-Qv6BVEs4T=kO&xq-dr;cHj@
zlp!v^agpxY+!r53?p9rpx}x`W{`EmSb53UZ&fg=5^Kl=c)5SpH0*0w6Y#KIPEVgz%
z$Ws-_CL`O3a;seFbAA>6%O$olcn2VoI-p9)0eQNz5#=ss<sA3Xi2Xkn07(bg;|x|;
z!r{kL-M&nv;K0(p19eU}3nd!*^t`ndo9b_U^c6}u;1QvBz)#b{J>vzV*XNyWXgklM
zU$@&Qp?pX{&~g-&ug^9=8~O0yw621uk_q5A2J7Do*CaFH=L~5>N!%Y|+78PxH4+!_
z8cmF7cQj?+^hlQ7!N4q(ln|dRC4+Cf_Gv<w7%J9H|1kJeDiHCrI_dGQko|{`&%-D*
z$c<V&y-zfwx6kcVor7BL322X|8pbipkbt10l_BN8LG4U32EusSVsbqV^!{e)aotmC
z|D6Zava=#G6QtiST^+<w(?#uU5NLt9fLG6<H)c$+f_mnJm*D7@RbK_0dNcF9|B*!9
zxcxWpmHPZ{lnB-zw*t?MNN4~D8}FZR01$fjKh{F2o&X=VUzGba?sEw;uoQDclkupY
z$V8NV>3nB0xk#<NFt_TK^~eJW4rqz~W&~EeW}ddr_^^76wyzXTip;@rcSy6e{m#7t
zx<?I(WQctUah$g|*OH8BcJtVrSkd9~uGI?5oOj=&>vqcNfH*&0YM@tlkp15?Zl+J%
z$CN4!E^xv84#~r|vsbiQl2jqmV;9Cup<!XaRSJU;&;HW?*-9X~_2Ds}`@w|b1c=x5
zTNALg{{(xDj(Ej{Fy_klR30`ae?aPxeK2xJAr23!|BpWv*Myf?nls6iw*4-%7#`%f
zmy;YK#p~KJ((?YSW%l8VFV>s4eSK8fef*200AL+L0N5JD(;krmd#9-Sf$ZPLhmH|v
zNj!ga<0MclhF0`j!+|vp=<7C>ixFhT3y;5Nt12yq9=<u=^lXsQzmgj4`4}e9w#A;D
zMo27NW~KsPRWbBA;Lmaqp{j)tHh0VBbU#fKAo)xi{gL(fo?c+kvjCccR8!7e>)``2
z1~?=?#WiH0^ppQE%VVtVh|kuOZqkz4ET@C7dy`a~DH+%~80Hd?x03XWSJyI#%UX^>
z0BC|b=Og+`P4}=nRlJ4M-Z!;-RGZn}OFS%Qsn*nXmlMZ0Frdu3h=pI=UXO6N{_EX@
z56z9VrAHXYr2>UGz$NzXkPeE$9#rO{l_c;lqevJOGpDgmBOHpU&&NC)D9CH67|wQV
zA|q5IlQIH0r0|$V#HeDxk%mOVQjpJ8enZ2~f{7akKyNTdo7Acy0W;9K{4?gLm*sY=
zLrG7EU(eUy`iEoRq*K|OIeR&zfdIP?|6kA)uTpDQ&sXwrTTqeHE&lR|IWC}n^SFat
z3Thz(U8V`od`V-!?-+l0*Y^^Kn~mu0on{pI%vc5~<irGEL^c*S)mN8T1_Lbg4(9Am
zaB9Ep5aU-UiDWGIa?AUG=ZTcD3=}4Ok<_USEZu^sO6F_C)CDl;6D?i(V1KpJcl(}=
zc`><apYoR|TNyge3tW|27qtT~os+PL7r)-Iq<3-a^eJqGB7)QW0vN`!*EvEV9IQA-
zjn|)97k^hQd;*NJxvJApyx59u{&~?;BWugBS`1jp{>jtB30h#I-h4808PUDK!V4@(
z<fO1X-A)tA;RfAAGs=<)sId~cNC_Pg6dw)n<m<7}0H0!TqmJuMbG4wea`(G*xrHzo
z>5C^?Spav}NzC4)8Pp<Tn!{;1F{Ig+rAQ4J`ma*e&!GR}W8!!LeVl%4&``ExTp^Go
z@KV1!K4fSW!sL*oPsw><FCfQP8&pyV$JR91RqV27&uoMvF_j5pPawz13&#%@N6nY2
zGxq%Y;}9=cdf=avVs%YIQ=J@MbCMwy;sDN45lG=6sYtRl8;nDewm{@|*R*_T#5S!W
zC+|=w<<*`PvBu9~Ydc%@MijBcAbKN;?C9Cw0qM8fT$YIUWS2_&5xuReemH;5lQ(;`
zba|{02*diF-~MC^{6~1AWr{E(HMLgLcOvYjK9z^t#&5Z`J#3&j*{VM+KyhRC5(YEx
zBvf<ml)d%S);nso*Zd+{3MQNJ8-ll;G_RP-RmC`pfKoC(G5~qLz>=uLgEEf(qvO;Q
z$}r+9;4a`A@vKccfkIiq)b=EcDn;#y$JMyG6*=TTDi(b;&Ub%VL+DVMoDASWj>UzT
zr*!v7{OD~eIaW1H7zL}Lgrzf_Tk=%AVYi)uPPn`?iTEsv$gA;_Y=9}_cyQv?+4$Ui
zYt!T5v0o2CG76Fb@&APc>S#)Ej)C+pT1QomL~VGmCFA!ZjM%>K02in;$r!^EJpL<i
zq&A}xSs@@ME{O|T#SF5}(Aht*OB5x;BfzhHZ`IejloUBdG57lR_vFiYA45*a)o3(<
zUIo+4LP0-2CCxw{O@!d{R@<ji@!#-keG|KRC0a3<_1W5m8h2SDw?AH%M@$GbPB+=+
zZrasx*eDXWYKD)thdFn)YT{}BXopBj(NG_s_oYEy<_w>S6>Gg6421ZQ5vfIabg(io
z0tWx?CYk`HKGG4WINgX<=Vmv}U1x~Uym}Xm{*RY0-w*k~f#%VStM9EPz7uXf3Wf~#
z$Y>b=Hw;tFTmNX|D6PU_t$A;cO2@~$^g@jXu})&$l+9<$R+~;nHX1jgc{q+Tc87}E
z53+_eOx<jIR5w8Uz!(qya0BqG=NiZ9UhfoVT#rpf5aYK77y7K!ez^PfH`n`-SDGw=
zBsrLLi;F{5c}R#~l{E#4rH6g=W;G>z%SEB1kxb}FH5Qp|A=7c2=XxQlZKZh>gtn=!
z?mh(7jm|1c(V>Qpg1QL>OOCdF54R+TXb{v5!|0ZrX|QPf#qSo&+l`!yfwqs&ZZGvE
zB4Qpuf`_I<`rid!pUsO`-|e}*WbTgzXyye>G}u(51bOh2kKq!w_g8ew5>^i&JbQcN
z;vWE}GJ*13_+4b4l-y}xUTSW3`zH)>9fb|0S?~M|Yb~9GbWtz9tY_cNP1mFZ%6q(U
zVEy>gshgG(h^^&|%)fsG8mi^&x)EuK^UKTcI^?X=F8QzABuqa$0{Od0PUcBeBR%%K
zmHmEu@Y|jKmA&JKG?ad`|Jj!JJ$BB04y3zx+@c96`koUXb`Igd(cSoNJouAQc_|<B
zqrxWdizFMXe*BpdP+-;?xvMw)B?e7qh@o(%`^z;&!*DijTvO2-5TCwaipFQ2MTZdL
z>3gsSbDWgos1USaM9+2tl~?nthgO>UJ!G19YtPHy3UaxA%~r9pTYs)1Mzj%bNkega
zT|;Pj`9bD8C&vmL+8slw{M_^Wc#&NCDCl3=I5!WO2_1Z?2XlLw^BinwHNEK`Qbk^*
zK#-;ul%)NPiDu;H@)tp;yyGozjf(Pg$b^=hRBg%RluN=;mC(aRI{|R&bG_y7Pid7w
zGj3-;vo?zPDSlw>*c=`Eo!-BT#j^GH$bR_h6mr!+oR4@D#dId}#Ka(iC6#b7$dPsF
zCxj_(c%ml}s8?R<)fo)l#KI==Nr0Y+^3Y4`q%hXVDV0BQ$R5l=Za~n*H?atma<PEP
zTY^$cylYXFH(QyXCtI6-4u7V%z`0wnhxseoC~qulCwFbp)*K3_`QIt2Cw4Medt0}f
z{Q9@iqu)*eCU9e{)B*EO;IW^)1=fBaEzY&t0pzJb$zZ0jC-MiQv9E#;=?yE5UfkdK
z?RS3=_#-SG1mT%^xH=9WUOAq8nD=tCODYO0=kfVC5k9zb<F}qHxBX=j2$t4k@xND(
zi@Vj9%55U?gS_r}#{!24avW%>{m?JTsYitb4;Izj4+XgBhUc`G_HXNIdIb^T?Hh9c
zV$%9b2j{+*9lkghA`gksPaQi0omRvv+u>HGi0eWQbKnqN48JIe5ES!DT}}NF%v-<t
zTdJ9m;(xq3`Xf~ky%7&%?4GD4HQ>*qbw3wh3!7~Jz2)_t9o|xMx4tx33lZ&`e?V~y
zhm|?MwL0hYu*wIP`X%k{L#XIe%G<qr;P9hGGK=HB=NLRyR#eQnvcW4@910WlD~zS}
zpR8xde4mQdOTs@Sybo{U7?9kVHs%%EY@I$?tv8sAs)W-^%`<8pbs8HRP|ac@(@F1o
zen0eL^kB<=NmfOA;R2Q-KwFFtrTM79b(clRz=o^;JMBpGDg3L^1JsQz^#!jez&>g%
zofwMtS~CxigOyc)J8`Jz^WB7eTf|*Q|1EE`{BCa<yXec0Uy4vK;^;TnoVQ_0M{TjM
zV~19t2f7>pN7Qln6q<BWX5(o*&mp$DjKlJ$45cYm&9w@r>`*C*{Jn5gLt=whw-PVA
z;Jl&pHB&L+X>jM&(<n}x0_>9G9HPJJp&|duyDi$#f+S?i7q>VMx;fjv5~e@3Ce`W=
zx8X%%D80XUc%ev#e0~PDN-lIm*wE6yoGf>_t@W~*bO6=2aOXSDM!!|gVAjw;U94A`
ziGEcRc5+g}{@=-`YkxHd969e>1pz(|zk21fYcGd$4-OdD#K?=#3r$6&J(;Q3w(WD6
zg`4+lV!}W5UW)s99YhN|h_RLeNvcO>m_uw<ZSSZ+pr1nI{d4kbOv8b;I5wT1zt1lI
z;vsIYd&!Zvqx0*&mXA<~`$j4K<j~oN!%T2ddLV_0TZkZz2Tu>i7`E4d4kcjTYY255
zxc_a1Smm7JaqETbp^fOm0?G7#%U9T}vEOPiPYT(2w~plME)?9X@%r6PsuUGP2|Agm
zT2a=$rezf*$yyLPZf||7ur5UY;bS`eizWr<#b@}PA;0>zwX^@euWZhelED|1!zmA)
zF>5M2)+Y={`zjm9$xo#-%*BbmGxys<k2W~6I?n9NY8u#T=FDs1I+{C2Jb=|02;s1V
zn~cQQ^lk}*OG=F}HGV)80U(C|Ch5qwwz>TaYu^5O<qktHiAn=^SOWX_4#&>H6lczd
zFDMtIv)Z5V_hvhNW!7ib_owuT!*Az1%#KoJvNZXKxab5<eOy=zY+Ic^#<<IR4<<ZP
zNfdpPuBh;?DT1LVzZt@?QO)e{n2Vby(vmrx+grYR`2Rzi%TUo@x#broutb0e`&?pc
zJuCW}L)IU&HE+8$1sK#%2&(bVREJXMNl%`AO88V^YJN_CcITXa6q~FX9t34>cJ~#~
z&(pMhsfxag>U?VPDy`M=Ga}Y8$Sou!sAd<wJ9SUJU=T2ZKZ3E~3^6b}bl!MLd5&~4
z<bAxl#eiMu0u}@QWZI!#SSH_!{4odjpz`kzU;{z+Gg6NjsI&>@Prrx98tOmT%zDOH
zN3m$}kEe15y<8*VkC}PR0#&meOyq%g&Mcz<*kwc_BKWi4bec||i^PGryJ3P4i$&5r
z@@^H$vXPa@@#*zQ<P%ogUX>>@05KyzpxAPm$x-Lo+oeLCcn9#u%*<lI<*eTB<yQQD
z`|U%(@2EgXL;QrIl*{$XK>r}&=X@tG4ajno-{y82A!Fx(e=4&5pNvDnpm~JEEgaNw
zz36&2n~X|0s7v~V$;UPvcgUB<%F=3J+0;4=$za|M-R&a^xO(X&bmuatkXv^s^fg`c
z9xf?6m$M3PBJVVIHY&UDPWjOQsYs++%R%e!Z&<e&VGom}zu*WSmc1gXUZ`pv><?Xs
z+>FK2uHmhHHl)2k;7l*`C5h3vb-cLvb#_Nzr+r4Fu6Nah7*CMrj>B=XeBNvH?Kp+f
zkG>vzQ7haA<DMo`$;JO4E}$$*FQ(SNT9V8@>h~^l2`<Og4p+JtQ@6xbq#bEnhy3FU
z!X79YSUImu6veFs#^X}MC0`O9eJ*1-xXqq^>4o92VBf^1q~_3sCZqq@s5I^<dN<T_
z$>@~B_~nqnfcboChhDmS>A?0Z?ZEk2%0{GB{#WU;fEQ)fb<IpRKrgJb)kNXWS$&5R
z_NM#C%895oJVj7O<uvB$p^{4YH=mH5WmS-*cdhu|RR7+}QQRmWVAQ8!VV`XCVUq~L
z;}3-?&`)`r%Yzn&1d&~&hjSB18Yev$R~W*njP9-^L2mLD#BLSa<8Fa_z5~blV7i<!
zm>4#(*NkQQ$=~xH+ujh>dlrHOhb1udu0OV&JTZgYR9Eut!=jR>mmV&wAV3Qq|MGn@
z3?XtSp?*?k(>aubn0-Wqy@m%ob_t7?PN>5je5<;Q9(zy>U}o>+su5OXlbNFx#6pjm
zzoNP@gRK?Gejg5C47(o){)Y{8YU2@f5+gPQb`<~EZKv*NgJ;#Qm#AEEG+lNpS8}|s
zPk6&Nu&qymD*vMVr1Nf>MK(6lkz19=2*{9QYPa!)3o2@N9@ZadnDa>IyU%98Yd2~v
zEouqi&Qjr~=<>D+acO-XhVyp3Vf^!eTz>!D>)vGGbAEa$(&Ck$Oh%MGPAAy2;TZok
z{ndlIGknt8Dbxr^2%QQaWW4c?x^DeI@Tyhj{-`{>!uoUf5Ya#>p6fnr@u%r{lVf~>
zr`B)l_)@D|2g8KJe5qu_l}TB<;G;%TEmH5L#}eni<~B?IS%HX<0bD>p29ijP@oy;}
zc5`=sd*sqTo@n_hr$^%5`mqHdF@C*Q{J+u>ah&|Nmwc@RJbP5Ka%q`XI!j3x5Jk;Q
z3nLQ4#~doY#T@a!WUe10SwQfFAm7ZbQVlCF{wiiQwgf3ZTd~O%m_I3}tO{$+&;CG_
z9&~)+*!RIB>)&IUf33`|ul#SO7Otar7!b|E#~6Abm@(t!6T{%$vn+Q7_Kzf7T5EW!
zWqKGaMziMMX#Xa+v$4`vkz4}UG@d1Oal^TzPkJJgDc@zK{<ZLgAzu@Rz=r=PvF=;|
zgTWRs@71cBZueNE*74Oc<1Q_&9%;}`0=qK8MJ~N!PK7pF9U+{0w0d)*<Xw*{`8{^F
z@;LGn8^d$>#Mbs|)QKD?Y@<xZ{`dC*JDj2jnV&O8U?1UKqbTCL`^np+l^vwjqRYEQ
z#8sPg1X|o5#vHre+yU;9Uu2Kb*66m%`HAA;$|}0)cMA8u-j2MdIH*oxote~zR`dbM
zi?oNa?^$^RQh}I%RRKZAxn@ENyoUHv(sJ^m?*G<T3r$ULtTg69U(t4~aF0~OOUN!7
zpXoKa6-8bnRB2f=`rV>=hU(xg1d$Zxi>wW9JzPuS&7ujF>@SvCI2q{8G)>6oYkk&Y
z)RXo%(8D0a<H_RUzoO3^y3=#ctcM=w6J?1WV5a;)WbdgX?Vo)9Bz<}d0jRXvuAM!Q
zVgPsKj_o6jFlEXzBI^+V2&a0Dw+C3>{giR7aLzA)*69Y5@Gt^3e;p|uEm^<ahL7Nk
zO5`IOvp;pZv|8I|w#dJZCZ0Nfkf&#0hkS$j$}}VeZ}&9*rs$Tm=|Z9g<3?S=PfPFY
z;_u$1ZEvwi<UGr^I#D;ghfF4c9%Cb(y+2L{o;s20<%-S70EE?aO%)9J(lqdb?xvKg
zI|bNSUw<<{==n*EBMKe_jrH|QjM%}f=$HnyX<SG)!b!R+WsTjMS8P;Z^p;_LuF>li
z&t5EU5K9Zcr$Ob*t?d`b3UcE%c5+6;bdVKT?cskJX&yVqb1(Le59=Ouc$3(iO1h}Y
z>rG7AFe^A+JG{};fF$I~>VM>Q(izIqnm0FmmP`5XoD(syUaj2MTUJ``K9ko?2Bp#M
zP?hdUK~W!yqwB{_GUSXIZoFTE%cCd<)<o3<nY;r(mvRKkypxfZ+dHm9eD370h}SRP
zauJP>5}1r}%5xbG9H@KhMZ#s_G`g8C!@4<K&S-kl(KOvu;k&DNe$Lz@vm}J(rH`na
z8LO`m&@VH97Z;UHjHd-O08PNJ>(K-BA0uGT$<A^W$uKB3Y2(g&<-4xBslG3q^$J<M
z<<l>5|G)+sm6hKF5D^O2o~ax0VZjt$eiEkI@~3(2dUM&bP4aGSV=Frxfk*RuBHs2d
ztX04+NPkB&CtL5gdvriAp>ECE{x&ZK>)ZP6%!vcY`zE5{;o_|{Ju;_kBJmufr-imW
z1&!LacKEA9MPhoD^cgZ?M!EbXT{HkFfx5UR3e8LW1uf;-21#@qG3Yrbfdt3pDQo#*
z8U=~Jf0zE(>eH}k8_?CKTXOXp@4YASp63*l8G-D<b2&4VQmXWt6!u-|m3<e#3j0dq
zqh&@^_ENy0YVdDybYsMa=m<giM=b}pGCR8jJG&(3z69eW4!I-+^QLdUf$+shd@fC?
zf~XY&I-)N)wcy4VVYnB+kg)d?EkYlW^>=wU^|(dXb~C=W66lHCZ|_KDuZjThF>8zc
z=g3NUtfV8;iQdk9W&3k1qX+ejpn(@j+(Xi-%MF8)Zo4s<5XrVGAJRrZ)C<kXe4yO#
zr0wNH7uZfBtp=<NlF)y9XdV0XGL=SBWJb)Cmd;y@-G&_d+==Q7_Sl}xQiDuzA(o}Z
za?`7hbTb+ejv9p)WUfTc@+7U_`-b%+)l(V_lepB71f+C)(Es0yS=YI6003~Oqp9}n
jfA!%1m7A$v--hJjJ&01KFpt7@1VHDBfo8Qj4Eg^683ZmE

literal 0
HcmV?d00001

diff --git a/Aircraft/Generic/Logos/pumpkin.xml b/Aircraft/Generic/Logos/pumpkin.xml
new file mode 100644
index 000000000..fe685794d
--- /dev/null
+++ b/Aircraft/Generic/Logos/pumpkin.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+
+<PropertyList>
+<sim>
+    <model>
+        <logo>
+            <name type="string">Pumpkin</name>
+            <texture>../../Generic/Logos/pumpkin.png</texture>
+        </logo>
+    </model>
+</sim>
+</PropertyList>

From 4692db87d6504664b724fce62792f78d9e1bc561 Mon Sep 17 00:00:00 2001
From: Anders Gidenstam <anders@gidenstam.org>
Date: Sun, 31 Oct 2010 22:06:44 +0100
Subject: [PATCH 09/14] Updated WalkView: Added a more general area constraint:
 linePlane.

---
 Aircraft/Generic/WalkView/walkview.nas | 94 +++++++++++++++++++++-----
 1 file changed, 77 insertions(+), 17 deletions(-)

diff --git a/Aircraft/Generic/WalkView/walkview.nas b/Aircraft/Generic/WalkView/walkview.nas
index 105015900..8ed1bb61f 100644
--- a/Aircraft/Generic/WalkView/walkview.nas
+++ b/Aircraft/Generic/WalkView/walkview.nas
@@ -97,11 +97,12 @@ var active_walker = func {
 #                                             [19.5,  0.3, -8.85]);
 #       var walker = walkview.walker.new("Passenger View", constraint);
 #
+#       See Aircraft/Nordstern, Aircraft/Short_Empire and Aircraft/ZLT-NT
+#       for working examples of walk views.
+#
 # NOTES:
 #       Currently there can only be one view manager per view so the
 #       walk view should not have any other view manager.
-#       See Aircraft/Nordstern, Aircraft/Short_Empire or Aircraft/ZLT-NT
-#       for working examples of walk views.
 var walker = {
     new : func (view_name, constraints = nil, managers = nil) {
         var obj = { parents : [walker] };
@@ -259,26 +260,55 @@ var makeUnionConstraint = func (cs) {
     return ret;
 }
 
+# Rectangular plane defined by a straight line and a width.
+# The line is extruded horizontally on each side by width/2 into a
+# planar surface.
+#   p1, p2 - the line endpoints.
+#   width  - total width of the plane.
+var linePlane = {
+    new : func (p1, p2, width) {
+        var obj = { parents : [linePlane] };
+        obj.p1         = p1;
+        obj.p2         = p2;
+        obj.halfwidth  = width/2;
+        obj.length     = vec2.length(vec2.sub(p2, p1));
+        obj.e1         = vec2.normalize(vec2.sub(p2, p1));
+        obj.e2         = [obj.e1[1], -obj.e1[0]];
+        obj.k          = (p2[2] - p1[2]) / obj.length;
+
+        return obj;
+    },
+    constrain : func (pos) {
+        var p      = [pos[0], pos[1], pos[2]];
+        var pXY    = vec2.sub(pos, me.p1);
+        var along  = vec2.dot(pXY, me.e1);
+        var across = vec2.dot(pXY, me.e2);
+        
+        var along2  = max(0, min(along, me.length));
+        var across2 = max(-me.halfwidth, min(across, me.halfwidth));
+        if (along2 != along or across2 != across) {
+            # Compute new XY position.
+            var t = vec2.add(vec2.mul(along2, me.e1), vec2.mul(across2, me.e2));
+            p[0] = me.p1[0] + t[0];
+            p[1] = me.p1[1] + t[1];
+        }
+
+        # Compute Z positition.
+        p[2] = me.p1[2] + me.k * along2;
+        return p;
+    }
+};
+
 # Mostly aligned plane sloping along the X axis.
+# NOTE: Obsolete. Use linePlane instead.
 #   minp - the X,Y minimum point : position (meter)
 #   maxp - the X,Y maximum point : position (meter)
 var slopingYAlignedPlane = {
     new : func (minp, maxp) {
-        var obj = { parents : [slopingYAlignedPlane] };
-        obj.minp = minp;
-        obj.maxp = maxp;
-        obj.kxz  = (maxp[2] - minp[2])/(maxp[0] - minp[0]);
-        return obj;
-    },
-    constrain : func (pos) {
-        var p = [pos[0], pos[1], pos[2]];
-        if (pos[0] < me.minp[0]) p[0] = me.minp[0];
-        if (pos[0] > me.maxp[0]) p[0] = me.maxp[0];
-        if (pos[1] < me.minp[1]) p[1] = me.minp[1];
-        if (pos[1] > me.maxp[1]) p[1] = me.maxp[1];
-        p[2] = me.minp[2] + me.kxz * (pos[0] - me.minp[0]);
-        return p;
-    },
+        return linePlane.new([minp[0], (minp[1] + maxp[1])/2, minp[2]],
+                             [maxp[0], (minp[1] + maxp[1])/2, maxp[2]],
+                             (maxp[1] - minp[1]));
+    }
 };
 
 # Action constraint
@@ -369,3 +399,33 @@ var closerXY = func (pos, p1, p2) {
     var l2 = [p2[0] - pos[0], p2[1] - pos[1]];
     return (l1[0]*l1[0] + l1[1]*l1[1]) - (l2[0]*l2[0] + l2[1]*l2[1]);
 }
+
+var max = func (a, b) {
+    return b > a ? b : a;
+}
+var min = func (a, b) {
+    return a > b ? b : a;
+}
+
+# 2D vector math.
+var vec2 = {
+    add : func (a, b) {
+        return [a[0] + b[0], a[1] + b[1]];
+    },
+    sub : func (a, b) {
+        return [a[0] - b[0], a[1] - b[1]];
+    },
+    mul : func (k, a) {
+        return [k * a[0], k * a[1]];
+    },
+    length : func (a) {
+        return math.sqrt(a[0]*a[0] + a[1]*a[1]);
+    },
+    dot : func (a, b) {
+        return a[0]*b[0] + a[1]*b[1];
+    },
+    normalize : func (a) {
+        var s = 1/vec2.length(a);
+        return [s * a[0], s * a[1]];
+    }
+}

From 5612cd36dde115425da9e4e35ceb7ed1ce7bbc7a Mon Sep 17 00:00:00 2001
From: ThorstenB <brehmt@gmail.com>
Date: Mon, 1 Nov 2010 17:47:08 +0100
Subject: [PATCH 10/14] Horse/cow (scenery) culling... Removed since this
 caused severe scenery (un)loading issues with osg. Scenery nodes with too
 many parents cause extreme delays when unloading tiles. => Need a better
 cow/horse-herd implementation! :)

---
 materials.xml | 30 ++++++++++++++++++++++++------
 1 file changed, 24 insertions(+), 6 deletions(-)

diff --git a/materials.xml b/materials.xml
index e3f79bf99..828bc5cdf 100644
--- a/materials.xml
+++ b/materials.xml
@@ -1320,6 +1320,9 @@ Shared parameters for various materials.
     <heading-type>random</heading-type>
    </object>
   </object-group>
+  <!-- Disabled to avoid a tremendous osg performance penalty when
+       deleting scenery tiles, caused by tens of thousands of shared
+       horse/cow objects. Need a better implementation!
   <object-group>
    <range-m>1000</range-m>
    <object>
@@ -1332,7 +1335,7 @@ Shared parameters for various materials.
     <coverage-m2>300000</coverage-m2>
     <heading-type>random</heading-type>
    </object>
-  </object-group>
+  </object-group> -->
   <wood-coverage>1000000.0</wood-coverage>
   <wood-size>20000.0</wood-size>
   <tree-density>4000.0</tree-density>
@@ -1383,6 +1386,9 @@ Shared parameters for various materials.
     <heading-type>random</heading-type>
    </object>
   </object-group>
+  <!-- Disabled to avoid a tremendous osg performance penalty when
+       deleting scenery tiles, caused by tens of thousands of shared
+       horse/cow objects. Need a better implementation!
   <object-group>
    <range-m>1000</range-m>
    <object>
@@ -1395,7 +1401,7 @@ Shared parameters for various materials.
     <coverage-m2>300000</coverage-m2>
     <heading-type>random</heading-type>
    </object>
-  </object-group>
+  </object-group> -->
   <wood-coverage>500000.0</wood-coverage>
   <tree-texture>Textures/Trees/mixed-summer.png</tree-texture>
   <tree-varieties>8</tree-varieties>
@@ -1444,6 +1450,9 @@ Shared parameters for various materials.
     <heading-type>random</heading-type>
    </object>
   </object-group>
+  <!-- Disabled to avoid a tremendous osg performance penalty when
+       deleting scenery tiles, caused by tens of thousands of shared
+       horse/cow objects. Need a better implementation!
   <object-group>
    <range-m>1000</range-m>
    <object>
@@ -1456,7 +1465,7 @@ Shared parameters for various materials.
     <coverage-m2>300000</coverage-m2>
     <heading-type>random</heading-type>
    </object>
-  </object-group>
+  </object-group> -->
   <wood-coverage>500000.0</wood-coverage>
   <wood-size>20000.0</wood-size>
   <tree-density>5000.0</tree-density>
@@ -2140,6 +2149,9 @@ Shared parameters for various materials.
     <heading-type>random</heading-type>
    </object>
   </object-group>
+  <!-- Disabled to avoid a tremendous osg performance penalty when
+       deleting scenery tiles, caused by tens of thousands of shared
+       horse/cow objects. Need a better implementation!
   <object-group>
    <range-m>1000</range-m>
    <object>
@@ -2152,7 +2164,7 @@ Shared parameters for various materials.
     <coverage-m2>300000</coverage-m2>
     <heading-type>random</heading-type>
    </object>
-  </object-group>
+  </object-group> -->
   <wood-coverage>1000000.0</wood-coverage>
   <wood-size>20000.0</wood-size>
   <tree-density>4000.0</tree-density>
@@ -2202,6 +2214,9 @@ Shared parameters for various materials.
     <heading-type>random</heading-type>
    </object>
   </object-group>
+  <!-- Disabled to avoid a tremendous osg performance penalty when
+       deleting scenery tiles, caused by tens of thousands of shared
+       horse/cow objects. Need a better implementation!
   <object-group>
    <range-m>1000</range-m>
    <object>
@@ -2214,7 +2229,7 @@ Shared parameters for various materials.
     <coverage-m2>300000</coverage-m2>
     <heading-type>random</heading-type>
    </object>
-  </object-group>
+  </object-group> -->
   <wood-coverage>150000.0</wood-coverage>
   <wood-size>10000.0</wood-size>
   <tree-density>5000.0</tree-density>
@@ -2264,6 +2279,9 @@ Shared parameters for various materials.
     <heading-type>random</heading-type>
    </object>
   </object-group>
+  <!-- Disabled to avoid a tremendous osg performance penalty when
+       deleting scenery tiles, caused by tens of thousands of shared
+       horse/cow objects. Need a better implementation!
   <object-group>
    <range-m>1000</range-m>
    <object>
@@ -2276,7 +2294,7 @@ Shared parameters for various materials.
     <coverage-m2>300000</coverage-m2>
     <heading-type>random</heading-type>
    </object>
-  </object-group>
+  </object-group> -->
   <wood-coverage>150000.0</wood-coverage>
   <wood-size>10000.0</wood-size>
   <tree-density>5000.0</tree-density>

From 4c694b2bc2a830550a14b2082aad360d517573be Mon Sep 17 00:00:00 2001
From: Anders Gidenstam <anders@gidenstam.org>
Date: Mon, 1 Nov 2010 21:12:39 +0100
Subject: [PATCH 11/14] Updated WalkView: Added a circular surface constraint.

---
 Aircraft/Generic/WalkView/walkview.nas | 38 ++++++++++++++++++++++----
 1 file changed, 32 insertions(+), 6 deletions(-)

diff --git a/Aircraft/Generic/WalkView/walkview.nas b/Aircraft/Generic/WalkView/walkview.nas
index 8ed1bb61f..239ab575c 100644
--- a/Aircraft/Generic/WalkView/walkview.nas
+++ b/Aircraft/Generic/WalkView/walkview.nas
@@ -83,7 +83,8 @@ var active_walker = func {
 #         speed  ... speed in m/sec : double
 #
 #       set_pos(pos)
-#       get_pos() : position
+#         pos ... position in meter : [double, double, double]
+#       get_pos() : position ([meter, meter, meter])
 #
 #       set_eye_height(h)
 #       get_eye_height() : int (meter)
@@ -263,8 +264,8 @@ var makeUnionConstraint = func (cs) {
 # Rectangular plane defined by a straight line and a width.
 # The line is extruded horizontally on each side by width/2 into a
 # planar surface.
-#   p1, p2 - the line endpoints.
-#   width  - total width of the plane.
+#   p1, p2 - the line endpoints.       : position ([meter, meter, meter])
+#   width  - total width of the plane. : length   (meter)
 var linePlane = {
     new : func (p1, p2, width) {
         var obj = { parents : [linePlane] };
@@ -283,7 +284,7 @@ var linePlane = {
         var pXY    = vec2.sub(pos, me.p1);
         var along  = vec2.dot(pXY, me.e1);
         var across = vec2.dot(pXY, me.e2);
-        
+
         var along2  = max(0, min(along, me.length));
         var across2 = max(-me.halfwidth, min(across, me.halfwidth));
         if (along2 != along or across2 != across) {
@@ -299,10 +300,35 @@ var linePlane = {
     }
 };
 
+# Circular surface aligned with the XY plane
+#   center - the center point       : position ([meter, meter, meter])
+#   radius - radius in the XY plane : length   (meter)
+var CircularXYSurface = {
+    new : func (center, radius) {
+        var obj = { parents : [CircularXYSurface] };
+        obj.center     = center;
+        obj.radius     = radius;
+
+        return obj;
+    },
+    constrain : func (pos) {
+        var p   = [pos[0], pos[1], me.center[2]];
+        var pXY = vec2.sub(pos, me.center);
+        var lXY = vec2.length(pXY);
+
+        if (lXY > me.radius) {
+            var t = vec2.add(me.center, vec2.mul(me.radius/lXY, pXY));
+            p[0] = t[0];
+            p[1] = t[1];
+        }
+        return p;
+    },
+};
+
 # Mostly aligned plane sloping along the X axis.
 # NOTE: Obsolete. Use linePlane instead.
-#   minp - the X,Y minimum point : position (meter)
-#   maxp - the X,Y maximum point : position (meter)
+#   minp - the X,Y minimum point : position ([meter, meter, meter])
+#   maxp - the X,Y maximum point : position ([meter, meter, meter])
 var slopingYAlignedPlane = {
     new : func (minp, maxp) {
         return linePlane.new([minp[0], (minp[1] + maxp[1])/2, minp[2]],

From 7b08e91f7b62c4b39ad7cc472f5c0e49233f17a6 Mon Sep 17 00:00:00 2001
From: Anders Gidenstam <anders@gidenstam.org>
Date: Mon, 1 Nov 2010 21:31:15 +0100
Subject: [PATCH 12/14] Updated Walk View: Unified all "class"/"type" names to
 begin with a capital letter.

---
 Aircraft/Generic/WalkView/walkview.nas | 22 +++++++++++-----------
 1 file changed, 11 insertions(+), 11 deletions(-)

diff --git a/Aircraft/Generic/WalkView/walkview.nas b/Aircraft/Generic/WalkView/walkview.nas
index 239ab575c..c329f88dc 100644
--- a/Aircraft/Generic/WalkView/walkview.nas
+++ b/Aircraft/Generic/WalkView/walkview.nas
@@ -104,9 +104,9 @@ var active_walker = func {
 # NOTES:
 #       Currently there can only be one view manager per view so the
 #       walk view should not have any other view manager.
-var walker = {
+var Walker = {
     new : func (view_name, constraints = nil, managers = nil) {
-        var obj = { parents : [walker] };
+        var obj = { parents : [Walker] };
         obj.view        = view.views[view.indexof(view_name)];
         obj.constraints = constraints;
         obj.managers    = managers;
@@ -225,9 +225,9 @@ var walker = {
 # The union of two constraints.
 #   c1, c2 - the constraints : constraint
 # NOTE: Assumes that the constraints are convex.
-var unionConstraint = {
+var UnionConstraint = {
     new : func (c1, c2) {
-        var obj = { parents : [unionConstraint] };
+        var obj = { parents : [UnionConstraint] };
         obj.c1 = c1;
         obj.c2 = c2;
         return obj;
@@ -256,7 +256,7 @@ var makeUnionConstraint = func (cs) {
     
     var ret = cs[0];
     for (var i = 1; i < size(cs); i += 1) {
-        ret = unionConstraint.new(ret, cs[i]);
+        ret = UnionConstraint.new(ret, cs[i]);
     }
     return ret;
 }
@@ -266,9 +266,9 @@ var makeUnionConstraint = func (cs) {
 # planar surface.
 #   p1, p2 - the line endpoints.       : position ([meter, meter, meter])
 #   width  - total width of the plane. : length   (meter)
-var linePlane = {
+var LinePlane = {
     new : func (p1, p2, width) {
-        var obj = { parents : [linePlane] };
+        var obj = { parents : [LinePlane] };
         obj.p1         = p1;
         obj.p2         = p2;
         obj.halfwidth  = width/2;
@@ -329,9 +329,9 @@ var CircularXYSurface = {
 # NOTE: Obsolete. Use linePlane instead.
 #   minp - the X,Y minimum point : position ([meter, meter, meter])
 #   maxp - the X,Y maximum point : position ([meter, meter, meter])
-var slopingYAlignedPlane = {
+var SlopingYAlignedPlane = {
     new : func (minp, maxp) {
-        return linePlane.new([minp[0], (minp[1] + maxp[1])/2, minp[2]],
+        return LinePlane.new([minp[0], (minp[1] + maxp[1])/2, minp[2]],
                              [maxp[0], (minp[1] + maxp[1])/2, maxp[2]],
                              (maxp[1] - minp[1]));
     }
@@ -344,9 +344,9 @@ var slopingYAlignedPlane = {
 #   on_exit(x, y)   - function that is called when the walker leaves the area.
 #                     x and y are <0, 0 or >0 depending on in which direction(s)
 #                     the walker left the constraint.
-var actionConstraint = {
+var ActionConstraint = {
     new : func (constraint, on_enter = nil, on_exit = nil) {
-        var obj = { parents : [actionConstraint] };
+        var obj = { parents : [ActionConstraint] };
         obj.constraint = constraint;
         obj.on_enter   = on_enter;
         obj.on_exit    = on_exit;

From 5ecdf0f8787b62b3f1b38d0c718fd3f52e2a19c0 Mon Sep 17 00:00:00 2001
From: Anders Gidenstam <anders@gidenstam.org>
Date: Mon, 1 Nov 2010 22:44:10 +0100
Subject: [PATCH 13/14] Updated WalkView: Added a makePolylinePath convenience
 function.

---
 Aircraft/Generic/WalkView/walkview.nas | 49 +++++++++++++++++++-------
 1 file changed, 37 insertions(+), 12 deletions(-)

diff --git a/Aircraft/Generic/WalkView/walkview.nas b/Aircraft/Generic/WalkView/walkview.nas
index c329f88dc..b7bad57c1 100644
--- a/Aircraft/Generic/WalkView/walkview.nas
+++ b/Aircraft/Generic/WalkView/walkview.nas
@@ -221,6 +221,43 @@ var Walker = {
 # Constraint classes. Determines where the view can walk.
 #
 
+# Convenience functions.
+
+# Build a UnionConstraint hierarchy from a list of constraints.
+#   cs - list of constraints : [constraint]
+var makeUnionConstraint = func (cs) {
+    if (size(cs) < 2) return cs[0];
+    
+    var ret = cs[0];
+    for (var i = 1; i < size(cs); i += 1) {
+        ret = UnionConstraint.new(ret, cs[i]);
+    }
+    return ret;
+}
+
+# Build a UnionConstraint hierachy that represents a polyline path
+# with a certain width. Each internal point gets a circular surface.
+#   points     - list of points    : [position] ([[meter, meter, meter]])
+#   width      - width of the path : length   (meter)
+#   round_ends - put a circle also on the first and last points : bool
+var makePolylinePath = func (points, width, round_ends = 0) {
+    if (size(points) < 2) return nil;
+    var ret = LinePlane.new(points[0], points[1], width);
+    if (round_ends) {
+        ret = UnionConstraint.new(line,
+                                  CircularXYSurface.new(points[0], width/2));
+    }
+    for (var i = 2; i < size(points); i += 1) {
+        var line = LinePlane.new(points[i-1], points[i], width);
+        if (i + 1 < size(points) or round_ends) {
+            line = UnionConstraint.new
+                       (line,
+                        CircularXYSurface.new(points[i], width/2));
+        }
+        ret = UnionConstraint.new(line, ret);
+    }
+    return ret;
+}
 
 # The union of two constraints.
 #   c1, c2 - the constraints : constraint
@@ -249,18 +286,6 @@ var UnionConstraint = {
     }
 };
 
-# Build a unionConstraint hierarchy from a list of constraints.
-#   cs - list of constraints : [constraint]
-var makeUnionConstraint = func (cs) {
-    if (size(cs) < 2) return cs[0];
-    
-    var ret = cs[0];
-    for (var i = 1; i < size(cs); i += 1) {
-        ret = UnionConstraint.new(ret, cs[i]);
-    }
-    return ret;
-}
-
 # Rectangular plane defined by a straight line and a width.
 # The line is extruded horizontally on each side by width/2 into a
 # planar surface.

From 9a590d3e61f21c7cc98ef15bb722a1ef41baa365 Mon Sep 17 00:00:00 2001
From: ThorstenB <brehmt@gmail.com>
Date: Tue, 2 Nov 2010 19:41:00 +0100
Subject: [PATCH 14/14] Added missing buttons to AI options dialog. Renamed
 "ATC/AI" to "AI" since ATC options are no longer available.

---
 gui/dialogs/ai.xml | 52 +++++++++++++++++++++++++++++++++++++++++++++-
 gui/menubar.xml    |  4 ++--
 2 files changed, 53 insertions(+), 3 deletions(-)

diff --git a/gui/dialogs/ai.xml b/gui/dialogs/ai.xml
index bba1c22eb..56898b8c9 100644
--- a/gui/dialogs/ai.xml
+++ b/gui/dialogs/ai.xml
@@ -71,4 +71,54 @@
             <stretch>true</stretch>
         </empty>
     </group>
-</PropertyList>
\ No newline at end of file
+
+    <group>
+        <layout>hbox</layout>
+        <default-padding>6</default-padding>
+        <empty>
+            <stretch>true</stretch>
+        </empty>
+
+        <button>
+            <legend>OK</legend>
+            <default>true</default>
+            <equal>true</equal>
+            <binding>
+                <command>dialog-apply</command>
+            </binding>
+            <binding>
+                <command>dialog-close</command>
+            </binding>
+        </button>
+
+        <button>
+            <legend>Apply</legend>
+            <equal>true</equal>
+            <binding>
+                <command>dialog-apply</command>
+            </binding>
+        </button>
+
+        <button>
+            <legend>Reset</legend>
+            <equal>true</equal>
+            <binding>
+                <command>dialog-update</command>
+            </binding>
+        </button>
+
+        <button>
+            <legend>Cancel</legend>
+            <equal>true</equal>
+            <key>Esc</key>
+            <binding>
+                <command>dialog-close</command>
+            </binding>
+        </button>
+
+        <empty>
+            <stretch>true</stretch>
+        </empty>
+    </group>
+
+</PropertyList>
diff --git a/gui/menubar.xml b/gui/menubar.xml
index 39045e82f..29295d576 100644
--- a/gui/menubar.xml
+++ b/gui/menubar.xml
@@ -457,9 +457,9 @@
 	</menu>
 
 	<menu>
-		<label>ATC/AI</label>
+		<label>AI</label>
 		<item>
-			<label>ATC Options</label>
+			<label>AI Options</label>
 			<binding>
 				<command>dialog-show</command>
 				<dialog-name>ai</dialog-name>