From 632db6a9bc890c9fc384da9cb930d7e6e39d2dcc Mon Sep 17 00:00:00 2001
From: Robert Butora <robert.butora@inaf.it>
Date: Wed, 15 May 2024 15:51:27 +0200
Subject: [PATCH] mcutout: implements doCutouts loop with Cutout::doFile and
 CutArgs JSON parsing

---
 .../servlet/src/main/java/cutout/CutArgs.java | 165 ++++++++++++++++++
 .../servlet/src/main/java/cutout/Cutout.java  |   4 +
 .../src/main/java/cutout/CutoutImpl.java      |  68 +++++++-
 .../src/main/java/cutout/DatasetsImpl.java    | 139 ++++++++++-----
 .../src/main/java/webapi/ServletCutout.java   |  53 +-----
 java-libs/lib/vlkb-volib-0.9.1-SNAPSHOT.jar   | Bin 22253 -> 28614 bytes
 6 files changed, 339 insertions(+), 90 deletions(-)
 create mode 100644 data-access/servlet/src/main/java/cutout/CutArgs.java

diff --git a/data-access/servlet/src/main/java/cutout/CutArgs.java b/data-access/servlet/src/main/java/cutout/CutArgs.java
new file mode 100644
index 0000000..2203c9c
--- /dev/null
+++ b/data-access/servlet/src/main/java/cutout/CutArgs.java
@@ -0,0 +1,165 @@
+
+import java.util.logging.Logger;
+
+
+import java.util.Iterator;
+import java.util.List;
+import java.util.ArrayList;
+/* 'JSON-Simple' library */
+import org.json.simple.JSONArray;
+import org.json.simple.JSONObject;
+import org.json.simple.parser.JSONParser;
+import org.json.simple.parser.ParseException;
+
+import vo.parameter.*;
+
+// The cutout-args:
+// CutResult doCutoutFile(
+//          String id,
+//          Pos pos, Band band, Time time, Pol pol, String pixels,
+//          boolean countNullValues)
+//
+// The result:
+//class CutResult
+//{
+//   String fileName;
+//   long fileSize;
+//   NullValueCount nullValueCount;
+//   String pixels; <- from WCS-conversion (not input)
+//}
+//
+//class NullValueCount
+//{
+//   double percent;
+//   long nullCount;
+//   long totalCount;
+//}
+//
+
+
+// vlkb-soda has:
+//class Coord
+//{
+//   Pos  pos;
+//   Band band;
+//   Time time;
+//   Pol  pol;
+//   String pixels;
+//}
+
+
+
+
+// FIXME or clla this Jdl.java ?
+class CutArgs
+{
+   static final Logger LOGGER = Logger.getLogger("CutArgs");
+
+   static CutArgs[] parseCutArgsArr(String jsonString)
+   {
+      LOGGER.info("trace : " + jsonString);
+
+      List<CutArgs> argsList = new ArrayList<CutArgs>();
+
+      JSONParser parser = new JSONParser();
+      try
+      {
+         // FIXME explicit converions: should check type first
+         JSONArray a = (JSONArray) parser.parse(jsonString);
+
+         for (Object o : a)
+         {
+            // FIXME check type
+            JSONObject jElem = (JSONObject) o;
+            LOGGER.info("jElem: " + jElem.toString());
+
+            CutArgs args = new CutArgs();
+
+            args.id = (String) jElem.get("id");
+            if(args.id == null)
+               args.id = (String) jElem.get("pubdid");
+
+            Object jCNV = jElem.get("countNullVals");
+            args.countNullValues = (jCNV == null) ? false : (Boolean) jElem.get("countNullVals");
+
+            // FIXME first check if array (or null?) and then cast
+
+            String defaultPosSystem = "GALACTIC";
+            Pos pos = Pos.parsePosCirclePolygonFromJson(jElem.toString(), defaultPosSystem);
+            args.pos = pos;
+
+            String defaultBandSystem = "VELO_LSRK";
+            Band band = Band.parseBandFromJson(jElem.toString(), defaultBandSystem);
+            args.band = band;
+
+            // TBD:  * legacy is parsed inside POS and BAND, not here -> do modif
+            //       * still missing TIME and POL and ID and (?)countNullValues
+
+
+            // FIXME explicit converions: check if exists and then check type first
+            JSONObject jCoord = (JSONObject) jElem.get("coord");
+
+            if(jCoord != null)
+            {
+               // legacy
+               LOGGER.info("TEST: " + jCoord.toString());
+
+               args.lon = (Double) jCoord.get("l");
+               args.lat = (Double) jCoord.get("b");
+               args.radius = (Double) jCoord.get("r");
+               args.dl = (Double) jCoord.get("dl");
+               args.db = (Double) jCoord.get("db");
+               args.vl = (Double) jCoord.get("vl");
+               args.vu = (Double) jCoord.get("vu");
+            }
+
+            // FIXME missing:
+            String skySystem = "GALACTIC";
+            String specSystem = "VELO_LSRK";
+
+
+            // convert:
+
+            if(args.lon != null && args.lat != null && args.radius != null)
+            {
+               Circle circle = new Circle(args.lon, args.lat, args.radius);
+               args.pos = new Pos(circle, skySystem);
+            }
+
+            if(args.lon != null && args.lat != null && args.dl != null && args.db != null)
+            {
+               //Range range(args.lon - args.dl/2.0, args.lon + args.dl/2.0,
+               //            args.lat - args.db/2.0, args.lat + args.db/2.0);,
+               Range range = new Range(args.lon, args.lat, args.dl, args.db);
+               args.pos = new Pos(range, skySystem);
+            }
+
+            if(args.vl != null && args.vu != null)
+            {
+               args.band = new Band(args.vl, args.vu, specSystem);
+            }
+
+            argsList.add(args);
+         }
+      }
+      catch(ParseException e)
+      {
+         e.printStackTrace();
+      }
+
+      return argsList.toArray(new CutArgs[0]);
+   }
+
+   String id;
+   Pos pos;
+   Band band;
+   Time time;
+   Pol pol;
+   String pixels;
+   // FitxCard[] extraCards; ???
+   Boolean countNullValues;
+
+   // legacy
+   Double lon, lat, radius, dl, db, vl, vu; // double throws except if json-null
+}
+
diff --git a/data-access/servlet/src/main/java/cutout/Cutout.java b/data-access/servlet/src/main/java/cutout/Cutout.java
index 37a210d..0695e85 100644
--- a/data-access/servlet/src/main/java/cutout/Cutout.java
+++ b/data-access/servlet/src/main/java/cutout/Cutout.java
@@ -25,5 +25,9 @@ public interface Cutout
          throws IOException, InterruptedException;
 
 
+   public CutResult doFileById(String id, Pos pos, Band band, Time time, Pol pol, String pixels,
+         boolean countNullValues, Subsurvey[] subsurveys)
+         throws IOException, InterruptedException;
+
 }
 
diff --git a/data-access/servlet/src/main/java/cutout/CutoutImpl.java b/data-access/servlet/src/main/java/cutout/CutoutImpl.java
index 535525e..f89ffbc 100644
--- a/data-access/servlet/src/main/java/cutout/CutoutImpl.java
+++ b/data-access/servlet/src/main/java/cutout/CutoutImpl.java
@@ -33,13 +33,14 @@ class CutoutImpl implements Cutout
    static final Logger LOGGER = Logger.getLogger(DatasetsImpl.class.getName());
 
    private Settings    settings   = null;
-//   private Subsurvey[] subsurveys = null;
+   private Subsurvey[] subsurveys = null;
 
 
    public CutoutImpl()
    {
       LOGGER.info("trace DatasetsImpl()");
       this.settings = Settings.getInstance();
+      this.subsurveys = null;
    }
 
 
@@ -47,6 +48,14 @@ class CutoutImpl implements Cutout
    {
       LOGGER.info("trace DatasetsImpl(settings)");
       this.settings = settings;
+      this.subsurveys = null;
+   }
+
+   public CutoutImpl(Settings settings, Subsurvey[] subsurveys)
+   {
+      LOGGER.info("trace DatasetsImpl(settings)");
+      this.settings = settings;
+      this.subsurveys = subsurveys;
    }
 
 
@@ -380,6 +389,63 @@ class CutoutImpl implements Cutout
 
 
 
+   public CutResult doFileById(String id, Pos pos, Band band, Time time, Pol pol, String pixels,
+         boolean countNullValues, Subsurvey[] subsurveys)
+         throws IOException, InterruptedException
+      {
+         LOGGER.info("trace");
+
+         String relPathname;
+         int hdunum;
+
+         FitsCard[] extraCards = null;
+
+         String dbUri = settings.dbConn.uri();
+
+         if(settings.dbConn.isDbUriEmpty())
+         {
+            Resolver rsl = new ResolverFromId();
+            rsl.resolve(id);
+            relPathname = rsl.relPathname();
+            hdunum      = rsl.hdunum();
+
+            /* FIXME needs also match on filename - some subsurveys have the same storage-path,
+             * and file-filter distiguishes frequences
+             * OR
+             * ivoid must include obs-collection
+
+             Path path = Paths.get(rsl.relPathname());
+             String storagePath = path.getParent().toString();
+             extraCards = Subsurvey.subsurveysFindCardsByStoragePath(subsurveys, storagePath);
+             */
+         }
+         else
+         {
+            ResolverByObsCore rsl = new ResolverByObsCore(settings.dbConn, subsurveys);
+            rsl.resolve(id);
+            relPathname = rsl.relPathname();
+            hdunum      = rsl.hdunum();
+            String subsurveyId = rsl.obsCollection();
+            if(subsurveyId != null)
+            {
+               extraCards = Subsurvey.subsurveysFindCards(subsurveys, subsurveyId);
+            }
+            else
+            {
+               LOGGER.info("Resolver with Obscore returns subsurveyId null: no extraCards loaded.");
+            }
+         }
+
+         final String DEFAULT_TIME_SYSTEM = "MJD_UTC"; // FIXME take from confif file
+
+         CutResult cutResult = doFile(relPathname, hdunum, pos, band, time, pol, pixels,
+               countNullValues, extraCards);
+
+         return cutResult;
+      }
+
+
+
    private String doRpc(String InStr)
    {
       final String userName = "guest";
diff --git a/data-access/servlet/src/main/java/cutout/DatasetsImpl.java b/data-access/servlet/src/main/java/cutout/DatasetsImpl.java
index ffe8d0b..7e863e9 100644
--- a/data-access/servlet/src/main/java/cutout/DatasetsImpl.java
+++ b/data-access/servlet/src/main/java/cutout/DatasetsImpl.java
@@ -25,18 +25,21 @@ import java.nio.file.Paths;
 import java.time.*;// Timestamp in cut-filename
 import java.io.ByteArrayOutputStream; // for SODA direct streaming doSubimgStream
 
+import vo.parameter.*;
+
 class DatasetsImpl implements Datasets
 {
    static final Logger LOGGER = Logger.getLogger(DatasetsImpl.class.getName());
 
    private Settings    settings   = null;
    private Subsurvey[] subsurveys = null;
-
+   private Cutout      cutout     = null;
 
    public DatasetsImpl()
    {
       LOGGER.info("trace DatasetsImpl()");
       this.settings = Settings.getInstance();
+      cutout = new CutoutImpl(settings, subsurveys);
    }
 
 
@@ -44,6 +47,7 @@ class DatasetsImpl implements Datasets
    {
       LOGGER.info("trace DatasetsImpl(settings)");
       this.settings = settings;
+      this.cutout = new CutoutImpl(settings, subsurveys);
    }
 
 
@@ -52,6 +56,7 @@ class DatasetsImpl implements Datasets
       LOGGER.info("trace DatasetsImpl(settings, subsurveys)");
       this.settings = settings;
       this.subsurveys = subsurveys;
+      this.cutout = new CutoutImpl(settings, subsurveys);
    }
 
 
@@ -72,22 +77,25 @@ class DatasetsImpl implements Datasets
       {
          LOGGER.info("trace");
 
-         String updatedJsonString = JdlMCutout.resolveAndUpdateJsonRequest(jdlJson, settings, subsurveys);
-
-         String outJson;
+         MCutResult mCutResult;
 
          if(settings.amqpConn.isHostnameEmpty())
          {
             LOGGER.info("doMCutout with CLI");
-            outJson = doCli( JdlMCutout.mcutoutToJson(updatedJsonString) );
+            CutArgs[] cutArgsArr = CutArgs.parseCutArgsArr(jdlJson);
+            MCutResult.Cut[] cutResultArr = doCutouts( cutArgsArr );
+            mCutResult = doCompressCutFiles( cutResultArr );
          }
          else
          {
             LOGGER.info("doMCutout over AMQP");
-            outJson = doRpc( JdlMCutout.mcutoutToJson(updatedJsonString) );
+            String updatedJsonString = JdlMCutout.resolveAndUpdateJsonRequest(jdlJson, settings, subsurveys);
+            LOGGER.info("doMCutout over AMQP : " + updatedJsonString);
+            String outJson = doRpc( JdlMCutout.mcutoutToJson(updatedJsonString) );
+            mCutResult = JdlMCutout.responseFromMCutoutJson(outJson);
          }
 
-         return JdlMCutout.responseFromMCutoutJson(outJson);
+         return mCutResult;
       }
 
 
@@ -95,9 +103,94 @@ class DatasetsImpl implements Datasets
    /* ================= ALL ================================== */
 
 
+   private MCutResult.Cut[] doCutouts(CutArgs[] cutArgsArr)
+   {
+      LOGGER.info("trace, count of cuts : " + String.valueOf( cutArgsArr.length ) );
+
+      List<MCutResult.Cut> cutResList = new ArrayList<MCutResult.Cut>();
+
+      int ix = 0;
+      for(CutArgs cutArgs: cutArgsArr)
+      {
+         MCutResult.Cut cut = doFileByIdWithErr(cutArgs.id,
+               cutArgs.pos, cutArgs.band, cutArgs.time,  cutArgs.pol,  cutArgs.pixels,
+               cutArgs.countNullValues,  null);//cutArgs.extraCards);
+
+         cut.index = ix++;
+
+         LOGGER.info("cut" + String.valueOf(cut.index) + " : " + cut.content);
+
+         cutResList.add(cut);
+      }
+
+      return cutResList.toArray(new MCutResult.Cut[0]);
+   }
+
+
+   // FIXME implement similar for Merge: MCutResult = call-Montage-demosaic-sequence(cutResultArr)
+   private MCutResult doCompressCutFiles(MCutResult.Cut[] cutArr)
+   {
+      // FIXME do compression here
+      for(MCutResult.Cut cut : cutArr)
+      {
+         LOGGER.info("TBD compress cut-id"+ String.valueOf(cut.index) + " -> " + cut.content);
+      }
+
+      MCutResult mCutResult = new MCutResult();
+      mCutResult.cutResArr = cutArr;
+      mCutResult.fileName = "filename.tar.gz"; // FIXME do-zip-all-cuts(cutResultArr)
+      mCutResult.fileSize = 0;
+
+      return mCutResult;
+   }
+
+
+   private MCutResult.Cut doFileByIdWithErr(String id, Pos pos, Band band, Time time, Pol pol, String pixels,
+      boolean countNullValues, Subsurvey[] subsurveys)
+   {
+      LOGGER.info("trace");
+
+      MCutResult mCutResult = new MCutResult();
+      MCutResult.Cut cut = mCutResult.new Cut(/* FIXME eventually add here new Inputs(id, pos,..) */);
+
+      try
+      {
+         CutResult cutResult = cutout.doFileById(id,
+               pos,  band, time,  pol, pixels,
+               countNullValues,  subsurveys);
+
+         cut.content     = cutResult.fileName;
+         cut.contentType = MCutResult.Cut.ContentType.FILENAME;
+      }
+      catch(MultiValuedParamNotSupported ex) 
+      {
+         cut.content = "MultiValuedParamNotSupported: " + ex.getMessage();
+         cut.contentType = MCutResult.Cut.ContentType.BAD_REQUEST;
+         LOGGER.info(cut.content);
+      }
+      catch(IllegalArgumentException ex) 
+      {
+         cut.content = "IllegalArgumentException: " + ex.getMessage();
+         cut.contentType = MCutResult.Cut.ContentType.BAD_REQUEST;
+         LOGGER.info(cut.content);
+      }
+      catch(Exception ex) 
+      {
+         cut.content     = "Exception: " + ex.getMessage();
+         cut.contentType = MCutResult.Cut.ContentType.SERVICE_ERROR;
+         LOGGER.info(cut.content);
+         ex.printStackTrace();
+      }
+
+      return cut;
+   }
+
+
 
    private String doRpc(String InStr)
    {
+      LOGGER.info("trace");
+
       final String userName = "guest";
       final String password = "guest";
       // FIXME move these to Settings
@@ -139,38 +232,6 @@ class DatasetsImpl implements Datasets
 
 
 
-   private String doCli(String inStr)
-   {
-
-      LOGGER.info("doMCutout in CLI/ExecCmd not implemented");
-
-      /*
-      List<CutResult> cutResList = new ArrayList<CutResult>();
-
-      Coord[] coords = Jdl.parseReq(inStr);
-
-      for(Coord coord: coords)
-      {
-         CutResult cutResult = doFile(coord.relPathname, coord.hdunum,
-               coord.pos,  coord.band, coord.time,  coord.pol,  coord.pixels,
-               coord.countNullValues,  coord.extraCards);
-
-         cutResList.add(cutResult);
-      }
-
-      cutResultArr = cutResList.toArray()
-
-      MCutResult = do-zip-all-cuts(cutResultArr)
-      // similar in Merge: CutResult = call-Montage-demosaic-sequence(cutResultArr)
-
-      String outStr = Jdl.encodeToJson(MCutResult);
-      */
-
-      return null;//outStr;
-   }
-
-
-
    private  String generateSubimgPathname(String relPathname, int hdunum)
    {
       String cutfitsname = "vlkb-cutout";
diff --git a/data-access/servlet/src/main/java/webapi/ServletCutout.java b/data-access/servlet/src/main/java/webapi/ServletCutout.java
index 35d352d..7ac6c45 100644
--- a/data-access/servlet/src/main/java/webapi/ServletCutout.java
+++ b/data-access/servlet/src/main/java/webapi/ServletCutout.java
@@ -57,10 +57,10 @@ public class ServletCutout extends javax.servlet.http.HttpServlet
    boolean showDuration = settings.defaults.showDuration;
    long startTime_msec;
 
-   protected Cutout cutout = new CutoutImpl(settings);
-
    private Subsurvey[] subsurveys = null;
 
+   protected Cutout cutout = new CutoutImpl(settings, subsurveys);
+
    public void init() throws ServletException
    {
       super.init();
@@ -129,60 +129,13 @@ public class ServletCutout extends javax.servlet.http.HttpServlet
    }
 
 
-
    protected CutResult doCutoutFile(String id, Pos pos, Band band, Time time, Pol pol, String pixels,
          boolean countNullValues)
          throws IOException, InterruptedException
    {
       LOGGER.info("trace");
 
-      String relPathname;
-      int hdunum;
-
-      FitsCard[] extraCards = null;
-
-      String dbUri = settings.dbConn.uri();
-
-      if(settings.dbConn.isDbUriEmpty())
-      {
-         Resolver rsl = new ResolverFromId();
-         rsl.resolve(id);
-         relPathname = rsl.relPathname();
-         hdunum      = rsl.hdunum();
-
-         /* FIXME needs also match on filename - some subsurveys have the same storage-path,
-          * and file-filter distiguishes frequences
-          * OR
-          * ivoid must include obs-collection
-
-         Path path = Paths.get(rsl.relPathname());
-         String storagePath = path.getParent().toString();
-         extraCards = Subsurvey.subsurveysFindCardsByStoragePath(subsurveys, storagePath);
-         */
-      }
-      else
-      {
-         ResolverByObsCore rsl = new ResolverByObsCore(settings.dbConn, subsurveys);
-         rsl.resolve(id);
-         relPathname = rsl.relPathname();
-         hdunum      = rsl.hdunum();
-         String subsurveyId = rsl.obsCollection();
-         if(subsurveyId != null)
-         {
-            extraCards = Subsurvey.subsurveysFindCards(subsurveys, subsurveyId);
-         }
-         else
-         {
-            LOGGER.info("Resolver with Obscore returns subsurveyId null: no extraCards loaded.");
-         }
-      }
-
-      final String DEFAULT_TIME_SYSTEM = "MJD_UTC"; // FIXME take from confif file
-
-      CutResult cutResult = cutout.doFile(relPathname, hdunum, pos, band, time, pol, pixels,
-            countNullValues, extraCards);
-
-      return cutResult;
+      return cutout.doFileById(id, pos, band, time, pol, pixels, countNullValues, subsurveys);
    }
 
 
diff --git a/java-libs/lib/vlkb-volib-0.9.1-SNAPSHOT.jar b/java-libs/lib/vlkb-volib-0.9.1-SNAPSHOT.jar
index 554db77940832d36d03f0cad3addef64dfa3fdc8..f1a6a61c90acada94ec801155a5adc9f30d1b1cd 100644
GIT binary patch
delta 22829
zcmaF6mhsqqM&1B#W)?065LnW;Y9g-+^Wwf$6HR6^H}|ZXctMUCB=}K7XmQ`F2stZd
zrZ5f$1{EO&21$m={{p1z=Z0~X3tyMqdw!a#;;}L<eF=|_8+%XOc$3h~eZ#>=#W^R-
zNyh8=r5ijaj9+Cuak!+KJ87HeuI0HImnWHJ&VHwuxuG|cGq%{TUU>Q2+I+W7Ix1dS
zvio!Qy}g@X{r}hZN4X5_AI}S9vCK+)J8#Xq7shSb7PigHCZCc>WMOG)K3u=JxpT1~
ziy)WcnnYHmr%#rbsHa;n@m_ATPK&xMnH+Qe32)=wx1HU;*4&$1e%8l7==`_p+dX-{
z-+OlQdH%M3XWQlAa5<o#ZIyjO)G}*@3zy;=%WYcPS+3naS91R7oZPQZ&dkg?HeuSu
zdGmym)!l6_D`mKZc;yJK$bBy{{kIrz{n`lCfaNP#w}k`+6qOWxS~Rifw{wK<hGj8}
zL!Jt@Y@B9gv`y4eTJGWozWyTrgi|Iz9%*Go=zq9y>EndC^QWA<q4D%p$cC94EUIpu
zd9HM$>zja;Ny(yY$;su6jThE@IdXF4|Fw7b7fo@zxHeI`iY4sqi|IX%x4mAzlf1n5
zK<K%v^}6Qj1&f#>_=|!Z6FF|PnuQlGEV_U3w5IawSwffM-dx$>y=$YPcV79KtHIO#
ztgB9SB=9d%d=uN&RDM>pXZc^LYm59HcuwAB<dwdt9?mRfw%Fh8jv{Y+>XEe}tM>9t
z_`#PYaVYSZXWzFp)>*f;W0ZOxGnsDGJ87`yA&cB}o}2YOp4;=+ibM!cZSdgAiLjD8
zm(r7ITYO{Yx$_d!qFoewCNtfQi#qlzX_{=XUElGX<IzWhwmp5dZ0h9uMUkw2Oi@#&
z%S@doJNc$bjN!+mA5+>2=V%^ya5Qe}8)+`NS+#PX^t+^dJTCfsUs}kusJZ-@?WG3`
zKQj62sx`GQ<J!%jR=?z*rsV0%-#b3?B$iw|IHgN(+R+97|2q1u3YpW>CK<8DW?gMl
z<BQh516I3sS8e-#TIYP$k2O6LHe^?SdXgBzx30}5ZRYlyHm+}1PiW*15meEeZW?oN
zbI73;-&bpE-`v2n<GkmIV~f^Yh@WtwW~0yL<DPDfCmvpW{Cw{Np^mUcE9&*HFy8Oc
zed@YTIdI|335Et4%RTSUFwjj_u{X}NSY9d`d$DEiCF94tl27femk1FmnpC&5BJJ9m
z<vU9)?@!HXEI(f~jrn`rVyAz+Cw8xFauSQb&}CSB>(bplhf6p8{XaR1w{O`br{Xgk
z(^IZ+mW1RuhcfIv!5~=iqmFUcoz6P0`VD-aoTA@9TpdxG8sM?W$(u9nZ`uBhQvZV<
ztG@Sox<;w^_k{}q$1QTp^=Fjic~4z^b(y;Hru&jDE<D9YU!4vtw=fIUnU^mbynVsy
ziLpOA=5D{V^N?pkm&N9Q-P``G+I@Pz+p#x$CL8t5y!2VyHh7z-?;B0`oZCw|tIRTY
zh`%YRUuW2H-~9vo9_d4+GfUoc=0q8t+LHFxyDfkAb%*|!n%B$Lam47BZt#D>S?ja?
zlBDu>&BWW&KTW;obyXtuNw~uN9rcADU3p&3JTv2^)SJZml&nsP`ouc|77;my#y{ss
z?_O|TYU5l(<>V82Q@WS-_E<XaE6MrPbv^ab#*=%bXHTl1;U)N)sn%66c$u^0v{P07
z_m&76ubtuS-E+ewzvlV8d&Q@J=5O*B|5?m7J8IXihIfDWe*F7XC~s=ifr{c)+!^nC
z^Y4eB`=8!6<^21@pA?e=zHrXtkDm6BC+$njxf87)!tD~}POMh^GuQU%za?jc`Xyf9
zoc?WtHQNTZ^N+pn)XuEmEmh{HINvyi`{#tf&uOOaKkV###63PMm2Y0M=HZ=Nl51lf
zVi&zuw)*i)w_|hc=ZMN!&$^TE_Z?ts(a2Rb`?zoqYy89-IrDv8>kIilUj4Ia(<9M$
zCg<*L54WtJ`#-T`_X_@v%C*jsKYed~(yf_Yvc+}FrD+1^=kIDgw)yi97pHoa-B!;p
z)Uf9&-@RyBT=9c1skZUm3%2^m>#}#B=r^xs=Dx9Mmmi-aUv~%d$#Ma?m-7zuRnFhB
zi@#XnaLwy4LDTnKH@nC7Vo~bdKbvHIZ=7WRsaKL<etho|TZdPFJr>FPCpg@#oN~q2
z<*)S*y`^iEzenwHtFgM#VqO&Leok!B-+HOvxs#sXKm6VEc=bc}BW{Zfx~><7-Ynv>
ze-hd2)E@D#{Zv*bf8!L5PJt@sC99A3+w>HiJHBFRvD|L!?e`AsJJ%=u;(gBQ-Hpxf
zH3Ob*ZQ}ZseCm$h(_LbF8s%5FhjerCEDSR;$-3&r<~}#*>Vwr%3v^!I=?J=N+U`H?
zw0)dVJ=4TRe>&uuOh0XXv-{d2UdOuKo`&v=jz9YlVf0V%RlZ`OnUzt0usj?4qwUT4
zN?QJpwu^U~J}KN&cAUxYJ^vO~sdf7p*XmyAQIFsMY~of{G0v4ruXDHsIx7}9-03N1
z{q%Y1lPb>2`aOA`-%R@}HchdJby~CFt5RCaK6bh1rjzUU+~c@k;BWBV?d5O7FAqGA
zorz@nEOP&Z|L5<SU6$u{e)CkS&t%VZYi-<a*!sPYk^6)ON4emyy)19lOPbC+$^Nr<
zrA+Z=j@Q0_LJmqD-2FrH-lybctPgi*a6f#zJ0mr3?W)|0Ee{1dt?tj>C*QBMV9(ZV
zpPAo8Hym7fe>PuH)RKD19dXZYtl4zx^!=^-SefkgyY3u}tm8Je)jxYs@A>(uAKJVB
z)Y$y~Gd*(>&#c((7moRq3&mbE-B((CV(!bXybrx!%4XL@U(NFj*A8T!x3KMWOnhQ!
z)wF50;X+e(*W67EW1hM8(yMrp{D+sgIzO7Nj9N8gS)WVd<VR{J3u@CC&(|N_n<+S7
z|L7{m!u<!PR8F+3_I%k}DO9`n>zecXmmFu^Z~j<zUDl3&p|0G&ymepvw-DRoW4k`!
z@M``HN8P%$Du3AaKb1+h{VBVD|N3M6S1gtvV>Q)V_0d0TPp`GsLDqjw`ya|j{Ede-
zQ8*Yt%@F<MV@XDA3=HPH44Wg_quBVC^sR~zlRXj?&B?%UNqF)>Uitd)&U%rnvj6?c
zHgCSk)0pS9u1M#^Mo%*p7J;G;heLvA7+csbH>7Tooa9+ne(ml}kDT0%TeoKMZ(O@b
zW6RdHw~}1BJ$<5<OpmI*zkRLkPvsw5{_dN3^X$P%i*EYg`*Sb9?)dlb)%(9!=imEr
z{)sBX_6J=(GMw5yM;y)uT<W;0^0hw0X3^CnS6za<ue^Et>dlSxiFO_Z+9z7wo0fa_
zzkC+Pxh}zVd&R@h3GDM*V!VA1%}TgE!D`Vpmn%0Me5cR6kj&gGY8)}Q);a1%&Xk27
z8uMRA{n)~~M`OX|4#DX6&URv&72<zNtQO2Hj<NW*X_v;N4H>iUCN24;G)w&Gwue^w
zUiGX?XT9F5v3;eL{IrCXJ*iyNlnuOZ^SL(JEOHBqdcN^L|6$I1=VR7~6bOfTYILqT
z9JN`Hd-XHLyD}<MO|H(EIi<kD`_?^4b#4~PY?U?p&RIog@A+I2(LH;Y;O9isCN8Zb
zQTjc>x8E3D{qW&ni`2E05YG?&5>COrS!z@HFLXbvcUE2HTDxZQ28-LDHV0%qoVKwp
z%<b(I&ZoRwW?ZTBSx;_yd6Vt8e*gRJ8X69JSysB9krEYI92c-%Lu2d8XwfO$S=MDI
zGQut>9pO%Q%)KW3kc0cm(XHZ5yG7oJ1<h-@wSM`ermL$G)+g+Y;Hu1U-rd8OxH{PB
zqE7Vho)a$`1Si)|xP1H3;X0WK7neRzxHp;4AobP6S#LXAtWItHs&ckvnVaezkvF-8
z(~b*m`01Be7CHG?jm)99MpYtv#P<qKJE!ftB5<z3G?w&PZ?}X6_1>7&YbSG1*67~y
z2O1%qORo!0nQ;E?R@<5L3fs4Hm?X0PW$MyiB_|$fskZ5gX4$C)OtSUPcYe1lJ3ezs
z!n8-9l@8gku4-}eX>8mP(BWS4?#b4htCpHaGpehsnUl8NP3cyH)XjMk9<Ezw%v>3#
zpJ7sxP<{N}+{QMCGaM1KO+^fZ%tSe)4TG;Hdw$fDO!xg=puXzwo8<CN-KrRog6wGu
zH5y0ma^36aH}DRdx@_~5tq-DY>TkRGMLd1&&gaK*`8(IeX*$bnr|-@UJiqPTmOgIv
zmgD{1W?v4NcAeYx>)|oyLtoUNZQ+0Z*ZOe^?>?dVK_4=0bQ}$P_r6j5c5mv29__ln
zYWFm%zAJOtDR&*omfB`}u%!E8AZ!0a5pL~yi&pAJ-g?RVwQ}N0b(i0kXVuR6lyV=d
z59T`eKxgl!=F;w^+h6Sr6?rJ`64w8F<%caN?oEHTqt3c_>f3@{sc*d`0w+py9$b_D
zU~BK>U+>Zu&%YtI?WN&bWzn~nh1f$^ultkh7SUU>nltu{?6T?(!{XiNrx!1*I=gC9
zc~I?J)2hhx3|_xm0)CzNoX&kGdG)51vFBfWVQqR;|MS{E@93BWS*^EOHnP(#S8NUx
zOFbX>u48XQ(T3J~(Yr#QZXBMy^JD9O8?)CYZ&m+KxR=kz6*Om~Sfo_W=^`N$F6Vh0
zinVmkX(=tt>05XCr*5j{JUh0o&D<NG{rau+$mXJk%GOCq%b%=Jvk*(mEm@!bEy602
zTk;B@vgm7nzvB9kVzcAdQ<n%O=1$j3`WV?6t={w5=2oJF+TK+k%g)M}{F=;d`(r2n
z{sa1{f4r{zU$44m*0F`h-FgzwHYVQ>DO;I%*`vqH!gTW*S;yNi<V>&0U!1i17EiK;
z==}e)jJ!WS$cQ<ubkF+#v2q`i)e}9Y=VjR>)t$aNf$7@$?)%;uUiI@CFNR#=;aQ~|
zm5}Vvo$+Xk2ivc$9db*P>KEi+v14;;+&4wiLaj(k=TD$h?X5$GwvNJv+4;Ag{o2wX
z$F1TriFxnVg}mn1<z}w^m(JOn`E|)L<K_Q<{kr;f>%w0<+5R2UO_Dyr@>T4#Th@dK
z*|i&IOv~t7adOGDDIfXoy~)c6txx&W{kN(vFpnczLi@(&>`Jknl_sCwxq1n0*LxlL
z%I5Uibi4H#@yEg~>f6rfUimP|+Jtpwy39JWm3vne@q9{sQXcYKyeIKts)*T+)qlHX
zjke#4e>7oUR{c!pQ>pJb_w3dQ=aDl!A*0sG_4fRM+kv)iTZ31;;p|l|nK!TY#lgh-
zdoi&U)Ar>bW9mEInap~B&BIKABSvwV+7g%DLLP>NJT_ai_#9i-)lXF+?4q+j$ZX{^
zp5^rBQ20mFsOUB~xB5QA(13L_LiBXkq_Lel=xqJ;&)jAo?mV0R^})>(AG6MRe!1Ij
zPsenf68De1pNa|^|0F&6Gd(ZHXxfPh7F~&3Pt+UhUnmoMY2R*tAl$NV)~Qv7SN5KW
z>=TV`eEKx3>JD3BX6?Ccno9}=ldtg}YA@{A!!cX9@9gCxGmk%4JN@j|r8`PFMr?XX
z#k2V0U7S;0SHAf$`;y7e=;e2(8y9@=dvnZBN9ls<9#{5_?U|Wd7vwDQwmRu>vt@du
z+9X%sNkx%Y>P0l8-_2f<!u?{q%!2Qe#2#L`eK7uj*}wN&CM;7I3lXZGW9~cC(`-X7
z%k6XgC-~Mqw_EqWF6UsQWaaAf4Qr39?s@d&?Iz~ug-&8Yzb_Z$%|5Vi`oVwpZHM_Z
zW?y~2K_}yu&dOz(VNtK7X0&sBE}ODJNBiRG^Pdm1RHv|=`71f&cm2oQn)VMxN75&6
z{usAl+lHdnt40sx<(#+JevuOMd3a8)zDQ<e_>;8@y+1|%U{x>46jE+TXpbosmRMUp
zeHXXi+_s=sdWUTL=Waaeb$9ZQ3A$mCuhP~ie(&WrZz;Nb$n{4-)SrDbAIZ;FyeIN$
zk8GiK^|!M9&6doEbgFu1KbA1BUw*EKPq88KibCJnJ&)eIG2Jzod0DXT%pKQP7Isa$
zKQg>K=vgD+FZ|1U%^uDo{l|84{qjencgX)g<~(!Ny)(LBW2be@zE<D!{^9R1-T0Gh
zPKoZ}+AX=a^ZJKfo9}u**xeN*X}_Z@>7|xe468Tyw9oF2aouyJtY1y}v+5N04V%XL
z-#;@p$oqav)|Q`KF=1;=X`P>X#f<yh>Kldn&uB~y<y$dz&fZrgP3A`TUahgT7Lop}
ze!QUQ)}rH&?6V?+awLyWQd#%E?_aY|<A+VjTtDA@oS(b;lYT)%|HI<;Re!o=|9o3>
zg!Aycsg@TbHfNsyCRWk(&(F9`UGiY?k;*pPcW>%@c9dCU?8(?*wWZ^6`^+7D2Hi}>
z1zfGROcyNV<PT34{;}t9#t8$pkFE)Mcg~;du%6NR+x`01`zF`_UHkdge*V#Y-Ah%L
z)HTijw6krJ{o~*FBObqB^O67B5B2Pt%ToWl_D9;r9lHO~e_F=P{|u<DvtN?uW1g}y
zGB8|bntYH~crvf3Wc{+GzR`NRJ8}={GI4%9;JQFVSFkVm>WUSwE+30D)mvvCW&M!<
zhv+;;PQ{jAj5VC`jWf2c5-Z$z&AK=({n?qPzt68%XPEcEk2P2$!XQT^(MZQ9rTB=b
zz1Ylvv$8XH9h}h5(ro$gW5g03?XSlgzvr)aPn{C5Ens6IqnYzp{q5EDJlT04%uXFj
zoZf$@v*i4}yZ28l<FiU#^?FgSq{WfDuik9iW9Iy}{>ZNGRlSyHj3a`07quMcX{}nE
zoY<K7v%|l__}R(C%hL~9$mF>y$!(cB$?Nl#9G%R0kKPs6?_R5`ZKjvqz4h|vZ`-T)
zwXWtlS2->2zekIt^UFdBch4!dXHV9DljxZy6Toa7H-)3V=8pI)(f7wwR#q83`6w4Y
z@!0ZXFBKj?l%91&a~(_38mEn-nE{Kwz030Qy6$%<Vp(9(4bhtcd^#p8=Gdn@D(>^x
zEN-;))EmD^99O$4XT4f0`q|QQ^_B(NTPmJi`O>w;ZCZAO>Q1*8vRq3T`S&->tyx{u
z^tC>4{>$?-Osn1}?m6>N>EI*F7`2RNADCOG8}_@#IPscqa4Zu3{;?s2@w(>5nalq>
z<}Wa0*898JAU^uZMcds83AW`o78LZpD!G3~xAcxuq^j@h?eld5|9-Jt8jl+Hvlts^
zn=mmjd}d)_P+?$TD9hI`NGwX+tRNoEBnWD{pD=Oz9nZwTkjlcqATxQRp77@RlGhmP
z?@K;Z-ze~KexgUzSCiTHhi_QUIKcn6Iey9H|85Tjr!AQ;*6MdKz@?|oVRrlsyQ5z|
z)*mtzad}yxV|a9m-ZnL@B@C`&c5?sOu62DCFpl=(pLH{++T_kZJ)w%GB#}LWtopS}
zZ+y9XL-XBS1+}S>u3ED~-mMP0cz%NI!4HM<%Y`(iew*@4>50)i@10H4H&wg+=Zc$Z
zydNoDgE|;J_B)FwOUqc+Z)@GQFJ#MwFoCUMtkOR5BFz&jbUh!l7atW~Z^>6Iqw-JN
zTljW{$=^5qM(6U*cPQOavo<$AZ}WN6=f}^dzh{`Ius*3Laog=vbp|nuGpm-(zPoi+
zTG0O+-_E45@Nl^cD6)Nh+P&7idiQLe&QAt4aV#yCN=gou-&So=<q@~oVNxHmYHDuc
zjuVEB8i8ur{->*NTOGdh`r#a@q#a9?P8qhI<~g|QZjn#h%8*?(86~}IaxHpuzCO6H
zrn+VB!8KhL?o7o~UhpT}erckae0_s;+E>}bQLFT;E}PwYTQlGBd(7#~C%=t3m`?6L
zP{<lC>BM?^;~w6&msb)}G-J7yR|Ib6u1|D1^x)BVwd1-vo%>QHbBmT;Qnp$yv%m3F
z+G|}?+rVuyn=fU`&3L!2Fk!Ol=lM@w22R;nv^wvG>EW#`jpr9xw21Cw)caKVUU!wk
zqG;aZAFT8qGOaA>mD?4t{jcDff5s~gec&?d2)Z0CyFKq+gi^Ung|X5+4ehks)%UWh
zwd9QIefTCAe3<lj#=05<!|4|+vkl!J&s{h*tgCS2I);-S`a36FY`J0S#By@pA)$wt
zm*`FsnSbr@k941Tir+d-+ERBpU%IYP!=!EZ&+gcg(C&>-gMH>Va{jpy|08tQPfM=t
z6DQW)lGw%S%*SZeuxpP|ebdjyf)BMeEh@P)aYjst@axC*;*(mHxaV`$GT-L^B5>jR
zRJo8^`x}dY@|6i5i+%Fvfvmm7=c!4_*O}CJ)b%ukh>5OT5wufqN>^Fe6T@TuY!;&X
zw^W;mD_;NLaH`a1(p_V#*A+26|CtaO36$9KU1#||XJ=qI!q31UhR8^{sU@kC&&%=D
zhi6AiAD6UMRw)xKI*{G0D`RbRjFav5l^tcm3MMlom_@~vc~1B})=OgMP7==!zv4G5
z?y_3$CGT5XO5d-oE_}bWm@!%E_}*o{x8*Oc|I7OG!tyU?Jnpz&THY^r_RX0+#-HbX
zo>!jseeM4{`<Ndj{)u&VSWt5<cZQ+yvn@}fXSUVXnXgsW2)J@zT;J8ugtv-Cm4iEH
zwn_Tgwl(?7rK`?J&gzNYci`{V!mIPm=6-D3chOV(sk!{EJ4+RnHatEwtFdMN#<?G#
z8L+(TT)^{`>8S3u<lk$Vrfy}`;pfdX*l}W&bneWaO4YpTI*HpGgY|+Ow`VPVsMq*6
zFKtiarQ*44=j-Rq^Nbc+>fUj;bKkwXuM%#mWv3QtHQDY6S6Jd>)(~}XpTLS*rcmka
z6JI~)DLL}ue9vsY<n<|^8XUGv*m_9N&6Llrz+O(^Lhi9cU+(rSQQE)J>CV*m`Fckc
zuVk+1e_+tZAu-#RWeex!*IV^|cTN6W<mSxs{-9ywg2lVauZgjg*3VgVgJZvldO^_P
z-%1q%{Dw)Ze|!Gh*=%X177*yc^W4;gTjq|El$OwP{pD*U@0ZOrnDwE6Wv$VKRO350
z{C}inWf>$d(|LJFS#Zlkk%d3kDfuoan;SCiyUqpiV~cOBeE7wxVCP1mtPegcb6*H?
z1pg2hZq999E?knx`<3&w`fK@mhZtvnmc5f&b6>kjZkzJ@$FjE-QomSNg>Qf9wR~-%
z@!e^X=l!Dl_A`YaZ)oUfz1VS(<6L6L!kHzx?hhtz_1We>V`fXKX11l~>Pp}JTwgP8
zMJ+$OCx&;~4-Xd4IpQ}=bNwRUuA6N1H}UrT2a})A?t9N^6XEdUz0TjMTizZ{HhNrd
zw?pxj_DL<zy%Go8Qyz&I+u#4BaxSpbShb+ayFq-LltxF;fk_(kE50v@{kSJet=81<
zRFYAX<`PM(`)7Oe&vgCK;pI8??P^8&ta~iU>zdgYzPNO-L^!=PfaTGgzQ{0VD?M%&
zHntL*lU8!qKMLMV`x|&O?f>z}{+<^<R9>e9)gL$BboQ6=CR?Fn#Xr`xop=3U6BiNo
z_SMegFGOd@>HX#t^J)6=OGWilW{u;qH{CYvS=W2E?Y@%k#Wkrgxo9izoSi339&Fq+
zlVep~q`h;R)#<~VR1*8Gm(4%>;pc&0EtxlM_D|J*q4mA;YQdo>`--&}UiW?%RA;$;
z*U)>};<pid>u<gc)Hc>A)t4;^POCa`=EkPE?{&g1@BR8x`}(sBYtA@Tu30y~A~mh@
z)5)*JTnZWmrk(+}uXrBS{MouI`~Uu_TtWf+&P2E$oBQsW=B}xCxX<vee6n~+PUREv
zT|Q4%I$z|tBYppu(PVAkvWfPMwybBTXl1JIxXwIVhfD7J7C!IA^-r%{-cjRs@u~FD
z+1%RGCn!~4pFQ`PsdU&4r*6mkL*JH6;4)CZI%%tg)W^H;O!LGv#hNC2c~*IA&8^Sn
zRKJs>mRfql=%3Yf3$5)cGlJK>uC6;a=jFyfoaJY<wU50{ymL@m>fNc!uggoyuUg-p
zS-O19p2<6tcOUjK4A}E--MZeY`g;c3GnT*XS*p8U?cJ{6n=_e~{|FOa`h$B$e(j<)
zv5W5dEElec&b;=K-K}l8o6khC&3k8b^rrp2QF85b^5U>Fr9bMG)JpzzdQEC;I#OoY
zH#O6L_Pq3u*Zy$#Z~D(UuWdWax4oM+A5S+vR(DUR|C61Lljyz{@tePlq8Yc9pZ1<#
z|91U~Z{9VJYL7lo+V`nWG(P$M^_x|V(-^O@zv@}U+QPJ>`%=Z<*&LnHU(1`Wr|jjJ
zxMu$GZPF&(kF-u}=`qQ));!fZZYZ(mPuXLO-~JDzWmcZi?aY4^y+-*)YyM`DAAMP!
ze{PgV*7yGxV)@7G?7VW?_piU-{9;^pae`de^PQRXn!ojRld6m4tRHo+NZGsldBI(o
zMdcf}fA1)~FZ1obYiY27RLDB_=HeBZTAkB$7KB|`YWwNs3WXiVmKD^R>}mMUW>8c6
za{l#&-{odHcOQ!QVkIU1q3&qoA!&tORy?1Nu9a(Eb?#yQQ&(ma=jYSiEbrf1l;O^M
zxPU`;OV8w9xh?e{bQcN#wKzS0j`f)$7Uzl{OGQhm2XFkC{wg-B#mlYwsQhQfTaD{~
zIoBEMn5KMR{zLM+%)|fBf3W`cV6HnU`5;Gn|DpAsL6$y$*e=~ptt(D8|Ecoxty@NC
zUaN^omc_z_L5Jgde<yY(^5nl_HDP-ApiX2h57TlJ6IRO;>u1I!)PIO>nZjrF`q{;}
z`^7)}vM-)Ya4mRmDq|lbn3Kb`x2G>7gYhmS+wLsE+LIY4EKZ+`_PC=aKjV0-`8>|9
z*WUkEtgh$nzaL^W?a#Z#+zM?9YAaW3%DBv`@p~j9GpBL&k8aJ*>l^AO)?MJ<(-Xer
zdrej7Mum;<-7X4AAJLm~z-wmxjEsue#w|6Lr<5x@?s$eylT3ddcl7c0gnP#%3Y=Gd
zTy;v)^3CerVkW)Q`RX5ToiftD7$sDcBX~9BMMaF>wrSH($>@K*ctJ+3P4r9s)$<4U
zZEX4@C;C`j^5F6xUq650y7c?Ri5R(;8~<FhI&9)!`((m9rvy&xPadm3d)!xJw92br
zsPsND>?ix2=p!YYY@GJ0ck`G}<dK>#baKK&)k#O)%qCvx;a8uut59{Kj=tHvq?MBX
zo3HftZ`3igJ7|<s)0MjN<I5wuHrD;;_c!&;?&=E_(X0#X3H++LO-y9!_Khptn6LC5
zcpv)H{m;zWPr*NZ|A^K*f7y>{B5;7((yN0Xewi$wqEqjGIY6XN@Ab8Had&0%^O}?v
z<@wB5@nc)(gw7o)l5LMB9raHQ(|H+nxlHAswq#(3+u`*3DIf26_nwf+E;@hC@_gmI
zVt@Z%pRZq+XPEbBW|v~y$Jq5>4t_b?CmL1va;o?l3Hjy=uT%~$C^#}vA$oP51kcT1
z3^|bvrhQ8ova_|n)=zzvwpOd@xy6o@h}$b{#T&V0G$k|En1{JOP;zHG%=5~pc<H~Y
zsVPPIY_DEO9G%gX*jE^n)UjRm{8kCKPp!ZDc4kkLxqMe|ZT{Pcw-Yv4#)KIjH0;z?
z`6IsJRhhNQj%=&g?7y;ylm5AsUNvl9P@|O4vhQu)bbl=lrjzzZ3wi4=^K^E-z4cJ&
zaKyg-o5C`(I$oDt*W~r&jdAv>VC{<(IeIo#o$;{CK7$|cmV9Dg9<q0P$=i^-WozBG
zZ%+L=``I+-i97$F5I>i2=E~k}FHL;!i+vUBd?Xa|<kt!f@qOD@HZDob-<@{jE2sEr
z@mXK4Y3HiXa{PE@i59bTgp%9c54-B?ZdWC8XZB9|ylB=xvo#7eFIg9MaXJ4oVP#&w
zbKTR^*HzOdSv-r0TX6DO#{S2rBRB40xS5htnG$?xS#i=wmPwzs2QJxV`Dxk7uKD+z
ze{s9@8T{(BX{)pnHu^sE!(<KDAHO9g1==1?<DY2DB>ZDx{fF`wPmXKoJXm+;^1Tb1
z5@PiNi`fIxyM@_z>?(KL*;T!$R7iBj(Jgvr8d)iVT{$&DfBC@uq9`x^RTsOyXPjE=
z!vDPY-|mbGho#3w+*|_xx$(?=y^;CM8)db*(p@DXFYoktyH7v2wx#5pywd*uFLCo5
zgi3!4^e?IHQNJ|prLYRyp%<FTnU=q$!6}l1fq{X8VM*Vr&HL3N8NuB=i*?y{leicd
zmWePhNKHN{Cp`IIFjxKD@azhiP{}&~Z$`J@ZqfAKrjmOwliS4C%r{zLQron+OWp;O
zr!4dJaBB1{o0PNrW@MS#LRWznrltlC4i2uUi>o@ecwD|PC4kjcFu%fCME}m8r}gy>
zA8pgs&MuXHV(9<vjAi=1-{0rGulf9{zOSDtqPspzLr6n%%j)8^dvCVa$7sjzy?gG>
z`>mS=Sy;EcJ$v%o+OxiaEekU{Ud(7+abRY!<e5FmPg$RRi^}u1x;=Yi)Y&r)ss(|S
zMg5i;Vf;H@`jjr7x%%@oN#onmcOO0TjN1O^%UTVV64_#daD^IAtJ!7OIggy?{;(};
zhWdsZ=e~!%FMN};b@IFOsXCdGZ&&WCU$b=QNn_ovq$5j?7_%}xJsthjYF)D3IUx?s
ztj5pWnlrXsy|eZBtFqT7Q#f^ItP5QAi9;#ELsrsS+Ew%1wL(6-gQm>JzRmjU7PK8@
zN^LdCIr04LUqPLzTt4Pp%+Ft1$e(6u^7~cg{qx#_#GMBwajxW@*>g2J&Fo1v`>(ZY
zc30NNZ=YIxxy<a?pYT^63%nkzsViQ;_2jv-*?G~o-abB4cy`Tejx+lC85%Pd6}`CB
zFx4t7ajS!hufmLVbEoT^R!`k~@c#PQz1)Qp+oWXYA34gj@v>*fHoME2o4)NlHJR_^
zMmKj^y@kz@TVsRb3=)nU-_!ZFs(OKTvTNtNuU2LWix1SlnR4q>py$o6Qm<Ig&1SUV
zGFi?fdQ>gv;>OUX<rePW?}}Z2b8okCep$58Dqf+8=@)-|I``{b73VsYBq^!oH=fM2
z>V9(8N-Sx&Lty&en0FU8irij0XRcM5=ZV*+xc&>cU2M}f+4A~@!*h|&IJJ)W_Q`j?
zT=-Ghm0)fvIW_3aRjc}Sjhd20Gfk3rt`T@(&3*EPSj5BYjLE$dxAr<po@hyYzIW!u
z-1J!Exus96)sOEu@}gh$;8kV+JVlnH0W4D&Z|SqWaau-m``$Ze3+}u={F*(#?N7HN
zL-eWho|k?xeLAcjZF}j%uWN<#6mod43%<L&(wuLJv1X(io9e3D1$+Daz3VT|Dq6o&
zy-gr*$}2nNf<ngAc4?8)N6uQ=bw@{BI}>y6)H0S;|J<+6Op<RFJJuU?F4rn=dPT>M
zZSIPUUo2(IAL%ij*s8C*!uAB`9Or~HG3#HY%-!Y7XIMEe*+?~h!n^zBQ7L=xT=CrW
zyVRzEy>iN#kgTXp$GD^0r~I7I*Zz^C{$&yKyDb-fmdLMG5t5ZI%h`MDxI*{wmyW_S
zjN`WbN#2+9>*;2j$QQGe(+eigRdOygn!9xt+ppbg{`dtiG?=z!_gSCSGyP9*-7guY
zB;#oxYS({l!SbqqA^ZOBEW9^srOxy@@7x=iclcQ?&*F=$aoikrX>a6Z*%QV0LjL{t
zoNFjouR2-#!n8ei^&hGP1PZJ+K3c+GtiIvJ;sxp}Ck1^v)D-e+*XItOMaw<J)=qK?
z@2=VI?_lylUATVMmZs9VIf0%gaUO>)_xDCx3IBI-K4{&pYV+dT(x<YP!8}YW*YWtS
zn*MF+N`<#Ma$8=kd+}hA{aoKut_@$K<(AkSH|BogdDy%DN%^iD!e=7H{pS8Gj5m?I
z&KtBut$BIcMX_py`?<NE-hW=~o2tFU<DRy3?(L<DY3nW){eCkgSmv1i;vb@QYag0#
z`mk58;9bkNlClf;vVXc&)E*YwJbUF0{SPNnru=A`cOf^;Z0g22#gn(~Eng6zZy~(c
z#)0*Owf(NLA4+C3XZqB0?-st7yk9uuOZEw);|cv~7nGXUPD%7yVd?h2;jvWgw1?j!
z+YXmVNowDI{Y^5KdELY^o?|7wiXy_zr!raU1#Vasnri*CE52Z)VVpcO=Bh;4u}Qtt
zlb5XV*)@OKlAd*c@0rdFm{k3S(QC;DbC$4v?%4vVg2rxPQ&kVY`<NGVy#8^@Zk3<+
zL{`i;SfoBzef4>RcY#*fPb5W7zlfQ+V?o-}cPqR8D{UxqYDoTQ=YLjb;i|IKMP<7>
z_6r?$^80tL_@Dx3(i+9tTR+V<TJ|`iudVz>L9I?oMn(VjYwnXjF;pIjI5S)S<ZIgo
z)*nW4PhT0X>)Ii<>Eff96MWt0Irhhv)j!m(`5wBC%`@=G^FLh?2@(rao@#S+9#$53
zJN3B1Z-e_RA9vh0W7v9O1KZ}CJ?9>>{%m>jdB;c7nz{bH@gnR~zvUM!{rqxo^`!Ip
zT6Z5YpSgG=y2d-QyklF9^nFFyT*3c~`XcYt=dv7qd%VCc$fRr8sV>DSb6j4|N{BSr
zmcY?n?{_Fd_)$%#J^%F9wt~FK8Ha@<44OWD>+F5Jf}t<*Xm{4@mTMaGuV!y?@Ll3l
zEho-#EXz?z&Qd_IC|0{bD7(GjWuJ3$zBZ%!7PX&q&IN_ecq*{y(iz2^X^cK0vWK@F
z{-n)!SR(PaOu)n(*Ex^VjwNX?x^ZlKZ%?4{Gy`kx4fV|%a}#&(>)vcuwmbZQi*?YP
zyKUNq{AG_FV~*xM$~xr}xT;h9La+Qn_teGhLeGtv?;j2Bc`9Vn^8R6FS*~`0_`dUz
zGrr_ju(i)zDN^=`W8P9({RxlQEBsP_n98L7OIa3oOu+egljlnzN7pT1mK+Ljc={<Q
zBiUrq{KL6EyW0}$zs9dR_`v>y;<*b23k}XmJl3+9$#G*vV(^SbKMy`wI!|#z0Be_a
z-@{<hsqPm;CR%iz?$?-dVnwUyv|m%Fx4CycFO1o`<>)E9g=yYXmj-=_iT@(DPStJk
zycddFd_3l^R(bm3=T?`vI-y02moIUzbrC=LUPylB`pL?N%HIdYWWPC8uNZT6Mg?oJ
z%8#U2q5RK>UJEV$e286ea&_m$$2{Aal9EiOREtD?5NK+gm0<JZ1&ix?_dv%<XE=RZ
z56q91TfuqMx$|PeD}^~OHe0GBYPUYT^x=-XTyvb1p5wEJ$89Z_K74%QSJ6D@U>lKB
zQ`*WWs8*b{2<BWTn_jH8nRiao?mPAA)&g2qCS}(JLqk)xSV>4n8ZNqV+~ZApay7GZ
zy>j6<$+~~{oLug7RmmvS<*WO>U*KGR=-}NYyV@V`UE}fn<DL8dS8N-mcRaq{d49Xc
zXTH@Fd;XX$`oyMG!lFLoz3r6`Odll|-BCB}5|{kk`a{$3$C^{Ob}u*jqF1-VNaX13
zBlWMm&rCV;oa@X#heIDz`;>OgYgIpYzviD9`!l`S)@_v>83J50^;iEok<Te_tiICw
z)eDJ(3Dr6UJijM3Zk=khs5^`|d4JEuSu)G_+NhatWxcL9Dc_y{(VnK1?Nur4T}Kvf
zH0PMb-0tuCRi=tJ%)irkZt3PZ_u?G*XZ^f$l*_WQ{s-Uv#~OzJlK;4bPE!+AKL1#w
z%g&{>%`xy``T9AZ(oE-nDshSMdM|P4IlsSksK2Ic+}6GyRxN)zK3&{5>sD&)zD$;-
zYfhJ|yC;08^k4jC%gU@RYAZfS^2@nIhT3ddWj05Hm;doS#hQ(89XjOpzc)5H*>Qr)
zGD?{1O3UMi6))-)#HO%5ei*tnDs-jUIbpT))l)aJb}H7aTx+y#iI=Uq(>52`ed!i*
ziDL7gZv7(T{VZ@=dveQ11I3?viZW$oW6o`;Xt?$Ee9DgePj`DBScU4`{C!Yu$Go%z
zvkC9h=TxS?Q(`&3fg_Psbp0;g&tb>+Z_MbK8Z&!~{l`~1M*CMS`eR=l7P6uE$_H+(
zpKGP+*B`S7tuy+wS?Ye!<NF`@r+PPT?|kz;@Eh8c#+;g)Y8M0;7=n~1uhWyQkL0Y8
zxmx>g-jcgBWBXI9b92@*R_CU8N3GSVY3OY^IH^WK`DA-fufdTuOEzx#lvRE+mQ%)Q
zmdK>GB?}+&aJt`}=EgE>n(~QNcdaxz#R`iVG8Hu&m-x<FX1QSJtR*t<zSkS?jykD*
zL0>n*I6v*)|9}6EPxjke`-Y{VH*0#MP;33p!zX`*n8?a**<7}(F5M`3k<Y@C=Y4+m
zdklDHh}C@1J~Mxh;jD8vGFv~{S>KlQ{&Mu~-itpbtSxXXz3ot95oJH6_vq`}i&wfm
zH<a`Ja<x3|@|{}|#m}^br!{R~T3YUXTTJ*V*RgZ5xv{s)N@mPB&3|Rt=GB*791c#m
zEU_rIm|VY=-E}|fqC1gXx9`Qi>iP1)IdNhu7mMcCM-fWX_PQ)wRpoZ)+b@rrZLP%x
zdY!k+a&B)+-G1m1)6qvK_u1vG&3}B?FFVm&w`GIR!82;Ic3j-6y0yyWw0PHS*dP?j
zC3@K~RHIv!Pfhfk)}oTLam=Q{$~T3)zaPo9Ulpj`7Jf3Te&vd7UUIKR4_(c5<>;z9
za3JfIJ!{~{!?h<{<ex7N)0_2`_0TV;)?1ou?w)n6<i5+sExxev81HfZ()ZieTRVKQ
zeD!8q^(JGM`ymI+rFKLl{ycK-TE(4r-N$BMs&#HIQ`-HsP0o61ud1*bM_XxhUdOkT
z$L-E1TV%cDcm!uH{N7qG^Q7qEAu|(;DJR=@y$y)Zx#73w(_+D`Y_mkBsa~%A$~-e=
zk)5!#&(Yk#*3OXqdyC!MCkNN%ICcL>H@>_f>dn2DwPM>I8nO1@Tf1RXL;-i)+ZS>R
z>@#kZF%_(G5qz3saM4Y2Wy-Psu#$)yjdN?3`7ie<xG6d@p-JHTw-*94Zqy&%<7=sC
zvT?fniCH_d9(Y}wxst2fhqvvo*t%n;cNX?0J8WAvx%u`=gU7a;&sZBTVS2<Yw$61*
z!Sx#189p1<X}&s?<RE_KTf_@i+5HEu2Hv(fsPpIDnW7732Sxa~BRxKI1>T)-V5gtM
z^<s-D9%;^20Zq2MuRHi89yM8UvE$_9%k}+rGMfa%pPcaw?953wyH%XwZ*}YNg8*Ou
zS-%Xg2JblMaLb9UrzBz0tlg>X@mY+&5)YkvRlYqa_{AYJ9f5suzjvPKOX8GE2)D|4
zxOc}y(+Y#C6M3F$Rf}%cZp^U{pP6Ga@$4S!FQ31DQrjX?@n7YE<pSP--G>)FV%Pn%
zP$by6p54Yi?_fJm&5c9y50yibwAN@@mp)cJ)xPxRTZ<I|=95o6=a63NTyy2n@ejv+
z`g%_5{NTHte|Wycj}}($?b<pv#qsqfM>9f29xB9d*<-DHNA=3Qo;{Pyzen8Y_21Mb
z*1DVH@03>m>{)kxWp8ieIQv&jsG@;0KxdZIr{!X&3U}A%{59sT{_s3xdj->vjr{zP
zKfGU7&Ev71W@NZ1Kxoxe{rOuzaL7&7Us<6OEmOSK^mjMwAF~=irtjCeCQ7oo{?=#^
zvQgVm9WyH}TTtic2Nk>g2b$cAEv!rvTLfp{+jQ#O>*SmB>dfYzdYF>>uR7InhS#_4
zUDN8bA4>EIyPPb^uh$XmeQk7KD>71h{&cngtsg#~rF&fEPJh_);``E>*AFY*%XICI
z@r#l;zB%Y?`=;O@J5_7lO5<O>*5v-*v0f|U=8`My&$|x^_32;UKF7`Q&6Fuuf)72m
z<UY?W@a)Ls&Sy^o7MV}Z=F_xMpI$%7=+k+hNttS_FZ(t3q&$q~o1IZsZ!|k=Ps*cI
zR#EehT={p^_MMKlV&MN5y60Cu*X{HtS0&GFv`?5*t@)<C=>50H?mzsQ?YDgp{!<d9
zduxu&t3F|o%_SdC+KSG-W!BxfzEe3)J!_Tu=l!$xs@1K#@Q6<_^yR7mBiU7}-u1dy
z?ap3xBP!|TAD&5G>g~yU%knj5^L(wpH8Ub!Y1UTfIg6byZjm+p=-qm?`nF#Fwe>eP
zC13J!vb|JyY2mAiCA*g?iirQayD&n{MB;SHifNtkrwtvuo>l(nZN2}fT;`mm^^<28
zLNANIN;+(yn|*8VTZZGBX*Xt0;o4m6d%!m1N9u0l@{8SkYv=8~<9}{u<L3hJP1A2b
z-*U8GsO<QKgza<h318jEw?(yj(Z{_POMK?togT-#vFFWv8_%G|xZepS8uQMYG6tJ7
zRy92OdP#GE56AarH;sOeowb&S4$S=A6>{41mW<z1lU)Uyl*H%1oUL^AgV4qB^7=^`
zZf&y;hfj_$jGHUP<D7YF=dNGhg-sS$`aHZ7Gr4q6$+3ElP_qL}3k%L!U*)^G^lvWD
zlbT$<Cx720JD;7qP{clT?!i?ruDGnLyE#Sq>#{qG-&S6}=zr$blCOL_lqc((3O?MF
zQ{R(S)h4@Q+NQIfhtDsYeJSRQ{v&ti&@R?8xmde*=ahZ7zw=9cBzAkxT;@fMx8p^g
z+if<lJ1{ltTiNqzZdUdCPt}`!ia*<3{pelb_4_kryuROvPQJDM%U7+7QyAWFFuqw9
zy{WzIY_6Z$<}3QMvbJyjd-C2Hnf13Ggp03ab2i<yLTlb~Ep?wB)wap)IoE^ISKK~j
z9AZ=(@$lXut%rFfGvdU2zZ`q(lNxPQneif)@5^Kk)$*>K`~T1No=v?d)LVbtIyrLp
z#gLNYW!Gj!thamoQlMqk+{Jw&&bHpC57~aa(z32U?aP<C0IL9vX&jtfPD~5hCKz2+
zvwV75XWjf+qE;>I`x=8+{a$=HM)k58=i3&$gtVYL@zXb|&aRN)xOr})g77Q3Nq_e$
zPOT43_WEP)b9IK)j`rYHtBzYnKIvO|sJ<;LyLa2BkcoMVqh3xq*IT2W?&qr5bt2nW
z<xPpV&8(9*jx?CF`}MocUwEt1XJ()V@7CtvL)Q6I;}^U*8*!}jliEC<KM_6u4@%cm
zP4-uvGg0jE+NS4`HFdimRGQ8A7q>Zo(DKu4$#qlD-2ZiMXT*I=-q+UZF}2Tsocb;E
zqrxtuenR}Dk5Bb2+h)ep=*wuxHZQl8nQ=7Q-NIn@_O?w034M2L9nV{=DM*NWEAh;{
zBBa^8NJ#tjv5htnW_`u|&ZVwR^A<<kcu>pK-Fz=lNAl<=!5R~zzN@9`f$Fzc^)KGF
z`klrh-nJYgH^GN$3wfoSVy-`sJvenqg!8f0O{waE#q~1J%UMtNCHc-vd8;z1)M-<b
zO1Fnme9M&f=6Qx|rhnhuzj&kehL0M0f1NJ;mdMo!PAW2I=SxuK2`SvN{+LtCMi#+s
zzpdh4|NNg7)3bF4&+851;)~d&4LZ6Dm}|c&nmkheQ)RAqP%x&;eIsXb#-T!!$B{V)
z%`Ln3HJODvafa7lKHoe=HPB$kZl~Y(1>#o+g|fYv>VEvvf$dYLuNKPs(qyzlYiZo_
zDJMfEw^m2}-0>-3`|*=^`Pa{K&Eh`wG|h0*=AChj?=z(ynuhFbtZn`8u;+?I!0PKd
zpH}W<k~QVG6Fp#hAx`sTfWXXEpB~@1QYv!x?J8v<xuetc7j0dr6CqZ=qekTIrf&s%
zPsdj8d{=Uv?Rxl&ulv}HGx`p%kZn}YF#FLoZ*qj-mp)|?lVgQt7mT~sEy(8yFEv<J
zYPq5&Mq!)P3){|)oYg`CrM(YrdFwj&>}SyVx1c}arNqHdy^}j8%u(rF=(+2&O1ApM
zHOih-CxmdEteF^euD7u{s*W+rt^R@dWOu`W?-H?Z!c}>K?Y*`xzT{(WutM$dOLuXx
z1bZi*vX*&w8kleNWN++N*e$l#f@SuGmyciS9-AU_;BU=mgGViA70!Ek*34x7U|t{_
zr*=Jj;=%I;w(RGmIp^~SJ^Ibr!f&v}Jlo>#p)31kyG`c&SrW74;gjWmu3xFy+HjG(
zzVL;8w>E!iWuWepQ{KIPD_vtGue@$qrO@G%^?gU%<o-XlS}VjRPb&;h|1A6E6ywsB
zdtS+u>N&ntk6|raDwVSK!(2D(8q1tqr8PWT#QrGXnpIINe09&dNMW0^AsX6u_)Mf<
zeE;<IswKlJ<vi7@1Sy7hS_}^o0vUwTyGwT1^3|7Q$<Elqv0@HC-?B-6436+8I`)1(
z=<2t&c~WIl>j%SQd`CYVu(&hz_~EcKkH3bk`e#`8ljU(CyK<p=a)J2XdVaG<aaDgV
z>!^MgX5=?|<z8Scr_}Gh^Ks(43YPB=i+@hq$YB2Tapl~;MMo}&dEcoh+xc-%x>8w%
zg1Gg%X;vE#*WcZFBXD}>4O6ei8?42<ZZL|9F7Mp3=wi?(b{6$0mW^Mu5<Gus+&iwb
z%C^m(VTR|!TY)tSGLnbS`aisOymX;pQ>zJc#jIC#oW-2?H-F&Sea$ns?8L((WpA##
z=>(qMBDm?(%T*eaUdNtfk2&c$QKpVbzMiYRC42s%yXjoI*QMvzFTJpS!oihHi3j&=
zSa42b>3v_0-E~rl-*+8)H{0(<xaOPeln-AsTRipWX}vj=*<$;G%i3t}hUXe@Dvc@<
zr4oY_xmu^5&}X|_lC88h;ko0n*ZNHJ6HnRPk+Tf^CLq?Xyfphq9#6gN&xuBn#_CLy
zgeM9g|6uMHWYegAX#R28#S-<=UpqW*FLUR~kQMv9yv<(v(9UV+KlD6cvRn4#<NFr}
z1lRC*S3iF&HOoS&^Td+NI{*Jk_*n!UNm4(r_wWHzO}FhU>oYsTZ;I?c{p@e;n&bU5
z%<U8H{!O|1)zs}>=^k<W<Lw{0)1I!Mk-mS~>H5XCTly4Y9P3V(G%tNy8E?B{T6X=3
zvxnxsvI+I{U+X@9v;Xt6H4;H*uXLF!&fU6c&z>4P*_}qu{g&<AA^xE?d-<_btN(to
zUVG3fJveTie`w}TuYWPmHdW2tb#mQ4O}#vg4+RtKr~X;_ylwYQ>Dz7r$Dh_N{=qc;
z^iG>Y->#eWhG+kLbS<#vqr^YP3Z3_l3|v-j4?J1Foa5@+^qcYL(=Hqkx_Blsg?nn=
z^CuUVraiwashGRfEU~uk>YVtC9M`YtO|gEz#ag#Q>u=rv*)#OdI<1_w=cE2b8^eMJ
z7Ew1@_uUDT-f`$^naKG!#rL;$-&8l$7rOD(;(_+3K$!*cd{*mz%=-PQqweNQi>I$Y
zZ89sUbh#h-P5n)Myxw2;v+0kc8(OmzSD#l}lX`iN4{IT>_nNimbUn5(UN;iHtL4MR
z_g`nr)|jao(&>x8=&mU}^@{1|pPG9o<aZ0cn<w;e*-Pa=yvK^>CST)@x#pqP>FECP
zY~UV?+y%>7!q+Agtd_hZ#kPIg!Cr$Mt1qm2wenZio51XXwNc;u4(8VDa^!7)-ISgA
z>B@t1r&+`6T7Uk&{r4^B?)X3UH|~1u)?avc`lWYjx9<AvHoyE%cT2VO+kHJ{`Ty&;
z-qx?bRLU2r%4m0Tiov>yeZRz?*L;<&-S_C`i^)Zob}GwMT(!-Z>#}s+tb>~tJeSy~
z&ekfu=iCn^Vc*{ziyj{Mp1R#!=0|z`PHCfuCZ|m{Z_MNQUpP@xXYy?O7gJ}8nmh^9
zTesRk`;Tat>(9VHYZBKzvkY%r`0dW0-|^@6Y@SjzbJ6sp#i0&j=bp!(cz$Ba<|(h1
z%naW!<?T_MQdP0lt2e~Fb)UMc&99Ds^)be@0Q0g{axp8bUhZjr5nk)Ds*Y#1#PPY#
zJA9AUf7CSX_#MhMKQOW;jQ8P=U5w{fNS6lWB_GaCD4Z7dHg#ou?{v=C$%jKE))zcI
zZg4)|{=un7D}TxSnXtMj=<KDxWqM^v>sKW&*t0`OmgSGM%z|l;#SZ=BwVmGc+&|^<
zu28K*UnFhKrWUAJFFbdhH(AbYri#r((K-8$ar?z@HSnwdd}D@v?aHRh*P~yQOxxeO
z{)mbCxdgT1yv?)aPn&p`wH{c1?8ANkq>Uzmp%+}H1%He3-QgFzAlqMa-jcc7S8yw)
zN3D-K|5y6!*Pz<mOV`C}?=D(@J7o3YPIs=Q+w!?4#jQMDSs#>g-ZXUfs{m`kKS+Zi
zpk-;xIXaB1I+z$3)=gHB5t-Z`B3NG=lI?#vL8LD3+S=&a!s3{ggCc^Z%qfc=<qGe#
zn0h0J^Xkl_{7a^Esm7-7>T5awPf@Z{pttS(KaIzg@mVhF(Ua%RDW3P-a{Ama$It8E
zXS6vcELzK>y!-4S_RHqdWeLAqMK9l;W%Mno@vcXM<HHW6V-u=2$7tuTnelI4YIWoL
z`UoD$zdA{Q29ISp5Bgj=RaNS2el5Q1g(aWfqEny0Ze6ZaFi%;Nd1}^D9VT&$OA-kI
z%d<}ZdcEnO!MAU3yrkL;)+9ANR&tYAH0}16oVJ58arX_&&o*UO-EMvLtS^_f<!pk_
zQ44pm=_@|TJKW4RU-4+&%WZF8S+}*`(fqb5ds|ff(O|~rXWzGVFW2T^Txox>kaaT8
z#z~JY4=NolST}p;wDm^?uV&onv=A!%U@_^?>0+N`w;ny~Ov9AopK^zTXWn;6-MZ7Y
zSiSW4X6?7fmc89?WFFgf=I`>lebZB-@}rhT8`rvXv}kp?M@)QuX;I9Fdkgu5+BUzP
z>3CZ`MrHc?i>&oibj<G@dSky^Ywq2HN}gG6o8Lx%Gj_k?*YRe~gUKmJ^H}v~t#xqi
z^jqrP(zw2I-rLjvecq^+E!t(`|N88Oi|*6ijyf`@2rqoP(3flWsgBRW9;ePHwN;p(
zoUNi=7sbBvyoAlM3+kUT_I~L*dB^=wdLYNg@{8(=qh|TaCw`Iec~JlR-=X`9%<UZ$
z<+i8J>ubN~lqe@y#ZX$6_D5j)_v#CwcLdi42R24}WIpOS<R-S@#Ien<%r{gmY3>LN
zw+iU3+TvWj?zq(p^IhqkkL3dWReAyz{g^6pDO|aIhLwYh)pe1VD=zJno7$%~SK9F9
z7kS0<hAVa9jH++G*~xi;rljk2FO_@hv|J26^61hFeeirVY&trkK>PUJ{hSO8Od<>n
z;;4%#i}alm^HTJZa}tY-=Z1I2hg=u^r^oX-t<C+&!B)p)H`mt0nG%b67r3#iMmT7*
zbzhrt{KJ99#CsN>+mdFL_)b4!<~@1KEVY$)>yx%`kr3tB(iyubbJzRd`~C|5+j4*J
z=Ns)O*6)|!Q~tj8dEN6n#ruli%`{)%zn3dP`rm8EK8JG-XV}F*nd~Ud_`o5;8}YDZ
zqRB7c+dggIrB6<oDY9ef@h!I(eVjMrX5NuY%MLu-^eis<0LSvT89H~8R9+cfo+0?2
zbNfxtu4_}z$JT#3pkBJH_Cnx-hhnnb0U7}osy7mrS|=Yl@9%L|c=OWK$OqCUKUl@i
zZz!KG`2JI(;j|YKU8zj()?Tc*a!+r=o;3><x!rcRB{g0R+oXPH_NGS<L$=rp8Xxwm
zG}^O0H$M9qvz?B6=aCr23DIHq^qy~j714T|<<pcc2Y%(a`9<HlUVk&&?Tr=hYF4kb
z>?x~^nB>-oUa+d1aOLC_e#bSJH_Az`m~J>@>CwhBtCrTZ#T$RC2vB@5>4wxQ7N(nP
zZp`$NQs4U}G2-~!8y@mz@3V96)Hb;Jb61{u^-?im$IN`=lLzvIZm2Xi7oO&Gd+f*=
zEgrJrZ`vI`IrGVB0hL-ea=uB_Pn>+PF=A=Tp|qTfAIxOS7rHH|u;VqcmU_SK*+Qnr
zft^;e(Hnga2&)S7+<r7KHTCJ`oV=oIua|teYgLw@o)~<Q-ADAwvYIQ+OKz=A=9gmq
zQ(PWolgDSo<$Y??kC;unJdelinfvE$(3R3ntuI*e1S5>MuGAD;ET3dO**5d#g1hz2
zg2svNYj@0lxzqo6-Ja$(Z_R(5snV7+eB&JW+rnM*cE@eamu<^*em-?JzNO-uU88Y$
zuhp%>jufd0VQ*ef+by-}%_rvt&RI4(1>s`f^)$Ac?(t5zYty-8QpTqiJDG#ER(&T^
zqNY5^+kMtdsg`}R+mR_Jvrh<@aOFhI(0wacQvY$n?y_xWTS~W79w`15#A$r!%f_>H
zk@xye-x3qe*i(5iDnatKvhWh8%)I@57CMoZ$+dIY&j=r%vHWe?nJ$;NlbNE$f;66A
zF>w3Da?4~wp?7*sPS@v?6~7Xc*Csl&{kVH(wk5~X+*d!Cu121|RP(9S=(GQ;3WoQI
z&z8&dO#1n>e(6H~lMQ>PPo3Zz_UsYop7`VJ9~_@8%1sTqx5vgW=*F?bMc>=g({HLo
z7hh0(ozz)lv*>Z)oTN6@OW$<9Sw-$#P^78t)XDQK*-CEu&(~=J(TfUaUh?;nuP^fZ
zl=4n(>*q|_^ACbe4!w9aD|De+h}^UX%S-3XWHD!3`j@}@!<;AelXh)4d(0|3|7awm
zzN#8m{5OVk(OoaU%w?DA_bl7gcJ{7TfI*=9oL5uq70-WJsQWccTwL7L{c&3MuKkyN
z<V>!pzRBOF<hJInhuhOTkyqHx+}Jq7m5Xat@##pbgN;hwUWd-4*!NG{G+FqL&Z$E+
zmo$tP2*gfg?0h<P!IGLO`$X$?0#B#iDl{@oJUwmZu5IURe^1=$eS4{M$lr%z>?dxE
zz3r4PvpV_l;->%nrHPs6{<%)|u)H~W%dhX7%DArRY~V;geEMzwv8R_MQkIKO4G-NW
zJ>lG2Ra4e5v-9^mPXv51yZD(&dsElSu*RUKx?2YBO4)ChZ}I2y4QXxC+kD&O_?vo8
zw;jTM$9I<5?OD0ZCunX;QN)|MB`W;s^8L$HuAcEsxV!C}-(~Hp)Lm*TPi!_7DxT#M
zKYOa5+Zo$HS0>I--P+?knWn*I-I|jdH?;27IlU}N`C`(o<7?MlQ8KT4dpQ3?H1Gb&
z-(S3E^;&*Nw3k1kcA4<jGpYNIcNlQ(k@fTMuiv6PgK=;Bt>m;-TW)Upb;*3^%Cwv*
zoD*IDoQS^e$iC=a$I)9i>_2w>UhJ^8gmL!HGgF1%_%FY4T#`AhAo+q9+k1{x`;<Z@
z-}u}<n5QlKeibiQ`o(7Z%LkP-Y<_6}RljEaHFb7^#;iw$#*y;IL7J1_m83f@c{o2u
zLF@@H?|-p~`mfg(ZORWl6mj-cb(8N@ZtYa((}A3J?dLbY{K<6O^2O6X-It#U_Er2X
zeADV5_crFYQ2O<oE<b+UQ;l+}Gwix^ZNmN2;cHjF;`-9?n#<(6<&L85Pjt^(H%G5_
zn;8F?Z^x6<#(hU+kG@OtKg!V+rPV&gRR7b?c~(!1+uzO-f4XH$ebcwFLe(?XPs?%^
z?X@mYKNt9l!6qiUN&m5S!DnyAeWxb6N42bf__{%A?-IXBhhs&5u-%Wl@?dt%Y1MCT
zJcUmdwOzI7pFXjj`_AHEyXL})@4f%TH{E$1u{3dGo6*0w0@npZB*N}VDn8PPdnory
zW%=w3tLyRd$3OK6vP8M8UQt>f+Sa!5lTp*w%0`?2vl6Goxkaw+emp@c{Ms(&cdIoj
zB(MInZYx|a!L_43FnYFr{O#CuL5?T;oy;E_eM!6%yjV2b^j`6f=-PAE-IpTgr~7H{
zERi`Y>s7_GcEL&ZIPGh0g&Sr(w6bU`XIlIG!Q^Yak5};ch8{3&`rTf!hv}cmzWM|I
zN~~j5@9)&|`Tp^_T!43azAEdsz%21_sSVTiiyX>GX_)mRRlof0@jSLwqU?nt-xqPW
zU+Cwv={Q``qv5~#r7d^!4O^G@i#G2zY+J$gKJ%ZLomW?{;R>nLBExeNr&s?ycWdRz
zt(!GUu07G%yiL0HhuFT}ny50i^^Z*3%+J`>zcSkAyesC>o83R;=JSZ{^OthyjSDaN
zSa4r7=IPH`mulyWOB)jFJTJNiJyP6}|DhtPO;Bo@KTngCXQy-od+ogZ1v9@o{Ny#d
zFg;YwJlyln1JBQCoDLZlkDh(3Gnm;fo;j)e{i_M~hrVR5+|%`E!u>T8uKdEA!`0HR
zhE_OFU0mP6yYfZYst0~g?r7a&UX;0p>!-(}4%u|hOEK~;ns;@Z1y5znII}wIc%YP-
z#_}fx$Ayju23v;M>bB=Oo--Bs$Z|bE<GkTSTc>~9PNwjCPCEQ|3hzcel_dvPdP~@>
zSBVdi`1D$t=hkAL<C>|F2Ai4ljdm||%hx#lL?e0Tl?`Vu))&}+-}O_ECs#xMVDmzU
zxH8%P;8&bNA5La2*PnA`qT=iTWzTIfrju@c+VRUdY(~$v+#_cumKui`M)yYN)_Wb)
zKh5ELsCw=q)s*Y@yk74#l3d(B?7QH~!}r)Z`3HxA3HKLC)>)kn6PdL>EcRSsyd^v;
z#=cJ>`-=N)?LXNvdlKtw-dwQI+WG6FSmYKv!!Gr<k5?2e|7|f|_n}>DY0OcBd2@s2
zDqfUKJGa^9eDNH6|LuDlbl=?H{<&%<SLoj4N$jOR3^z|Q7oYr8{mdzub$>;)WsJjD
zGhdMYcfRM*Pwo|V>(3dMp1UnEb-pHZU0=M08Mo2*=`*W(;|ssBfBiGL>Yoy8{bTW;
z$tTn9{jGIp_<vyk2YHr%>?rNP&0)?REZ{RDR914_T*l785F;@8jk{cZ_|I_Z>!SbU
zIC@psHr#xAWZRsC*=NHh-!f^q-ca~Np+J}EnD=DHV+IPDB4;}qgv~QAFZ;c3VqRhR
za^Jg?csZ`Dt$%I#cXrjQy7!p}bd;WbVOaco-Mihd%iqWR`+NUsJ%dGOwNw{Nng8vJ
zJrhlXmSv|cW)3^Wb3pxpbjQ*2tq<zkmnkk#?wH_kmF;4;+cm?@Oiv##o4w)EW6$CX
z9?yIlANTH^d~A#0*_~lVQszc;e<ok@=yw;+o3?1KZ*(N%3#M6HW=Z&Y9DaH!tM$N7
z_tm#2HVR0r>GKNV{NW#wdD>RBU`L_*EjH6D95Nd=KfdUB+|ONBd#dLwBS{~}FHVd0
z>(|fk6<8Iho_mE`#N3Sc)Mq)_{)dH)LaMq2D;iFIefO>3XV&7p<!!Z0)n?ICmVIJk
zbeW+){cBO$T!C+oIA#48HI_y8`-a&}WnC*HbYtty`3zE>3@f9ZH#_W@AfCQCGTE#}
zZObc*ro~K*-75@YW=~j=n-dkjdB*YgQ!dTF_)%nD{j##-yE0d)9Q7*XIc~b;<qw&8
zf-CM+O@5SF+!h#WF4nU!*_r2VS)NK}+l4-1tHg6!)B7~1wfo<CbFIMbL1%k;(#a*3
zc`E1Aju&ehznwQ*($sie>T>Oyn&)4=aN6z=duoQ!?l)gnJmiaf$D(=M^wK)zfXfov
z96K(*n3!OpugX=wP^+c6<K>Qq=aHu}U&j9D)w~_+5Uu)9diuOCoHm<{ujHj>?$9VG
zke1NqSnn$5WUu$q!$TuHrQ){lj$<#bI9!uR&5L*FZ*%;$D^cahr5d9?0lnmi!=jS6
zLK}bSDlbzse7z&h>p{lBv>Sf=j8CY<T>r?r=Y(9DjcoO{>C^k9>aE-iylQrp-8-;2
zx?pX?^u$xQ&CQha*Q&X8oW8eua=)i+u!m6m%sIPPy2%BVUzxPY`_+>Tn@Uqus{ZD@
z*fDil!?{yER?!NR-1qF7dD*Zx{6&kQ**4Cy)oSZKo^H0vTc>HBw&Z_K?}3}%&*P^U
z&&b_j8q>Hb^g{L8kX>5mXX*;nhd507DV}lrq<4b%-Hb!mQ~N*GxvrmT_Pc1Mps{s=
zfyK)Swpl9dy=zp@%Uxdo&N`@WvE?tTw0j0cp5>xhs+TM0XPdv8d3MdKtlKLd9SQ4S
zpO-p!(zKBD4_(VOW^6cixo!68N&D{o_@8+<b645=r+d`1m+Ng<&3dccLXPXDwqIoZ
z6@^`@sb@GuB8%RL&3dMDRYg(tL&f`V`I=r+eU8njY&_1@wemX0QkLS<if)&KCtY4n
z5Q%!5R)6fa%e*`9{v8%KdCw+e{`#P~N0F$UUHKuUzExalsxM|_TU?6$eaPx{Qjl5n
zv}ewo*3)H8t94o#D?hLBk>0)Je94_1nj3w%ch}F`nmfI%*XK@&`WwULhx)%e{osC=
z^<%ZnhkD_RiU?h8+g$&daTh=3&zDP{!a75AMs$3Jzrp%1mddu%Oy;)5-JW;KHYxR1
zLEtxM#*eG#+wHOujde4c`9SJG>bu%TzL`xOPxlHdt(^1NO|2)>_*2M{b8hqcR@9Y5
zDJxr=7acxVzx243(xGIw4~m<$l$09!XWAE@m~E)e`dQw4`PrQCO9e8MUw(Q1deKAS
zeK*Ud@bYRi{kDspQuX<e#eu}1Oxqih-W<%{arClyrB=}M>(}Rcdw$&Oa_juwue>##
zd-OklG5+y``Az;hoj51YJzwKB1V5jhx>VO&<8^eSM4s)Yj@ZxjA|D_6+GPhGN>?`V
z`y6DlxaV~!Z{H*BCuYIR*c7F9xw5Yii9Z_MuxQ`1ITr)^*H6|uWPal6$&=o-ljq-m
z6wmO;UgPqPikj%1e`T$H$JX>0m27*#_4W0W`_YbHKPY8AUgTf$BWkv|z`p*yvZ@a!
zo%+jdQ6SH5U9*H=d)Lat^55!LuQ>FNbxX;VQ~fL6n;m+1$^S!S<L``khxFZH>$kGM
zf3W4(t|w+vX0>}idYqgkI!7+-(rF8Bokw@<UvE{l373D8EV<X=zHG~qaPA*_&ODj8
z!GGzd4o~a8?>i1|c^LaOa!pWm>q*w_XBmDf=FLvEXtbL1=w1z5;4F({@3NhHydT$p
ze&IN$^!;Jen3hiOf}LD@TNRhRHF~z<W$Yf8v)2o!oBnUGZqhj~qgCO4`1?m@yY|el
z?Ms^WM8EuaFXr*t#OcQ;hs-OV#C@dyL-Mq}eb47VSl;3!viZmbnZVNN%eQ|lX6>*3
z!P?E^`jq>;-$DJ4+Q;M$wg1@4<RSU&BcJAct-tlUKjaN;{yCQi{0&<#RIPgDL&J;<
z+kf(ve3rQIg<-d#mPT;Q8WlN%OOt$=1f+ibEt&Yg>S<vc<5dTT%Hq>XY_p=L8+<Wb
zw|BjOCU@w%eZGcQOqw@@7AgOf-qCx1#evhI6PyCyYaHSJBlg^uTfI{6QTm3Rshf-T
z@A|SSC~CHNRDG~i$SRAgPp@tFo4P0PC|}$W@3Zm`Z!sO4X2^FYKj@Xl(x2;Af11Me
zC(rll?H)(Bi(8xazFFUSZ`!H9^Y*buIBRDpnTt;6ogR1SG<QL}itXczx>MVum&TlC
zimT12lJ92T<HT~tVBTz-{ihs1N_p3I->9pN{j|$wI@60I?>qJS937`U=XVJgH2mbg
z^dsLyUH6F!=l;8_nq~g~%;h~*bqnUnCpO+c@%Fose|P$!h(kvI`ab+;fYs~_pbZC;
zPkU>D&ZnIG!&@IrYx$V+y{cUivAy`t)(cDw4DH;LbA2@H@8{n#5U6_}KXKvSTYRjd
zZI?W1Gp_ojuD!DEm9$Zx=Ulb2H0#E!TmS8>IWrfuFgi;MCA{1B`|I7KbEbO<1}>WG
zDpXv0ukxamtm2dhbBa2Ged07kj9k8#CtqpTE3sBB+7htF?fmm%i}#{Cg0H__^!(%7
zW<wu?gqX}ToNwn?^wn>aSm{)w&2i1=gX|&8+zuy(Pyde0-BGZxsW0EDqLU-zkIPb{
zdw&l#wuhyNiFi$1YTh{i`1)Xe-TFx0X|v86Tny7pO54KQ$vWf5dW#gBFUmT$U;bUz
z`mEK)z5jq-#gDSW{{^+*Uo6}sIQwzSw0(0ou03F=-uZNPJ6CUOiqW^|`c>a1gw7M0
z=`k^AvP|f;jGv!Yl^x1F_J~1iqNkI-rC_7)r{9l7C1$PJo@iz{*+f)Lgn!|Ql36d!
z+Sl$_cG;i7BHaA^V{i9B+oFAOHnBeI-XEL(Tq9UW(kftzy2c?(w!4f5uAek2Ox-gw
zP4h1_8()$>bo4_`(Y5krC2A_AljhW0t8mINgf&fN5t_I}XW6DzSKss5Y>C`_G%Q&%
zXz$5wmu{?EkQUu#$9g41Ai&S-qLkpa^QX+Lo=>wmx@AKCwPM?f6I*0gRb1;2_{dps
z>e}ix$$LzXZmqI>xOMr|h5s4ydun70|2qCi*fQs%p3H%JH&30pF0sY(ymM!Oj%V_(
z{+;z2&2r6sQmZ>8CF6sa+J?-F_Oxy={lrwy!I~`ScQ&<kRlY;g8WCmoP1|3Uq;p+w
zdVerUp0CgC(MO9d;^+S>UU0Evs;;+>QEFT$kmz&P)jx3w%ldf&S1jaD1+M-)_h;0`
zn={wFo0sx7!hcHPvU2~uF7IcQ@bg7qTDS0btTFGwyifh7wZFBBu9kdk@h@zRN!oO#
zqjAi3|6|@Uhg$8o`N9`7dz0_XWrb;FT3a`E1$|flbn5AaH5m(zyg!)CKQHgOV6G=)
zu19U|kHDjkilR5T{8Zo12+Ic?49z{OA{5%KO41k@7%~_b7&Imq_$W?38^$%c&0jR3
zO#2jzk+vuguL#fCwLNFo@c4+v#5OyN^ziif?6}nZ$(!3IIOlZHrpY^my1k4p3r+TR
z`15DZ8I^ULt}J?V=8sJ@v#qzS^W6md;|&S?{{{3I0=yZSM3~{{#ZLa?Zvr|ncCvAR
zJ?O;P$)y2$;H<bTz=997OAT>m?Bq8AmI@#tr1RStBthrSLh+KuIh>PY*rg{Y1o9|=
zrW?fIXSy*kNI(^Vs3nc80+V|J)xf5K&l>?BH-fHcn&jkvB2tsz1oD7g_&ZRVX`}RH
zi6A4eK9r*<K&C?Rl16p8$-R<tlRJVSt^ghUkjTWqP{_i-AO}?hqLwrsP?)SLqcC|!
z2t*<JrhSki5MI(4t2`-K1#By5(_SSL1H()f1_oJ>Bor@ctk9k;r6LbEOwUclm7kG;
zVHqO>gFaLdh+5L9qc^!f*cNP>1@b;CkSr80Y3$IS{3ciftO&7!6>^pUR1L$D#vrT7
zCLt=EprBq3n%J3~7$V9P<~_M0L<b!H=mY2ool<_2kA$d#Bl=B<G!tLMWX@1cupUGo
z3o_`A&@(e;@&|Xx$=RViV0~4g(o7{Olc$Hug7v}FfoKsB0mcFh|Nk#cnOx{2Hu)7)
z-_KBKrpq89868Ag<X}K8_8Axy!TKS@l1A>-$%Q`3C>k*G4MZ)NT+%3&F}cu3Ve;89
LDYj#vT*UwY21|r`

delta 16365
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
NSd=fv_SPSy1ppdzjKlx{

-- 
GitLab