From 9635ff3d20c17a92a89cf82db8d3f877dd04e1c7 Mon Sep 17 00:00:00 2001
From: Massimiliano Culpo <massimiliano.culpo@gmail.com>
Date: Fri, 31 Jan 2020 02:19:55 +0100
Subject: [PATCH] `spack containerize` generates containers from envs  (#14202)

This PR adds a new command to Spack:
```console
$ spack containerize -h
usage: spack containerize [-h] [--config CONFIG]

creates recipes to build images for different container runtimes

optional arguments:
  -h, --help       show this help message and exit
  --config CONFIG  configuration for the container recipe that will be generated
```
which takes an environment with an additional `container` section:
```yaml
spack:
  specs:
  - gromacs build_type=Release
  - mpich
  - fftw precision=float
  packages:
    all:
      target: [broadwell]

  container:
    # Select the format of the recipe e.g. docker,
    # singularity or anything else that is currently supported
    format: docker

    # Select from a valid list of images
    base:
      image: "ubuntu:18.04"
      spack: prerelease

    # Additional system packages that are needed at runtime
    os_packages:
    - libgomp1
```
and turns it into a `Dockerfile` or a Singularity definition file, for instance:
```Dockerfile
# Build stage with Spack pre-installed and ready to be used
FROM spack/ubuntu-bionic:prerelease as builder

# What we want to install and how we want to install it
# is specified in a manifest file (spack.yaml)
RUN mkdir /opt/spack-environment \
&&  (echo "spack:" \
&&   echo "  specs:" \
&&   echo "  - gromacs build_type=Release" \
&&   echo "  - mpich" \
&&   echo "  - fftw precision=float" \
&&   echo "  packages:" \
&&   echo "    all:" \
&&   echo "      target:" \
&&   echo "      - broadwell" \
&&   echo "  config:" \
&&   echo "    install_tree: /opt/software" \
&&   echo "  concretization: together" \
&&   echo "  view: /opt/view") > /opt/spack-environment/spack.yaml

# Install the software, remove unecessary deps and strip executables
RUN cd /opt/spack-environment && spack install && spack autoremove -y
RUN find -L /opt/view/* -type f -exec readlink -f '{}' \; | \
    xargs file -i | \
    grep 'charset=binary' | \
    grep 'x-executable\|x-archive\|x-sharedlib' | \
    awk -F: '{print $1}' | xargs strip -s


# Modifications to the environment that are necessary to run
RUN cd /opt/spack-environment && \
    spack env activate --sh -d . >> /etc/profile.d/z10_spack_environment.sh

# Bare OS image to run the installed executables
FROM ubuntu:18.04

COPY --from=builder /opt/spack-environment /opt/spack-environment
COPY --from=builder /opt/software /opt/software
COPY --from=builder /opt/view /opt/view
COPY --from=builder /etc/profile.d/z10_spack_environment.sh /etc/profile.d/z10_spack_environment.sh

RUN apt-get -yqq update && apt-get -yqq upgrade                                   \
 && apt-get -yqq install libgomp1 \
 && rm -rf /var/lib/apt/lists/*

ENTRYPOINT ["/bin/bash", "--rcfile", "/etc/profile", "-l"]
```
---
 lib/spack/docs/containers.rst                 | 307 ++++++++++++++++++
 lib/spack/docs/dockerhub_spack.png            | Bin 0 -> 90235 bytes
 lib/spack/docs/environments.rst               |   2 +
 lib/spack/docs/index.rst                      |   1 +
 lib/spack/spack/cmd/containerize.py           |  25 ++
 lib/spack/spack/container/__init__.py         |  81 +++++
 lib/spack/spack/container/images.json         |  50 +++
 lib/spack/spack/container/images.py           |  72 ++++
 lib/spack/spack/container/writers/__init__.py | 154 +++++++++
 lib/spack/spack/container/writers/docker.py   |  30 ++
 .../spack/container/writers/singularity.py    |  33 ++
 lib/spack/spack/schema/container.py           |  82 +++++
 lib/spack/spack/schema/merged.py              |   2 +
 lib/spack/spack/test/cmd/gc.py                |   4 +-
 lib/spack/spack/test/cmd/test.py              |   2 +-
 lib/spack/spack/test/container/cli.py         |  16 +
 lib/spack/spack/test/container/conftest.py    |  43 +++
 lib/spack/spack/test/container/docker.py      |  74 +++++
 lib/spack/spack/test/container/images.py      |  58 ++++
 lib/spack/spack/test/container/schema.py      |  16 +
 lib/spack/spack/test/container/singularity.py |  42 +++
 share/spack/spack-completion.bash             |   6 +-
 share/spack/templates/container/Dockerfile    |  51 +++
 .../spack/templates/container/singularity.def |  90 +++++
 24 files changed, 1238 insertions(+), 3 deletions(-)
 create mode 100644 lib/spack/docs/containers.rst
 create mode 100644 lib/spack/docs/dockerhub_spack.png
 create mode 100644 lib/spack/spack/cmd/containerize.py
 create mode 100644 lib/spack/spack/container/__init__.py
 create mode 100644 lib/spack/spack/container/images.json
 create mode 100644 lib/spack/spack/container/images.py
 create mode 100644 lib/spack/spack/container/writers/__init__.py
 create mode 100644 lib/spack/spack/container/writers/docker.py
 create mode 100644 lib/spack/spack/container/writers/singularity.py
 create mode 100644 lib/spack/spack/schema/container.py
 create mode 100644 lib/spack/spack/test/container/cli.py
 create mode 100644 lib/spack/spack/test/container/conftest.py
 create mode 100644 lib/spack/spack/test/container/docker.py
 create mode 100644 lib/spack/spack/test/container/images.py
 create mode 100644 lib/spack/spack/test/container/schema.py
 create mode 100644 lib/spack/spack/test/container/singularity.py
 create mode 100644 share/spack/templates/container/Dockerfile
 create mode 100644 share/spack/templates/container/singularity.def

diff --git a/lib/spack/docs/containers.rst b/lib/spack/docs/containers.rst
new file mode 100644
index 0000000000..bbb21a2e00
--- /dev/null
+++ b/lib/spack/docs/containers.rst
@@ -0,0 +1,307 @@
+.. Copyright 2013-2020 Lawrence Livermore National Security, LLC and other
+   Spack Project Developers. See the top-level COPYRIGHT file for details.
+
+   SPDX-License-Identifier: (Apache-2.0 OR MIT)
+
+.. _containers:
+
+================
+Container Images
+================
+
+Spack can be an ideal tool to setup images for containers since all the
+features discussed in :ref:`environments` can greatly help to manage
+the installation of software during the image build process. Nonetheless,
+building a production image from scratch still requires a lot of
+boilerplate to:
+
+- Get Spack working within the image, possibly running as root
+- Minimize the physical size of the software installed
+- Properly update the system software in the base image
+
+To facilitate users with these tedious tasks, Spack provides a command
+to automatically generate recipes for container images based on
+Environments:
+
+.. code-block:: console
+
+   $ ls
+   spack.yaml
+
+   $ spack containerize
+   # Build stage with Spack pre-installed and ready to be used
+   FROM spack/centos7:latest as builder
+
+   # What we want to install and how we want to install it
+   # is specified in a manifest file (spack.yaml)
+   RUN mkdir /opt/spack-environment \
+   &&  (echo "spack:" \
+   &&   echo "  specs:" \
+   &&   echo "  - gromacs+mpi" \
+   &&   echo "  - mpich" \
+   &&   echo "  concretization: together" \
+   &&   echo "  config:" \
+   &&   echo "    install_tree: /opt/software" \
+   &&   echo "  view: /opt/view") > /opt/spack-environment/spack.yaml
+
+   # Install the software, remove unecessary deps
+   RUN cd /opt/spack-environment && spack install && spack gc -y
+
+   # Strip all the binaries
+   RUN find -L /opt/view/* -type f -exec readlink -f '{}' \; | \
+       xargs file -i | \
+       grep 'charset=binary' | \
+       grep 'x-executable\|x-archive\|x-sharedlib' | \
+       awk -F: '{print $1}' | xargs strip -s
+
+   # Modifications to the environment that are necessary to run
+   RUN cd /opt/spack-environment && \
+       spack env activate --sh -d . >> /etc/profile.d/z10_spack_environment.sh
+
+
+   # Bare OS image to run the installed executables
+   FROM centos:7
+
+   COPY --from=builder /opt/spack-environment /opt/spack-environment
+   COPY --from=builder /opt/software /opt/software
+   COPY --from=builder /opt/view /opt/view
+   COPY --from=builder /etc/profile.d/z10_spack_environment.sh /etc/profile.d/z10_spack_environment.sh
+
+   RUN yum update -y && yum install -y epel-release && yum update -y                                   \
+    && yum install -y libgomp \
+    && rm -rf /var/cache/yum  && yum clean all
+
+   RUN echo 'export PS1="\[$(tput bold)\]\[$(tput setaf 1)\][gromacs]\[$(tput setaf 2)\]\u\[$(tput sgr0)\]:\w $ \[$(tput sgr0)\]"' >> ~/.bashrc
+
+
+   LABEL "app"="gromacs"
+   LABEL "mpi"="mpich"
+
+   ENTRYPOINT ["/bin/bash", "--rcfile", "/etc/profile", "-l"]
+
+
+The bits that make this automation possible are discussed in details
+below. All the images generated in this way will be based on
+multi-stage builds with:
+
+- A fat ``build`` stage containing common build tools and Spack itself
+- A minimal ``final`` stage containing only the software requested by the user
+
+-----------------
+Spack Base Images
+-----------------
+
+Docker images with Spack preinstalled and ready to be used are
+built on `Docker Hub <https://hub.docker.com/u/spack>`_
+at every push to ``develop`` or to a release branch. The OS that
+are currently supported are summarized in the table below:
+
+.. _containers-supported-os:
+
+.. list-table:: Supported operating systems
+   :header-rows: 1
+
+   * - Operating System
+     - Base Image
+     - Spack Image
+   * - Ubuntu 16.04
+     - ``ubuntu:16.04``
+     - ``spack/ubuntu-xenial``
+   * - Ubuntu 18.04
+     - ``ubuntu:16.04``
+     - ``spack/ubuntu-bionic``
+   * - CentOS 6
+     - ``centos:6``
+     - ``spack/centos6``
+   * - CentOS 7
+     - ``centos:7``
+     - ``spack/centos7``
+
+All the images are tagged with the corresponding release of Spack:
+
+.. image:: dockerhub_spack.png
+
+with the exception of the ``latest`` tag that points to the HEAD
+of the ``develop`` branch. These images are available for anyone
+to use and take care of all the repetitive tasks that are necessary
+to setup Spack within a container. All the container recipes generated
+automatically by Spack use them as base images for their ``build`` stage.
+
+
+-------------------------
+Environment Configuration
+-------------------------
+
+Any Spack Environment can be used for the automatic generation of container
+recipes. Sensible defaults are provided for things like the base image or the
+version of Spack used in the image. If a finer tuning is needed it can be
+obtained by adding the relevant metadata under the ``container`` attribute
+of environments:
+
+.. code-block:: yaml
+
+   spack:
+     specs:
+     - gromacs+mpi
+     - mpich
+
+     container:
+       # Select the format of the recipe e.g. docker,
+       # singularity or anything else that is currently supported
+       format: docker
+
+       # Select from a valid list of images
+       base:
+         image: "centos:7"
+         spack: develop
+
+       # Whether or not to strip binaries
+       strip: true
+
+       # Additional system packages that are needed at runtime
+       os_packages:
+       - libgomp
+
+       # Extra instructions
+       extra_instructions:
+         final: |
+   RUN echo 'export PS1="\[$(tput bold)\]\[$(tput setaf 1)\][gromacs]\[$(tput setaf 2)\]\u\[$(tput sgr0)\]:\w $ \[$(tput sgr0)\]"' >> ~/.bashrc
+
+       # Labels for the image
+       labels:
+         app: "gromacs"
+         mpi: "mpich"
+
+The tables below describe the configuration options that are currently supported:
+
+.. list-table:: General configuration options for the ``container`` section of ``spack.yaml``
+   :header-rows: 1
+
+   * - Option Name
+     - Description
+     - Allowed Values
+     - Required
+   * - ``format``
+     - The format of the recipe
+     - ``docker`` or ``singularity``
+     - Yes
+   * - ``base:image``
+     - Base image for ``final`` stage
+     - See :ref:`containers-supported-os`
+     - Yes
+   * - ``base:spack``
+     - Version of Spack
+     - Valid tags for ``base:image``
+     - Yes
+   * - ``strip``
+     - Whether to strip binaries
+     - ``true`` (default) or ``false``
+     - No
+   * - ``os_packages``
+     - System packages to be installed
+     - Valid packages for the ``final`` OS
+     - No
+   * - ``extra_instructions:build``
+     - Extra instructions (e.g. `RUN`, `COPY`, etc.) at the end of the ``build`` stage
+     - Anything understood by the current ``format``
+     - No
+   * - ``extra_instructions:final``
+     - Extra instructions (e.g. `RUN`, `COPY`, etc.) at the end of the ``final`` stage
+     - Anything understood by the current ``format``
+     - No
+   * - ``labels``
+     - Labels to tag the image
+     - Pairs of key-value strings
+     - No
+
+.. list-table:: Configuration options specific to Singularity
+   :header-rows: 1
+
+   * - Option Name
+     - Description
+     - Allowed Values
+     - Required
+   * - ``singularity:runscript``
+     - Content of ``%runscript``
+     - Any valid script
+     - No
+   * - ``singularity:startscript``
+     - Content of ``%startscript``
+     - Any valid script
+     - No
+   * - ``singularity:test``
+     - Content of ``%test``
+     - Any valid script
+     - No
+   * - ``singularity:help``
+     - Description of the image
+     - Description string
+     - No
+
+Once the Environment is properly configured a recipe for a container
+image can be printed to standard output by issuing the following
+command from the directory where the ``spack.yaml`` resides:
+
+.. code-block:: console
+
+   $ spack containerize
+
+The example ``spack.yaml`` above would produce for instance the
+following ``Dockerfile``:
+
+.. code-block:: docker
+
+   # Build stage with Spack pre-installed and ready to be used
+   FROM spack/centos7:latest as builder
+
+   # What we want to install and how we want to install it
+   # is specified in a manifest file (spack.yaml)
+   RUN mkdir /opt/spack-environment \
+   &&  (echo "spack:" \
+   &&   echo "  specs:" \
+   &&   echo "  - gromacs+mpi" \
+   &&   echo "  - mpich" \
+   &&   echo "  concretization: together" \
+   &&   echo "  config:" \
+   &&   echo "    install_tree: /opt/software" \
+   &&   echo "  view: /opt/view") > /opt/spack-environment/spack.yaml
+
+   # Install the software, remove unecessary deps
+   RUN cd /opt/spack-environment && spack install && spack gc -y
+
+   # Strip all the binaries
+   RUN find -L /opt/view/* -type f -exec readlink -f '{}' \; | \
+       xargs file -i | \
+       grep 'charset=binary' | \
+       grep 'x-executable\|x-archive\|x-sharedlib' | \
+       awk -F: '{print $1}' | xargs strip -s
+
+   # Modifications to the environment that are necessary to run
+   RUN cd /opt/spack-environment && \
+       spack env activate --sh -d . >> /etc/profile.d/z10_spack_environment.sh
+
+
+   # Bare OS image to run the installed executables
+   FROM centos:7
+
+   COPY --from=builder /opt/spack-environment /opt/spack-environment
+   COPY --from=builder /opt/software /opt/software
+   COPY --from=builder /opt/view /opt/view
+   COPY --from=builder /etc/profile.d/z10_spack_environment.sh /etc/profile.d/z10_spack_environment.sh
+
+   RUN yum update -y && yum install -y epel-release && yum update -y                                   \
+    && yum install -y libgomp \
+    && rm -rf /var/cache/yum  && yum clean all
+
+   RUN echo 'export PS1="\[$(tput bold)\]\[$(tput setaf 1)\][gromacs]\[$(tput setaf 2)\]\u\[$(tput sgr0)\]:\w $ \[$(tput sgr0)\]"' >> ~/.bashrc
+
+
+   LABEL "app"="gromacs"
+   LABEL "mpi"="mpich"
+
+   ENTRYPOINT ["/bin/bash", "--rcfile", "/etc/profile", "-l"]
+
+.. note::
+   Spack can also produce Singularity definition files to build the image. The
+   minimum version of Singularity required to build a SIF (Singularity Image Format)
+   from them is ``3.5.3``.
\ No newline at end of file
diff --git a/lib/spack/docs/dockerhub_spack.png b/lib/spack/docs/dockerhub_spack.png
new file mode 100644
index 0000000000000000000000000000000000000000..44ff0ed7ed87652681e4d0bddd0c568d57fcc8c3
GIT binary patch
literal 90235
zcmeAS@N?(olHy`uVBq!ia0y~yVEN9#!0g1q#=yY9wM(;$fq{Xg*vT`5gM)*kh9jke
zfq_A?#5JNMI6tkVJh3R1Aw4fYH&wSdxhOR?uQ(&W<UR9#I|c>?22U5qkcv5P?pDrG
zDXsngF???A`MsOJ*B&Z*vq?tj5Yr+~0Y*{%o-Q@DV>28~PU`=h$?|1+n~d9;M4v^B
zdrXhbSRpVqnK96EI_tIAZ~M}}%~-tr{i=1V?#tU=wl=m_uQvQtXD4Tul2*NH)#_Ed
zSKt5ovu+<-{F@#DK`5B0dEDl%w1N^0==UD7g-Qud)bx5duLBBBh%7DecY%VGuAm+2
zFfB%|ns<a@dS)&XdDjWm(%}=x^&P6i#budBYc))ZQt%XHYfjlAIl*Y^64_?U%*i`5
zxf!mvJgZpSwr;u1qt>m*-=1ZEbGrS>-xo`AyAO(6``^3ddhCLb@r<ckIwF@>d%L)#
zs7z(x6Jg$^y(<Llze3-Li#eNjTvU20G5Oc+Ci#uF(i?UzkK+I5CldPZWai=of0rju
zb<?iiTfJNR>gBzfVAn0b`iQOD^sU)C)13kN4yOz)mY+>?-F)<N`>LGx+<rH<Y2KN9
z+3n!GjuWTn-&^hK;^OjTs?J-9HFKX{X}`m#@qE*p`iGgn%xt_SyjKc)qcqXFLs;^H
z1^4Duu`OqmO24hnjHzJ@Q{rsMmW;8voanmw=wbFh!bUOSNC9o2YuLQ{*)Hc*U#s}u
zBp)x|?@@G_S>>+8*?I0OUnTF>Tb3#)mGD(=fvVOdjZ%R(HFK_A3oA;GY25#d>x_?b
z!0YqnXKSYa{$6$bE}J`&u?pSNx_a{-Ua8mnnp*j9_I&k^H|i&p#m?E$oqaoETeI+w
z76$=WiMGbvn@>JfzKNJqq2w38@xYe3_KVk63*Vj|=b8FaOUb+~TQX*|!m;yKwcFC;
ze;M4JEcDLx{p`5^@7t|y^!BfRp0dUb7UNG^vN|Q5oAwsPPka9F({@j}dk1^2iLFYU
zdSNSvtnlHDhNlGkQZLT%68gbt#um5IDPE7Amo4E!^ohpI4Hd@^NBm2iXaD)D%R24@
zM~!8wPCfKq_aOKwJUw!3m8%XvTl(5w{?<pOz4QOpiiv;H$(VO=)6LBrbG!E~aJsfS
zz*KkD<;Nv5Rz2~bGILH`(fYnfW^XG~ZEfumDWi%+2ebKyJCDwoefPL@*}e1s&+TK;
zkCk3leKlr!b$PY^O7{7d|D0idajE;ccJ9+F)o-R2NA}(M={Spde&pG+I$86NEn1c)
zrXr-{Z&nm{+ed7-<}I7a#<$WgJv#D{+to>_XGV9T#1t>pqMb5rnU7S2zKC**Xs7mg
z&6DP{YkV2naLYwHJKZul_tpwOuc!BpUwi)g|6c9-N6Ws6!ZMVlq?mcs*T}-tJMGNs
ze|?|v`ss{`8A|c%K0JEZyu(E&J6qj<D(~FiH_LZ$v(GTE6*FFA(OS|q@4#_0o}`Tu
zPgl8bjaj6A-Q8&NvF|p0PpUGr^3uX|&aHn}H|PJ{a=}C$x8ge~g^NvJ{;QtM_x)Pz
z-7~jlx}O$azhnFC_H~&n|Nq(ewK6Yy?z;bf3fhm~jXpg&wilMWPiQ`zwIS`+#Thx5
z&HwkFIVh`>nWrXuBS$mM^2yU1kEUmMs@$l0q9AR}AMnZf(lp1(!jJD1hdV|a^V|Fu
z36ywrB>BkVhNP7)`yv)R`h6sJ`ro;8W!~5vNqxR9@ukV+pTD<lDE@fUAy@j_Gp0QS
zk8ao9YJa*eYhz@6E%)lEEC1kSk>6g?vt_jwdDs8hhRFXiI;oK0S!`Um->Ld)a;Ebv
z$zI<jk344yXNslIijeZYAmbmPJKgfiMNh-&%N6GyD~xH%nwnzdX(M?2vyIkMqrTTd
z#j#vJWp-PAyEygz<5Ju6$<Kc^-1=}w^z7u*C;X}xmAyWtvN}puZr84v+V5UJy!r0c
z%X=!7Gk0eO&iNcAYt(nJ`=%Cud6muGrJrFLA#T>u-mt&>=l_0{?kPB79ow06DKo_V
zjh36YPxQNFm999`hx_Bt&nIQx960|ikZYBS@AR9W#W!qT-kn-3wrTHYhB%R+6;ldj
zrW<r=h;W&t7#&G6OggEu_o&S8UHnNZMss!++n%4hdD}kS^S(;YXO!$H|GrJ=wbkBV
z=XZZPI6<!ZwUtf6BirxyHk&Xy1fO|gES|dK(Y|>n^MdZ?t`2^4j$J)h;sfvJ<T<yK
zK5zWmI(gHdk0~<E+0Twt>|1_HzskR6Mk>SgbG?Bp+-$Bq?EU>CIJdI-X#5(#&3i7Y
zy>FM%XuGq;;-GK0a7}J?=l<IfHg{)hfXh)OrC^_1h8~t%SM7D$CO+?%d_j_lb)k`i
z&D<r5(-zJ0N=ms@(dTR`xVZFU(itbt+n+m~3hr1G-%1ba-2LQKsttG7Tv>;f%vn=T
zr=D7BG&5w9i;<s$%emDTBwgmrzj2y-s!^hj-zh^6>tikH=VXoV?5=4m_Oai4I(>(8
z)w{K?KeT<h(VSfUPS+#axvu=^-n(mFf7w}c>_Vi2-u#!FRvoQ7d9`}`dcVujoc>We
z%3sg)ymqd{KYGV@gXE2iPAa8Is;k~PZNZj(D@Unkdg_ky+pkPEPg1M@;j&K7AYG>U
zcKFhrnT1W~f=*m7`}65bdCl1p@#85$#~0Zqe!4YN&v)Iy?wbwl@omQgQ#Q#6+ig%f
zDZYJ*Mwq(2?w*blA?CVypWg85{<+KTYWKG(FKu4VbieW+zr#&GtaIPA=R)zL^*jB)
zeTwhgS68Xrep+$=|Ic?kBme1YPrkE5;oQ{krH}m=u}_;5as7Pv$DQHnJ3b!NvA2FQ
z|J~V%@kYg$-FIJmTlI}|(n*!Zc-5Cy7J@U_b}aK;8gOjO=NpC1MN7Lx`zLR@95P31
z-*e%cW-ndXl({zQ%q~%L*1GP#F-C2kN5I#bMH)*Yv=VQNJ@uOD?7pj0N;-49PtZ=i
zqK!Ad=H9wuys^{N@Arl~53k+75cU6k?9K*jbFrUq^wsJFFN;{e&1LbQ)tH_prJnhd
z`E+kwUHrWKD3SEY#kMLpm{0r^l&>^8e*K!+r+-g7AM<?=+kR`#-8U1;c(fc{+zk_A
zm)oZ@wVqDjk@J>2;(qASd5`p4MSacIah{*MY~ioW;}0&q)cgK+^_&Y&<4jMd)`m}A
zcj`rW+v@1tG&P@hcb6BG?O2jqaCwo%|Bb7i%8X>wTwVMYP4zXi|8;d)a^3%xysZB+
zgI}8DTs(dKL9M9kh3D=z*JGcqpQpcR-|MFzQ*B=#?u#k)*m^|z+0h$w`777`{;|Dq
z$<zIFmgY3ykDvKumZjmdB|fJdkF>4R`oCf2iDdS8x#KzEb_=R|vR9vsxcbV#I`dQW
zUibBk{L`Guo~-hjxSmD0%yITv_Ar&m%g-)6ktzvSn)mwS&)d(th56>W--<t+TUD&>
zFY~SPymGB`-T(K~%?e(Yv@gB?&T8Fr#mB!NNP5<lZaZE2{rkKr$NwA6m~3aIvi<W(
z_L*|t0>_l4E=evjIP`h-mucN^-n=~Y!q(@idExA+l{3Vi>qL7_@qDDhD|7mo!lCb7
z5r*v*0uz1IJeLGZEc46{H<w`B8Pk`d<)|dKJV5K=Ek4!D3zlB+T(?&2ov**&#De_T
z<^I>WGfUk46va|>?8@T0s<%yj@wM*cJ<s@KPJTgE6*AYhSUve$;IYB{#`o`GKR!fi
zUfXg@f9L;ulD=lyQL=S42Nv%ZnzV&CP2JZk_(kv@)wE9u?d}4uER$zj{!UGIy!FW8
z;}_db)=chZ;p#WO%+HqTT<b6FQ_E@YUbb_8Nazanpp8-+7w$f_^s?+e`(v(4I!?U&
zu=wx22^$`FDz7>vb+-Ro^`Ac*&fl4GG+OM)k59MQ^!9IWSAKfA{_(S&dGpQfXRQ67
zGyB8z=gWVte%__7az}dKpXr-taNggyX<~6yj-2(2&-T@)Om?d6H#0wGu9yGB+5Ys$
z`_+E`pMRWhH&y<>qj1UTnVepX&WBdzztQ;I8^0-gbGfePhn1$9Tvt2f-+a9h%yGhk
z?fJGFCBBbJEiU~Nn)&Kbj(XY)fxw3a`(}4t_c^2g_^YUA3*XZVhc+ra4nMKOvuYRr
z<r$F;lg|jWGB(B^_<X7*&_jT=C9vf=tHd-{ota7;t3tH4*7q-;G-XxlvYomOo{MU}
z{5><%CH4A@hxa`Gekps}?D_r9?Wx>-KV=;zXK&cI`qb0rwx4|EpBL9EvsL@%z3oje
zw@V1G`(r+T>tE*v^OEr6yj<a1Z<y>l)*@$};8@T3+~c;<wOzAgnprbf+lf>r+>O+?
zN~<WkwQ_B8-K~_oQ%~lIwX1C}`<@eS_h4sUy~oUoJ5BMkrPH(Hr}8R?*q`;9wPx<a
zP3tZ%UR?2of3e0PvxL;mXCJZ6Zb`lHyfx>|+D*#kRfnc+N#3yE;#Z-a!Lj|mS9)4b
zZi_ka?%!wQ=k78(ys_^hea)Wx7kfk$Y!LYvu-x7Mf9#=eJ5C;b%lDR(dveF!pA&xb
zhpcehn%Me2cGiR0*4lgOrk&o>a&mjwG|M2qnNv+F&z4Nzwxd(r#isJedU^fJ20OB*
zou0%tTcK(0POaBgwW}Up_`E_jt>Ee!i9XK!dGg9f9(dpO3Tf&vo}F_pf3>f}q_0kL
z_HQ<CUH?ty_^ovZrDB`4(~o78@Lt;1n8+YeQ=dPxwl(2OYR}gFkER`5Y8>-S%{NI*
zM$i3D{Q{@;;)PFrrXQ8;Zq1zBy=-UBtF@mdHy>x)o&0w9$9doL^}IhE{wudWtGv+n
zLvx2a|Iark+2>r$_&n>S-ZaMd@p+eDxBfYP?$eIv2X2cWyLln@X^+}$w(AOA4}Q+m
zI$!cr;=paOW1iM*=6Wk+7qjzM<ecZN&7F5MrFenF1@jeJxoMY@-ttVJHp6k7(5K6X
z?X2A^b^A)!xc#0zQO6^C&gDlN_DgKobW$zt;6A4l{`{3&Yvqg$c_Z#W{hU)iwN<iP
zJMGwy@4C*~YwK$Zo0j+gc%#V@V|Y2W?9?HKzA4P_>>pgcFRVZ7S%F`7Z|;G<m=pVw
z4y<W8+0QRieaHM;*v^8erk>;pvz0>ml|G&N@FQ`)evV|+N^#?d$HTWz*ubN=d;9Dl
z(??Bav;SA+3YX_=e@^#*UisvfnB2=R294%=9gH8&%8J^3%c;A<C|Vr6b@qexGv6gJ
z*jv8%EPh_(M)Zok*Y6kB&8p1oKEEg6!Fs(D2G*II{@7<<H3TJu?cpjj#LREr68|t=
z`jgF_$}H^-a`taN>(9>qofVuvb^ktvvq#_Z-G9yBb?nx$*UyjsSl(@X=TC-weUV?+
zQC_j=O^o$_Qs(jgeHeYG$v%4OGv4Cll$hqTdqeGZE)3w0&lUdn=8nnrv#V><%0!&^
z?b>_9K3|Vl^4Ip|0-u(imdYsOeP>~RRQCDuABUzHZMU5)UoH!(f6K*FcRcxhx8~U*
z9&x|oiqp-J&z7A@ZWD_$y8G~a_|nL08HEc3J}u2v{rC0gt$#Bo8vJ}R%Vd34d4bQ3
zd*UCipBMM{l%6|#x~j$UqtE7>PycabvwO5~ZCUa}_H}vBCO=>P^Wi_PrwLz*^YTtT
z`oGq*Fmbl?;_5HmuZ&|u?|pb2r<bvLXKL!C;#smuVm7y9pDy+nzi};mx7)7Ae@sqG
z<?h?Q{LuS36PKu_eW)p)YG0>y{#wpk!~U4thZY7M=;cq_nKkXS?Q~O_&oN=O+h-qs
zI$^tR&*ycjh11L;LYOL6Tz<UR|M|(^g5~ko4!lmgx^H%z{rcYCy^QPs-<Nx5VSje_
zv?DYB_A0x7KYNMgef+$HvP(}K44>SO(<!`u?UtdmgxCLv$3OqM6*E2Dzx?G_rG4A>
zhR8?RU$d;(bk;k%=FuLJYA!`{y9?g#nP1)q6$gpUkD2^v(o4PCxFh}F!halTJ2d0>
z>x!PQQ4;U^K3`swRr=%BH>3UgjXXDJe|X{8&u>3Ze*2`)Yq=lSJX`c-M*q)i=eX)W
z{5UE3O85Blt(#-=ER8LnCCk0|@Z*ijuTT8zELWGkXXajXBEjGC{K6dh&&Hlk=hZ)~
z3eghvIj$(rawNBV-@ZJlKR0g#x-5MayfVbVhx>3Tr*~@2ef16nx$eZ9W{vM39!q-C
z&6>1Rrq!u&-MhR^tuk#F4IY{GrXMMIzi{<z_nHs4B#*Zh9Ih`vbAGW-dT6)pGl5%c
z#EV`(w%oV7`h{!*Yv$zLdbu(}9N)sS`eje%t`5Fal~#0O*SmXBkND-z%L;F~YhZsY
zUGK~Wh2kwT#j)+jtL4x3Nh<KIVP5cab-Vi3cf0j-AN=}R`0v3-neB6C+N9lWR+or0
zd2#>Vb{)eM>2q1zcI>$OQ2X|&FW=gkK3_7^o~?W9(X)<+_ae{ootDzwrNt+Ebn)+-
zCOmc}X<f$@+b=!YV>bKj&4%}HwB~<`6OR71YESaT7xB-oZ@KFCbfevjW5qi}Hm$m<
zn0B@837@%sZed*X+9-|Jt#j_?6yLog5q~pIsbhiAp<nN`WRG%f%PhFNN8<Sw3!BUK
zM^w@z_vD4WeeV2pf|IFIrgV(C{<+8PwsjlK719nqxRY18_^3bMFPl4&DtT9@Rpxb{
zz3ko=*H9j=v~TO?GwkO*KD~{d`fI}ZpPAj>%dGEgUw`Oe(1|rmj;=q`H}Ui7l5g)<
zPu!NhBYvjr<D)scDtUb~_aq0-S^r++VlZdnnTgX4@BRC9sKfTBmi<efkIFl8b{$@N
zId<Rn?T4CW<s^?Mq}xf9M!bvoou_pEwi)la+`=E<&Kbo?Y_v%Jyn1u&z8y=CEX$d?
zB-y|=k4I9<`d%>;C{(R?Yk#Rylsx`m*-_4K;>>*0oc8T|d?VT9&ZC~A#~f`<A5S~D
z{%q;a{|(3Q)f_mp<mlGo<eKdC&UdGt^j%Fk>p%OAK3h#@H0O1bir0rE-bYM%P+fiM
zjeeWSF1GhEQxeJ*Q_AfQ7$uZlN~*6vn(BRK!9~*>^Hvu<JtJXh|LFd95yQrtnydds
z#a+xO4%>Y8`?o8r(!|XpV(bnlM&Cb?n6go-aD~VwgXH-WxVQu-3adVrIO8L;_nmbR
z=gO83?fzdr&efj%<3yzAyNY#UHE;CWYO)Sr-0<X?YT>?pn-9JJV{$xnbIiT{Hs`*@
z9GJdc_V?0jCJ(%)n;IBre)6B~#gcf0{hY_AtEZ)Re%hC}>Tmwfbkm!6N+Xs1<-WZ(
z_g*(!{IPI$(4WuGgg~v?(@hrNW3HWeU3Vjz-^*`n<N3`ksXi6byv*-*C>&mHCi0=F
z<968cpNF!gcKrAq8{+)qN2O$5l*r?Gxv6DOnC@-UI2V4+tmtX2?VB^Kd#XK~zU%jY
zUdhY)O(bjnOIzhTSKfbi+P7uvndQHn_x}DK{>psL@o4rdPRH`&F1p;~|9Py>sG6Ix
zIM{hV^I5;hn#x?|{<5k+cez>5<!;=WTiP{8{^M8KRJ)C8XI<a&ZC|f1;8NhZyZDrr
zOnqrtPZmcx-|wcH6*8Zm=BnmJ&V15j*6#kB`Rv4VJL`8?9Nx0y<ZQVULfd)wZQ9l-
zUbX6u(F*%}2ZN3rFBdoHxmCX6e9V+*y!LihG9M0^&1O6PU|aepmE7k2HugvF$4z+l
zOR$Z{?sDkUx%}7L>UXKtd<&K2o2pdxYrnE;PV;=ZPe1=W6XG^j165hgOK-jY2r5cn
zmP}9IRr9YddEy@p{Z8p;$A3JTCBiTF;m4tFyXof&ejJ%4@-r)Bzaq~EbMa+A+v7!k
z9-1cfK4#8?!|AG(pE}Mf&;8eO{@~<?Z9ffjHea(^uvjEX%0RpF%kH#${4c*Q`c>VV
zD^>I4qfF-U2aBIC^RQIg|9$g5&iDE&_U;qsk^06lVM|+>YVY?biIb7OV);=5kNxMJ
zG1Slf_<VIxO_J{{{(oEYj~wU!5%#}OO83F+tb_L?eZ}%)CDJ{cTeD~7yj}h2=ULTn
zqHg=<&3p6s_9M0Z`z+4g)aC2#JJ^_XAbi{O%10ag?->2KCfa-a&)NHX0-jv-<G;S9
z_2K%N?<Q@^W)1wFqx<nr;TM_O1^@r1ZfVHhbWqNr_|J>#&HL-wH~!=<;O&mdC|Iz)
zpY^1Q=zV3b1xpp1XL|&#3(+Vmy?jCLu)Y{)QlZvVqo+ljs})^e+-wQ-SQ(-;%_})l
ztTFudw`teHyrvp04dOii-Lm3^f^0j#q5b5<%N(~&<_R9&yHV?<-?DaVn`@<2Hn(F_
zW82Gper!|7-SqEQ*sLVANc|@_|1HeTPTzH>_U1<Q%dykV3X1>d?BV}@|7O(Htm4m?
zSXM{ntlP1E`M$o{(~s?Zed(5wS;_A&VM<~tI-o&_f4{CNF1*_is%usrd+WfeYf-89
z9&jD&T(^6reb?VJt}~Ob-IbC4m1e#}X>&-cI^XY-P^Ve3&D^(RqmtS3BPAZ+|Mfm+
z#$RWyvw>}5ec#?M6TJB1&^@OU#_ly<jz{iHIqLdWPg_d&o`LzX^0N82HoY#Dl>-$z
z+d?z{eK@%=f75AcoqHQsgvplJh}K9~uikRR_ugKMbI<lgsiu@&u&jvdKKr=+@2{g*
zjAKKuZLvDzaph3Y8u3YQ&o}-tNOF&Nc)cNc$4c{r-wR%?+&nACs>`u<Mq1*H-?t}z
zx_D2oPU2&d*@9Xj{STj`a_7BVwP}68?Pqs?Ht^oH%Z`$*GgvYG&WE>BXG{~T4n48n
zo&En_Fy~91HXr{P&P<CRo|ee3Zx!4#!}iw?-<u8bGi^V9pSSVbU6=XaC%f0|`R7tl
zz3$X&-sx`FWxo2|uQ<>7Kz#4jssr;rXV*&Ke*DZZbb+#A@2$D_4))vbzM1B(x1!$j
zM)Zo%>3X><a!)4++lC2?x?K4!UzvDho|8v*&#&pT)`%A_5xOL1{9@&SYx}fLOZUI)
zR-GADx>dX>(ZwZTzoEent{-dCy1&NS&0Tuyz1i2W$a@xL*E{-x4)nB~ES_8!rlh2P
zey#T8JG(x;5brhrV{zIz*3MsM-KV9wsrUBlIA)(osa$;2_w^>{s$X&|UH;5hFK!9^
z&wFpC-uoCCdBZ!^cXg(x_KL|@D#god?NFBgls`RXM_$~V_itAHU1ys2LHxYPk4Fo#
z4&Ap^J}KP3`m5F&cm7{{emo0XH~;yk?dRw3D$su{amH)b8UN^-A8S-9?N|A;m|e{M
zb39(;^?B1Y$v=NrUy3n2{B)(VU4FdCWBc;(A1^L%ef|0U+m#=Vl<NL@C+Yd`L#NEy
zzoIF#H#73fe0U|=eE8{~j<0{srM7=%{VK5frs=WR;|;nuwcgj~d|B|&eEQK&r5^|U
zi>Is-w7>Pf@Fvgn?K(Z5zsjc0ie<K65&Qf7Irgv5YqZYzMwd)EB>0<|ucu?i{Ee@F
zr!FbZEA2jOd;3(*JN~r!Hg7g>Ik+zVy-nqkQ<L5M-mN!XYnC4`a@?fv-VRfqACJ{P
zf1Uj-JKZA2T;J@8A@eTn#QzyaS&mb33r;_-{d(c|yS2{o!TFIh9^9FBtMqs>d+i~O
zM+KIv?3Yih`Ou?M&8_&pZcD#L)9!84DjvK_%Zr^UBlOO;>caE<dFxquc7Ia5ey%j~
z@~aOX%k3W)e@KbA6L0d#r~aTr_L(Oi&1G~y?99$yyXwcPNWIh2y7#^XOq>7ZegDtQ
zZvHhMA08f8-?x83*u?KQ*2_k_nEa?M*mM1m2iv(`-M`PTpHiE>U9ab(dY|Kc3uPNO
z?jOsdHiQSip84Z_^eKr0`8wVOr)P5hdvWq&+Zz9OA6e~H@+AKp?-Q!6I}$B+?C0Xm
z!F%3c)M2%M^v!W{-@f9)IX^Qu*De0{_q6byy0V_%->&BM#h6}x`t9?jKkv>LmB_eD
zFT2RJZ@SPMUh%^!c{gWlYfQH)d9K`*+8-yq?b&9DSh<7;x6FKbbxqVBNwEFc*DmNL
z(dPJkqVpHlP_L&(tw|FjteW3iP4QBdQJS<;<fRX@>|FK?pQW0jr(|quX1IJlakT7l
z<xQUz6Tdp;$t`z!x6WHSvuoy^&0CMGZC-U>Z~ns%cURA9`|@sgW#*jO)75TVcw2n<
z@7}LZ&33Zgugw((6_J&JYv<H2kP>*%%m0OMrP!X@(ySx7pxXHM?{tQH7v2_sR<8Y;
zxFvaQ^<C4mYqCmTy_U=QvFrG!R^6qFj7PZlGRoU1pIo!#<eVv{S&!@jqc<_$zY)0Z
zc%6P4^R~3rd(tzTHvg{9ld);F4V?FG)u*qrs`oZ(91Op1_UZ3lQ9cpoYg?@DY}p~U
zsP9^T{vxFZ6aD(rckzUo-Q1Jv__puofeG!?b{q}W?7n`^O3Gp8l{Oyd+=zFTxqg3}
ztup1Ur&QeEFn@NkTKlmZ{fC()^?TGpXWbSuuFQ(qKi~Q3gw(@LlONtTopE=*miysj
zti1atNbT$S_$~a@y0hnOj58Czu0KA{W%qGN5%z&oa@EBfOV2;HU4F}`{oRZ#iHA|b
z)k&VW512><&AlaL9C0gwpK~`)!jhdTYE^60Rz>u-{mC_LnPY#+?)83)x4b*@=AGVk
z?v|CfdBj(_8U3=WK4llj+}o*fu5F&y?9Gm~6_t~-i+0$2sVEJ1IyOsQ^SS#L^|-pf
zj;>FpzLmDta#l-{k_hAYaFUlb&fNM~wD_?f{d1=#w;g<Uirx8MvH91qohiGFA5~2=
zy|!<Lz2ytF^TB`r*SbBvaB9XuN9F^Q*t&PH{=R?D?8*1yNzVV@rAW)PygSpnCpk9$
z@3WgO+Y5g$`1`y2->UCFGrQ&Vj~Gc5=@zVz*|c0>)1vzSHM!L@Uq3(o^HM7Bn)j<d
z>FZBZ6J4j1w*geP<o637)6L(~8NK1{v1^L^@5is1D=`0N#1roInGY^z&;EI_uD||H
z$fKLV7C%p9I3MOse)78S;qyE1oKF1AHS@f!kajI<LXK33>aSI0?fh#zHmC$=`%l@z
zD<dq!%*G!i@yFaYt|j@Jn?;Y=$Gfk>+V96rd{BJ&+x6SxM=Nh1ve+Cf<|!@pD|&~|
zu}N&*|L;EMy=m?*`>pc%Ba4rY?e&)zT$EtG{+0Q9@9}CrIsVQ6Z}7g^wMP8YKKI`S
zyv_Q1)Pn2pY-+nT`R6l^&`4vUu)VwoTtGw1^6kC`Uk-|P{`xK1^FK=BY@cIpp4qoB
z!(NHvU}yKkJ!usO%uSm$1-r6gYXSD&+G+NqCi-GZ@l_phVTqS-=Dm6B&3NbIor?_T
zjd=gPSff%LEVlo}+H1|<P1l-vOY7|0vDC$V<F(@-OE)L4dHvx>&Ho9X=gWNg`6ydz
zN1<a+{fr||Rw_%%eUSCv5dJ|q=<oXT3o6Z)W=UQz>5MLHnr7kdB;UkweS@L0usz3z
z)uNvq^>w{3-`FTI?RC-(#oDDh?R>H-&!e7nSL)nWQ&JM^o@maa_0(vpS8Iq>>tl->
zea(|MzSMnk<HGCf&AU#DWb{b9dwY)kjQ{*w{6DPC#g6lQ6I<d7YVBCd%LsR^ef?$U
z*N-u_3z`?Rf4?^Wd7IAm>)ksZHpZ3h-P-$I$G70~;@UgAHi<o`&8hu2qae3{$u{Bd
zS6$~-U)$`{)|AHA<@?v(ZEhFp-|}uF&w8C#>#npN)jc)ijL(eYvhQpw4p=X{mtU@!
z;vIkBlUw)G-fNn?-x=)wI!)|LI+3sI|6$_hzP5G#@*gXATz;&azBJ-m!pDv2{kCb7
zCw^B34JPGGKW{x<<z_g?ja%XgLLdL`joYh!KSA^M17Ge(ps-Ec=EV|o<JkqHHK)$W
zPus-v#aa67$8%2&gO-_Gy499{J>h7UOS$T!JJX^}W1{aYF-?;x?&FO=7V(=qYxB8M
zk;A_X-bZ?NXFv1VQ<T4^*8Jjg+e0s28}@#m6L-ppU7AB|uOqi1PxIHip>om-pFb!7
zHC0S66-&N;SvrmB)ZeN5_Qttv&fc{7f70sn+&^#i8GXJimK`N~E_>_GbL+T%{+n!*
zRMfac+;1IwYsZO|8@8@L^;h`|S8G(mgqP=ErK$DTGE3JvC$EWoe^*c{M|yFLAJ4iN
z!=79J<=%ezS$}xl^eVrPJWrS%U$me1GSbc4xb*#tg4>;W$vGF;|2>dyS!}8x|L1mJ
z(21$vOFu9BS!lOG>EQGDxexD%ReQwm+~|`c%Y1CLoY9KAGBu|+c$%@j6aV*Q!TF>2
zUq7?;7T%Me+4Mg4DJa9Zz45MI^!6nCoa<5C&)V8Eyp7WS8aDIR@00%(*_R)4@4zzi
ztw|CezD$hrw_UN-=I5(hZgDSGeq!(czHz_AC-?N_6|WE7FuZLv)AL=D+MUY4wzaj4
z^XneIFx*=g*W({Q<JoKLEYaz<QzzudRlf1Lo@~hLwns6y=Yx_=_U!)eGB$F%KZhQ8
z+N0Kec&=g`hy9)RU*nzSdB3yGyYyTB^v3EN8uJ?k#f3{($jBMLJT_bWNLx$w<Go^T
zk7v34UAFPF&^ms0rhVPF=W0s6VVrX{=ku|jhR>Gh1Z{J?vuf`0X_*3j1&OvdkNfw}
z-jiE6CzV&McU@!lwX%|$3%?6anf<sh)6*<<^&kKG09)(S#G;%FwHrhX>}!+sp0P9S
z+dS*-<5f3K^K*SawC(1XueqwZ(OY(E{(2;~_o|TQ=|u-kJeLHCIQQGF?|C>Y<g8ZT
z>!cleX#uQCT}zo3PFCS?zBJQh-Q%R&W^IW9yv#QD4;v^<^my>w&iHnEz?xrQTGW`g
zR^L;JOH*#EK4128xyhZ=RSykoW!j`A=I_s&a%^LHzAiuKceX>@OO;L7-+fh@_jc8$
zvSp{A8q0)zou1gg?af2BX|}iS^Zfbke0@vL-Z|42@2*#RE%*NMng{I-o<&Aa{hO!T
zXRx-rbH3x7>NL$fD#h>e_E+oQYJA=*n|f`F+}n-j1|sE=i;qe_JIdH+{h&FDfA6{?
zhhv6~4ez{;tXX22w87XmaQ2Oq&kL-(4!4K)FWD}1X`V&p?@u0<i){1wcCI$lwfm_!
z%ib>F;jy2E=d#K)!j#|LecoF&z2rc|@6)E)w?8)To%+k*?8D#Mha`&cJ=^&0ZfC{4
zK#@cV=jry>if8>Oa{td{wn0B;bJ;(}lIe#%_sZ{|l3c2^cLs07rG$&Yoi}Fk_q{y7
z(>h){>`z;zVVKEHo6;p_fA;F8U2P9^UVEu>$-U{!F_VMu{SJ0{QgNryaaPBz-p9AY
zm+#07tT}P!MYpt$&^E`FQi+lUd7BTv3(Tvrzkh%Ei$7+|?+HEL^Y8U}-Nj$DTW_Ub
zxR!I^5!-Ct+N+m;*;xs+ywh*H^Zl2a-8QSU?(<IgW=WsV+x9x~)z93m&-Yu)Z`irr
z%XCfXgqq6ew;OXm-fAiF=X(_$!<!xd>VI+g%>1~ECvJ-!bLR<b`lr9ES%0JYuD;F+
zL+OH>Jndc<TW%F^kkfy3uGjV5&8SDq^D`bEYyB83^zLs)eQWo!n}6=j^!%3<aMiE+
z&XZVgp_1@Lh4bHka_g4Uf3)iV+l9xw+gRdOM`ulq`u{1ZQ~md9h4gt1*^lk*)Q>i8
zIl0yTooo?b?43Akf4iSK^W^lE@(zC45tzT0dF$-g=On}zCWd6YZ{BtEm_c7%yVd%u
zY4L_jWCHj<9XGyM{K4h-L%V+ah?!6N&-s0PGV#p{#U~EjbGOYnxp(oIHtT!;X7zOL
z5pydl`+Tv?G&@T6P={xzsMA}En(XIS<_K0+9eVQZs%F^}r+0TE9u!zUncFSAr))}D
z_T*Zd18<)%^|-0_f6K}f>uTQq`Ts!Dx&83I`pTv)$)D=ypSr%e`{JTbVcUPt8kys4
zpI8fC(k<rrbo)Tpim=*G>%7l(7@zLBD3!0ULG~NF+*GdvUyfzYSZU#QMoH-iKl3hc
zR=)J=16+nZw_2JEk1MU1QmE6s&S_%XF*TjjDsuh7T4I{)cGFTH?{rtcBC(nyeTU%T
zz3<<xEcpB9N8$Skox2|XyT^In>-Lkr8Y!MXb%#}EujY??-_*k@JVSGhnWEc?*y(1U
z;@9Us>iS*PH}j@g-?v-RXFckTr}ZTT%%57W!(5%AAXDHbDO3^ozx}pDW<}kF*;Q3j
z<XC6^JMQ=F+|82)23PVoG;*DqF7;vV#f-^coqz4&=()9_Z>DGW@n7kN)vHcFzh#+M
zKQ*NzTk?$W%$#?;FFq>=Z9Dj-#WP$rDezcQ-K`}5#5b#-iC3-KvwEu;_swZJ4Y%$0
zB&=DuYx2f@x1X<y)MG#GSew*Y94)hNe|eF7OuD(XP3e*6JLg4(K8jd)x?$tD>Edo7
zO&zY1v!7Sj+<GjwI;t&>HFfWVO3iNZs#Ov)(MK(=?Xwm<zx#ZDgy{O#r*Q&-y~pbO
z4rU~WxkbEd+Tt0$^V*(@59@STw{joZk{tB1p3(k(aBAu7!$;rpoiDxq?SD^;XTSKx
zU{27ix}5or_4SYXH}-{|X^|FJtJrXO@#2WtbCL^>t@$2cDQK3ydQYWelbiaJo%0r-
zj=hvnxFe>zcBxErPwt1L|J7%>ZA10uy}J;|^<v$XLuYns7GL2sUGPoL^wJZ3C8gz;
zT`$k6iq~&Y?+dA1cl&wo=j0gE(@*{9YkgRntExBu<tOpg!8SJ@URAI1ief8|zjc8B
zTh*SjY0lM$9=tc}`?K?FLi_P&IR|oA2m5qOhbaGe&=tkM;r~6`Z|QgM|6g=sf83;p
zr>C2KdK)X6BdnKE{Nq>OB|}|ZzgFM9p?2F>o&c@+*uDM`Gy5LS{KxO-Ogvzab$#jf
zH9kcPB4!`mCw0iYY|75e!Z~*KN!9TOti_HSF0d1RnZMrS!kbxpE(9Mn%ND-)R_5um
zyZ4;lrd{>zemteA<DJ)u{%_Tf*Cj9d_w}gK{(UOvY^R%k_<2^9>uQH+uh?&H#qT-V
zA764C=e%CMNm<;$I(6a(o-*0vy~j@OsLt**KiB{Hce+}{-K5V?1m{1Sak8{H*<>dh
zsP6t`F?-Xdm1cLo&9XGqO3YnyaC5BP?PABjQ9qZt8XnSk^r&q5=UaX2i?7TIn|(iO
zUP5fUd-R<(-zV3<>Nr2|-+|}O>1vhBR-f|ie$1nP=*~s)53?ls-p5T+XcGJ#SC<z&
z@%&z^!*{2f75rzM@4ei5&c&3E#}|Jyx4xEg?x677pYycJ^L2|qU$S_;F7MgCTDjP%
z4L@Hl{Qd7Avz&A_^S_+XNy}y&d>3=z&6JaGmV~}HwVe3ZG!Rs=3%PFn_ci`TP*UA4
zGocst->M#mo%v@Jc`f7dEVlc1W7C53-^ygkF5Z7OMgIPiYkfbze-C@5n00tV(tPe)
zGVA8N{Ip(wTANSNPHTAqm#vBW|L?y4I)0vG^`WH8h1;%LUHtZxdD-{yYyS0LL#OcD
zv^9FFa%@m~!RsvaQAG22Vtl~D3HpY6*Un}AES9kJa!aDe#-Jsi1JrMqy<4zw=gdvX
z!fgqWV$(8(+7x?vd1Y?wpI@}J<@K(XL>Cd)ihb@%50lPBN8Vr7Jb6ZN!jpph@>Xko
zuJ$h*tRwAqZ?s4%y<5QSc;l9&p6|Ls9|?;Ko0AhJ_5QyX`#Q1U^CgS&eA%jrn^zr8
zd+W2^Ow+x5>ic&qH<T?q{q=Lwahoy~=Fqm)Q8J(*@P(^qNB+GZ`&DrV^Xq-p(V0%C
zXRmNx+IW&tt*l}9DfjBXTaTRyOn)x(B2m(1tJ}}blhwriiu)wPCKd9W%UCtnX!)zA
zq)lw>HL^<!u4G<zpH#@Jm(@RU3vZLbBM;R_?A6*||LIqMV&pIV5p&^L(N!I0{TAk<
z4ZeFr`=%(*vv^Z{_s*>|!Pdo!{3SnhawT>@(u(i>@$Vkjbf5B_CA+%C-TwTUP=Dyq
z-nly)+^uZ&<_FH!SaiNW;`&S9sz(#&$QK3f4(4xJow#=8=gY}oswK1Q8UJMLKYmM6
zZ@N#pMGO~ciuL+g>#E>~Gxg@LetzV~TT#!r7c0+dncax^{m#Ya{o7hbZ)v7`n^pYQ
zhtFP^z2~`!V87g#9YxDdx8~~E+XbvNU)&Z|zi*w_iJm7HuV-s^{CM}yX#LE0n|A&8
zO9{7p()e#Sd*NvbBa@6Z$*HrqPWs(g{>@d{=T7mSO>r*w)`y0^yH#CMZ@yb?x^H=Q
zsHWqQW%si7e*CyBXX>&UCrdv+y5V-@T+E5jwv3&IadyVSYPWxd>{3_K*Iz&X?WbRk
zlbvg`oEvLf8~W!@Ppb`|s-M3;cKV-}!IhvTiq?7_#h;b8mKpcUeYrW2`^Wz0YMjbH
zrk_>ax2g8Y>ls-b`Slv7kDvGcygOZOBkzx&it}$@6L))a(&`5Px3C{4gxU7*wK;e{
zZpJbZmz)>tigwie+Q)H!=f)FTiy!|v%PP5U&-&^^w|`teFIxF~kwv$(&bAche=knf
z*v9;QVO&}Dw?kU|NM@(xo*BFq=NH$0y;)}6z13^#cYXf=KBak9kBV;_E8mxR_gVSh
zpP5YZmf9!PuP^y|UEKRm#(wj6R%)*t44=H^|N3e9^CdfKOS?L59SN?#X+OItT=j|h
zboI<m$uA*F`!+5<lOAXB^J*-^Q-*tg67;vvnfYYaPQ$pX?*h287BBc$7(DT~T0wI`
zxZQ%Arax{}y5D}~B3Sd{`OaJ4&-J?A+iY^s^|DOej{DD>?avmTPvuS4Da_e#wA}3C
zv8kJ5*2!E^|M^Njb!T<<%+FD>_x7rs>*apX9qnyXd_>-8;gh$oKiB+P#Fl5Tf7ICh
zkKo}||L+AK+{#l|?%LEp|9Q~{kxw7fxob*)AKCxg_nC~1q}{KQdGTMuK%)xpqk?Ah
zELbk|@d4xdd&M?A5AO1(|Lne+X}7_~@sQaIowl#vjb_~VH*3YmIBsRl_76MHs^-Pc
zTyoR&$4AEgemhgs_G|k>m?vM}lef*=Blpq4r@f2gJ^a6Yw6tF$az$&2`M0o{V&*&3
z-d()zbIS0?U1MRHl`SPA%~h&D_c<L{SahPFzhY0_Ht&T}8}|!*+I3Tp?Ze#I<z<u3
zeSCAaeNE>2zu)(Sif{UAf50fWMt{L-{r>5vH!V7<^z7@!*_$#mG7s{~Xi3~y$#T?d
z=DM7|wY$p<${*HP{oZwO%Zd=@81t~#tDjr^RX)OFbN={7*{-8X`@$7PTTIN%f+7m<
zO~{?4(X3zA_rtU9xvOMeq~)hAhtyBmMtdLsa$frM0W;g%Pd~HwKYz9G!Gn{!Vs)<#
zc7IZwe!igM#VoNZZN=?&^B&L3-D-a8bh^cz(oAJ;qp-d4ag(z*yk47YvP-QzU-xVH
zv#YDJ^P=abIo<*_qaw;njkD8tN&K(du+JA%MORN#tJrpW{rLv#YrFCzXFhr8w_i?x
zPv>)2_3q=mmf>4(#Ms*(dskC&M#rBaf0q2?H)6Bft^fRbBJ@6PQbOXfCA)<_9<CL&
z@>0~i{b15dzI4;;O}mcs|NJUa>$>>pZLzCN(~k4~vZ*|>Jf?TX>}@-${CcL%IM|pJ
zF@NIsiZzz!b{8f8T>F%B-@e5*DM?I~nPDb3*W_&4nIGSpWO`_U*^#fuS_}7WS!?p>
zP3EUdd$VRaS08#*|IO#$u>&dnS7$#ve)C53)1#hsoRa5Ljbntu)|Q|4{<^Acde7Mo
z=e|kX4pvWB`*G^qB}3sECr*C+lDXoUV5KT(5f0z9rsQ8fCr_-KFaEfA{kad%*f;<A
zb7AG|2q(4o&z5rjd%x53UPb*jyPb~Jcb>4X&wsX3*>3;m%boS&B9fr>7kjcj=iIz+
zQMAka>6Yr}k65msDJ=A<_){>|-OBb~O=y?7{fwjh%61iQlj7&TExP-6ul~!A>$A##
z^!}5)zx`Y2&*#3XcD0GK{PR{kl~VR~sk(km=>OK;O{rI|l|S{F&UQVa-0s2Y+o!&I
zTEzL?+o2Kme)sn)_V>?i+3TNFJ;9h+<H^pVDC^Tgk}{_kPV!1PBCN99cljj00L^Nd
zSFhBJoSvPVfAn*7{E_Xk8)8>EHY7?MN#dL8)mr=eo1moN%o66GG4ic7eI;tm8=qB4
zt*em^nEl}K{xTmM23gbCowc>|q@Nx4i+aCzqS_*f^KV~&j<LI(7`oax$$s~DzFE2D
zvFW-Df6ll{zT3BE;%<FutHbAQqrJa=<@YJs_-<BOUfiq)&z5#7_RD6k$j{vt+r8EJ
z?k|D6rE~4x*P5J;oo?2*<6URiJzjC%-~W^U-?eylfB*LFhw^p2F9;b|9Dg*iJ<7e=
zZBPC=wl%Lm?5IgwyD002PVU{QFJ?$?i0e}e-l(1&J!fNuVf5PXx!o&FkF0GAtUo&A
z&{W}<Kj&$^&)b?Qk(%)*Lalm@RP5q=t6#cA&Dhpg{Vl7x<KnKuH94DZMstY1={%t?
zdiK9<<*ju6`rdVosS-Mw8&<e&l`fgS<@T22yz?yneEOZFZxmWvTHU#xZ}m4hj%N$%
zHGVF8<X!jYJpa$*cYG>8FOUvu{$I93p-Dei`{UBbD_+@zZcArA_fp>}s_5|Vm%n~5
z-*9Hah3_ADo0o6CyQ9-2eOYwD>>!axeASz6-`w6fS7FViYnM)0rqAol3@zjpwr{Gi
z@pSQ67_cCUcSVTS7T@fr4-Ps@EOXR(7Nj+6%4t!lu>EBxw)q@e@i1<^c;Vr{d)Mq<
z_OpfW{Mo9++?~P_UDlV(*8a*f-@e|j@bDjr=ik1+`1Ss7>N}aliuZG+yKQbiE&lz=
zB>T7bTJw_YtDd#-Pp{p!`_!uUWre?AnV6sHzxZNS&Wmq9-@Ws)Ww|qzKSN6K#qNiV
zx9X&9_Pl+!Hnr?2Q(o-MHQ)7Xb{u|uE?%VlOxN$6@~NR~zqR~&FROD^Y75`|iCG8c
z)l3!bbzZLWeq~EdUGc=zX*+bXH+bHju>RVw*(IS&apu-#KASJLTi1RQaf&lNo9K7y
zh$(N?o{nByJA3PpqqALt-Dm#VrLEX)v~^!uoW#RfY|pn_imaMEdsejCvVgT`ul<?z
zQt$h_*)c1BrSxBoRSsd;A2Ka5L1Js#rK=r}XO*PraGriJM{IWf`>LP!Qv?JBE0_MB
ze%3Wj#phpA>8xur9MARNn8*FY-v8;(V|=yKx=)-w{cN6Ax=FOfG{?(lZp!TVk$a=R
zcIuLBVb!FTwxh=Fd>hqoyKlXGr1$8?4VtWiC)-#yr=Lv<%hta6&e@`^Gc#I6$kXTY
zk!`t$3>K_k-~R1eS=sx0&F_Cpv^iSMUH1IWYfqEyj1SlaXIHD47o}ZE+{qla^@h62
z1L+xp-_P|P<@BGYxc`pdvkftpg*nW6b02Op2%h~^y(1xC@ySQ$dlNh(o_w*Mdps+0
z@!8PLF}qGH+FL!iSUcz7`=f99GH+X`8Z(~yVWJc6;^N{G$0=qW6=SnF%p>g7_l<w$
z?R=tt3iL@YSG?PjJ2PaD&{406Y?oDYk98~!_Q}qEI7jvLjJsD{?5-d8H@EZePZsnx
zzi{b}*UAuu>93Q&zngnzwsm`a&MhCCnMcfgH=TTGvhS~d;pDAl#rChisK@R!&)dPi
zl~Xb=cIK07Q%`!f*GTWGeRnVF*}Ju>tyM-XhinBWu5^TKx7rgFv-`l(o%L)FgVy!$
zt^XT$Ym%Pvt@H^VM-CWtG%;LWf9b)IjNF_>8y7Za_VW7VXQ|wu{(R-x*(ajeRBxw5
z{pMLU&)vVA-?}_6{obCNZ|>GNY<e!3pL4k8xq9c)tb=j>s!!N=tHnPsSXi?3diRdn
z+D2=0v7I%`PV;_F((#DaIT7Jp^~v^*{pxd@?}pBM`z`YN!>iQ~;Jfnn%(2~b|M{(-
zdVQ%APMBQyv(NfLy`8VoR5dyOgqv(LQ@VU?9FuJv&urps)~XW;TvhR;D6(fkm!w<B
zpN@O;^nzCMOiLAX6-*SFn0eyD^{L1Ad^>FNjlH@~;NypX)35cHI8CiqQg7D!?&7kH
zEfl;N@PxLf_n8N?SU3JUAGgur)5G;f#;+Fd+&Obuo10Ldx3i631TV)T24k)btK@9i
z`7TucP-tD?rLPttb~*iwO1#dd+}C2y&dhQRFOqt?_5IrLH;i|7uXZYby41BqJ#QHg
zY^T&j&2_tlK5llLylvM>k*C`Cj!v@_4_^60KvH6vXUdEtlROu>Oj4Mq;I*`1)~pj-
zwhH>IZ|vb{?(kabqa&w&`NE05pVJ@4|D5gIw0C~#FMZ1!&76Fv;oGn(m)@Ai`$DsQ
zPhMVb$2wX6g!#ps(x1~e*MDb=i+!t9;LLMbB`u1@BErpMljV{u373x&H;dS(8Ypl$
zeLH6{`Od5O<qKCX-N$F&@#ACM`yEZT7dFIL_JUG!O4fx9F(5xwF7>iz%TBlc>S@N-
z631#?JtOky;VrW!lqiW=iZ1e+7@tyG^>;$-PNSRORF^!{JJ_e*{-@So^~uA(c9s8s
zBwMyt7u}k3HAi^!vHCe39dqoaGQ_<IglyAXpVKX^dv1Q(<A`I0y2tsI=2^w0R-0Kk
zMlVa;StKQ^!FI+gitC4qOWZOo$G3Z<K)LJ5)Vyl5gnYdO*Ue`ixphx5-Z^3Y1NWTs
zY&q{%K5A7jyB)F<u>+Jd^LRqutrWjqVH=-BU1@*!EyQUL!yki335F^8b~cKK^W7I0
z_=8LZ;gl|;<MpsjWE~xQWGLM}>IKPmAS0=;OI5jR(TkG&7LaLR>@yFPltB)6!Mll-
zx~{;vS9a7IGBy~GfIxfle{=c!!oX{l|BuHPC!|@NVNlZQ;Cz_0Xj(g87Q2sd_+`E&
zSKDU)KArpi)}7s^+1Zz)!}IU1G06^J9ea82+AT3tZ<%=OOy*m#G|4kSqtS7}A&xTz
zGd_R)oovy$;IQMtKQ{9GT@QDyd;fLsx}6J-@A+M`KVGp#;E~eOx3Bm(6k7zGz(kBs
z+^=nI^>y*iWv#nc?^dcyd*p2LCoh4apO5duPYKTNFohh7HD4}mH+^H7m;U*z;*oZ*
zHA+_DWjninvai+9_)}Q0!2kFP5!b+T#rt=e_A_OLhJS}x0J25A`JiU1(3{TBTD$KY
z{o=3n!))bp|KIVKir=M%?(opu6da+Ox@D2@4x<_7@7Nx#+u67yJ1_m>!gcQ^Kwa5!
zZd&ZaX$k&w!apv&Wybq+-;;T6+nH3i%JI#ZD{{59>izX9iHu7ICL!Mbe^uv}cjX;F
zGn?N({bL=wz_Bl(|I=QU{#y6$it2$g&u(rv&X1Sozuc2@@Z0nm4{!gE5rnzZ>dhpt
zO)_#fLf@oRPwbt)>h1~#(FY$jo`mf1uuMzOpUM4Q)ixlqMEmH<oYN&0`}=(oPMw&~
z6w1N^TMH1pAzi)tcvaZGUGuIqt$TO+=<|Scf?@l2Ze6__7T$}xV}+(xo9eaB@iLE}
zZoTokYB}55F72kRF27b=20c~0|LDkCjg(okGOLRW*R;z|XV3hwd&wjJi+4rp_H>`w
z<#lJp#?GF9mVb|3dz1S1lWET8R~|A3laIVu_bwpVio;+L|AzV1;oF(3|K>5;zIgh(
z$xU|Czq$NBe(hd-$FxwV_RwLyGoG!`KrOMhU%ui2kKBVLz7G#8NpIT~;LrQzLiUUs
z;q52S@1EpVGNEn0Pu4e?@_?sJMZ4Smz23-}Wq9;lNxahJrMfz=gL`emTlr^I`>(o8
zwkY(tUbcMl&F^m&&)&MaH=}pr%k#Adz7)SpSATqS_spF~c^rNm(Nu|PD0m-mPH^A9
zcN!0Pf6n`Jx94+x5G-i!UOI1f$2#-#xz*tjj~zc&H192FZWBzbb75bVIq&LM-U|k6
z_uE&7=JCy%8)9iY<89uye;Lm|DexY4GG%$aq{lzT;r{YZadCIQUo<a_j+y>#+2lx1
z@4MYgSMR<UC^~;r;&SsF&cergGL?4<FfYHp|1%@Q-s*1;x|`cqu3D$4@quY74;R!a
zFT(1=9?oOBvP)#&%7V{lHPsg^aB^*!Kg;o8RNMCpi|o7^=fyF9JSeq@`D)6PT|YM7
zYCZh+;chQ}*3dk+*6L=*y>6?1)C2`Pyt*cG@AnslnXE@6*6_WlQhvBsNy4Cjh10w*
z_0<i<7IRN$uKN`oAL~yu9rCDqYOk~Bmfu75{Lhc}mv1!R-4L|B??YT6kNo5lYwoKU
z{?XwUkJxwq!CwDMH-4Au-E`;H*lM*QySK&tOZtyePM_WCog4q2lRJ8&n}0*)>9Vr7
zzo+GQcWu1Va8JUmV!uUOzs%Vyx77^HZoT+zyYfWBMd!~qCOn_(e!k?Z@}7T>)_3GD
zl)h<guev_ZBkzxH=aKE7Zr{3RH%;!=xm&usJx-rldLoB)@5B!)EZX{K9$524^GN%a
z0;6!Y&qDJPHj94Qu9N!TnDd2y%ErpeVcY7<CggjciHNa!zcYW%p*6pk8|;a+o_6?l
z<j?J<ITj)D+ny_YJ#Q}X{rRz4pULyn|1Y|jKIh(~z1_UgK{qQkrtg`Y_C`;3*}aQA
za%Nqcm)|A*y0DqYKlk|O3cbqP_msB2Gx`$lpBS~~{qb$#wO8*QkzV(7mE-;gJ58l;
z%$jxVjJ5jQ|C704F<Dk;_HZ6kP3$|R<(FKiZqDOacglMGz0ieGJ$3uoix{IsA1nVc
zu-@`UyYy3VFZb@~hnI!<Hhsxz`+lLQa>6s4*pug*_a;~u%SXDsI+-S&wPuP~gr@EZ
z)#T^5bN-#Rva49Kbdrhj&7C__mgqk&&wp~s;`7YrONVrV%u^@sGVWa-W_z5O`Mgi^
zrugcH>VFr%?6AtyUdkG|L@Z_EuD7+5=2v#MCP#6#ym^uvee6wo`NZpM1b1Kc2`poC
zy(yXUy3OF5qWodoYQ6O~8+Rz)xO`k~<DZ$+nr&ku_iSH&;P+m&zRv9~<w^2q-$edo
z>CZo7ySHfFF|WXPj9o?i8{Xc1YxC#K=QBHZea+r1Z+qsTGwYroN2H9jXXO=|+<V+_
z9P#l~&@#7c@!@RUa<Rv@neiVt-TXZNbH$(DHECDt_;il$Oc8lLY2#yAvpbs`OzUNQ
zD>m=Xk*$}DPB{PQtZwPyWrmX~j<X!PT^0E@AbzX)=X0K4IQf(RTFY-JeJ=OT%V)wX
zTWBooV2S<ma9(udBPnzCGk&Mu$OVLCT)A+0!J}96td#!Vwx43=v;5KYiB?6rQk%5q
zgjk52dMj5p{f4GN)=r}k?-}pTDDGR-z}p?4!4t%!Bw2SifsN($#?Yw~rqA^*+bC*M
zc&9A;wWHU!*Zv>aH%nSu9ZG&IA;6{nx%i~<^|f-*g$=3oQ750~+a0};CK>W)Mxe{y
zY2NdseJ(mn*cr@PAt1~5+0f_`e?SQH6_E{zAGO@_<2;f!KlZkdJoeYSJn&WCpPBo@
zO*SefSVsB;wjRFyKmL~l%g(Nw-=?caM8>bZrrpS@Z*%O%v{jE8_?AwJil{dfo*`8G
zOz-XM#dF_;&ws!#{kqv-Ht?{Uaa96~RW;|$my#*-N*r9p)}NW{|KZp4iUqC3%mE+l
z>MPE49p!p)xTCjw!SrK}iE(<aUmwO6N_EHGIlAKct0w(imgM*QrWdr&+#6j!G4}CY
z-EYsTJv*{;tSsyvZLv#VSJz~3!dv+@@yIdP%ihUL4a~3qu1iv_zHIaEy3P4zmdb{v
zWm|&h9e<`%eJ?4x@NV}B&NDkU@`}!}TeWJP;`$9U9xqMnn?6_R{qgxytG>Mwzc{1v
zxyrog&5g&W{hj;TJ;pPj!Jhe-`$cP=5V2d(Dx|~vfUE4gtGg1<bF!;v-Ps`;z-YC$
zOS<~!Mg0Kh^qzU4s~>bF@EW?A-VfhpS#hfK_F|>`ua>Pi=Da5GaH;Lz3tk7Vzc}J}
zY13;a3ttod{hOv)o;`J0r&4my_ujtSi=y+7<(Vb-`y?DJ_BTvUs4YlR{rvyg=LfHt
z?{Ter^mfmVuW`rzEsJ#iSibSWNsl+-Y6fQCzFasu@4MJ{`wg?sNFA7Stomh{kh<B+
z__K_0bsIf1#AY4{?v{JpnAq#sx%2@;W_#k5$Y1wQoSG;8|Hx(et7p%q$sC&VT-?BR
z)7HOlQ{MP2=3tOrtgd!p{ZGBOZ<7z+)~VX8r*hfFsPtg>ni+SND1T$R_vi9q9lz~W
z=Rfwx`c$VmO<wTk%j-=Mim#>}kN8?5^zrNVoy!``pWB~$bbinEY|s1W=56BidCw_u
z_DXx2@zv4>SL@e@ZDluhZmxVaEiBLd-ff*Mp*OC+HC?9u{)*f7d7O<qv+Zg9qnG8}
z8y+j<U-pXIm#XW}ySCcj`emg}tYP%F6q69aWA|qs`QSGv=Y4%#%wchM{_Q(-ziryL
zocG}0r@hxd9&OD3@#sNfpWN@4J%8E1ygzOK|NF^vujfGHFlLL)nu_&JPyacl_;D=o
z4=-OnIcCbkxZdc8yS>cYPsi?fEq40D^+OJm`xF;OeR-aEmwRv2(Wwig7BO8(3EiQ&
zqUd3Xc1`%hMLUiiz97JB=*IhNv+t|&l?69e=2Qr}Z1{NQ%3%@fS(4A^%-88zS)U{I
zhEYQD-)vT$GxHAK@!#__@#gMJCw}{yY&_d1Tl;*9SoGE7eu=kEn5NV{V~~0BRGwK%
zdz;Sur6yr1nTskDPBO_!RQ)oYvB=%X^jA*p`uq3&zDfIk__2&B-(qRMTII>lHg_IH
z-1+6qw`s4QgtPq=&gAnxjJIzeKU02BeY2jb@!d}x-0J4p(eh_|EWd9`y)U)tZi451
z=UJsp!O_}Y-9AY#|EmbzFEPn*FfsmT-KqQXp4kTR0*(G%1?%4$ZCg@toAE`tzV^R#
zu8qF>q4FoMs80`=@|{7O-}*r8foZ<gGmT9S{?;qG_4&q;ha&fEV#Fobdeka|N^a}D
zl1aN~+39>=cImEV(^jvOcp%$!d$arMsTKc!A7^LGUwZ$deEp+t=KC8=O?ew`)YV#V
z&4)BhJGPy+&r$oQEpFD^cYRsA(d#Xer8aMF1Rq;#uaWTSdBUX5hvHAG=E<2Yn>HyX
z<a-cnEz{PXZq9_01@%e0T$z@t9a^FoxBO7R|HV?$*`G!7WM9=^Y^xQ&`*>3P)3oA!
zz3crgKWcDkiMp_5?Rag(tbF*K|Ay-!{Cj83uKI1LdaA*5xf^SUrESWbl1*zbG%n5C
zx8FNzeFoe0cE@)*VRl=4%=u^EzSmdC5`28i6s^{YGb~nZob@I`j9okG#@erKocTf@
zZe+_Y&$Zq0KjHD7ypP)_*=&(jjg*pAtABst=FQcwpLcRAe?0j-;>IIW(@o2l2kmEA
zUH61V?VDZk{IahXr=Ffy`?YgHUtqG^mY9j+rb`M1d43D-)6L0TzAN^)n$fPMnfDg8
z8SF?rv2m)`Yst;>zm82keeZAYdB2>bq|>5Bw=$Ob%H9%K8TBoF!oyY77bDLnGi$G$
zeQ)^+y#kZoxtAVQUlC;f<-YOL`FaI|1M}DKw?6f8Q?MQHMqVx+1&ssq=gzO^JOFBA
zoV<Vb#hr7UkSgt#J1bj%^OWRwm+SMkZ(hie#G@-;cJX3HMM{do>Gt2ntM|80IV_g<
z_fp^5)xTLAru{zF_VJ@c{VV%T&*WF8l}&4|@t<C{#(9@(-mC6KQv8vkdVW`S1TswZ
za?Nj^rC55kM0{7=y7suEbEm&Nxp~*gbp?Shza*4aRXlgMzUY|M)|T<IaNp!(@4W11
zvA>f)R9%1i5Z{gB?VEozhQvuuJJ6F^ZkYRLg0YxQMxcwyTHUnO@)GV-(xz`;bUM^2
z(6HdvpVBg}%lFeypX2$K_Iy(LrLLvNE*2#({~K!>9CBgDE$51wJ2Rb=YK2-3&N+0s
z{%)u^)60(eUv0FPZL<>F-Zyp2mA$10=k^5(3r9sPSva@0L`Hf2iifN#xzz=?e~>x8
zV{Jq<uV3jAz8CjTnb{s=SYYQ|ynWN{ofdr)!-M`G^7wP$+Bx=z%=L~to;7^03m5rt
z*i%B<^SN#R*RJx7iT-#0UUxCdjdIdHJk5HU-GkYm&)l!fJIi*!n&o>=pPcrijp_gV
zLVb11Rn<P6=-GYF`8>3T`gYN`<RX7{>$(+Be=JzgrnRvv*{m$1M5X;!WbD<H`fT0L
z``0KwZRxJDZjt!wA(xi&lfj-L$Ne<tU#4mIm#F>?(6!bQ;kYo#=F*W>yK2u}W%Fat
zzPxsgM#;p>Uz9g{9dG;XwA25+n(^sVkMG~|T;C`#xi3<=N5?W+a-Q4iCkq{Y!kELY
zUQ7-;cS%Wlrkw5Ks|`!1{j6Rc8U1LP)6%pvssD5&MUP}KKPcSrWp0t#7tSO*vuRIu
zo^U_AV~0Xm>}!9Y*fT|YR&?$BoqaR#-N9wo4c65&oL<kHFd_bLnRfB_+k0;Ry~4wF
z+3^3bgh@?%-s&5&Osdaj_{pyAVfW_HvogbH|8o|6dc3u|%0T;p%<~nmpZ_*oxaQmX
zhZB9QEp7kI%wGMpK8v@;#&$+w>Gl^D-!zlH?ef^SQ+@r>IrHbNxV_weYu=APOD6Ys
zzn!z9uzGSHZ_M@J(@XYQ{VH|b5bnRasZotLc+r<5Gq=1j)pAh0|0=C|;@o`gI~ID6
zo@`f6s{d=V{(m`BAn(ID&6k{aM_B$>TsQxdz-KeL1y@S9i8V0D?z*;3vbT5P^xIua
zmz~@;E9RPQmHA`&+Q#s*lnIdudA2vQ&!sNga?)$vL)+Us6&iQ9oIM>r@tQ!7<%St&
z)7Ra*J*QOv{oB>A8wyRfZ{6bIT>U#^Ym)7C+k9c$We?89yF4;k{`ICu#fwNSk={h#
zrVCnHv+peStCV}4vVXFZ+h1wR4}Qz|zrNk^EhFmS_dBzAYku6^7xq0@>doJm2U9q|
zLDJBRJR7ZJU#}-xWTs~yelBWmT~{DbHS^z@g*&VmbWa}c$=RXVkurC(XnaIu^xYKs
z?aenO`H~*>=E%ysY&v)J)w17nw(_?2Fi-un%|Y?yGPx-}+=-qR2^T)z%2k{6rNHL+
zp(pEQF4%YQCimLp6>U!PXZ`H|%OWdqtx^d0mG|$qe6Cp4Dk{d?-*2|@VV0~&=;SYv
zyvJwDO#56by4r?qTEFo|Ge6&|ZLRm^%Bsv~tyQUwIm>sn|M+^&q@PcvJ{7O+`MqTw
zZ@TVh`?ZPeR@3gMBpvo(e*EWZ%MbJSbGl}n{<Bm6O7+>(`JB%lA5q9N{ZY{Ot4?lf
z!F5J)!CKxkuks&kFRYWudYhxOj=wo(&;0jCo~?hrukN{i)9Y<htL0ettt==!@@Ubq
zr?I-ui^B{pBE08#Iwz>FNhmz@?BVChetGW}FK%D=_wCP>i9S2zo13=EtScy7bE^0F
z;tl)H91L7N>!4!Y5vkpJEpMdU+WuE*?iSu$QT({dEa$Ys`hWe?ExXTZ%cnk9=il_K
zbtX@~u6$Pb*6CAiPtQ+?tg1aZW8#mK-zV7=swn?*P58vVVe|8yl4pJ&IeuV$>=_YL
z>2pzE-WiGYMjr2)9nJq(r#i@U^=|)VhMg)UMP=6_*m6_8)bblWoTFNAl@vX<+pm40
zu=vCeuGZ||FKM1vZZPfLdYkK2+zXEx(>$V=y~^%q{JXf~)4>$6Jzu2apUY%!ty;fo
z*|vpA?_)&kpmp*(!K#__3fb2#`Sak(#MOTm+&b1aIcrkes|7!2RaMnb>&f?7qNdFk
zR{u(6b4=rbV=aky5`?|ks=TkcU9pPz?K-*k+^x3R%}eEY4mO_Ib*A6$z#0i%?|ntV
z3oj-dICv|EU34$gO#`h9(U}sQFY}{4e;zzIDQ<0z!WWH@kewEN?ae>0uF-3EWai}w
zZ`R%4wl&Ojvyk(Q+u^Jd9V^R>ly0BPi)Q$KHT(yQR77Fzg6)^|gPi~QKh^np(Cu7k
zl-H*0lOHl7?d)21sx>gURh;Shxvz~^l<~~haE)@NDqiJ9e<atnFLC@@n|&)#w6^M1
zhdIO5tYa>cd!9Qde&2a6(7a~#A}P7~QpfhpD}CR7cK(uPv3vGe$IE8gv#sv!O*MES
z-qz-|@AJajt<`$`Q?Bg#x#`SH-meVyQ@i5+WvzSp(tShxab=^;v5Ie7=9YKMRM>E>
zJX*Hw>-Xok=H24kD!(eYFj(K7tJy@x$a-aoR*03&lKESL1C}Pb@armCnNGhlOL}j+
zLGroJXMWTgO5VQr?5g>;$$@Wpuj;g4Gx)xBVvRvMhweYm73*(hz0_Q55FGV?@3D@R
zb`vzclby33*JOR%U)kx~f5bHVzTbvrQ~zZ(bL1Jd&sn->)l}Kq1)R!>=Ymz_;*RZ^
zn|9#Lw)FUfoIgR!wpqB(o;g=ub_Mr_9u<?h;Tw#9Wtdd8&)>!P=8H_3wsGFR121Eu
zTU!#ZFq<-@Mx1(k;nQWNYij3N9JfS-+?e=WP~+}Qr^Am$r+Iw(Q5IIVEij<ryZy2B
z+2!l~&&xHKKM{r`tCC<V+mnJ}lRm$F691I_r&*bF$(i@OH_sljjds=5=DW6O>lxop
zXU6^}UeRr7j8_+2IL3cg(aK;!Lh;W_ZEcQ<S~<t(yjc-YapXzbcTRINd;6q6jLT=g
z(b^CiCcJT7=1zr{D|1q3EIRG@Y1%J-KP@+YlZ_9fY}rJN{CBPluvv4ja?;i1@ocJQ
zE9Cd3b6hatIq3TK_yU0qf1jw`f2y`W@5jd(3yw9nf4`RS<J>{V%}g8F<m98ge_g-Y
zb0a0WXiekJa5kfJFR~>bt38i-zT)?WJPzZ6`15LSrM{ebwLUF*U$1Og{V|!%liyu5
zFkg4IuygLBXx`In3$$u#?i@^4mulY2V9%TU`^Ao({p$`NoX7NM`Gs@w`_?_0>tsD|
z*VMArv0Se|XGQ!e6|MHO_*hcl+f&DwRd+M|ys7QhADJO58XifRuT=HB<UM!#vw+xI
zmBq_#kNv7&pPV`Q)Ye7kzfHJ%tKh^W<tJMw1xM^VueyHUCVy$iklKi_Dc*6lmD53E
zDW?427|zVm$zGeK-?QSxv5*xSzYWqO{U7P{sM!4E%6=z#_RI14NmYMCs-KyN{VlCN
zojcDX`FG>4x>i+#ue+`(Ei3yLczynjj$h(@M*OlLpRQQ9^!@n<D}IUdZQ9(wbys%g
zH$ku0^Es1Erhm7J-u<>hE_UaholhN{zb3qSqH=88mKi51KYT5BXWa3si;>s<_lM23
zYwDjfuUfS?`O@p={f|?Z>-j8)R8#_Q7bJdqYQ^)^%xu=&C4U|$Ju|9zGuO{5yg74z
zR^mTS(UaHNCf8N-Us`|d;-gv8Yem=3*~}~Y*lpGf=@$uQr#$~$pFOiQ==2`x9+j7j
zA~_9;MiZL1x6b=EweD;rm+O`~ot-z2T$^Z>6vFjS?d?nLr>jiP_;Tc4OEcKqH0#Y`
zhuq8Jxu*iJ^vDUios(6Y_C0)J@s?R1|7)g~&K7(0Wg?rO{M*%OcN}b+@9>$)6mKxS
z&$_T`QuVz1TI=%!-$l;lV)x(qW5Wr*m1le1135kg8|(NSpF90!2T#D_mj`M$R4VMf
za&j{J>Kip@+;$#rzU0(Ue(2f5t;(i<z809q&o6rT!r|2O<!y~>y4zh}N(#JbcU*n!
z<+lm>r61?Z=hmbbChu2q-j}iL{@s*`9ND5%*S^g@|7fqR?%J%ZwCCG;jw#OC=qzzD
z#jy9-!r4|mx_>8X-#fi+PMGzH4-<X0w)5>jKkdyo9=5B3qQTQ&wDvqZslHqw^t!nB
zudHYJIu?&R4%x1hSz{ggqgPns?yLK!%Dx3kAHVThO8kq)t)F7IPu1+0^4Y0>-^oAa
z-=ea$f4fdLP}}t|H11WIQC8HAv!Ms3<+e-TtG;}7vE)PV*dpn9?!TvN=A2w@pT}|e
zeb48IEOQ@Mto;5x;XrEb&kvhx?|i=zUy*l~?b`m&jNi}3UJ>{dTY9viO(6g@tK!6Q
z(N<E=*x=^*v)7zMa}2UQcHMb@W^UG;lrU$X{|wLEUUwK~9lUu=;NWz#tT{`<vm=dE
zd;U}(TKPAWf11nn+8LKJBn4T_x}~E#`X1U!?`M-dFQmTmD$o1({+B}4ro}HyDqq$r
z`jqRQmNTzn*KC>gXIs9twf_{n^u&11*+)vt^SW$f{4V)79$ca5wmLC@-}K53iyH<V
zzKWZ#^!hGU+~=NLAtLnZ{GAqqP5FifCtj*NoiW*X<*V5lLTbP2`oz9|N)OX`V;AJ>
zCE3&YHT}ZP{udkc_`erv#qNnuQC@ziH99bWar*2nKAo40Ra`DV<P*DI74e}|bp5ky
zK{1bStK{8}j9GJH<+Gdl*#_2DVaLQ*gc|NzKCN@2Rn-gA6(I@VHDol3H!MDJj`Q|;
zgNN1=kDc1Tbi?umOAj3L`}S|muB!=+ae`m6O<Oij+Eyj`nlIY_cjU9|?#i<G+NX2-
z9tx|QoU6X3y-3mJ@Z8huY+09^N0v3Deh!~lIZa3B&oi~+yF0lnQvW60J7f1Z>P_m-
zCHp=yt$*`b_lI$BWy{jbubNG@CI3ep)4p$hckzr^>&>qYt@IF5@5?F8$Z-E<QFCi9
z&-(lubB-;tUz_A#$bCIQSMBlK`b}#R>vsAr>s45FlH>AT>uu&?F=oQ`=|YQNYd`4<
zuK1&`Ij3ypx1^x(GtZyC`IW9TX=S;o<fS{B=NHfXZno5n=eKF^&hE^&(QZ3q`~Lk9
zX6V=bylzhQo;M=lv4#yZ%l(`h+a~C*&)fgY0G5Dwf4=nW3z}GY#&MbF@mSr^(x2Hc
z7B@~>Bo!vJR`qFt>dCcy##ycWxi_?8pIF$+{JD7SH|y3lXICmdRbO7duWV~yq;tua
zm76C1nb^A3J=^o-+N781qH8Q3dWS7i%nT9uo*Aq2bImLneu-b~A3O}+{8%;TzT7HB
z)%9&#<HJAQ-n(2sr19{%H~qS6&aF&(sU8*<et5=dULL2TJ1XjrWyYNOzoTjC&8utv
zt!j$2%=`6)Hz7<TVfE9Gu~T)<u2WpPU>fi7m?;`szh*?O`WGlDyo7D`Tv7H_k+Vac
z+s?KZ&zUNJvas%kpT&)}-yZKfeg1z>MXcHLxWwM}Ib7;#yPFm@MDYr;@rJWxzkGZD
z<5Bgx6-ASy-Y6`-(zsjp=N$LO_u8>Gr3X&+?k(x*zjE>V{=b3A8|HVN47B1}b>~UQ
zjui!3S9aLE(JQ=Q9^kvj)7#&9divVAhXc>t>s?*>v{&4~^_XErLj9scJuhOyx{CNW
zneVQ<8X<c)f9{1}O)OQiGmIm?9eBG(M)vrFc>zC@^=_)q=2`jHyw(2R#fV<FCmCwT
z)+>JAz+5n4<EKQmx6(&fc-V>+GtT_INn_PTL1}5vxVXa8&v|DanDhVExqDC9_bl{J
zl<H1j_Ax2NB+xNoy}{)2OI$BJBEEF=n;$*#;=cZa##;W3>ljv?eDw6_|CB4c?pGe(
z))c#EdThO~dExC1#U|J9*}47i+W#+H>ieIw(ixF_`_I0gbWgqPg+NmEs{`*AZ22Kk
z$$B*6j=<N~8*QFG7TxA6v3PxVv-3`d8{gMI>su1r(_xsTt-tU@iF*G2Pujm2UDP%{
z_?~$uxP0x>`Fjq?zI@%;+r4c1F|WitJy+jVKNr25ad^(^*)EIcezbX(o9^tqK<3yH
z>%6Q=yCa{M*ln?{db7MOApgdKc!q-TB&OBoOE!G|tS|k|KCbN5n$Mp(AtN!nCe13G
z{`$q|=D8jJ+Kj_bvVJh$kTRwD53|{``ezDCXAVsI=yvb_2Hwwy=5OY0<!YWLSjQK%
zZ>8GOlM4-}&$h6*Hs6l9`DWwPpOI#1^<msuqK39#&wT%GxRsM9;i!l8?)@v$u9;h1
zYJVB|>2$)M?_rz2No!}{6%bmG_(_y)7SD;p7jDn5bW``<UliChtMH>*81LHE1w6b-
zuURT;>UCG|+Z4R;qCuL2fb=@v4|=~A1`59_+Eli`w?@2$C2NMwnIl~irQC<BLwn?;
zj@;R#6_y@4G4I00J@pKW&zJTUzYt!Ve#cJz<wUl3TwmUXl^$W`|Gp}gOEOjOR90*Q
z*H*3)DbwrUzAVmnIDSaim9gDDF}Sh!%A|9VoLjH0oe-6jex8&4@-OKfs)zVvt;3H5
zFd8~a{bFBra#g|S*rnXlnOsBj>Q<F~=AJw)(e}@amez*dyxxU+l1F#y=3Eps{dity
zzxAfp+_+^QH%G3hoV|RzXtL%BrNs+w@+B^g{P0J)H#C;PWwOolxO=nzTHQ2d2>W!Y
zeB$*DvF>kVxhrjVHn6{sbuQCBI%nf|ormwA`hRHufBMj)b^E6=ZHm5k*PPLL#^wig
zm*nc^+F0Kxj(`4gy8EYhb0&(^Zdtuhe`B(+<h#T9Y1O|ae!qSmc{nNUzjAYs^@DAb
z$~6|Bw9Q(QpZl)OPr&-E<D_z%gKfJwncu1xpR|bFUYN1D_I>0bspCm$>(6~Sw>sT?
za`}xrYtCCGE&n&O-p+E@)dy>9&o7?aqpR6_-s{a;mH6t1VoH`(Yd9YC1gwt>NMP{)
zm&a!Oe$J6!<#q|rpT~dtTJC=ShCj5zElp}`3%vcLxbNX60WZ0XUF~g=``?^h({^1e
z=}{BItUbG7YXLm_x$V}@{rxWg4?~WGfY)0FKXGBNN}tKo)3X<!IrJpNy7}0b1%Jfr
zT2?SF@9wSkn;7%v!Gh!S3$siQv$K8v=McXx=xlB0-ks}j`v2zPS-Rxq$40hiz2*k*
zWpeLU)k<t$mtUFf;Uci!mp7|&@%(v}lfUS0Uw_T;{knV0^NoLP{$o}@ZTnLh-L02h
zTqib{xE_sV_T$$*Kb>3bouy5|iaV}>Q@PXc#*{^g#)vL^y2(NJ7oXVL(A^L0Tg~=a
zyj*bU=0Q=zs0SZ3a?Y%O`uH)QP}OUXo+}scIazP@0*(FanP*uf6&4?PbZD`L%+?*6
z>k5l^271?YY<qp&XM6a5%|BlyZD)T^nJ{y%_dQSTX;SPNB{QnrjV<a}gqNuq*7`h&
zY@ZjURid)z3)}m+?enJJ|2t*xeevK|4d5AX>(=}C?OT6{)p>t$u0Ou4)Ns$ATVdPY
zo?p7+P~$xbw~#j+Ld(xS`7XTp;%+4g(VcB?!on9B82wrpezW$oo>`7p>hpy<pSsrG
zxLa|%OYYE$=w%-c{MgoN^J}4Tq+zoD_cdpa@;%9|nszkY-uL`m)_bxh7ghYel<IB&
z_U+<{5ApWr-))r4xwmO<?C(uKww>rX%J-sl#vvt18T+O{b2X#fKb3RB^-@f@|Nqq5
zn0<Zo)5|)a&V+GrDBCE_dbpkE>6ib1u6+G@%;f#ncc+zh-{_gU>mQ%|(J9t-M{~p5
z=l=95{Zgs(drGPG>-L?mB<h}vJko#gUyPIML;A<X`=7Q=44+rJ-|k@|ui|{2Rf>?t
zzJ>a1Cr&QGFmcPL0!>bxH_u%&YPEY<*RvzTxpUp33GpGP^EOZJZI``K#bU7if9uXp
zE!WJ<%+7O<gBEPK<@-!iUC+FsDQxkg{Dx@{7e<xHuHji#q$RVe;A2>0?<wvrPOV-`
z7v(q1ig*28-0Io8PkD7M!}2#=GoSjM%AL1M@d($!DqiKP49?3dFKpQy^dTwa$1&%g
z|IyRFAKh^LN0M*Q<0N)S@0CN*MLc+|b>k<8_v_xdsTXYiJ)!mIPCuj7d$k{bGt82_
zet!N>WhRL$hpgnE&pm$dQu(RKBo3AT*A(Wr9VnBR3o4sFF^0o%FR#x2dnZzoe}A5{
z%_jZ%)_+eb*0!Gs_FEOpCHMZ2#+NVG4V13%Po7`yk>~!#-1=tG8Nb4{v-xy#Zl`rE
z3J7_dmRcq{oi%fZ{;dO|2jA|WYWqd&*tc(wTYMjCZx)^%yztVyXP1TL4t>p9$9w%@
zy<EFHY}JRrqoBo!cQyoEI&b>?cWX)C!*zFO&stKrch;I+)eq-PFIa!*;lqxrhx<eI
zY`V(V?M#?E%VKid3y1ez8{a++Qn>yo?YMs#-`uQB$;aHsmmc5`Ge5m)mE>jb<1HMr
zhK_H&ADU>1PW-2}?90{3!7o9xpx53$Y&m<lPf41&d25W^62%A4O%&%t=j1pPTV71?
z<NbbzOGdAJV*JxXvF1);tUO#FA9p42%F68Ry1Md1zw*|U&>aP_CxZ4C7ifNX$;mFc
z)X%Lo`)6rS{cdNAUM{xwj84-mi-fYkpvP;y&a5n$lwMjKx<dY<qtS<0NO=ZIVI@I3
zo-_7^R$62gCYEYyaAjP%SNZahkCao1Ecar+TQ)Tzj}+c6X@2#2Lxfv;VU>uT^}{E-
zz4#w1mGrz`th_<CwMOee{NhJ#adlI!WS!W$Lv!=a!d;@@X3NT~4iiqlbm@3}@0E|x
z+PX!+DQ1_I$U9AkrOt`*k;yNX1vyTbKP$WHm*A?`5nrB!Jm{Y6XZGZJ(Cb(G7RD7X
zH8Y?6Df?z%%JYR5^=&N~w_~?TJY27KDBibj>a6wtmWA2@X`chqiUlNBB)Y5+o9m{E
z6oN-oSKNIVH#J!C_@hTIYuT4ae+-+Q85$$FM$yQjc^&iWR14b=KRwxZd%gJ+QJWZc
zz*c^ZAHVkI)jwN3Pe0jb)%HE(e~_`Eqg0jj6_JqLmPv(=ziCVf+5Pjxvt|1OPb&of
zW_AGuA0!|P3xhPfE-jm6v7DW2RcuZ8!(*}KE9OVJrZmjbcK&N6Vz5)>$HrS{rR{H6
zBo%Jmzc9~ZX;b#0KRZ_MZ#==rw|s4xri@N`;i_xR(SZRg5BM)mOX1hu%ag_V6H){S
zICXq>+4_#<6!YHQyQCkbuhTsrIa}*{SJs^;QFlTtMQysaN3HMQKg&_EjwLg+WI;r~
z{A$}Atql{C3m+E5+c+20F4g#uI&<<HF7fczpC4CeFe}!*-JRGNC7N9ID{))(k6%+J
zYfW#u{Py8$BXvb9(eSokf|m{|UW8@r7K`ATj<z>N;vW~z-Q~7YfOpgB*dy&f_H{J-
zPpuZ^YrV5eafh6%<Km#iD=Q@uE|u-zdb{K7;desp^77>g|0Ub1)*Aj=xkLBVffpb8
zSPQudj=WlS;MJmQyk2*I3nyPG*cs^UU@i6qp7>o(gBB%jdCWJhhhtKMf61;lMdF|N
z!wQ4t?f+R=Tv(o5!}Z-xW7FeRw|!R!8Ctk_rz~L0We>95&Av@;^T(H->Y?Yl%j5R;
z1u&}3o%QlBugaHi+2tOq82Gjy`Yx7#V)>P=Yp))7vaikW^?JCS502)qj{ID!dsFn?
zx_4baW_I#l{P4h`etxs<2g5tJ<1&~R_&2m^H*IApRk*skQ1gv;@h8WPb05v}HolVW
z$I8QV?bB%wS>?mG<UcXa*;H*&amsb=>FWID-zFD8+YX?`m(Ncv{}s5^tF_5VzP_}*
zY43a8ys+AE-<^*yN!GpQX8p15($Vs%dW)D$Y~<t}{F`^h=6=1fn)Ax44S)AsQ-&{8
zY!T4?P*||z(!#7w?{)IZL~j0AcBs|6>+88yD~_GLJTtV1>-*zt`>LvbZ?}CCyfv3G
z1u30Q{G@p&*!1`I^=Haj*V^Cu`DTgi$=NmGkHc=%-f_HD$bNY-@0~mD?g`OaYM~1z
z9W8<_7UWQ@`&P61PViRU8=Eae@BO`aEIdv8DWB%mY<=?$D-XEc;$(lU{MD!D!p|>u
zD*{SaTnd6@43O0^GBvY{`QIOiiC0>@B}o0f$PJCn-Yc$4iY!=i?eOf%t#52!KH1Oq
zV#TVBAG-^ZS07)oqzEa@CO!DvlD99-^?XX$$AA8QJhBlL&T}#=`0dqNcK-bO%l~J+
z^riDV_ur`nSp~MVW4`_UXLqulC1>1ab@#W_Tv1}Ut6zSj8?Rn}lh4lUWm!|ZZYY>e
z&wL|u=H%0r=Zgz>+VZ@XuDbR(gtv5B(RCy*pS!hfft&QHgE4un=j)3;EOk42qpqsz
z)vb%Wy(1>f@4C<XA-(q2b({HhEmG~Pc?0KiP4$}S>I2KO9Ex?%Zi&3xI+f|hT`p_x
zoG&~<#w$RJI#(2&EU8&*^mC=8;F^Lp58RinwQ}0GbJf{gleUdU7U5t|fQU!W&n&n6
z9-<Z6-n?j&7XSRe8PE4Ru}^wC*K>7K_92ryqG5*@^~!HdaZlUbWcy)XeAX?4g^My~
zZteQ`-|FCu=Dv0BI?rzkKmXuWtEBi_OXKi+XTN&$mv}|Pvh|Ur2euciKN;>mHN3jw
zcgNhlOZ7}<^|iN&TTk^mT59`O;*jRHcV6j-?gwkGTJbJnb*zot_7A%6BukkKuV1OX
zYtZ@neeIOW*_$?$<euMkZ=txv_tU9w3Qg}Pq<wx<c;-&ZzJl7qr<*=K6hC3HSby${
zH1W;(8J~1wikS<|&nSPbnHLQ5B*-y4T7KB*Y&TZ6a1A`6T|P1VT~bO*UtMEX)0J2`
z&)9${(JzK8cAR_iD1N?7LUmZ+^4R@dc?K%s_Oq5oPcMjOxRHJ4N$pRw?s;>MZx;NY
z_R{y)y0^1GSWR=h)o<{sX5QjOJ(m`6uDM|~J8;%7`Bxm@U+VY6^ZmJ_#}jv!<n6kC
zq)~`n{$IxP(_Z{_v%D8~>Bp>B+qk^_FgxF;*`_OVULQ%|-;*C&E-@|p!t0CdFATr-
zr2Kd?)2DlL(UucEe<!=f)K_orG7Q(#en0m}^X)b1TZ;Fb@cOiSY0JOYEdTPS89i$D
z3essfe(=&-^^X6GX7$F;=&b+C@^Ah0qSyDLK1m;|t3GjN-IHtOulnluPBD}ZpO~0k
z#I(G*H-1jikz>L?{=a4sjP~33Ww{tzzqRa|8)Zyaj}=`D+w!F^@?=fAt@eEn<@L+%
zZa@3_vTMx$8&%u(TJ>8myMJ~^bbk7!<o_xDk(cM5N!jy@WwKh2vfjh8cRxN??OSVG
z`*hZxT>TFTpYF!YEns$5Kl9+=Rmmw#HUGto|5w}IRNwx2_Yu#Szo*r2)Euhrd3quG
z%-l+AXZPO6ua>w+ZrLnREq$(1YO|zw1k1+6#Fp=C{u|Bvdg<%C<UKooC?4xwZGHTY
z$fnu%&I?QK`ShH9huuTAHnltFWIx|m+PtXn^Ssu{GqzZL|ML68E1q@p=0B@VynC*B
zyMD6&Jv}ko0&C~|83#}0EU@TJ?LYV6mGqvseboh$v$><*Ew;68t=ybm@OMWckMEAT
zp7mATXVm)h9;&aNVfi=j*j=m6g<nOxIsG^6<T>E?&HD6=nI<Qz`<L4v+%%Wf_uWQV
z)IZ$KZKtzc)vVp=9Vh$$bDIMr9v}Q`toxAr`f5qB7b*+Bu*=2mo-7;L8j*9(&%WR5
z>W{0j5u1W<hRPhj@mlF(zh}xC?cOWSzK?p6C6~;VaeCBywn-lA^y|Axm{Yjx_OI9C
zk!$VnsDJ-4JZt5TjkBIKe|=sy`BNn8$(?#mzgai^ndOkyn%!Y&`upmK9XEC?pY-!-
z)U+P{v@j2D^YZ&yY5z-k*Z;|t+x&lO^|Nngo0jiCJMF;CoLhhL%l@a!`hWX3<@o<e
zPKkHF9n$UodDu+$<m!KiA6_w!G~CuwdfU%_{mT0ulb-KABracnPJF%E!QI-GKLrdv
zgs+L8<`S}A^N;aY=5O^sY%W(bAH6-(TEF*0<oXT&KlA^1@bX}a{(oWp^xt*oE>D@Q
zsr$2Ir}4XIzoOqi>$`b6V*CF$&i&r@eu~8}lK0HsHT%w5Zi%V;yOx`aRhaK8iu`#a
zsjThHldo^*Z~kw8-q`!Q9sj?bANT!O@<`#l-rc^J`<~z2_*FISXynarkBq*#oqyQe
zZ=e4ETX@9R*PJ~a89xhZJ?h==Zf_~y{{GpA`e~CQzFBpfUH$seh3oVGSw~l>=5P4@
zm;c6Ijm8gko@@MT=e@LDSn@ncuI8-Ip(gX2|9`UY`TRqmDC}S7(U<9Lw?Rb@C^a0}
z`9tPiEQcvytADplj(*957k(#0)Ms2c&L3JRciQazv-R?I#c@u1t5$J;>zmtZ+q^t~
z{*kMX)e1`w@y7g(kZOLW`}ARigME{x`Ag5cGp`1$o$}pN%Js0&Oo>ZtWc!_V3SY>U
z5Pa%?NkRGaaVg2?*Hh*@Fl(>lPbr#W|2;PQ$;Skb{|DXp7_``UIUjC)-84h=wg085
zjViMj9C`D^qG9W_tH(ut9g(Q~e@sD6Qs~H}mV|fNvkX^>meofdT%#nqIgckX?)|j-
z+&7}v+ALYU&(1X{k2|0->3yFw{{r6RH*2aTYb>V5wlW-jbE|O1jVJCi3@>!V<*SrE
zQvOr-<Yj2d!^1)n((-L_+{<oosvMjC(YfxmV$i*6&6NJi36|!ri>|-o++U@(d7bg*
zw~KY=pRb%{xViFgtLmDnhobjtOF8TJoI5qUSU&aX!_8M#9##E#Wp3e&Ee_`=s{A+V
z+w(^GUiwo9u4pZxACKjQJ4~DGRQgu-+j|_kxcz3qjqB3fJ5G1(DrPLs>s%cF-r)Vt
zn1t&uF1~im?@{@;Y~qn^W=%FlD#6EHgyk4ocph$>t)!u4!PfBi0^`13zm!uB?+-qF
zEG!v1@#sRKhNQB*lL}gueEdAz&g-vUe!pv`&JOdAxzU$W{JdaogWPAg&xEhqCGvqO
z)h*PFfA;?MOXD}R{W~a?^vASfO85FX{_6t;#W}VvJziP&xx6MisPf>syH7vPt5fk`
z7k$8`euL#15m~RNN0;_*%DAVkBa@u+<;d&{=Wn~V)v6?aWnEGic4$SlTcXusS>}HJ
zwW@z#XSwBUGPJyQ;Ep!4WO~jXC+CK?8Nc@UzJ<-JvNmtYGupH&qV9@kT5o$)zf-F)
zM{`tzm-$Vuo)>EmUpTciL?rCv?I3f-i)z!3XGGoP{&L+nG3t)vwka+Kxt}JK-P@sd
zNU0;MYS)AeJ$_Ba^%5NxZgCqY{@8Is&03<f>m4WW&P7w-<i4(~Jns1E)L!j>QC<lL
zde^S~m#zN0oyp6-cFMxre)p4R<*-h_+Foq7m{++jBH}Nr;kWDD1u}bQyS`5~On-4g
zjNkBUx5A#2+0B0ZdDdkQQXCnlofeY3V^YHXgSGkh)QN>xxSY@1J=xx<)_0Nj@29xq
zSN_+v?De-jxZ{hU&+KU~pRP>&lC64Yvy4~b(_<k<^=m%0^@$$6(SAL*q*>OlexAvK
z>kR9JinwOqckbxzZvM`7qWECJ%>Dpq3&BPD#}~t(UakPWiiD7em&-O>@-162ZROrA
zJM<RS=-*k8Hf7-~%h`6zmu&jRG(Ywwn{!bqOM9ze9t+3f`27}5^><F&&b~CmIE`zW
zVy6#pMN{nWH$8iGdgmTho^iFtLysZLt)D|#ec80F_pfaDm0|k$v+SB#mzv#QO?FtS
zw_<hu#gtup9$QZJ`FH8$f_RCW1&jM6=5{}|){eZ}rhQWLv%$LdS$B`GiVRwm?&+e<
zx?XW{<c^2TV)ND-_VV4)ZO<+<zhH8v*m~C4!)fisYm8Pe-`I6-Q?cat{ap1m4^_i>
zO_<W|&9R*uo1WivBYyqkX7@+u?mReU@!ayfuYb;d1D&1AH!$m_rO(>D<$2!Wm9sX?
zFPtM6`}wkqf8xvAoHkSTb(c!de|oOBIdVsqVzBb;x8XAm$;){wzB;LzGfSdZ?nL!l
z#&;)HXII|va9iW^^z32b8OB#U60@|bt9z5eSRAqst^$>Upl0huyM6jAF1Gqj-Cd!5
z{#<yPxZhIgH7vKerh2)SENElY;<jY}R{Z}~|89jFpT9k>IXCe}p45Rr@rcaFJ929z
zs=vvoyx+{zwNB3aP-NFSC#SzNXA8J}(`93`oV!FOTjpBM<{c+i*1s&8RL8~R#%mbW
z+N>TEvf|GSQ=^89iBZ2KM6_l-(^ljCsCB~f<pH<TZTy_i9(%gUah7a;#I3#CdebMz
z^&Y=0i%x20efvBsrl`(D=<0e;)0sadTtj`oX`WQwZPawb!{PS)8~4KMG%})$(wDDT
z^6~5T_DvW1XCCTlEH%HDx@^Uco0b0DQeTgJ>tCXweR}r`w_>|FpYObRB05DtPVi#U
zhH}2YNsA4iKL3<^`TK%r9QVb(sgyN*xB6-&`|a|&)3@F4-!oJGdrW0x!PO`+z8j}+
z$+D)$9sJI2AyFoL^6}!=>kj%Q7EZ1fn0ch>KfAQt+=DxoNd9@am}6d)+2jh{1-;1u
zJyYM@xqQE4&z+bze;0L5T?N}GA&~pzanq{Uc+O`9nonlM=KMQ&&U3bOy7{U{!HkVj
zqSt56c_L$T;8FeZjh}BT$-EN_i`nb&_a)!Md1v#E$0Z-nGoAeXrG4eMyGf7oWv&`L
zG5R*0vqk>Kxl{h$5~llF6?Zahi;}w^dh*g6sUWVbn+0cFI~OhLU+LL78`~6|YmaBI
zW8tQcv$M*cgm3;bIcuBQ+;<mJ9_-^d@&DkdwecYvtyXva%zUczcjZS$;|zwqjZd#j
zcWk`%<L$kuSvu!#neA1dU~}!vtycXFKLZSxiiUZ8Hj4N@ed?PxGhK=<Ph9nlc}?uz
zZX4}@iKl04-&f0zP!j&d=wg)kDPUi1vgqvn>!po;pUjHO+oa(flEO0Wuw=><M$@Bj
zejb<FW_tGFAtlcBr<C4K5REB&qt~%tw^Q)``sW|78=Y9aAz4#f?f2xjZ!|x=opbi-
z+nVmPFL#QB-Pjo2ee%YZ8L7X289zQ(#uqI&^GMIV%soGnqVCpeCfxpHy2SPV$uExg
zV%d0lmX+L}*LF2q_h$a)Z*#gsZ=C#>AwIJ;>`lX87rp!Q8a`|=7EZ5y&vD3KPDOY5
zJGq)Iv%+U>dw(kFvl#p3dC|vrzm9wORh8dpYhq2l#P+*$9WJ&_U1Obc?A@l|9rd=|
z_t!nzwp%FbpDZlXDV{sD+)6O?uKjK+9j1UgTq}>uu>4;AQg+qTsKsncxt~8a&IpMS
zeUf(lU(P+tPr^$>Wi?;FlF<siTYYV6{tVmZ%E`x!`59!Fov;v^H2?X^-?MrOd*&U;
zO?(|0HsQdk*HN0cFR$P%wT#?--)$ea6O*ZrTw0QA&#uHDYZq>}|J>s@t?ua}7SqR%
zeAh_5iY-jOkf7{+YK_jxm5<iRoA~Tg>R4;LYRA@v1zxAuY*f7QEo`IJ{#iHuUL;@I
zxTN*X$qUy{+;a3gmKt5TWPKkmbJYC$^`&k?^XoYOZETzV{A|L!n~ioVvjolWou0LP
z@}8@)U)j_q-YMrVUT*JPHg(>O?Dr`@<0ric-@fy{Eq6rRwx0C#`{(vVz5jOq|Ne_Q
zr`O-EyPoq*ChnO0yB&<X>rEEFn|b)sZm$~w_v@ap{QEK6<k{J|N7(Lq%!~OhWc*9@
z<M+@HZ%$3U^SS<Lgn^K#c~|>$-;XcnoPDX0`1_Q4L`=r9b*4hrCXMWI6<v}S-|i@7
zxMd+1w~-}m&9i@+-5N(d{>)JM_wUSlsa5w5EkBp&_|52<-+o!9o*9esldk<;99i<^
zjc>Tz-E)u9=PRCnRqOBOTi3-JeE8g*!WTZ%?%B?-?DtDrYTffgI(<`tpHi{?>idcv
zaeKWZzI}MRX7&HT69SXw$DKMf`>?^?KO*bH*QR~EB)LXs%i{OuQ&#@}E8~Cn$>W+v
zSfkWMSnFteiq7IIoLoExnH=VG_TG5^O!ny;%esfprg9l(NeC}fjadF^E6>JYmW<Gr
zRdY3-3H|%%d95<`@3x(ZwazDNio90e-h66q#2f~$<f^Tyc3Zghi+|p=iTKD7uj85V
z+rYQKdFlHpn~w;1{9Ehz#Zq4Ojn;g<N3W(USNuJDf3Dn*&b)J8uMS1-k@=>Q{V!YP
zVbz|iwYR4g{+AY9^Xq#~q=7T6a$f#vZ_#?|DQ~wfIP~h-;Vg5tdeg_sC3BRk--v|I
zFqtBA`uW-QeFb|qN%@;gDe-(Yofd1Xvcoqf^39#}^hfe;TeJU}D(;dE7qh<HJY&Z)
zy&KFIq&oK+^?jHnq<5$4CM-boMEB{gaQr^w@LE$j{*aLB8^4-+*A$sQ`)r^%-)-rm
zO$?%Yb5nEfedN@CZ{<?x`knjR0c)M`wLuHtz3LQ-e$4bH&FFtV@9mQ9lWg1;*?u%$
z*qh*x!dd<ONz%&S6Zh(Lm;U!y_+{6{o(YHodG4BAdDGpQVOI_?$4|F9X~p_0!2aEv
zi}Nfmo=dr~YR9GZZR!6fA3S+VDrR2y0<Cq@n`><P3;)k<v@>h8*PD0qU*hsC+0XA@
z#hS05FL2k<gkPtsXYy%r<4otfuT+n5wDr$D`})5scN#PtTVB-Io!$98bY{8TPKm{B
z^M1WEeSYsIi`11Ptl1sLnHRPx&)~VZGT?gHr@P;OE_o_acJtNtvvaf0?VaN#F4q1%
zcdy=^_fDnWFw+E_ViN4m?|lCE)w`wD%U5r!Jh7$ngw4|=uPJ<!=jVqn2t1ftWqv;;
z_4B=hVbd7jKHK%WBL>z^cH+2LSrZ??%+UJI-fTOoU+Y`evPDfMU*0cN+%@%;b1zrY
zA6uCdR)^Z}ixzA;Ro7^J%koOedrP5Kc$wz%{DbbD-<C^UxI`lFibURh(vr2)Fr@jS
zf9s+O@zWm;ckcV7a(-z_(Cd=&(tK+d)<5;%-r4Nw`t<JqkKg;!&slnU91;>+=(vDG
ztE1}&M~2|`MUR4FR!?1SbM;q;ZdR;T-ql-K+1XRG?ym6i?)JW_RjM1N=^^?--D!0K
ztDuIBf|G#oG@bNk|Na^lPitXmQV{sNr)sI?={Ykki}`ly*<b%&UB9+5*F2^hd}u^R
zhllsJ*s0a=Ej|1RchxiFR&l)uN%|Sp&hl)s=%2T5UDvEwaYuRi{k-izntwU9Y=T~y
zt8{6JzW>uW=B=5>KlwAs{Z?tHEH3;0@=ZwAN!UpwKZ`QLc1*u`i7l&U=F7=Kpo2pM
z1qFXT$`0F+-szUP<wm1ayiuEe+Sa8|hrEeYv->P0Jin5&A#nNJ6DuzJ-8q~7<>}=;
zr)-5;YrJ}**phkL^bb91gt=jp={8I0r%JZ0Zo19EwJ>99ex8|oVrBCD^gxCWf|K)h
zO`4r{?d`kGzhX>_qt-37Y@Ark^}kH?xy-UoFRy0C$Frv2>4G_cGtB?tqU^YiW=oH0
zQ!cLl&T!7|c|}`^*PCO)w~zeE)c<hgzPLfTE35P&mbX^lAMKdzR`5@-dScES)z{*m
zjx5&yFui_lLMZQ+*EgD#{iP1RP(JO+bXx8Hsq%Soz8?j}KfZCTWxTQBfv4WiWVX|L
z<a+ki@uZh$->c4xdphqVi)VD3=Q+zc%^KH@qbB7~H@x{;u9i*jy<{y9)WesUZr+P2
z{Vx0G>%ZF-UtSqYN}PLiEq?ETKMCgZg1=^^?XhW={D0GBQ?TXUTff&tZ){MPlRDqh
z+Pil_)5-7s&l@AXS7cr9PG+AnIcoQWll-;^n7L=IP>T63w*9_+b86{Qo}cGf&+>gs
zu-5t>GWmLug!AOkTBy}Z)~^<uimqArqox1ay3=;w&ezu;IFcUsXu;oa4<G!kuH7bE
zZMV{;DP=XwBFz?N*jj+MQD0M^l(!pxXE&a)H;JW|ds)H7{%Hl@?k=|6rf|=$qI<U9
zJg@cg@n=uy-M;aCR{f^~@8>-~`aL}OwP;Y-z4p)hth*lGu8MW!cZ;txJ+5}@<yE!?
zlTL2GbKowwcEq=fYA<3#>VGe2;t#vlc)fYz^!{gW_zcPqMXZ|>c5>1G+dQ>WEah9Z
zXOx^zKJ&xGal7!ov;6GS&3+d-8f$+~IGwd2X6uZTb}tLE&fZn!;hX+_p^N#pHTN#3
zU;MN-<<N>`3FD<{<?}s^k39c%>YZKx-4|PDTYi~yf0F{Q_0!F>Yo*=i)bSTzwtmgx
z3O;hBtnbkxr@Y^9RhFHZF}F77UUm16*F87iZ2lfz_GscF1)Y~~U(}g>e6_gWX!mE1
zy88EbZLHsAt+Rd_@M~NCv(wf`4#ou>-<A4#=59WXSBEDscWt|KO*{R;zgB@Y50*Yp
zGx|P1xFYFYn#Y%f6aRRdb}yJDIax045PPY}`+6b!e`)z$+dt1W)xNV?EtpsA?)kQ=
z!V^<Ce@%J)*6Qcm9W(!@GTBW&8(p6MHIDam{Ol7`#rvOhER0|LeL=FtmoFE4Dl_<|
zT4(;hoVT~9@O}QzGqbkKJ^p2=Z24$L@{7M)lPw;tIlbdwzj5Sc1%=3e-|rVath~SA
z{(|)v-_OV|cy!d<I5F<(H212H?O%ScUw^T>d%p0_Pg`Yc#Mj?FX1G}GSfW74z6x9M
ze=C!YmqmTmn_Oo!D|w&X{{Q)N&bK~Zwz=l`w_8p+sfSwAi=S#o*Y(|A|ML9|aE?4N
zJ+^SQQeD-}^32eXi1#1o$9;?KiZ&Ihs1*y<uK4I592rul;cWH3<!@`|hb|8>hfSf9
zwZFeFjb6<C%yd~_`1@T`lJ^y>rvH0kn5NEF@N%oT!JgRU+hT?(S2E7Mf4e#7R&q?`
zaqctgULQQMQM|CM@~>|8{p!Zs%R?K&kA2wOxA1m4hvDp-)1?3IFgRlAy?5)^n7<qR
z%clA)jk}k?%e>=9;q$V`#{&;HxvzhA`?0pfm$}?K({uDs?Tren`CwN3^2|5U>1L%J
z<umP;cU>}mZNKN))Y(6u`9Ht>`40Ea=b!dX5x=(S(chUqQvZeBbapfyum4xNi)oMj
zMDMykT(<f<C!TCCSKnDF+Wmj)gj<^?>GDmr`sTJwE-d>0!O;3=hqT2ESDf$L+k3^X
zS<-S(Pm%nBuE_j7-nsi_ZzhZC|9{i|r|NCypEv8IU*2Cf%~V_b<F{2tQSWc8+$NCv
z#r~g))tk*vpYOOk>qlQFIIulZ=I1@_+55pJZ_jH*hIRWs*nE2#wy!rl*ZD3}-u@z;
z^43f<7Q4NCGKbDim;XQ0Y5lJ*i*K{jjb6`V|8cF<R-*2Uz&^t*`g3Q?zEi!CeV>sh
z(fD<ke&WS0OB;hc<Cs!L<x|q@`ooWJiVUvEJej7Uxjg?h*R%Bzhq@=H8+`bE{POnD
zywkV*wG}5e?Ba@>V>5a4dMTg9l@G&AwC{B9h<PdZb8_KlA(hnX-7TkC%4aI7eQYg1
zmuU3g`1ZWKKRYA;nV9#-pSmFL|EO<qv7&eTy1Osu?+riPlzy!6^ZVtS7c6Sy+uL6F
z@y2P(?E4}N#m9S}Y<r^7_y5Ovo1F==rlA2<FD(DO*>(Bl<Fko({@*(ge0ueRN5YjY
zD$ey^SjuJo>3#p3W)-VH>qztcQ>JIiUtF5|uhvV#_>)}S-|voh3QIVrcHd7e{62Zd
z<1>t3SQhlGv*pkD^LL5YiwURd7qsoHuW3EC_*hZa;ZJwV-#wh6t+nIh&)F7QtQ)5M
zcJF<%&+NLv*L9O$GHm!(sb}-JlFj}b!}EHB-rw_Ho>^eLYvUtv@#4GMq9NxbPA+`B
z@UZ6g&zGLQZ4jyXBW2!SIpO)UwM&+5ux{R0X<1%VeqfqoW|e6Eetu_t$)g+WR=)Xt
zK5ati`QnF>#S&GSl9%OY9(}|c8c@Taynbif=ijMztEcX%`M%f2=54H4O^oZRHRj7}
z-n->l*%kXPKL1X<e$Khu+SwkZug+H5@9I9ypIe}3%02T#v;3zw|I9zNdrQxI?WH!S
z-t@G;<=k7-=RbRUH8g~6uH~!xbq|kS-Zh!2;%!=A#lM1o1)qfKKD|C(S$)}{?)M*4
zo^RW~-CddVu2{Ho_Y)bvm-D*5eSH4z&Xs&c{{5ReOhZjCq#B6F*ITBS_OClX>!$F|
zpYN8>+_!_tYuAO(7cT#}xpnW%B2VS}8y5%b)V=e|tF93%4qvlG?dDuZ<$dSR@3Xh~
zm9stdtIx5&kK*Q46>Cmy{g|yU<<tH{|Kq3dcMscs$31x4pRMuMwx_$l{mQlP8sJ)P
zQ*>?afySEmdoD-r$zfIJk=*gvddptR|Htx+V<!3+dS2XiyYTgbGU?eVrIKg9+FN&|
z{-1L+KCY&xJMPuN)a!8vHlF>(Z}p=3kVc*zV}h{pvHNFy*Xt)7;^vm9yXg2;{n@(N
zC-3&_C4^pdjQM|=+hUuq>SpzSZQ1d)jq`2q&UXK|+r8}a6UOvUy8}7j?R#mM_CMRG
z{Op_4XXhWERo&(jAmX2)x?cCX>vtJ}7DlfhWsJhHuQhHPe_i%8&5n1s^z5SP{<F_D
zeY*Vf-bLSV|ImF!(#ii=l;77hmB;<%{w@=LaQ%9@<6C@Z>SoRSeZys%e7&~5?N65A
z|DU}5)>ce-Ef>qRk}>Arhh84-m*;+d-+v@J`2QhU_vH`vzVwN=pJD8unWB2eFaG%%
z#jQT`zv-DeWS)<kqCfxSX>Pm2RT<gwj~|M6TfUyd7|o`?m;J*0pJz__oQ|}docVh9
zg@=D<p6Rl7%@#Y8nD^XS;)>z_R#l$e|LTtM`567Eo?Mar%6m^qrCQFK#9xo~FMr+r
z{qryTe+OTe*Ui1<UVmuEb}38q{l>N5TX$Yg%e~k(XY0TGJN9d>&HZK^xw8LHYv=QW
zhwb-Fo__uLxutvV8?4)zE|l+E-I>1c`plR6t0qi;d_L{$l=%e@e}wYvdR4dV-&@al
zJ5za<zq|dwYf1R0JN@|yLC3W#3c3^Y#dMxdwAV{{(XamT(&hTZS96^s3-4dO^DXS1
z@yg12rSN}+%<A`TI#*8KcV4lsc%Svxt7qn&IQ+7>^20~<8NUvxynC^ILj0dstk)Qp
zJpb@|{vL-{x4(bB2J*_}yoc=Sd<*t$>3lB{aI2Kzd2GG?`u)H7<LV!j%&_VE{mis*
z?d#adt#|6b=AN<sP^7m17yrFk1&UAe|FjtTuj!c=Z!^)m&Z_%U_q*p`GxZIBuDW-o
z>dVs?Hqge$=Fanbj)>a-=ly&yddtz`bh&zw<p1SQ#QM)y=L?4a`D5-=^K9ue`4gWt
zvtzw>oAt6(n>h-tI5~gL?sZM2w@p2_cjU3l9$tDq?s#gf_@^VU<#T_lN^3`i=6_vo
zvh`zq^R;8g*Tq`S55FHHH23tat2H6)B`+N3n=vf?V!vTd*@0D|@*5TN{ZC#?EqP}$
z!~6UT-$`fB{J3m<=Ek|H%eEyiICkxJUh&$Uo3gL)e|=>?Idk?s+xf>Ish;+Dd)azj
zN45{^`G1vSwfjET`n`-~S}F8vj$v1#&-47s#?V&}F8{puF!kfycQv&h=3@F0F2RK{
zXHRimD|zE~{?M^`z86d1pS!XqMs)4Z?e8_-?O0-bKCaA6dEH-K|8sFSpVV!ysGlsK
z9QME1a{Wg08CDIBe^<@;?I&_$O=Yr}_OH2zBW>@cM#)6!&M==J@}Kd`&AweXKRpyL
z`gbsONyDYO<;6w&wZwE{Zl0K?I;ZGq@0?E`=gz74mU`#U@s~Og_Y;Kob06MUY83m}
zX5H%#+>$plt^CveS53L_{KdjA?}MC9`Ct5cBk@bRWVbzA#K|ek(}L>mMd;b>v6l5Z
z_2SlhhN^3)3$<tboGra$?JF6%J$Wy}v~ErMV)<33t+Y!&_I&ZrgC9S9>dt>|*WH!m
zxA!C0xmVX)`QCban10?J?0+#p@5eXB!UGXb{~z-$Jj~8Lb3WUORtBy~nn89`%3hrf
zbpLiQ>vctYb9+(9{7o6Z=f$T-%->qGV~J#a<#XHflTFnP%bqY;Em62ys&U_XvpIKM
z=QZa!zYlS*k+A66c)Wc175|G1&%f;XoAy5UJ@_0`mlW|C-|s0s+q=D^{@?HBwEfTK
z|Np1(d)M4Wv6g$grWqvr?Fp+5IJo-!*`&Z5bHuN2d~tUBjQv%@TOHo+64i;~Kbkvh
zquqo5zE4+quYYo8<Nha;=J!8dq@DNl+RoVrwV&=dxYvWtd&Y;=AMaG1x4rZ4m)Z}n
z{9jWT<o6s1-EMPc?PK`|liHtc=wqqn&#6gpd!BqQ<%u0<gn2vrygBju40oob9pyGN
zF2DLDs(AClNro2UY0o!hMZH@$dF54OwNn|J51Txaxi;aqP0!8drt4pV?nMV3J#9YM
z<NfSU^F548oJ9pxU6;yQU*~S)+9SeZdgVgM>POeO3n$A}-v1#|>$kgedSCRZEt=;)
zU)jO^qx7QZonNO7Wwvhhw49x0^l&EcoTASYeOVk-d91cb@1J2l|5W}|gSWj)zgWI=
zYg=10&oh6I_t}ecXIiiC`gcET5$g`lr?$JE?ic3jTCi+e=l9!n2Gj5VXHmXi*}HsR
z?JUFeyWaD=^B(pYSG!+7o9%wRDztg-%bTW0H~)`ho#JrTEAHRpW*ehqLHX+pS2itM
zHKUeEVQ<&>Y11#H|5tm~QmuJyPmT2SJ#6AOMOL=kF9t{5+xV|*#Zz1B;Gd7Q?AkJN
zkMyw{Xw*;6tt*!byf*XGpI;gJoLdWPUhqF-Pfj;_Ca!Gx?0kIs6UpVp&o18GF7z&R
z<Aa@@cfLQmt@BT1*T1Q&6Xq-4)?<p_T%o8fw*Pd;`o9bR3CC6kPF<IHv}<e0kF51o
z$KOTWi_F~#u342N<MQ3=$~m_GFO*5Qo2w8S;`KkdKkZ2S=2>4q@t#iqxVp1{V^*;2
z$whu&Y#&9(m@bjj-SD>Bc*%RAG@Zz^e?m(G0z97IW48FXWU}PV{Tv#p@AH<bm`}a5
z+M6j#_DE{@T+fq}jVs<Z*MEBTh~?<pYJ)#h1bgfjuIc=~O<ei^?~JrNpNzWGY>u`#
z?%lb?|M1p7QrGv~Qk=YhQ?$(n#mjtBZU^Ji+M3@;CC-RuGAvO%Ced?}=Q6|Nviq~D
zW52)iIeUNlra1=#9X7W{E$G?&?ics=ytT6Tv%jsH#;{~p$uj4oMq>GDUMF6!O#C>B
zD@azF=ZnV6bAjo74_632|8%GS-1A?**$loOJLt=%b$WjF9L>3Yk7qj1?u*$aSHmGI
zH}mkHuLiY_<!!OyZs+^i1FH`Eh^@Ihef#upX%`OO7QeY<TlK>WBC@|~=XU?Do%`AU
zx9<HtKm6n*e=t1X-Z?)nVv|ft*3+yRKUd2a-0hlN@u6?_i~DjO{^@5n3O|0nT`-9?
zR44B4OymBzV~5M_&z~%xd*?{Gf?ZUA_uds|cI%tY{7pIh{=l|<*1aq>w|A7u_U&u3
zm#yP7j<1=;`91c`;mP_>_{-<q%Xpgkbjs}?-<Ur%TfcuauhzSPORd+kdw=d<0frFv
z306P2mf2NQDPQd|)$wy)^)Nogekt@M)o&W|Yh$m!d9}Cy+Pd5O=9XK{`?&w^FSWOP
z7BlDnfAr)Rzg%_7yR!d*HnU?t)a$$5t8ss~()iei6Oy;fy)HWPCw&QJH{5lS_mo84
zO<kVz)k}69pBPj1bz;n|Big%qcg$O<EM;@!amq3Knxe(G^L;-rdwT5ktEXyP+%~=5
zv-3>9^Ur(F^^4bTE?j*w<n2>8iP>)s^v14#{=jjH{TCkLdsZ`N^W~=8wcRgmyF2XT
z8*A^xgzx9;7PKuq`_EZ2s)*U&H}a%ry4eby=-*QQdl{XN%U!65cr?ARVE?(0eSwau
zCilFeKI`?{Y@OhEe{bsQMp4_}g&h1wuXjp4`zCSf#y5xAhb529^{LKeF5WG7=xOvy
zzBPGe%>|#ARDEBZ|4>_JJ;N=AgGOTd>lJTLpB;DXw!Fj7hjSJ8_C&s4lX_wM`OYTW
zhEVOu$(+o8^S-<ZIy$9Q`{9LStG-X-`So6VN7@6QEVsWc(*H^rg!kXvd$Krsqslrl
zmIZA;xu;EfRpobiYO(d}-IoJaaX0%*AAazdz2NW8$1_acm*iQ^(A}5(`T1V&S0Az^
zcIMZdd&w1Ma!vMbN8jDu!MjTMidXxk-w^w+6Evkf_k7pU(<@ZMEqA0n)zW(T_2&KQ
z;11&nKeN<hIm^z>*t^@``BP5m*}ZRO<sG}QVYRXO0mbdH9-C*)Nmb|I+<e_uYGGjg
zUt8y8oAk|pq)fm0J?2=S$EPb-rx*U6pSCHXk~KSQeac5`<C)tQaJ@LBd0*z#Ecg7!
z+rp=9TDGdoR9oEW?ar4b_4`~UpQdWhG%Z#%&0OKhypplz{Uk@7|7ZCnKL38H6A|b5
z^w(6Ky2qL8_P_Ca_D%jU|06~D?0Z%7p5LpOepFj~MNIs`M>qXHcQ2oIG5rCf?>fQo
zpRbZ_MCTk~J#J>J!P0T<?(5xM&*#nZ|M{?ak-~-dM=vyMSG-%f-BZ?PLFZQvZ;kg6
zhaTPB91+KCI$!ni>c|tP&-<i5`>h?h*=*Ok^MBKng7-K}%(Bf84X*pHaCzEw2VYiW
z`CXHjuWBp0HbLlvb?`k_u`_kLR_#~c8$C2XzrjMfsPy5K%WNBd@IRjM;hLA0dFaMx
ze=X1CN)$}xc{b~{-=oJLw-^5Z?K}TnmnMJF|2<q;mrQm3|K9uO*Hw|_JoYKtSF@}i
z@1Cr_cS`2@vxy&Xy*N76d-|rNU_;s4&dK*Te$tz}vL;>4_&U?<Fr(Z*%{Ji|_c$-*
zvz|LKHm&Hk|NOLPr?j%Jg>R_1S2Az5?ArzZKRkZ%;aGD|b*ifAODV1U|E0IvTBWPI
z?}e1$^UogqUH|P+vof2^4&n1IQd#$ARkI!P**fE7i)-cE9Y+!;vt_+8Iw$EQ?0dA=
zPOSU%n*GyP-nyMD@6PESTWVkb;-A8I+hXba|9n}ezEoK{cUSQr*X;!%^M$Nr%6aQo
z?43TpXa9`kycLVoLfz&!J}<buAx-Yk`?Dvy{nD=KyIp?2P^j&1hR}DJc&GNqd5`>a
z<sM((Uq6Ane)}X-(+dl;?b+s*DEIfD$rg^=KVkVX`xCcMYp+oB%$$CY$M&t*yPxmh
z`N|Y%_WyaA`>XDA;;;PA@xGkRY+urjW{b`#s#vy5_viz~_JE&vblUhbe(^tgkRN~I
zLiW4V9~Y`$6x@32BYS)2$z191(_NCnGfVCVg{@iNI?3pl%%9S{UB8|Bv=m=OePt`S
zx6)H?XA;YFo%IX1JWtqH{#%qMTX^p8mG}2IMVj9`{9&QJ`qicK>2XHW-q#l8o29%e
zIMr*j<E3BT@0YB1w(aT)xyd-E{x!odbB!n7vQ>)q){m3){+!I0w0c<o^0L9k&p|x4
z=^FC=`)4TMi}dt;&1~_NegBhLYq!`iTmQS8S+Ljc&u@!$|E~sJyP~4`_EP_2{k;=E
z?`AgnBx{|_Gkt%t^z@z|Ql_nUCBK|Kz4L2NsLiE0&Oi6={Ly#&;q~uDS5H_+Zr1e7
zyk0k_C{W*z@y7T1pKnX0cRbw3{i58NSGI~T?MeB$h5zNZZA}Ib<xf0+f5m0Llq;F)
z@7`UW;3lzs>ZEmNg1ybz9xTvF&79hCXo*1{H?On%gF`tdzF!yJ8uRa&T39Y$l%MSV
zJ=4p-OPX|>w)v^H-m!Zm;P>{r>AG{p700@--zknrj);{Fn%lSTU%2<<qvEf(zCATP
z?CR&3icj|?ejSPJd9%gZKSfp8t@p{>{JlqPk7tKkg54uH@%*aF?014&Yt3|6yQ7?p
z*Dh?kVA=P2(u4QM#XleFl6qIWe;WU)D4!$S-Cy5ZH^aN{R{z7_^{swOTU+$FJ{3IZ
zIh+%?EZsm?Jq|X5G4XtY^uxHcUs*D8Gkv7<(k8g&`PzwF&1qKP(fIoCO&(|8{nL-H
z|6liX=F`k;S2C^~OTV};lySLS#JQ>NUl;lYGTpCYNo?2{ccm@cw`{NT`6qVkHGZ64
zyLEf&4|PbcQc}{5{jBxf=StV@2Z0LucZvnt`V3go6?hh0Fpk-}|9oUDufHDukHeED
zymC;CFBVa;IVXEzZZY3Wx9?@DDz*IvEf=gf6mzyj=`VU04G9LpiTdqs*YBLR6$!1=
zy)V(wSf<(U#P1}|G);krGq&UKBt9pn=N{~ej(>LRm0V$Ee0d;HyzNZ9{HF`;ikq(=
zd}gcp<aYD5JKjI#+Do;Qzg(}noWA~=icNPuFK71R+w+bZv)$i(<HvTzBU0Vzx&oWF
z9Sf9p`F(r0g;a6YreL!Rx2j=2ix)V%=1zB=d+v@2xz}4OcDT*Ry;y4DG=1heY5&qv
z#f8o5#oF%dn4f&}*n~oPiGQIhCuqjc-+Qazs^Ra;Yjd@^gyTwNo!vVQ-t;L|iO?@z
ztH|SQlf5}xUP}18-)8Cdr?6R@6M7fd6r6wdY0(;u9jE0tJ^a*`cjTaa;fHo*9_N@n
z>(`4M@c+g=W20EypBta<vF)CG&+qh=-Oieaf7i7x{9Upr^wROqIugRMn|%u0YeE+b
z?!2gcYyx-G<JI|}>dGEh!{)6fo{!&r$o2$_8{6|k6}@}^ER^~weXTw=P1nwSi<rDx
z*Fu}e7JG6}G(3vB7n5J{;y>37ftsC<RxDa_zMSpblMXpq4Ub<x=ADc??=$0h%wL7A
zbql<<HR)^JIGvl^b94jyRy){q+zG$ydrsLd^4fUn)`TUTnNzm}UW~}gv}1_zh^x+9
zmerpl8L79T>z4OohSL|;TRd1MCp~lLz31;=Pp+BtFDd-fR52BcW##F7?=LofTN`A-
zv#_}3+=P_}xt-fT`|R!78*}4%!OR8vyX)pHJmy%sR{8A#iS|vl@RYMHt+o0n=jml7
z9t<JueXpe48`)WR_T6!7Uh?N4uik!{Ufp)9DOG)oZ-*Igs1QD18+2sODv_%X#g~6O
zBjHgg$3A^~>XF9S%&A_Jw)nQsI5tanef(l+Cx)6R@gQ-j9GP8eHqM>@kMem!MlD=i
z_Pv=U`flqd#Z+Et<{J`jFE1{Oa^Kp>bbdmQ@rtUeH7?tE8;WNxee~!p&#{&W;j;x>
z+19WMI~+Q2a;>?+f&}BuW=krHlLNc?fAlmm#-5hAvsXCwmdJ!Ji=#Y}7coi{ZZFz)
z(`=XBgqP=g=NaFub(P^e-Dc&U`=TRFEP744hMz=~s_wmYb&Fw1c9XYhb=10i-nF*Q
zrw+B1c;s?qiU)+Ie^|TpK$EJtkL$zGlG{<;oQHqZU70T38pW5*t9Is0=ZV%@S>a4S
zjkOEw54!ye3q4f-D(K42X<OCe4{e^ZUGve6dvkw!&32kJPdrxHr$*Q3%Rk<T<YH%o
zIo;b1x?Df^WF4=|+A~`fLzXZ87MpzFGjHoW_smNZ3=%#sdj?PA;=!BQvr<%axA;Y5
z>4YrhEp>FT;#uisy{2(V@9MKYbqV6_6(7y!rE^^3%Raa{P<v%M@4j@7xvDBEB@e7m
z$7vpy{3bjtJbGDP-tku@kBWEjSjR`M7CHRwwNK^kFcGysRqrnwKbZMqpXq~YvwdP>
z*}fuYTKQhzeq*W<cYK4MNe%}Sk65zIH3=>uIaN>ROD?~~;Ay7)E#LPZ!w4rXo92Ap
z(5-E=7+w`DadwY=@L}y?b-u4XowxI4=cN}eJY4)B(*1?bHI^U8n57@JvYn5rdHyiQ
z<AoE4tY-EN>#5K79Lc(OGv<hWc2}gZS^=;7=XYsr8Sya(8e?x=SnnM@X`kv#*T&iT
zi(fyj7R&Y#NsH=smwEHFwRWCqMclgB>r&1g3$5OI>}E*j-6#HbbLgeTCyal5e62WZ
z%5LkcOD|u!vWzp-@`g$_&&nnKhwi_tZ-T{o<b2CWgJTaY-8=I&zUa=s=HP4PE8$dX
zbMdNr&+VdvRv$LB=p8T)>=552aNl?dGxNDeHO>Od3a<&ZDemii{-x^UlUVVhgoAG1
zd~+V%FKzX?8{@Xac>OWH4c7`%&i8$}xtf=C-_h?n`_ezGbw9NI$F)btL#y|tzizGF
z_uRE{ey7~_!rkk(Hne6v=V%g;Z~m$?&rsy&G^O(sKItB7bx314{*M2O$eY~g7c!<>
zGvT)_Y;u<J6*CHsnk{!BtDvwWrRU(`i&mK{x7p3U#Aur7-mqBB;K3n{Ek+kPIMNq4
zoG%ZIomDK?_<qB}gF72S4ka<SZ?sdB6>8z@VXj$Y%ChkAtO?9}eZP2w7_Z+Y%KfVA
z=8H0akDw_ZZtO44=6iLi?@|+sm`9b^c`2c5lfLM7THNrikn=qMsCvSNX)W(3epr+}
zxkFpgmV2Lg=tI_XLE;i~np;?3J2&QMOx+;zgH50Bb5U^V=luN4?DKDZxW3JDzwQa1
zG<9()yJ9A^F(bk`jb~l)$6B8nYq?JXZj<x5ADLb0RZ9sLXy9JS%UkNWg=2octQ_0@
z$T{4G5l+&RzSuH}_qX~oyPUUty{TETN8a}`Z%zr{%L5m0S@D@qm6^2a(firAKPCpa
zJUH__Zuhjzsc+-L&IInY3VKqlA|yAjGb&ej-qA-M6@eS3f7zpPXR{jLM}?UmHZ{(h
zpL@Bt&N_Jo=VAuahmk__6kkS1sq(bOiE!Q8)4A(d)S8VKpS#|BTzR>3@shIhS;_E>
zAiLT5Y2Go3p3`ad5zL7%JSzFlOPERaZ@4BH;bFakZ_z6I``Zgc6Fd$XTj*S~oYSlI
zdy(ZvM!x<FM~{29O9)TmGrF9*c$FRVjRS>AAFaZcuKp43YuNoNO0dSyaauaB?d|E8
z)_Z5~nj)6Up5&stL+rfMA*q`4$IT~rxm>NB*O+o=-s}%Lb!pbw9x6JV(p#@CTg&b!
zBKIrK<mWbxL`|=VNoHBs&$5)?T)8{Ca{caAQSfU{%Jx2Mt>*Q5Xe3-PxBL2)!$Ly7
zC%>-gjVjH(VmEt(-R##+tC}-ncPRASD&4z7iI;uGgpvma`^2~3Yns0;LVE4P^iDRv
zicAk__t=b&92`D2wb!kj*y9&YJNIw)O_wJO3<?aME{-8qzm}RC?A_H<+US4l?VN(s
z#%<fyPU3labK?3fdPla$ZM$@Cvl`!<MHBQBb;X>GUQRSniz_~VWbKZR{(JV#doNj|
z6X7k@%o$s@o9X^y3%-AQ&fIEMGY&Nmcg*0awCBBcH~9H-aJRIh<AnINve0*_yR9F8
zJO9FQ(Y6?#g`69YJz^4PuW3`^o88g0)|V~ol47QeBS$0S`Ryu)GiJ2#9$Hb=D=^tW
z;<fwLO12y;u1_`3KU`wWd@b1WptY?;KxoH`ReG{5Z{9Aoy#2r9X{qMD6?uneDeQC>
zUs+q&<#_k@<*mNjL506_)0oyhe|qim=grx#BiD3leGcN(x3*D!__VdAP@rSulHP+!
zA39bsaM$!NYEjJOJz4R0Z^o>=E%#Ss>E~@K72rMIYcD)Knmh31Jh*3WhaKK~CxKTy
z{KnOKz0W(gPBS>eQm2<C%j-PHFyeqY+w13f;p~cAUkV6YIf?gP`s#ZnDceUPbQx<x
z0n4$YYxgsnbzFP4`Pc*2z^(JQ2C7C|acopumBQ`RUZ`k0dFz|E>(k<V4L@gh|5WiY
zv3_UdFnf^-dr7AA{=K&*eOa8f=gtLg>Fp0^?FqYmMxoc@#+SVnbNB98q(86Zb#<VI
zgi!3YmXllGiv60#q#u4&ocBzx`U|1G_R`^gQbxJEDnqN+IbNN2lK=NNhpX8$&7aFY
z(~WmejqL~z@akt~H>|mT&3eP-s4%_XE!XZ^UCfe>4*T;ue@{rchBEt>yN!<_Gt(U%
zZ{*IdyJM^-^<e_<*A?-yX=@K!I(ta8mjtRx?Q@r~YP#SWoYLF9`rZP)+!ee|mli6U
zu)VHUVRnA8$n>|4;=<m%YQ-hGOAZU%mwL5EG1vLh!lin1kD1G5rhBjpv@pJ`*tG7w
z6W?dEOY0MaxwE1_9(#7}O5Wm7^M{gbW$zC#&W#S9^5yX<OX>Dpw)4-_?p2v_y%E}{
znz+~ENH^1tlsi>(KJ3j|I{)jQj9UdVFDeULlM@fQF?;5G*&!ePzw)D1wOpX~x~*)<
zGGeo{kLEtve9HIS-R9NbUxgX}UH?C!vi%>Ae4&agx6P{S>(gY9T5r4mO7zUX>uh})
zZac2;a<A_zS!!Ko1FLTDrdZ!D@-0hRR~)!hmX}H8wayHI<i!)twN~0LF}t<wLWI!5
zh3Blymh)aM6|i#Wco4aU+cT=0vFSo$@8PzK0=(xdZ<K^AeSSMbXnlI^CC3hNDH~y-
z7P+_=9ET<-n6O-%SWqxy|HRr!vu8%f9@?MXeM90_)%*1tFE{5e7y4Ddv}c=Z=L)9_
zZi(~KKOf#vq0pAUdExwgsgM^(Cl?A|oAkk^r<W}uVbS-gD?fOvF7n#jqG&zg@aLQ@
z=Mrk(tccRzpVj~C^_!#3rbWU<j}!9w&wXXEi~XU0&-YvE6Tx`Z;N{^LmI=o`y8W`t
zb<dw;`y=;RGORb<%lA{i?`0s*6{Gk0>o;s#BWx<ae(|n#eNyX<o%>(;_aDiMoBvIJ
zT0PTw-#Evt_05*)0pfPG^=kV2cTe+mbg;VFdAMK7XTRBpmyaxcc=;aJvu$a;TKwa$
z&FO!wuYVRe&st!$<ZE4fVbc6<KX}g_*MD{Bp}X9%e@hR%vh=Ciuj{@g>e!X~^@~dm
z6r8)YzF>PyFf=ZH7TsK!xii52L$~}v3+BSvYkLo?>jeI2QB(=86?>$v<EhW}^U})+
zCW;G<EwVj-u-$Kb?&K3|<802eao<61UB`?KW_(}Q9ORZYlU@5X-Pa*uvDrO?lAHHs
z*F27>w{35q|LHpK+aC+oar8V~oqBZ6jpfF!p7yJ(dYnzpcVA;Z!;-ttv@m;Zul9GJ
zJm0+*Z@krX#M}>k_V^)|y!hpTwwQ<+8>TICxzhDo@a=V}4}W7er0160ez4)%;k5ND
zkIuMbdOtZjZ@X5)(^X$f-uyF_%00jv_W9Np*B}2&WyIgcdhGh-Ja6_VtIfCN&L1#y
z*fCM{_3h90>O2cX8MW`vIduB-?#qw&TNNHz5T`R!&ftwS`z6DBv8%uBl_<NEaEgm5
z?B9M(oA2+ue$}q^R&M`0<I9J~7Tfo-&$fFqGyVV3YTNcp=i^VmzAXMwUTW_7<=x9Z
zU$Ot^JN@DBi&86o?*Dn__IHDGmfMBbz7g9E>x}=5G10zrdhPo3P1)~LKdC&AF>yI;
zDKqos&Id6uzG;ue?g==hbNXH}%YKw7)yOO@A#^P8wPcpFbM9Ql0={(Ja}Guf`hr_e
zvn^D8EAvvJC#vM~w2}mlHL9|0OKiO#$h^FuJeQAiuCi=fOJB^1=Q6GbEKmCX^na^%
zC(-uBwQUyGmDkb^xhFq5Wz&7|;qmNesmmU#{rT~;!op4DgJg|x=<Uilk+YT8jvbU!
zvGG2&eTj{?(q^@V`H#8w-Z6=BwsAS^CVp$u{jS#?Y#BGsv`_dur(?O;asM|5560_C
zXX~=I`tn%+tYGz?bXQ_yc?je4>2*^ZW1kzBzFf{@vqNCRo4bo`@^*iHabw?<-qU6i
zmgO#vf7P_<o5+#dWiRiD-CMnE*T%=&-kqs?yZ47{?#qY`9jAO9-Wu6?JUO@gYxwTV
zAJ;DZv%Jdw7o*B<gAWO;)zFsjrtIANv#M`$?albR_r=GU?se(5hYVUQR8G%-o1hah
zJ<?y_G2w6q@BWgGue$q+RhZn3TC$Qo+7(M3V~#$Lt`UF4s(8-wRnvq6QB4;D(-%+B
zm$kUGuvh)L6%%`=z5<7WY)i|IoCD&IHa*{2f61|M_6wEA->1*?nw{DDb<M%gHhXq_
zI`_ROxX}1&&CK~{KA+pX<HE!bx^*%P%WAwYG2cJ(cKb26sf}i<zHC00(rlakm}{@a
zg3~Ph7q7Bs?`2ykm!keG?a+Q(vm4AFm$W2<Vucy*iJf1z+B`V+!nS*}D%W;#t+*M%
zE5anVGNt+Y&JCT(xzFrB-%mXE$=~y_^V#KBL`t)2F1r}<F)HfKZV|XN+iY{;-y*gD
zKM(&n*{~(k_xi3Md5PLl+BbwD*?nT{8{_RyugzXETl0DG#m6%b@NYUCwegt1F~(`d
zfqai+OlBx?bj~WZH8^&7)`Y0^$6r4$I<<R?am0BcE00+(OdER-S?F)6Fgw7OSXPwx
z;6M^*L513?XT=gt3I`;;C8A{X^c#A#9`-0+=gU6ueNm!Bps4&ugWihVy*qB{34e*y
zkCWHWJKP&pZVPIXN=_>L@mx~c|EKBAziCXa!v50d)@+_0X|2EgSX_+l%<_9*?IzpS
z%-t)~-zV$+v*IR~*}Lyob=l&7xVDOf<fkd89NyMDdzGiC*oM8U?B^WzmY-I1i?jWr
zA>*HPwa54KlOC%vS?ymiAuRX%<1>@L-`><)5qx<)G#~_j+T@0-2(p$}uAQ&<zwm_o
z69L}Jj%B;k4r`rQrzpPGR@{H#SL3S%(^3v8Km9FIIc-r(@3IqWwv*~anpADNpI55X
zdS7xnwOPg1`P6rf54J)3mKwYap725Q!`~m<+!GI}Kb7PXs@syg=wbi--yiqBc^{H?
zpR@l^O4Few^1KH-`a>st@cd;Km4ANo4T~4rJ{2NAF7B#YTjSiA?pYOg=Un#Uhtk&`
zRI9DxIK$ErS2DNfG)vvgYj<{Noqy_oICsOnd8cdHs>`m%Em>18Ulnrh=}q(L!GXfI
z)9!uIoFB&gcK1gA4Lz2p&D{IL>rT9R>RDBqUDCSm*CfxN+1e{Re&;p6vbuCKDN3~=
zf%&~oobTCh^Ky>oeOd8$!cA|p34PyA9s4@_@oi}SQrdkyebt@Q>khi7G37jyoIZOI
zw?s1MA%%Uip+{Vq%@=*Ub)h99o3m*JtJ#*e3#}5;;p<!FIt^4F9x!jS(qHw2dqYdZ
zMzQm)Dv!eMY%yIjSCvOmmW^dzuhySGFE%Q0aCG)H8nOhQOxXK9_0ji~-osM*ayf$A
zFWkylwAOUO2ird@w(#Bmyy$vc;M0Ud{o8yi<vJ@E+PCg}ptpTpT*%z#KgBp6o85_t
z$m%)0?cS{&vF5wZ@HXug+juNanQNEPn~I9RXIX8&9?{8?sbF0yQ}CmZM>qexp!4_S
zSFhI_)Ri&BX;<-DG&SbV-gtje5#PISiox?|o_VwGujTU#b~1au_}2aZQNzXMeKUW5
zUP;8hxzAs1eSTu`_vBY+_J97cChF2c_t)?KTE6Ybv$mV+2JH<#F*Z84Q#R|#n*X2f
zMAcj@-g)QbPK_VRm#4j6H0{Qjo<4(~WjEXOq?!bGtq9ZQk#&>^5_dUlaLFb6U20T*
z?4Escjt(ytZT;0$QQ&69vnb&F(`&c64^`Yhch&m(8*77|TF%KG%sbCai570Hu56V3
zm~uDcL|glN=R+>9-$$}@-tTAH`{V1+-0kyv*;52U-=?mTHMZZWW&7xY{(rCM?G?P&
z@7><3WuABM?(z#sQ?_Z{xw~8e8r8Ztp2w9;IX&BF-J|m<tNttWTz|8fttZ`J;nB21
z7BMnekv+YK_WOv&ukCCrzQW4)TIO7Z1-n^6%QXRpx&)3G6HRljuZtF3uoP~ut`yc%
z2p1Ih-)35P;(4TWd-Y65X|Xj2k0<QWxbxZ8`;>8oOZMB;YiB+`E-;XqkhsY{aO#5Y
z=Dj{g<CcBWo7XbieCm#;YnH+Xn0KGzYp?!!H7U?LudXsud1|5Ax;v-WNIv%w*><$F
z<d~aiy%>jc^XEkj7upmPWnNTXJG^~b$qSDg6LuN&tok(Pa8&;V$3vD(*&K6KIb;@!
zhrexQb5EP$X2YRk_500lL%mg7jE^0ioMW8L9_6F<Kv`}Zql(RB**y=BzJBJqFt+CY
zt(+axS03oTRd38}W0d_Ob=7yBnWem+H(g}Q-SJa*N448gSXZaxO_cT4qV@k+?#8@c
z(XIXH(b^k}c+MXA|9p|7bf9$}huOX9#uEBmFV`5h=*?R9I@;OFq++3}EK8xc-h{bl
zq__TKQ_K6hmG8ODp&hOkJ-1tw3nRqbayPeCWUbqJ)62U3u=!50+e_w4wh8*4H|^U~
z`ZdSw$>*GPU(KSIN`xDwHQOa`p00GeBm2{>T-lpnzb|^d#sStxesVf*`WdDZEXfm(
zu@_1(pL1OpdSzF(VWCC(+M|{RAFFEG1YS!vT{xP%@qwhgJ&)&Z1FkPI9mdlxv{qbW
zeq{Rh#FLbZl~1PeoC!T7$!wN4>#ObLwF@>ER<GL{xH?x$uIORq%(B?Y-*3BI&eN@Y
zyZx*4-k7Zm&azhUuD>j|sSgoAm3Gq$)+eskd&1jrf_tk}-hAG>J%^3k40^)mA3pN>
zedWwm`+TbPSQ0%vLS(1&@p6i<-5V}0HK+61Bko7V9M0|Boy(uzI&<>K)Yh-Ji`Oc0
zNhnIS2)38a+gPDy{_)x^pQCYk8g1!|wT}2~NcV027HuS4nEOoW=+W+(4*eOIJpRPI
zlhS+vs|O~|i8TmVT&M8VNV&xKU8Q^63el_E1ltm2+8ia^5@&U5|LoZ+A%3hiPi%JN
zbp5!=`aRlj=kz)`O7mYlVB8YNaqbwi>8A9Vdqst|Ub*#VS4Cm>+OsU>9}n=JPl&ma
zlx^FbzGsD#KHtYhU%$v4JIa_KlVujSb9#C2tI+pb&z#zO=D9+2dh~;IZD<y(7JGbW
zop0hMXC0sB-%nQkF?#)=Rqu@5yx9fb@5*JE+7fH-I|w|vcDXw)chReT26b~Z4rE)r
zR^EKx!oP=k*NVT_A|5T2+Iiu8)MVKSiM=P;DrR!oJ6}nYW}PzAxU;S3fmE1Yo~4fR
z_n6b%4X-X`W@TOG`mybhl(W{$$sfu+)Av9->@|*WKNaXJm)~e}jQ=v@v~-zZYiZ)Q
zof<2;)!wxgTD(vY|76J#BaolWVH{d_Gk4Lp$mB-{E*#DNUAgnY*;^I5dn&Tl_O5<w
zBfa%f+O?~vS*msz<n2FeE4P1lRrb$`=7%45i@bpKi%+cEe*4hgny*d!euN+H+Slf6
z5Oe4D?3p#M6~w<BUAuGVb=S8$XI^jD`+wu3qVHepoe#xlx+Q*6yM1hG)klH86;bEY
zW>@>_tv|ERu9~NVdEXy~^O_gnvHNzLdrLKMs@BUB+<T0)pQO%L7XRe>{j>I$MWuf>
ziPlxVe*Lt)=I8r6DW_h={58Ajqn&%WpueKmeiP&TmF4^IeTjWk>z<!-`V?$-L2%;v
zgnr)dQrli%v-Y0M{jBKqCs%)$@7rVM>u=|6N#r<oq&WL?*=*a6?rX=C=VeLTONG8p
z^;2B`^_of0!tnZ^2i&3yM8UT-gF^a5-wox%wkPthw)&{X?frdI>~_`D@|MK7*7#+&
z`eS}fk4)D8ZE<l!Pn*%(Z8Np@zG=DrqhMy%z8^WCx2+8?m{F^<eJ&H+Wj8IO&a61+
zqjAlk`%K7<)I)pD7(^w1l3yNoVY+1J?T~euMwj!9xA&f9EmITbbQ5jbncHA%qz3Dm
zOw?axyRAq+{$D|_&gF>Rd4DhH&Ds%NpS$<P$6Wc%b&auyzkdF7?M3&zu&s!kT%@aX
z=k)b2DR<ix7p(lQeY-Dv*18*~Pw+oCI&AdGPvL(~(Zcyi4m`R~;9=b1=i6(%%er&7
zE&G_Dce&5|ufzI>Y9D#wW5P<GDzgh8#_el!HvhEx%d7nD$;S<O#jdQj|7lh&!deB*
zCrX>Vx4tM?zfkwkKDWHQ_qTJkPTYP}32EdC3QmlD!!7#GblJ!4*XKB_`}bPp5j?TY
zJC;`sOC5rOH-&2-YJZ2;+b%BqR)ip~S-#|?c?YgCbD;=4);hKXa3S<WX&{`gq&wvh
zJU%9hA>D)P!3|qT<l^G8q%~*<ylNY@W;D<SDy7v#f_52Rw>`gU?w;Gc+{+8z-q<*&
z;2>|zmmf}MPwaOVs)hf1Z=tsS_DS}?MzgFZ1|PROzi7cqUag8p)3kSf+v>af(;7(T
zNiqLies`hS#*ACsJ{4c*pNWq=$;S2a&RX;1^9qEN`EPeWS!X@bM*iaw-N%t7Z}@lC
z6<o}-Y@W8X&suH$<5g-+vzqjduCZDunp^hPvsN*u;w__JZHD8wx=kyloV#09_=Z!x
zxa|L?yI<ZfwzNz7q^!UBVfOUTZ$6ZTtnuCa=415F$g`0)MytNRv)g$$t^54u1yjyd
ze}8l%*f05s<I=Nty8qch3V;*a-YzQ07cQ2UJ-*erTcYsTcFX$zMyGC^SyX>E;ZRHA
znfP+c@;Mu>ud|$5<@M6KLLl|-7x{B%lP#C|Yu9a+EMU~vTamVE`jcOOg|@JAbqR~S
zc^8~>aFVTG(x0uzFU+(uTN8cukL7y9hyUV@eoId;IPUqhI_-dX$cCI;>tAvKewUih
z%~ja?Kf#aZblLZrZ_9qpPtUz-^=#iSmF@R`YrL(qob~Xm*MYC!p%Y8na<8{kpI%n<
zeRaV%-eimY?n=Ku99Tc!`~J7Bf6o8)|M(~|+2T`k`_F5Sm;U+lZS#xQN2OW4D;~^Z
zk0|}+d&g!+2PjT|%cmPuyQ-f2W^3{8OR=P_#i~EE|GzlvlTps7{CeK=cj96jvhL>>
zeA^{Hv;K|mox+fHQE7*>`3s)KpZ<B)pFj0ow*KZ7FC_Zj3e63l{QLg{&vVk-JH3zh
zCM5_xP*(f<BHc&Ja<cn+yGdmXuj3z|TK(MM!?n|vyASK_+_Za!`~Q1Kzp!&;|9sM%
zb<aapqBy|t=fyX_{@*?j`gzsND8UU{4RWcP>ueTH;XbAF;KvL5(3=1MLyfmy+Ia72
z-1hqW+jJxt`p?}vpzHlAB8WXV>Zi=+d_#WuDZd`Ex5qW5I5w$p-YR{0aDtxgi~Zk|
zV@kd+_IX!tnqJ;%c6&pCR=KU+)SIWZR_eZT`LFE$;qc|(m-Ig8FZ-q(_xEzJ&#bL2
zsaNgZTFIVCy*}^s1h)3*@6TNHDoc!?$6C*NIJe<}a$M~fO|?DyT0%=(zr3<<@phN>
zzb};V*k|3|I!)zuua3UqoLpHLshA#b(Gse^|4h#+uOB}n;(Wd)eDQa`ocoVQ?fO*X
zP4&r)@v_~^Y>(bOzwhWG|AjklH}=SU)paZJHrbTRJ^g#78h4k3Q4)v#zqhRaK674J
z)_3!9{)5J{=^u7)KDAjt^2_t+okd?y+Wg+z+;B?wpWW5Xg`EC>-g(ZOvAc<vHT8>q
zmc-sYd!AqaGnu{ayN&+7{j;LhPuTRyZqE0+fjsX&Rqii@REsyKmU-^jp7V|=?5o6?
zPTOsN_^&)-?til5+ING;cYS&6-vqGzD>PcK*S2qF-#*oR!{p$6x9|E*rt1qY*ZyB}
zeZ}d@ZwG?R_Sm=1epfq#Q+8e27rTr5rvI%~65hr8@RIcTMbVy`p_iY1I5PWlM0tqJ
zfxwg5`Fe|PCn~>qdhpGk$v1EP`~J>XUd{Nsy+MI|!da%Y@Tq~@@)(QF<xXx~yWm^1
zs!rDJ=8JFbuAkm{Tzi8<;Uw+vo)>0X$<5n5({O$6lMk1@Zqz?k)0?qv=65S`<I;$(
zrmNBx$!@&4zqUM^*et9wbAKQAJ$}i$0?zGQ+CpDvRqAK%|8X!*xQpLvmaz5Rb3Hpn
z=iFV&6XySP+3vIp@77$jsj5(q*xlgy`2T^aJ!yX;Z9RgHzwvy$GdohguHx(Vm-pB8
zg`PGG4hyQ^zm<Fb^IP`o9v{&@=5kQ3^h|Aujqo+uv;FzIJK{RI;^tb+%a+%A`h7b8
zGTDIWtrOVQLJU5%T>O(aKgcU;deEQvwL8E5K7aY=t=B*QzqwmmasKP0;~$^rY)ed@
zIa_ci_slJAcb=&^iFgH`JnLC{$#Ugo&*v-VEV<lUx6)7ju9obSE<e?$Pt<l=?zHBb
z`nzS)Z^PR+_HDlTzMpq-=cY%eKNrT{UtMc&{{H*#V&m&u!{5)Y3oSYw_f7cv<ZT5!
z{QuN@>gxYl=bld8n0CzKUF|PfEuP);jxGP{eD8GIPw$`WN^ESkMEoj?<Ep1#503tD
zV{&=m_6)9KwZ4a)SAVa#ZBzbV{qeDl3!LQtmAc0++B7+0a}{@BD%avX&q*qtmsUP8
zj|@mY-KTQs@u}bk_qQy3YPnn|=jJY9rN=u>66LwY*4XW+zIo^=i(ZDuV~+^qYCdVb
z9dqhBH@38kEiI{Gue#!yc<xXyd;fjU*kAW=O*+!GaY~<_*Hky&l|Ro;KjU}KTA@;M
zeogQ^G2eO{o*(L``PX|UZ55fe*6Y;T=ck|Mth?IOCwk4W{^-6tpTpOy?<xE9aBuoK
zhl!$#Dwc+N{)^ZxaW~7oxcsSrQP8G{jr=#J9u<$guq>@mXz}3{!M2mk1UD$zwr2@W
zm^0Ja&4WYKtNrp?x59rFfjr8u=CtkI)fcT3s&(j@?9TUhXWjf9QT*=dotwLa0w20|
zuA1TSUs`ICWwBYeaigtwWxZX=tGjc>LcN4UWxdaS)}Cmef9}o<@ucs&JLA}yzJpZM
zdG7j_=XrL<q5!47ZLv}TiARH;y|*k#<0@SH`@;S}Rjny{o>$J-oe!Sz?_}1wx0mK_
zo7&}E;hD89+u3`Xf$jV97h5*HQ_g$)KYZ7h|Ju{<nshME7g>J)z&jN&w~m>+rksoy
zTY9-vc7=4Xh}V%zk7j){(VO?aJhfh|MNHjB=#cl3AoGoSp?)Vf-kqf4IcbUTM`^tk
zg*IK2ZY<Gj4D^n?vstWj&Ev^Oe`j3Mo>%bg<K1%Wn?Ij=$Cy3;uzAre`6yYVRaIx5
zovRp6sbBauNAt{2n^x`H(^8&KIv*LlQIYwyeB}3yr}X`j=6dbfQ6-x>T|D{UqxUOs
zuHe@#(|hz+b@j;{iQ}8{zXffN-RiVQ{-8#?uJm_<AFFwusl87RH%m!*exUBe4gM)S
zs&*p#Zip!C%u<<XZS+%#q13C5Nl|59_?+2hOFrG{QBj-D`Fz<Ap+6t*d@!z_*q8Gu
z=|^qN_CocI&yNUBt^a>>s)c$oUv`<p;{$Hn0y@3VTSi4nOMZPLHEr(g_QKAeVr4fr
zPJI7uUGllR<sXv%J?;)s*5xhI*6~kz`#6?o(Slw3pU>`nd8RT|AUE#h{>2)-!QUB|
zM|MQN6q0+y^?DNnbS=Q{)vBTm2kxm%)Bn*C*uS5vIe*dH&TsGTZZ!RFIe%_`bcKxR
z=>tg&U6;Sz%AR5W$hGQTc(32|Eeo<&?+P)vGZ_>Cm(S%3y*oO!Q}y%fwQrW_+5eht
zR;_(Mw|$4&&gw(2O%|vo&)EFPOX#rpMupva%&$dQi>kkcy!<l#@Us<GK|lIGHAY04
ztv$1%)%(WHUrx{T|IC}^`&;Br_Xmlm;T`MU-fS_|@or_6*1G)T*`$!0q1`W@Pv5L&
zIrr#nt;;`p-lej=@mhR)%icBG!9CA!i70QZ;OMr$fAZ?<Pv55N9PH@+R`~PJ-8oyc
z%qKd`E%y45wRg`I#a$NbV<gY{W`8rPskCZNPycl6TF{wXxym%Qnw!y)n>kk<`M-xX
zy>HgToZB3-QbCE&+Iynp&dYwReE+&`L59uu|C{Y|xnD(YYrkXp#P7#fJ<sL#wr38s
z2<xhIi0Jygyrf$E|EzZGB(ACJ)H9DR?)jg?oog+hdT`=j`}JM&w$K0kPhOl9{I1@l
zk=OgVap9-gcYe*!x>NbycZ;p=bLOd_AT_?8Z=|!`E6GOmn(m{&y!LWc)4zSKdG=<V
zTleSBVJ$psU2nI!Mt=C2C8i(2*XirQ!>)14a;n$npR@CC{xp8Ae|G_6sd?SWH}9u?
zIN5e;%ia|W?ztZi{CCrI<>~D@^LF;6K7E`i!#qdWKj~Z6vzl!^rm5MJD%{ip+Ewz;
zCl&H-v9zC+_q01m*Q%wbr)G89hWVniH!rC2-1j!H?d;xDA6;*22z_pMOH4Fb8$78#
zUi7rKXu{E5JkS1}x$wATWAQ%`wfC#sy4h4MKlG{9ez(p1$^R=+`M&G4<zA8td@3K^
zII&5-FDRi^?aTW*+wZZFb6&3Bd$@_&Iq!7nDckq6;|nWtGGv~Ic%<Jnm+r59ld1V#
z_57JLr~X=Q(U|%B)BX3gIXCAyJ^LsUy3D39C-LmFn%kQu-}tn+eot4h>O$V~JJs^#
zVR2`FoZmL*1gi(AjPP^Z@43T$s@a{3Rq~JL*L4QYUz_awDeh8PUgF0yoOgbI5_+^N
z&U1N9?5|g5z6yU{uiW!bbxTH7#*FN<({xwteyA+>^ShDRl6T6wmYu2H&o(ApHhk6Z
z`QTFV{^yf9=WkvX#T+H4+F+gb^WjyGHPa4#@xLCdsA#wSdwhne)bZuUe<z!|Tv_Eh
zRd|Q*^5z*rt}7VML{B}oqx9t-t9o<({L}R=X4;d!Z`M|wTz-A&=l7=7m8GRt-QS-u
zSn9;hI&+r$lEikixhL<Z87PY?dA9_;-Ch~&zwS+KO4=LcVt=mL<~qrrqLn2KvSdxy
z?`_lmTxXxPEzj|6{<2SJ&h#!xb-J}|>7F0QlnzC2ITL%-(yCEg`c3ku8{Z>0Wa`hX
z4!W_SN><wF(^X-vP`%gA`!{)4Bz?Jb$6&V$lkF_=)K51Geg3JnZt2<k=FW~;{&vyj
z6%#6)l6G#XwOM)j*vIp&(l>Xe>sxQnPdRvI=^D#*F4`w#D&|T4_VB)U=u!W1!@}6i
zs4M5+O2%xClJSh!PmPQ_Fzee{kz@Lv_WL$1eqEG#S43^UZENbu-wMi|N8i^U`7)RN
z(4pEjkvlq4qrXq$OnG<b#H^H#F3q?X(=|agwbjnL#g^Z@Cg1q2H*d`k!S(fjwBGl7
zDfT9XtO)AfR{MTY_+sTYnR%Bdh`FYJs4A2G^?d%Jbv52?d@bVltJ)bSPyTeO<9S=1
zZ+~R{W3{an&sv|V+?!SKqbBvI?B+j@RE{0rSbQ?hDz;$3Sy#_J3#4Xl4xb$H{Ketc
z^AhRqhDvs`Z->8sx@@hYN|@fc)w)hQ6U*YR@2*u0vDTi_^Hq}P&cye7HtgluzsKZm
z*TGLyt1FW$`9wGu`t9_H%MEI>Qh%CM7d`W}-J@go>scHsN_0Zc^)CN?w|0k-UA+J0
zO}dg*;bQuI)l=ssPd=d&H}A+Z+sZA~TlXl=I+}TByZzt$^A6a{|B{}~9Iz`$_?=|P
z+l~j8)3o#VO=5Lc`*0@xs>H25DxG`tp8qRXH+VI3A<zB2{U3s!uDt!pOG^Ba>9o8n
z?dsq6p11%1SI0KqLw$3GXV$gM!?I_&Hckq5`S;v2BhV{+mFM!?zb@;)zrW>@?z)G4
zrO6c~7ZN&jyh4t$eR&bmo!<A=UYkL~^LE|en>JN4&hP$pY+1DNO76XRalMm1J-gGq
z<^6NxnlH0+?(OdX@aXBv+k4cRqvsr$(+SFjOM-(u{QUgRZRDTK<!ttNnQCEhm5T8#
zx64~xI3_rMx)x&P>$m)d>&BX*f12Blb*q4)`;z7v71#X>Wy(^Y9N70)$N!$Yk6KDf
zig9_Vnl?vj!p;lH;))=3la@5U*}43F$gy>MdFJh(UcNnjvmUq7;qCx+vpLeQrapM*
zm39{71{F{H_J{MpMo$u1a<0YHLlvU^@+5>X&v%G|B?_rK)WOm!teS^yAuLS~$#)Qz
zr{k#te~6)6L2cC#R?q|^aIL7~IjLz1-HlwiVe(xD+2|81)~fI3Jf*%o{^#VoED+Zo
zm<My=1+K{bg~jJi=Cwe*IbUDJ*7h*mFHU@?L6y+J_+S9SIgvH@&a5r3x97Esn4CI3
zuXNLF1yGP#G2Z<Beeyg(g$X<R*SvW%`L4{|#6wQbogDgJ8&7aJb<e5Tznkf>ZNui%
z(`_FfT6*~`fAseGZ`2?aj>ETqf8Y4sbxv`ySeon=Wb$Uk#f~qlZ%m)+TIJSocV)GP
zXzZgFX1n_dAe$zY9P>EOAs{K}cXEZ0`fg1tXHj16#Tg-aD$@ly0v1JV6xKR#2}zTe
zB$X%Z>`$5~sJ>fL=%|wN363|`4~w7)_L8Ksw)O3WJFHYic)7KwSjzK4G)*EeA^!@!
zRu{J?$<#jQuAf4&e5&{HfW1MkT1Th;HeCft?32z#wB9Pt|9vjy-k$=gVlmy+$J5@j
z7#T-yO5%O*H~Z)tS8uM(S`aU)orpTH;2gh^?dueC7b{cItR3dL@0`k(zkT>A?CgvB
zyHmgHS!BCC?)KDIQ?)mx9F-DV9}zp_s_YisOmX?MbAGR$q6;>MYtqT>liM%vb`RIf
zx<B!mZQj%V$I}FVxTY@M_+@kI5|JWq{~PMf8Rh?{%rEzC3_UY<_sf=5zEM9USAUxq
zAZXPra%;n#quODcldtFL<zMZQdOoMNpxULvB795UxgGq=H+?w$ROQ;rubWTBZZ9;R
zfA0UB4I7+&b1Uj{PaU21>~res7X^ij<>ziryezgVr04fjapom&J)hsr+{|#|-hTO_
zA`V_&)(4l;cvnWOJHt6uALQhqfZG-m71zIe@=0CIU|W?%V{UfD&fQFc`<JYFa<fNn
zd-v_x*O#U^{&x0XvvU8^1Bc2hG85TnnXdl9?S13Ol#A~L{sk0giR)ik_R=IY<KaF2
z=<ULBTV5m{jH@fn3OOsiZui^t^ZU#Fj#}vDUi+{iH}d99m1`@1E>1T7{x<pJCsTEq
zcdk=4+~#ZRGe3B3dVkV3^SNrArT!~?KyI7lCv9!MSy^vl_v&_LfxvZYob3Pa+&?)d
zy#4c&DW*$O+ylNft-JI6`8yRC=F@RcZt<Uc_^rse;>%pqko`a7^#0_?6o;|>*mgf>
zk?`-2ry7p6x3?^usZ;yc(arB?+uNBBue>yAIG*RF@@TXB&QJGCC4Yy67wvwq#PDaM
z^vrvIOy|84_^KWEN6oJGlVIGe?VV@NFg*NdZt$g1dd1$KvTZisHCIm(zgV8Bv$fjx
zT<zQBn_o@}+x$ATe9h^e1wPHvl?4Ift6Z0Sx;nex;LrWl9%uO+e2VjGzwj+OZht^J
zetnzuF9XeQLTq-W%3tfIiVA=6UK6=_mSyp?KTiyw&x@WsO*i_Vo37T80{sa)`-1{i
z`*!V5>0JE&w`!T%@(=shhZR)5PGjGmn*Kih*B#e4UY<|?zTCVrU>i@b@S~e^XC0e!
zet*jOdnJn&dtG?7h+8vIXHu@`?ud<L%z>(18~@BMHQA*w@7C3Gmg{~QGyR_Nb^p;f
zexAzK>GmH@S4}L4<7Eh2`@3)I{X7M2>)CTpYEID*JGu0%p3<rc!?b_-oYmjns8;{4
zJGVNnm7AMG16)g4J)L{I$@}uWCmRc&7rnpQ8FFg+v9~i!=D3HOJ=?jlKgd?8cd7o}
zvkL^DfB3eySCeze8QJ62;rCD9p8P7vh$mymw43~gFHAHK*t=lYH@!5@|0!o?n|9vV
z-Io5}W{Ugy>WPWG)|ZlwNc-HsGxfC=!%FTM`!?xKzxO$tt(swD$lC(;^LHa>N0=GD
zJ7>4YY&G{`tGL5|uh$=Y6>4tqOTTjNlxzDBP7t58<JrxVB`YSJx^q15*};ojC2PNi
z?=dl)#+ZC>abh7yj<?e07?X?jdnWUJj$87`e*WWGH{yR9ec60<%}i^huNjQ@^JU*S
zDxTXJ{%wuKw)b9Y6J|y}_$R+DkA1-tf0hPyEt4%A;^sRVCIued`RUR$6Tc31b@ld_
z#o~nzE1wtTF5h-#Ma)FYpJLyC<b4iva&mfcb?M<k_G$*fhlw#2_jZ1HaivXLKlk9J
zso5tuQYOi9Y)CmOrI&xVXZ7vv%c`DsnXHcQFWQ*?@#(All~EgQ?pkkK=ziSn%BrZJ
z*LU!O%e=q8y3~ul2Y<hm^jZ4Oz0LCVHQ$88mM|?bto|k?wC;_^SB?e^p>=P)zOv5W
z@ZrFd(xrOK^4IT4cwf<S_30-+)8gvSqU%q7oqlxVhs~w}6Hh!nTlVSV^4W|Ykp}Ie
zrMHU;OBCZ@_qznV{d4O`8)KqqW<i~f=gF0<ayv7xEnl*2M<bso!=lV<`xIAli*M9i
zr4_na%rNs-xJs&{%g%_puW73TuB?gd7SoOTlkxi`$F~In)$c;r$4pe!zHX5F?*EQO
zrJoOf%e_DI%%rK=7Q1V1#*4hG-JZ#veDD8{2jBg4XUlxwxjQI`Q&Xs@K%-#os;M)7
z9}R!<<Ozd-n3&h!AM?%m6&yS~IG&!K!nPp7g(ZDzk5X>F)y?1EgSD)>HthNN^VFPD
zv6GtB4{|y>^$y;8U-#h6r>7dCu}zPTD%F?m1qa|<qomhGckdqF`EDDpPu;`7e?I~m
z4E?XDYFf_PwDDnkUw7A1oy;Xmp4atigg0)k4^t9!JsH%#&(+;k(BrlzgU60HNk;SM
z9NccZYg5rTbCsB?_=BIni7vYmT4V6aG;N)qs<8;uef5J^S><PKQSLl@S#H7YgMD#~
zOon$od2>%Rq`!Y~f4$vd-T$YS+`C#{;J&`?Mx?%l%+2QaDXi529S`G{?kI|>i1VGc
zCg$*LdB4Sey{o45Xq`K@_BN<eV=&bcw~@cUQN-l=y=_ZkkC(oixA*0eCGQds9iK0E
zCu~cGMB|xS2AAnSQa1-Ldw28nB++b-+q3;VJUC9S%$zXUdF2YBH(s8q6L$80Sd^G^
zbK;SormGnX;=XFNh-n`Bvh)99myaH^RImLGtv2!kh1QqZ8gZ?D``;gQw|%z3=)$BM
zGeWMZr7~4A#zzU=?p&0zF+R#sN^^JP9?QQ$<;w*HL#?)}$DiF6bE?2DQto({sd&-V
z1s~>XEHBWhsuXy<WB$bRrYceqrjMf9<e%PHVYD&iMHPSk-LT)st+h>-KY#G-i%--M
z`~SZf{;&BW=dAzFG<w~k5`_o1_f($t<o>omp#3S+mOU?=qD*`e%5TY~=|>%EH-5e;
z#Wk;guNbfJjJ+A0m!JJxZ?O8$#0e879Ns6cFXs7j#-x({ZzeU*kBhYukevAYv|Lbt
z;_<{|f6lKA(3{q$JG&sV`xv|Pp%WbiuR_+JI^zG#;OTyD%iT4S=k(&gJ*YHY9ro-M
z-`bUNFLUf-KOEIx6AKELC6jYLOHIr3IQ@IlvF*msKjbc*71H0a=;_kZ$Y1X}Yj&HL
z-@mk7{ZsB?F%zp>LAwG2UEbU|u${F(r*%#09`j5|O@@`HD?UHgHOZ<=xOiHtBuD(<
zoACS3Zyyme`E@mX2JeJj)>B`65-o1Os8)My$^SgN9p*M#O$UyBRe4&w{@N>{MfR1w
z{MVlMdh)4k%q-SoG28g=_a5%PwZ3n=1a}6{ZFLot-Pin;z3;l_+O)G#>ZUiEo!;y$
zcSxEWrE+cM(PO%|8}3+s<NM-wd!zA8(d_HY7uMZ$ZH+Z$c<9=_$=tSi&6=D;hnzHJ
zgS*zO(Ycm;$7idTD1(Qeud>>&BWl-u&U47bIHa8JQz?6A_eKB0cIo;B*|)`9TEuPN
z%z1Lf#A}*{-$W%>jbN*`H>SV+S3nA`xjKz!izWUYaS6*i-SR=>oZWt1X14P4u>y+^
zJILKJn^RqHK5<HpM&x$w!|yT+zdYQuQTN5|BqQgl?@2D3qa{C2KiuED=HA5BhtvyB
zf9-#|c3QQ0zp4Ed=k-Ca&8F16G=25O>q*AXhx${0o@CxK>!-uL?HsS}{u5JPw|}Ch
zbN;hW_3pvTii)esa*q9Cb~oAEn0>Fd!7f%U;Qg}YlGnbnwcY#Y-^RbID}A!D;vS{5
zc~Yk?gw6i(o%!(35^0x~cH!GE+}>r2^157p`0Li6pN*?uguOF*Ctb<T8><^`uc%^c
ztNi>#Z}j9c*=x7g82J9qQPkdd*I}+yXutM@=<S8Z+53MlJdn7PJ?!+^|HcOn=}-TB
zw%oqJFUC?YZ-&FGd3$TV9SwiubI+GA;OiTUS=aYJaDOg)_Ima{)!ck5U!hlWceZ`o
zE&t<wxVDCrnA=aIr6=$0pTEm=l~8q<=CVKKjI+0?3W`a2Ra`X43SH~-ch}a)ePy=s
z>;AMUxpoP}ne;5{{Hh^eeeL}IPOHqi8@ukNtAScy%V(Vx-uZJL@10NUtutzR6y97v
zW3y!bYJ;M-`!;u)of+dFb3e+Qqi<j>s}r$nPREA=p>wMpJv=xh8-3L3jN1Ly&ieQ0
z=iic7&~eycUn%Z+dzzOgwSV~bewEDUjKj8by||RqEi`4VZ=2@3oLnIk6S4f+$rb;?
zr%u||e(S22{G8wV+S=WJEiGNz{{IrL0+%@@YMwLg=Gf`$H+-)8c;oGHzHdt|U-W#r
zv)t<TPV1>VyZ0+uThE>_LBOe7MA2}cnCR)LmN$Ka6*oKwcdJ>=jrr$#HEnx-@8z13
zl^N?Sj>*)4a;%DHP@+cBCTVcjYLd#!>4v0slS__qaPy|dhh00F*LGyz8l6K<&i*@O
zpxyG4V;vm&UR7=nQp}x|Y?U2cDlQ7^9fx*l=Nfjox=j!~p`x1GZ~LPp=*{U<N~*d1
zl8ruHu5NP*DivS8l(clu19bvhxTpDrKTSSwb<=l(isvMixeagr{`Nf2A#mc3dsx}G
zlX-pT3=$VEbZHS^8j-@X(A96x{n$oWH-Aa+{KG}ymKvEoE^>wrT1B@M`d6`SOrQE|
z?QJDcvYMna_v56px652Mo_K6^4c_e^(1D2o=++O85g7_Se#ozk8I%q^e=WVlJoC-z
zQ+7AcPAHMm6cTcBsgQ6z+@x%_8ItidGbG=5YUTVcF5*Z@oBJkB#vGb8R5a)RwX{^<
z&3XJRG(UJE4_9&Z&18h6*%G(g8>IK$uYL1a&+hs4{L?Fsz|=3_VtN0d=wqk;*EjAq
zpIg&f1|4viRO0pfeYqk-&5h4zxZd?0*ED<{mvHLumE9|}oyF(AnFbyUIcFk&Cur_$
z`yWfw)s2^>*Rq|{J0mu?VNJhez;8FZ6IPF&PfmQe*W}eVp=kf0uluKd{r|#cccQj`
znejOZ-E$}Z&I#sn()jWD{`(^P_<8U2<L51SyK{Tluh}~5Z}gt~DA*eOpznNTZI;^F
zDzl|U52t8=vp}C(HfMc)v3y~&da?IZC%x*o$9>N3>iM>{{^8F^W62u})RVWTJ-I!D
z@$9_kr_1Zze@?!rmhk#b|IMKPMna3~DkYaU&o_1{zi{;T&hL-r#P4)f4=-q|ZmjH)
zvYXUvzFmJy!TaAUl`H@BMqPPvamuNKmEqu6;*yKsb9ReS?96~02jw=Dym9VXU(e(i
z6_MShfA`3TKdE+idiJ|+{g-+$E^$le*B<$QMoZnK-pRffxLdtk{G|1_FMQwqIum!=
zPue=q)BpbYt#_@0)}K6jW%nBK?RzZx-!jZzR#<<(ea3_-C-)rR9rSupcc$^5*LOZM
zy`K5u$J{NM*W04R%a@$Z^*2n+Rak!^L~Ot9l<eJQOX4P*ne163UfW)C;?o+2?*FCg
z*KPlsHs-#+wEgALD_KSA!jt?jZS@9~({-UIi{+P>Z>|uMy0ScW{_)6N>PGj^vD#Fh
zRyFbJP*+?ixwrlNlMD0Pqi2}DsfxO`)^F{tk6UEE7)rWN*;{w0cgvekJl@89GWUC@
zaeh=W$#8pLuX93Md#0hSwPDSx{Sp_JS%pg7J$>kK+c`DkWzSW4Wa{+y?k-*I{X1>T
z?vJX|mOXtt?<2cV)xO#lv60*ocUDLz_f>Nwv2nZK@z~AwHFJu9|6;THghTvK_#Wq$
zDIb>KH}TzFtBdQNs(z6xd-2P7Uq$Ea+t-%|HdhEql_Y&&kLH`Y<4-)#i;($ITUQ6K
zb~JZeXSL|m7FM43S9%zKo{RkPPUlqoRa1Q(>r;Du;|^>#H&a$roY#_e_s8#^J)ilv
zlt$!5@7|K>Hhs6+COhtH{yVxGlf#X2U#M=$u1}7O{&dQ}Lw#Xh?XA0?guMA<ZnSms
zyt}0HeV5Rzi?u(R<ZZ(***%-ezv{y7@X!QX<=vsnPj|nrugNYylTvZsJLAd%JI>PA
zmu=twlilmfx>ugnc7Dn-zJJW?b>^I(d{=*A?DpgR73t@E*xO#ny$#m-bR%^RpWj)#
zti+2GWc?n6)-MTPno)LM=H%n`c1JecdR)0FF?QXKRd&Yh=NG-%>ii?S`;tr88m1*i
zUoTqktoPHon=k9MdWP>ADdS1M-=A3Wrp0kfob{~T^XIv_wA+8m=<Z6%`PcPx_aaSc
zF-G6r7c0L#@A<V)w7IQpv0sJB^LY<7cYqT4+-aB6K7DBD45_TrOO8G^;p5ZCUo!T$
z7F}mlG5&h*_KyX}xP4@A&X}=fs?F`?>dg1%oVoG(@eQkQ{C75P5KR`_<LMN_cJida
zOno-5dDc^+<2n*Q{IK@yXjz+o@2D-ewL#gz-B-><9lF2!%j1W?iY4y}orpSl`tbBm
zCr&)IiC)~mqLi(9`P#qE$oF<`Jd!#xciI>a>!o}<-0S~GE~mCz{n$~%ifh?hx|(|A
zw@oNCo4}eg>rm6?=SGPIp(i3vZoXUfX*>6`PdUpyl+Nd!c_076d$H6+mGe8gzct4%
zs$Q<BlA`<I;r+cnN17)`-qqxrH2Gu)qnO-|X<vJO9*)&{VbrxT_EFLH)H5l6dbGYs
z%=rB`<9pew`$hAQuemNIyz`Z6)%QKq`Ryuu^#Ut%d*_~RDPQe$t!m!eYn_6dcN^{b
zeff@YveIMgx>MS*77_n!<4Y3WG?}lIoq6U^`}#-I_J<~Z+dTc_Q*P(T(yJ+A_axXO
zPv-b`JvpJisr1lkos2qm|0#?e3&S?A+tSnj^W)y$m0r8;_nv&)`>5m2FSEV3|Huok
z%Rj5jy7gtod-u0Z^Za=X`S}vRT{*te^kM9;KbPJ$Tj|c7W&6Ej>E{EAJg;h5=jsdn
z+N%v)3y|r$-o9jUU53`_@Z7c+T_$V88#@9tLbuxaN}DTeEHcTNdrW%1O5oz>%r-^2
z+PBJg%yWO2;eRuC^NcMT3@bC2q_hhMu9I6EwS7_b``eYD`ogBLp1QWqzjsCfNB>g4
z#cU?I5#5`Xr@etp<O#<6C6@in-nlb1&p^1+F@9a<H1Ve?XVU-l-1@VxJ~@eD(YeRd
zX3zfcv|4_$k5RDN+9glVZhywx*`uPS7SFQfVLXq-mPz-N=P#?3Y)DzQXZw_6=HHi=
zsR)!R+FDIbdf3Cvt)Ft?$1%kceT^H;3T@q1<qGSkn!LI>wd1Dz<}C(Q*;7|}O<fbY
z=kq<LZE22AZWhY)taO@vVQ2BxJM)##FLwXF>dZVd`|s61xihC+zc<6pcg5c7>~~3$
z@%zqSnUTG7Z*W|JxbS3snbQg1n$3;A&2g8!`F~IIZR0fml(M_pndJ}SL`(9G(~L6R
za;u)(_Mf;F`!Xg~>@r_V+d|(LHKB3QhgTIjuJthc6L7&`&z(>FcHBuBSN7{~U0!$K
z4Ua~+X&>)oH{;S=ww9v-`~C=?SIOo~j=$~HFCG1St9@G-^Zc}g(@cl<Zdj#a(skN)
zT}^V-HIFp!AV>a(>i7ERSJ?$I`km#_E;SX7lRRt9eQkrG=2VBWhABBKru-Csz9#;x
zIpd9gLHb#HOMa}Ivc%^_jck3EVSoF-tMi`)OJ8_8>-CHJ(qJv||Do$$K-EHtmghaE
zqBE^WWbX(#`>fm}e|g&m>o+=HPo+<aN`}u1I=TDiDY0#;#{=}%Er=_N{*mzGKV$F9
zx(|1Bb8c^J)%<R@_+oSAY$nMIhWa&J-HZR+v=_YD;wmIOb^W>^Ly_BiCppb@)Y@dq
z?_V)x;^Fp7l@(UK`I5)(=bz^`IqW4k`TZ~Nqf?YDE6pVjypuft;fVI;8xzc*RAe4&
z{la!*W9t*6pYJp6yyG8rrUty4rp&beds?C6bj8YrR|DVW-V)oUa`w?lzps)Lw`*=t
zpEOOfa<6KChIXREwSKlMa$5U+_I*lz)WLcC&@_{b`}H!)-nNH7NWV6=Sf}0m->yY(
z>*uXy$4>X?U!LwMF7vicZqmjqCFOq~#kjYzDd;q>J#CZ`{$Qg0$GSgPK2PK-;A*R0
z=_6am|J}cH!RG_}jg}OKo?2FS;_Y9zXXkd7^K_cq9-iR6=yNWo`mQ9C7T3$KSAN_w
z>$l+Idv)FA|0?<Aecm6wt^a@Cp{RmzaJYAMcPgt@az{6;Vn~^=M?F72M5Zuu_l-$B
zQ%>HUvN2VAck-%$c@n2wRX^{SmHe>Sakk->Kfih2{oE$Mmwm7A<Lm2|+7wRF7IvS0
zFy3I#*@?XteI0t*GoLJ}Db2m>RJ3x&o`&Zq?32njR)62veMWziS2ml??OBY`>7Tye
zGyk;xRs4sXYK3g==*bP6i~DbXIvkdi<R$p?@ctLJ33hMoC60fPnmFN)+1}abPwoDr
z{65pp^q0}Mt)C?>KGmC-@mc;~n7z=YWd{E~t9_|><PcLjrCM6lJtjxH>P&@kd`8uS
ze^35?-x1Vnaq6f{VBIINZ7D|u#ivHsANuMnQT;bQ()62I6@NwBt>FJ&?{<ktOZ-1o
zqxa+P;^P}99P@I!V>X4CS<U$2DvJc$^JT9pr!4;){QkJVjr>Z6<@Yw+S#!4LW2n%T
z9dqnsE;sx*wQ<T>zrTSS#2F{l2TobF)xw;~EYELo(A%gZ@_#~>7JXT`S<C$Ou?gwN
zKK)y}m1E7UbL`oShl=a>ZmwUIy#Q3}X}*ZP&^0ake)^j`dzNxf>wh+PXXW0#O3}r>
z%R_r=4f7M5w@mG+NmUas+1DfSDC6cwo3#BugjQc-F!H!pwLm;h#n7<u%D%svRqDK{
z4{m&Q;E}abH~4)tolp19ggx`VTK8>VDCr|@Ju6i5$v2*whq*>kac)i$1!Xc%_eCCh
zwI@y8|8K)hd-Xe~BhIhdTB$yL|AZE;iA&@ox{a#s9><^F{ZH1oGWAYXR9OyFX0#`t
zb+^{Wi4JV5?^VraWw$zc^}WOCwfV+LS@)8}GowB1HvDi8;W11vfBL@vYT~8&ZJP{u
zCoSK5etPfj3!f4a%BNII-)uRT8}{*&ecGfs;?GiZBF<lXEHO(aSgVb9H9t>d-$Li_
zEMj{stk(ZY5!+`mi#K=I1r4D|;cHW}*&I|trRKP=<T+sxaQxH7p4j`1_qU(FpRYGF
z^6>klA8(YCcCWds^1g3LOkDq&C$0IP4}NmC<*dK5Z1G-s_iDSur5&A7=U;7Q{pxpR
z=9??r-w!3N3^9~3^GUv9y?KUJrAaye?-w5m*2jdNYCR|}-;;8s`u(S0%U>_7vChkp
zKmF~bf8ps5<}*!d#U|gAK6{}$J}r$Q;)~IC`%gye{pTG$<G=jl!AU9|D;#<w8aT8<
zb(lRrOMJbw+ovL3sykK}oag-P1E(AQczHVF@A5Pil`G5tHb-aN{JCe(+=*L${nn`Z
zW6<#p)U<tn{E*vu<2~i?8ZNIgw>v8Qar2A2JFK>59l8AUrE2^7RZ?Yg%=7k5?s-_B
zb|y;W{%_WK8CzNy*RBd)?N%ye^>?P{ec5#D!>cZ>yC}xCeZ9YvlXP49-IFIAE4wqV
z?3;QpHq3CtU)7SA*LoR^S6z5#(bgk3W!t2U+pjJUyIUb;nsHb=u>R@1zDnC$UZo3C
zpLCbxi}*XOw%@$!^yfc&YgMkiJ8df)Uf}<@Ldx{@G2xPh?r-<VwM<+qX|qZH<l$QZ
ztKCYoOwUKxn$Mr{t^bqDVojc!AI@s~w@;ZCzSVBc|Kx+;&Dy^8_bxil@0=NG{#|aH
zjKQp_$0z2RzADx(d~7}O!V2m0b(~Lk?>``{`@Fb%b%l`7t%Cn;+L9k{q#j|2wwLvK
z&bD*4`t~>bTlo0z&yrp=>EN1)`OfE~GfN`U&!(82nS1C>s5=XLV(-q%2dzH44d=DE
zoqh2+t+J}5&$?=M-?uuMuRrG;H{EWU_)Yg~=9M&!&F3~;Ejq8sDn5U5@ut~@UR<93
z=YL$Bdvo$U$2XBnxvc($3(hFA=Vh-yYpU;);^EA(rfT}{ww{z%zZe8XUl*Qjh}JOw
z$ES9sa^n9xf!rJ$YVJ7S`Fl#|TAEw%;^V@9p7(uL+|apF-}d<D;Ab0aqSXWqMLY9r
zWS!;Sxc#|RzVq+Gi)ZdnaPbPWNX<5RFl+YvN9(+`o|z@R)@i%<Tjaftf76XH8-rJZ
zyLSKT0Tmc?F9m&DGXIU*AFfG~mpAjqfBUago_hDb*R|t3D}I~3ownC)dT@b|{>z5r
z|D+FX_%D|DeZiagHt#+a?yS9K_iE>V@vFg`TsFp+#3g#%+B#e4Xy3L6=N|fXLb~Kj
z;tv(97m$3X=^^n>_FQ~8xX-J?I`_X^@{DRP2CsRH-79Vt`-5r_ku84b=T%RtJ2mJ1
zgRa7b$4lQV=>A^({^<Ukb#~RTl`O4mj#_?rntQXRyeD*#x9b7c^aE8~umKb<tx&J0
zbu6y1p@>N;e~n;rNXuP5X$lDyZJJ$hhv$3U!ng15c+Ng<Z@=_)#J?E*tkU|KPa|7z
ztO$<M5`OpQ;00Ip-Ll6w=+B-lfBX3E-+pDzDxQ;;JP0>=^CRrclqHWtRa9C!K0JtA
z_UKB+%P+q(e|TowRj-j1RFAs$tMbee&9$q=oOW{^UVmZUfhWH+EmFi9nWdew3$I5n
z-mzBTHE7^&NkV{*(wrpqKkZ9YSl0(D-_dsIwwE}$<VUdjo!_RnHtU*lp4ysp;ehrE
zIW7U;-lEp<eV|D5oYZt!(@v*cIJo`3=kYw-jN;00tA9^@r@cRWcXRE*(|3wu`EQlH
zb^M(7SJKRS>U(wm<QGe>o~ha<AO3Cc{Oi}{<8FPb|MuwC#@T$i5%#mPfA^*79tc<7
z@#(yBMdAtDFMHS8hu<qucV7P7y6m-0+udu;&tj`DY`h<E?__-0r{^|*pV#fo-MNRo
zHvZ2X5eu*CNi%*vvMt%ONBivVZ;!rhjGtU&Q~G4`E@fV=dH%b-XI<Kr8XUFVX8x(8
z+;(P4CF+~!z48AXCLa8LQ{A1v=YBcc{+nd~ytVrG(|6gIoA>#jfAo8g;-1fP@4ePa
ze|pDzVA1l7drRc?*RV5P-my2-K5m9}@50*MLF-=!>zwmS{dnW|&QF`nuI$>udv^Ez
z!`$9X?q=;%SoMp&@5`C&`H}Q$>+7Ss|E)^?-hRICj4pJfVwcAE;P?8MJrobzI_ZCL
zd$jv2(@f{j(rresR$pn-w-5;u>wPdyy6VESP3vMR^WRwu&#;|hwtfHUZ_ectJ-?Sd
z{dTf_`s6)U-KX7Cg#NpzU7dgL_<^aG4t(qTPCohOziCI+6}ww@^F22gM(X(47liS>
z_q*l(SKWB!zY4Xl@#m91HhTNtKR@}g(aL`jYNB$dpR}o3x|>+EpA<IE{C2T!68ApH
z2<ei=R!0x-jmRqbp`3iIKmFJd@fY)~+McH`V|rcr{HOkk|0gQad}Pk2FP49>>_~=I
zxzrJPDfi1M2Q==<|K-@b>ffGQL1J}`wQ^}+xb;8%6MlQ+$D7MOH@GI8TB6>*amT^K
zXJ%N;`)^aqdRwfvPD7=8l|#Gq{0H{J$3NeE5#3Q&ukt=;(SdI{^G$l%_pLkMQLg^!
z=IrJbhJO|3#feyy$^Lxf=cl?MNoDS=7@xIawmZIk%w%`osmyxKFO@6YxaNql%>{#A
z&+~T2*-tWf`cz~XoUadVwf}p+yJzS7AR{&2r{CAFvD-I$>fU+b?L8@vTWc#H_=g81
z-)`rre#d?4-Vde!m4993US6KZt^IdLe$7dvt1IsR)H}B4pOt>R^wB@!^B?tYbx4r=
zU-3eBTX|KR>;JhYCd(#ut|;ezZ-1+AQhe`|Z|%z*e>?U_{^Zym8hz|?z1*=SvaDOP
z**AxUq+D3>@yw4OrT;`e3zqNyVk+3Xe!<mckv^6at}i>6e(KZbmlu?*?w|Z!nODVk
zcAeg-Pt}KhZmXAIUfm*d<LHyQihFLY*O>ojp@#poTjza^zscJee>@bB_D6G0K6_hX
z@Uc3%xQWtSe*X-*>*tFe6aU_}xiTSe-s;KqPUmFA&Yw&AFfZWVjx`*H$IG8XMm70B
zG0l;6Wwq-~1BEq8zUTT=tBbS*yq9)a&-{7MWSTnjMNv)Z+MY#y?!94K)=w1o2+eW-
z{^RPID4~V};%8!Fy0h1<oNBF};KN)M8}<6apN2%y&h_H6fA95)eHHGV9Nl<#L(oji
zTGLM3U4hC>8g+KDQ7(q{?`9=mpXmSBj^E(XMRf_|Pm*qTA|}6mZ+q;3`E~Ic--~O1
z9G-vc;+8n(UGbM&HZ`8jxx=M$KKa!l2H#(QX1?n^um17Ued86ylGps^o_h2+szG`3
zq`7hlM`G{3sPokI64Q4+*%2~Lf5!1!Z@9L+yVJKUm221Ww>#d>T6QFSt=DD0wH@l~
zZ9QNAR9nl_$(t=GDCRwxd-b7ZXLFdv{O6y&)iwR|^4ZZ7Bi3u~W&5_!^Oud?jPQW>
zdpTy6?6dj)PssPRcC^sO487CN(ifJx3Qe{<>H9tC*}0U;z2CN2z1hpTFv^EdUia4d
zN4Ay$IxRbr+P|5ttyXB@UYPk;$z|Q`^N-%_`K%?bs3yX}yD&1<!;ksf+vj)lop!8D
zy;te#+;Q@|gSr0cN6W4%?x`x(xH^Y90#s3{{AF7HZBF&d)iXbw%2>9}PuW<+XrF&m
zHp8Nqf42WuPCAqE?zQ!#4!2r~qT`}R<|iBw544#zsePZIEbGdXnG@!Dd1dINF6NVs
zHd2$CR8-HmX8zI7>uXO;TH?d7t(JK$*BZr6*^?{JRP8a({Wo#DrhvkuNe2vHTdbKo
zRr<odqI=V;LT~O}q0O)RZ`PE1p`W+f`}^oj<zsPw_;6=pqS=HwN4~A$cy&x}S7z#|
z>1|I`$`1ECAAO^2-V(gHY^w9|qgx(dOfNHd^K$!+zq>AmWL=!@F89Lw^5I>JStG1p
zTDI*qo&WT95T}5Gs&!K_W76uPyeoWS=i_}J{E2v0zfW$})<r=QYdmf-ZrnJ<^20W_
zqe1H;)J{(dYE+i5GFiIl^H#fMJWDTK+bo@NYo%)A@#P!8{mRpszq9SgH-4GI{Z20`
zOC=_5-u(0N=bIwd=2IR{Z=Ezl{KH()dG9YgQWWt%pD6C|tM1s@6VH0jItZS)!5TA#
zS#rZpj*t$UPxlyq7gu}|ey~RA$edgITfq_WQl!l5`<>a}FD1C8mOnlzJ}>c0N4mr%
zvu_v9JqpddU(fNr|3AC=N3reuzkJ=uZL_I7Buh*4XVps9vbPDp558ZS<8w;IN{y?_
zRe0iDm#kk4lY=kueUXYjzvB1&<mAncJ#rs;7Q6qM`YyEpT0_LCBU2V0W_~>LW8S^z
zi#z|MCp0Ht`FNS>rh`k#L2cglHt{W@NlBX0VhOjeIhVe<u|+s3Nt4y3jp-&MQ{{JM
z)y&TecQW!@?Rm3FJnsDD#p<7Ka@Vf>bJatx>UD?WzWe)6*Y?+YJWJ*OJU{b);>8uw
z9yT9*lxBTeZar($-}t|oH@1oUt8agF@%OGkNsZ`rJUQM;#~afpPdjq#OTnpQVpE<i
z+hlEdKjGOE*&J;#SIvf7Z(km;SypE|Uvu@V%R37h%XJoU+`T25`fh$#k@?L#27fPH
zxE-7Mv(NivVz{A2x6Cu&^GQGc1>D=QQ$zkMcXCC|J;R9to8>1Nb7iDW6nMAavgdbq
zO7Z7Ce_3T9GovLr%L{ghE0|hNo%B@u$+va44Es5Y`TS-a`<^|y==tLA6&`bMi7Hr|
zU+C=XOMCq5E9<m~ZAm)P;cHKFuVm7hXE(q1Cx3+fTu$!d-KSWm?LTRK`uy_HW{wVv
z`Fx$LE1&<}b5tW}f7+ofd**MxbYq&B-_5R_vG0QR{hFY;+L&LgvZ8uXW^JbEv)<at
zPuY#OKJl%Yf5!iM;S67&syvp(%g!W!oOFKXmq!M15i-83w|(X2``)LvOfxph#kl@W
z@Sc4Svc>%CXV&}NbLrjo)|02%NL2g4ubX=ezh;Z+|C(_8xQNaF`;O7iKmM}b9I+?M
zR#R}JOZ(x859MdhWZ9(D;InQ0-#MJ?Yma<twq=?;!?IFNb^WgC)8|(<ssArv6@Qjm
z-YKi6YWGt4-^WWjV)b7w*YnFC-t%EuNoG{Q4)KJ4OZp>bR}0Vlc`hg8PR|d6hE*{a
z6`N-2|DC;+H|pXS_wET#HslraNiw)DtZNlGF@3l1Kc(5Cj0)E6<<H-#FOCuva!&jl
zXR%sjr*nSr_s_=~eKuzZu3I<haL4~=y3;1kJv_~}UF?d*>I%WUS5jVQnsVmdsd?fg
z4bC#2$IDLfaPauZd+qgae^$$_{;}`6<mJu$@;p0xpS^bp-c}@>w`-5)eWnSgCK=Wz
z-e?L@Qc~(zac7d_cT<K1FHNrpew$~VX}42ruUvK8?JW6Ki*wqecVylRj=BBa_mpV=
zvY^MmuADDtR}z{Xkay~DNllHhX2^oS2iRZ4u_;VDSN?xyD*wM$vwTMvAKzW(*<L40
z6yDTS-Hn;NoBitoUl)_9(lPGOuPx<oYqQVtf9_~A>5Its*y|H}X9@@w+nMv$Hq{y0
z2OdvU>hSwNYq@;=^u%go&B%W>R(HO#)bIWByw9_5>F3)14Szo_uXw2c_oiIb#AUK=
z29KUaF@(IUv2GUQef+ci*JsC{pLaehug(10A88*LC#8K)`rzZklQ~?D2;G0vZ&T%b
z^)Ua+Le}~nSz^xdug*_R&bs*T+P*s*vRK%Q&ILU^wc*>`g<oo)A6OdpwC#U&qvF}R
z^PBn8jD9Rl{30p6Af<QNov-!HFJdmtsayDU$HK2_ZC_s>ytRZuu=D!IC$Z1v@5JuR
zwf3^JpY-Fts7%|r-|y|%>X}=d&qTUP{QLjrZe_)ks|UY-%ojVM;N6tS-NdQT?U=Ip
zjgTwj!lte!X^+^9tB<lnYmRumZf@-oT^bfsxbhK~SjdF10In4|{W*F$Vw_DAHh3r`
zq)qbt^lu`AVvDQm$t&-l?|L@r&i9??EscfOTmC$2`F*E~ltxR&i&`$8*%MB$+B+e@
ze%AE!`lpUnmv=sU>X|6@FaDzG;V8F_Tn!q(zILWwy<(92u3hHA^u1aid_D{DhV?((
z_?hd)w=lcA>-v|Lwkq#A0!d*@U7kK+;h$-=#a!JZ>FW>Si}Qt_U;g-|YL%XT-+TA7
z!gr_7U)a0;&I#4`+Y%2c?_XBR^dZ;k{M|y?e)ZmGkL}BB>UeYK9eNObdFRKgw_jGA
zxmc!n{-14sYOI#Qzbz{ki%(Yp^&)>Umc6;-`qV4+?veiiPb(tV)%k79|GzBbX1)f?
z!W^@8(Wfq*z3^holgBr_%(&J362s5e-B-K;+6SoOskOhyB1CV?zE@`JqQ6Tx>(x%Y
z`>-oy_3akES~uf5hr5r1{=X|fUhwlVw?e4_|6jeQJFbAI0w$F#+NlE`dQtJza*vs&
z4RXjNmA^a^u>Pqae5XZM0KDtj0$(nnGzGQ<Lu4UrYI+F=eDj8@27D^q3BGw_)JV^+
zfQ{<Am?5d_Qs<^$r+IaLJt@Al{~UwD(<xR<{w^}rT&^<r!8}=MSor<b+57XK&87Y4
z9yIB_-MQlSO@@@5|83^?|2Kr4l`8hzeNBBwyL-6ap}ilb7gyHY3ro@xSueyFvbe4}
zZOPVE{xu&LuD7e2+%I(Q`Kf22U3^d8CS6sZzsbgSa{fMD1$(svCru~6tob(6ghOO%
zeR8ba#=xV!F5$~^&)+LqH}QO*srQVZC*8I^6%h~)pSjET_NB$2vi|KW(EiEr^JmNA
z<gRtSo{Osg>&=OKxV+X^#q+;!(ak+Ymhx+FotU<lRX|!nbEjlxy6Lj8n83~l*RGz4
z*)Xej_ooy6yah!;##Kv9mtET@ogtEw{%-c^6*YC`=T?Q4WPCo9>GSuS&${>1d=l!T
zt$)5aTOK(@Hu#I8yzqi&D_73BzEE&$m;Kkn*4I8>-1L8gRk8WPri@3ct}e(ut~Vz%
z+gyI{R)$?)mK8s0yw`rc{zUNWNk7j1>^*h-fa4?;O(vPTGos9u);~*57EN1{pI)wa
zB*bfh<7Hz{>&<3UyVw7Jwb;D!ardc`x8(_c!c+L={pX+CW6QfU$HCgKS5NA{?#Xoy
zJ|&DtLY9Sj74Mom)h8)uWsS-%rmI<3mKPu2X0nd$P3+m#lc#UiRZFXXYq)&N!(Vy5
z4>ml$ys3Dq-P$bY!hMJTy;|g%b$Rl?v#Z~{caQNg5pl@bDrJ&=uj}0MqtgwK*?39E
zFDv-`^JL5Z8K*aMcWs{Y==GtWj8U-#hId!V{@eLh+Is!JBIcLz=>?CUiVJphEB}41
z%V3f{!{?M{X~n0n+dV9o`t6*5Fud;Ai?6pn&i*{PleH;QI&xD6=lZj{2@iIj{9V8C
zJNNsPi@S>>Lw8EvttxqPWtHKC?d@x$n?vkAT<7)7t(N6r{(ds*to`(-7uHnEuk%^s
zQSsi-jGZ~e&*$;>UdB&9zw9-Sy#FHUmsyA7q$ToM$JL8xeoM8Pd#UR3em7N)cPUpV
z9rdZTpMF{|!%yjU<d=iuN4D9_zdt9e^~MD`v--*YTPKwtySuINtNPXFlWLiFe@L@C
z%~4PkVinIaIWzFl=l&I0Ti(aYTwvY4IpbSQ+PXCd4;VjAJpSCL?z^|v_N?OvinD?(
zt>(wx-X`4j-PnJU%F7*=k7i`^&p$Ww^rIPRUtV3Fx@&4OM|$p)#Xq@c$h<mqApVL5
zUv`p(rQ(TK`sIaTtA8+;rsqEB{*yIFCUnu>6<J$!<^H$sKbvy#4gbuYS`)RSMN*Z1
zf1X&t_j>xd<YS9Uue^^FDLNXKb>isX+l5&tH>MvfdnT7xQ#B(-Rg8oAO7`)yM}PWd
zvKP&&DXaa<S}gu=_R5{lFWH;^d(h;by*OgQ$9+1>JwBY~ul)HrYfhl_3ClCZ+KCUl
z&hK2{UCmTj*gl8*$k9T_>EF&o?&*n-4cd2jZ_&<$ZVC(S=I-9Q_~14F9~G|`KL7qN
z-BSK?kN2fnqO8>nqN@U4PmyY8Yh3#DjcUkJwq9XvCV}XkR?F4Gtk(UVu9CTbPp?kY
z%;S>j+ZVg`J~}_!q15mFjmEIb_zfAsb|OzUXh-z^IvLu<=2#fIVzx+pl3AQxeC^Je
zr!-H#k^a_Vo|jPEo3`XC_oiQ`ZQJwh1DeymuHI-~tv})PD$&)Prf;3@U%3_1$GRxF
zV|{G(e;y~#Nh*H>+$D>1V-G)Cv#aF&t)5*|yN!BpwESAK)O7i$UFRdezHOZK==JsH
zFZws53Lf0JRyw<5ZG8W!cF&R||5axtmxm>Oe|I-^&Kj5IDN!N!cF(@c+CJ~zdymJL
zA5U6+M4;ZwxN82~Gxz+%Hrd6z`tm(fdCSC`r^||?em`Rm+b?sp?X2XIIYG}iJb!(~
zVkYlw<G!_<gjdA0RWpRF@O^BxGv}PnUv_W1_}pJ@QOi}|$8Y*Q_ln0d$9L1u{7W(3
z?e+hY$E1=yZ*QHu#<evwVDFWWFDj(2tUYn<%v^!!=F6|&rk!kGee+N5zlEhO#*uq>
zN}ct)Yrf#*)9$a<mRkd3Uzx3Px2R>_&3C!x$8Dc!%h^4>Rxz^PzPV$oP_Oi~cc9_v
zzS)a=c9x~qIqwJ)D)siyT|LL8S<C9+O-tBX0PCAO_8!^zLqzI$UgFh#$*i{{w`w{(
z4%U|2_A}v{+q5<36<3x?zHR^h;i!1@iS?1QC-+ZTDU(@KB~v{0hSXQft%v;fozg0O
zWW9aj`Ec*)o4-!kR<iEv-|!_%>gR5(5AO8{s+;yyPN{9jj;@xX&t9_UQ}gvg)|EUE
zul)S~Y{IKod!L9q{q_61<H?pq=0&F`)qmQ)^k}QrmBr^9`b<^?%+3?v^7wJ;{13<M
zrv>O*PTg{?cg{uy&tHWtpEyF-_{2yyFW<34!fAJLqm;?J8oiC$_NnizFLQ+YFZ&#s
ze#v6ti_bcHDw(ApzrOf&$s_LlcMqiB^ekB?%Y5;qN#DPY^JOOX1@reD+N<;Px_yLP
zsDp;N!{&3bFYazoYWaL)cKFK^^DA3-N17xXdGlFK^S4-8qwhLF#Z$|itIy^c*VAW$
z(%~z69F{2+7FM<teYPyPyerEjJD}10TI!{pVYw&n9Qd_LGbT{8UEeEiSN$LMjp}oK
zn$==o6y9o_nHN26-|1v+1^ev{lV_Jb*c5-|?)^H8=ic{fDxE+2U%Zl2Y8Sq(!~V~Y
zFBv;eEjwysS6EnBIyLj=Uh~YYe4nFS!xt1CjVWvOlKtOz)7PTda<ln$wYB+go8zt@
zw%uMk>Gd_mzpr^_nfmB$zSr~i{)H_ESGK>b`5D-EcyG<OXHSH}bpu{ixN3#B>^;c5
z|4nKA#o71&Db3ga_g8JcsGLURGu!VBeyh$#&fQ%cc26%%_g}}#|9TI)xTS>aGdw*f
z)y>$!b>t}<r)a^6nx6q0^LOlcq`x|8^@Rs#`b;d8r?1TxH-3AUwMGBcp_h#{*Vf<n
zJ3D3D@98h!MNL09ZLW32+oPtxUw6fCpL?#;w5zUTmCtSNs>_yz{PO23`p*WsepgrA
z#WYp>iO?xlzePE!@2`ii$#CwK|KsH`N#(DNOzIiY@Qq9l_gc1S%AR^6#1*QbSMcG?
z<{xaDA=S^l&DydL?DEMn&2Vhc=U-Ry|Ht|_da7Gro}7Ai^@h@uJj+;<yQXo8TfeD&
z$!Bf%bi+=sREtNp-}wRsQt~%Ea{R6SrhJK+7gv7z#Y1PWSgls)^~!Cl+EV?lG~?!+
z`q~{GQ-WU!baY#1bmkd|Ji5y-UU;!GUH-JO<-$|%H{E%l7M2?J=*q37*F%m6Y%eq2
zR=0KHUi&S*Tp#Dug#~B5J(056yF}H~zO6;-%Bj;Sf6rY~FWYFRJUwdZbZ?jNC1IPx
z<`iBkGkeG2G&^GJR;%Ue;dkoqzWTy+E53$x`~OuxF7DU8YF2kLyuD^x=)%y`yK;V~
zq+Wa;Q&Kuf==+DG;qB2!v^^&+k$<C+yza*>b>Z1NpI(r8bX#}L{ouL3Ouc07HD{(>
z-M%@i)@t>(@aJECwZ~7YHrYDMeEG9w{*ggdl5ZwXk()p53v=<*57T(pENA=LZ*u#U
zMsCjE9M09N=XyqcDzA^7W$LpmvN^c&)7R}0f1k1mtqN0Im?aukzq4_9Tz&Vnvr^N4
z&n;RQ(^mcS&E0*CH{a_fNADHeqN`lmmw#!_vE9>+OCMTodl&tC?sVr55p@&G@}I9>
zbLY|B(4w2W@`R&Thb#`WoOf8mvnyfa*Ub4*jpyxR&a9H%>3ZC0_m8B9PScK?EUw)v
zapLyTXKSlD#O`0Q*zwhS-yLcHwJaQYKIzeKpD^Ed%KJYlH1KQ2w17pur@m&ys7^j_
zCSSFG-;Lm)%<4;Sc2S$zR~&hnzC_^P7v;3NjdS<@zIA(V_ujgbs-BZd=E$U;30<xE
zR>;iwb+i7Bm_3zl7S+b`XMfKLSp3Y@_%UD5#ACdxH-G#;ZS&SL=U4wH{85_V(|&A2
z%}cf>cdhc4k1q>PhH@3%-1ty<S>2AAlcSdwWxdSq-`cz8>Yo3u4P|d9_3u0QDlw*@
zj9t&}eU8|=A9LK*{GLthoE*91QL&!Y`<!!`*MC)C`*m5%e&V%dM{T}-Iv&8VajO3^
z$H#p!7x$Q@o;{<oPR~~F#fe4z_UX4~dw2hP-m%JI>#MDni(PK*e)|94$@|~#nrN&t
z(yjistoWXr-K_trw~M$G)MjOMYL@tBpG!<z=QZg|v+BH=Zu4(EJu}z1H}bxiLo0*l
z*V%<9D|<bA*qV0#%sD8u@5WU3x)77X(Ch-Y<?$C*74gkq_I_F2=GyNrC!ep@Hxry*
zleaS3Gh|WZ;Vhk~?VS%+UiI1<*J>PfE&b#k|H%3%cPW*vOaEKW|NQR~>z`W32{j7q
zqHK44dvW6B)ASGp&q*Q|llm>5t#axvzLapXC~e<g&fTB6IyhA>EXZ`%v)t@9)6sW9
zozYkE_e+Wv-?FzjvGS_T)FmtDZ_3EFy`&|6clx{D>1J=%n=i|gUiUuaqru}~j{4dk
zF{(TpG8y~#@2IG+HjV!N=#-f2cAwjup3Jw|W;3g1K~YWatWt~l-%hsQ^V6MEJH@Ok
zH}<<~^tU%@r=MJ(vGsoj53g1H5!F)u&v(w{mv~&8QsgDHf7g;f=Py{#Sutl$LgLHj
z>f$Dqu<v{&(9V>9?(uW6A?re(P1)`|<#6gwi14Jo*1^$F)k-?FcMWf%p6qn*rPalm
z7MAnZ2;W`kEVAj%-Iz&g&;OVBrad=)v@>Sa{n_4M3lr0x|1I(Lp44}CQz7#Uo2rwY
z?~eKFn{+SCH2-wxnDAXe&q*pT_eWcDedmfaus@?Oe{$)s6ERx7=aRk7?JH)r`R&IT
zxi<Nx<t8R?{T{W2PnOP1JSRQZd-->6zI8^+8^Z6MTzt9Nbz#ES=bs|?zmHkbkiPuc
zL@TT5UiGJzUe-=bd#`0v@b;F0XZ;D)RYw+IGX9xTb39%2&b0FvKJE<BSN?K3Li*XO
zkFF16F72>stBY~?Fyp-Vri3`V^T&>DC~<M!c1OZ_dHyHKzg2Q8zl+=6-}GvV%3O!r
z%Z<M*vaZbh?0>hQgEg7`LhhS%`_jYgr{hjPDJ(Dg=(;!K;zDlSHot{u-sIn1&GYVB
zYxjK5|DD#L_2rwc8&$rU`(@VxX<w_7#h*pL8|3}#bMDHWZ9ebx?(*alSKeF_-SB4W
z#F)B3{iu?cuG?R`eY*4MQYv5Ol+^nDlh4Jjd))b@`Fzft|61Sgm`pgA8Jn?b{XT#G
z;P@ZL$G*IFnyk0o$Z~Vf=Y^_0dscA!?z(e$%Y}VxaZf+-#b$i!e&jwqu4Lb%uy>Vz
zjmzYhUVrNPrt_V{M5i?W)5$OTGLG@BIAA|%5yulzr`AW8D_hsxVwIJ47gXqSSSmFA
znTWv~c~+K53d>WbR<icgDV}-r%h0CG*<|f%cgMJg|GuU9@EcoM&zhd!x3u)AQ`-5{
z&)cSdu6%C3agH4GLEBaq=_4Of|7UzN74LZZAmF3M`OLrRKV$x$XOg<2^SC5!#%gu(
zf~xru*UWpBW&|FP&2N#ET5-TQ-9`4V&4xPZCG*65o4FiVBfeHDTJk3SaPQZU3TgbB
z{b^@i){MZd+6JrYt{8rgne;_@WfhyPexuv*e~CpkEz^wt-WPrO`GKT;;bGO^8>Xq}
z$sU{|=Dg$k%fKz`WZ4%Qol31gHsg0%pyAec{`XuxC#f7f_B}3DE%VRElMhYSv(CO(
zJ7b~pyT#AE`wcee3EVr_l>YAVyzi?gM7_SCcz0Xocf%)NyY7_!_x|GBSX!)BaQwsX
z6~FE@f6>qGnEqGt{NI;$aa^X$;+9@gFW-=LlTV8GhqC!Lk7Z$Z_@?cvk>7sjrv&eP
zsdJWvsaM2<r@L*v_UYJ}vtQ&(3Yr(XUY;pA*=g^LpzB9UQ@+@{UHq=XQM<djv^zfe
z3G??44wqEi%5_&y{Is;@%$?I`(vQ?Hs{HmUqDtLWkYR<u*8g{|o`3fF)AkP+iYry_
z&OfgGoB5X0vOThCHzhaTnOIRURnq%Y<<2Ue|36ZF0yl(jI=6>u*_zhXyN+MjSS8YU
z>f)DoqKChVe7Nyz5ktXgxfSyyT$@(~UeT;m3DJ_AAZk<{CYSr}{L)J&VyyPgJAdg;
z^Y0B>!t3NC8UuN|=Ld7XzAm!K#IkK;y4z#{ao4#|B<8)9Jo=`UHAUuaO&lZt-WkVb
zUnl<iU8&N0?rGc9f?tsvd$PpOzP!4aBc$Wem&=QPrj|zR|J=UEa?+B=YTu3T)zyi4
zciSJI)+>GDY5&<rJFD}Tg#TwO*`2^3-aq5esr>HK`888dU-qh5%^@)F^o1>t@=XrU
zu6(&HF6PgTTYsBZT{yLT=Z@cN_k<*Q-Fe5KX0+U`{MWK~+QzNbZG20Lx94r~*xeEL
z|FhQVZ?)Uf{L@dcDp%$mJIu4MO5tu@rQqFl(ubdzzC82i_S~2|^$d6QcC1)2U-g%0
zl=<B1Hl78p)AQzBeIMp_?hc<SoA2#qw#T0A+MjwT_ilHSZG-bMPwN@q4oHN}wV$*4
zb^ZS75tCFr?S1}wze_!|f&1l*Ngi7#3wgdZo*~zn9l34U4u^MQVQ*g^a29Tx9Jc$*
z)thH3^ErFh?V9^<W#^H(Q#`WX-~RFWr*y^7w_8)qcbLvy%bWlB>;4#zz0Q7WmmY6-
z-udp1+LiT!?lD()mF!u<ezthqhL;<@XRr2X|9or1yZFnI;&waojhE}Ie%-@2#gtuJ
zK-~R~XJN?d!0FfavKL2A&iS|b<ps&^r-3^;zF%9frSkfUMwp*|R8Z94#u&Z1p&~_r
z)@{?*_dk5a(6eJ9Q}nxa2SP&`xgx(N&Imm6q3F7XMTTph;`=pvOG<@$epT!7x{K=u
z%6>c9=wz9=B5q?!M7YWA+)%fRUnOt0zKM}tc6LXMl--ommFwGQZhU-T)7`J!hhuih
z)K&Ykmi^nublyz&$;PEqBABFI-+xZpX{X7><)!moSBytgNaL%!?}923&f8oOGwY{(
zzIgFYp)aeOX@lQg?F~=ob=gdg%1Vo?Q#}1ofBtmmz?fSHBC98b*gf6!=BoIO8^tF7
z=h$@K%>UcE&sy!n@9<0gZ$I7G#q;N{z@z284?mhJa;$&4ll`9JzqZ{HJM3jnr@cGV
zdgb-axo$_@9|=u*S#VY3-W<Ex{`aMP``_vteflbtn|AimP5vl@SFO`${5|LW$1qj%
zdu+Y-<ZPaYUr$b+@%LKul3bbdC(OIAi?>fRcy{ji51X%MX=mn~b$`5m;kD}ZhQ{9=
z<e$}Sn095^O`E#c4p!x_U7!EkZuD$#^L6$0)lco@&dZ;<;pp4JJ>7IIXl0iD&O5p}
zr~Q`P+o$k;iSdrS8&kLVG4SnVj?`Nivm$I`QfG4El@--Sudn54RL{&_%q>}$?4C7k
zo^SZHHzmt#jpzQ~@+!`4L&Tz^-^4E&zqVCduT^MJES6tW$5y*LOt+ZP({p$Dxs+?q
z)aG2aGYXqLrMn>i>NclsYjhJLn<bw8_jlcPN5J_~dg8kHiVTfy{vS@)toyIhb^O<{
zfaPCK{&5O>+aP(G%i`}Iu9`}J)@gr@x_(|h)N?P0Lv+#0GA<iy{rO)PF8XxZ?p*pC
zwiBG9Oo1gf>eD2{kACWZt@Ytw=*Ae)*aKJ3KQ&fnU(ld=nmhBd;k4KOn)6hzYfVe!
z?fYwKo+0A<^}oo68*Pi8OWX-O@FJ3R&8gNkO^fH-ubEnDA~V-}>F-Z3wlUOIyXyR1
zC0D&)#nXQ6j<CNwb_Rd^@_C2IuK9D%?3x-cQ+i-y{NK8sUE8$sZ9Xtv{`b#7KUDV2
z3U6;7r)}q-_NMyoc(X_7_^WM8{g;bm&0|rS<9L6aXO7qXf(JD@vA<&O&Hc5JA=L8u
zn`cKtbDaNs&ld6B)}8HizN|EI`?43aE-Z@l`EAyF|L&cMztkOL?ryvDW%fJveU-fV
z33rbPaNmz~+I!#Tp!??gPtM+!+Wg_Xaz#>X;KU1`KHmA5m;CR??{}$nleIvHR3_iG
zk4t@+`FDrT*9b55OB-{!PT#9(w4AA^aAe!l;ED&mTPH|ceKX9{JpIpX!scD2i#@l$
zme{<MIoUn#grIoUk*yCmeNMb}oBP}LorTYQ%(m^Huw|3cqzg=S^?~~5UR~?nd}&v~
zwYSBVf9GAib7e)(rl$crIlgal3fLRTlN{|jS%A6mh=f~7Ptw0rO`FU&+?aa)>t(K;
zzb;8w$!(I`?O`BZwftyN?OzRrE-T+8i884@n>T6f+5PX5#JY1QpYPeYQ^j`9@f&jk
zW2(49Zf*avt;j_7wfkiSyDm1*i!t~0r@daxT~X$%_(WW{)OK&ksv8T`+I9BZ&T%*_
z5of30C7J&uu(m`mcbQng@<<b2ra%=J`M-Y>P5V;+UEo@?$8uVFJ>&U(Gmdxgw)1<c
zda8$Qjq+q~jclA@apHd-^ZZ}a?;rIoTwi$nh(+G6)$xTI;VF;LysWwR$f;`DkF?_N
zpEP^^%$MHzqpR`Dt|SHLcyINPPtn(BOkNqf`pEgh!U;1fF6{Mul+<u%(aOqb^QFRB
z7h0aFrq8+VzwqL}Pd8K2k6(Ov>$c>KDAA6^Y0DMw+^OS!|Ib?1==rDLhVd85p9EO_
zYMr9u8MJfb+r5T7b7vj-VE@IsXhxXRV#mchwjUL@G5C>m?v-7~!eHkmb0;&Y9}Rq4
z{cZ8rt^FU)hsQsfuix`**)MO&vbz$`WXdA-1ccpR-+LbXwt426vuua5D<8+-zpyy}
z_@>_i*Qf2CSKV2^@0U<;d{v)#T{YWjxBI6~{B*y~v7|;rTsli7q@hKNojtj96~jTN
zvO|i-pRd(N9hj2OHS<%7+~IGsIt>bmtLkNrp5A_3priGbx@=ACCC>?4^Y7-=@O<a#
zc{s0D{WG`3w{VNS#}ch1g^#|xns{?NJKt2kPkp90w1r$>mu=j0|J{L!YmQd(td{f5
zI<s+(eGgaQl}`3Yi!%bOyOzwY{1P2=V8xT<nfJ9kf1NxUVpBD9(x+m6+i!2pb8hh!
zzDc;;CvfHd^i4~R|K8PI!uzTqL11$s*Y-PhtySf{kG{^+Ji_>T-p;=6>r>Yl^mQ$@
zGkf%-?{AOh%rBu!A9;#)`fJR*b2QL+qt@=t-#2{x8$NT|zG*X=cN^y2e_5cXxNh-L
zY1@jDUj^qh#g)Z8CoP%ZpZj0#uxWpK@!iAqOU?^UJ0PdDPOrAj)@lCVM&FK^%5h8L
ziasse9%C04D!ejMH0#<r@5NVCHm%>+H{Je+?(;8}hs+QA>MyCk`+BBLI(z2V<;K0A
zCF|KXtXy+Qw9{WFi&<!8{C>`l@w!hwU4LE_y_|c0xyH|6O>yU^mnScZ*uQN84<AeA
z>-~(YTqcIN{bb8cj;#E3aPvj6J>qFOQziag)SR`1YeJ~>u{@0yHTHMr+w0g>=7xRy
z`+U>B6X{+ST^~=j@3fDNQ(Rr<)Xbv5CKb{ydAsp4pGf5X$;{S&>cW4r+U(vl!R+iJ
zzSy)Ho#(2a|7(*THN-USl(|upbUMxKsq^Q*txh@>Sv;4e?wsqsu9NU$2IrTWJdL&f
zOxMmldHYs&=j%7j&GRnIQq}Q&b1L@vQju`Uq{q+X%N9R~`Z}rOx7OVMEeoIRo9J3-
z&)DIswlz@iylyo2+u0)WXP((hZ(e!xU&^cRl4pOXPoJ}T#_2=L^PcWJ^3bOCr{ona
z@x`Lx80dZ9`|!GdYVlp=#V`Lmn_Jzs>ps~n<XOGr<i*o+;iWGx@8;}3KjYk!DDIV&
z2je~e>ODU7XsXu40`(U~8+Eojp3c~nd;0mW@7xjdgFTKNt7+5Kcyh_?qRNy~$E6xl
zDsIy&TmqLXu`mUitdMhU(5Twpt+vDB%!a9~DXm<QTTRZa&<%{aT64c|XDiF+?ti=A
zY&Mwgr@Q29<;E|4%o-`j+JBz85#ivrV#0%UOmQ>io;}@>QFq&dt7F;ynSnZgHO_2~
z=2F~0;j8v%$=|Lgc}@G4O-S%l4Dh(t$0RpfC@sg&WbrL``Nuz<U(Yt&zvH~6>vg@~
zD)X)F8oi^ZbZ?KG^d<JHmzrs!Zt-)Gd>g@gXU;sopP1SiyWdIP|G~cU$v^MPieK7w
z{_UT2?{w<^UrBFiNHxBvT#{FAHSI^2$+|Kj)9rex?^fk-q;Gz=_jtu4c0KbB>(@@d
zj+}e6-d{H{n#1X~{o|#}mrc1bca4^<zPGYTCQtIey)*CLPupB{>#)tnPds|o%k@Hh
zm(=~;r7EX+Wi?A-=;Rgg+h2YE-v*jazkl<Xq_U(<9(Qd!??UF;H+O9OvGH$2@;ZTq
z`Q86^zrFmjXU}89YjbT|W=D(6pZnin@2~!pTi=pbXk~Lwj-PpY(-+w{e61Y0{^{q8
zA6H~%yZ_o|{p)W`*1UQ}*=u_aFw3hHM)oV`_X+Z}a@0yIP1)OA`gz{7MsxGYRb@A=
zUr#fC`gr$;9}@FqIS$|ByqqQ%pxWhqzAyEU<o){T*IUvI|2&><@MV7Dq%voxvl?yR
z`k(%Kb(Hnm^U1%87^4?0bbPC^?w#;yS=HO8^%9O~x30Ox%(5VOaz>n-i1X`5Gb?$m
zj(#dCn;}?#J~=~g&OL=$iJ5^tH_G1B)_l8a)0W$C!1Kb&NS@%l4$Bw(8y3&i*WIwa
zL2xox<Th!Iy12i3U8yd{<)^1E=@7X+ZFc>C?>hT$YF75b?pwV)x9of)wJy$b?~6a%
zy(K;$(0TRuo8_<TY#vMgZ%{lVW7Ad`+a@$Cc%t0*?Y0&&*@iPNGP@O=U%OXg`h1U9
zH=B2U-zInG<3aux&pmS`|4qMNbf5YA#oR}H9yZPUuJb*6_0{;h_{wW9&D40Rdw$F9
zop-LheZ{pE%FOTO{r;c0(cm*l<z>3k+?V?2lP-rzn3p_gj9$htr_@^B_Tu{&iQ(UD
z-tEXxG2Xw{<Locp7Z=J!*2mv0`+w<LfX3{*H+LR4v(!@Sdt)lR<MGd}Ij2skuFF#D
zjVgU!{<vM{cF@C?bzk0oG2s5pzmNT^q7(Oy<<~2ZZqHlov2~ZP$L?Q_ZSkU#%~w~<
zne#w#x9*#>oRcDK|G9i|p9EPK5_x-LvG`PN+1u~<)?J?h7MnD>?qU+93r@OpUq6_a
zUwq?p?m7Rv;*f<eo~;2pgC5N2a(nuOg}eUAJMb|IDxSXtcfeN34C+-dTHDq@#zXu6
zulx;JZ?E$A&D$G0yH8DJIv#RuW;G;91&uD?8G<<|$-jghocn+6D{|WTr1i6ZiMh&O
z@y@<3rFBU<qDjiiX2s9IM*(RjNxt#4y2r)E&H1#=zr?(6CT#RO#K|%7VduL;hQ_c%
zfRIZPrN`$QASvWm<n0aIX78-3cIqwv_oG(RAGWwFWL@nC(U>1zXAGy_HU0B^>%~5p
z(WkcZ@9$zt_!Vlu{=vJ5iu2%8doP{8b=z60=<x0P-(Ts(?ODZp_?hf^xxWk#>kGXv
zXIEOsyt=P`=+W-X>+dy<`~yD!dSCKwrE7oiW5upb^73_|Uw%AE|8zP$@6g`f_kHOF
z|Kqm2xX^np{LaZ8mDYVlt{qeJ?>KMQi+%Cuz@+BB_0{h)-$@uXY`(PX!V+(NEB<}$
zg`dsjx6OMW76<m#--L%x|E$c;SIhY!_$uzZe%iX9jMv+r8>~r<&AM*6^T=bBtna^n
zFHB6eXx{GrWm)X!kf?1o)1~Ld`+X?*`Y!TZOLmawzGq*BQk#~XuV|32+P=_pahplz
zy-vsE=Mzd#96cWOZvTDu_=7Y3k9;^C-uK7i_fLs;{|#Qblz(>**PHgV&8~J<{Qcij
zw}bSbJo`WW$g=YI$DQ}@J3nYu-?=g{QhbT=&ql#Jdyl->3|k9eUToa5AnIiCL)|lf
zk5{i*bE|Fj`n@f)-Xy%ca=qfwck30FFFo0=>4sh}*9D(=I;n2Q()GrxkGcBz+5HP$
zKchl^@~s$${$=+!H{B?f*qvmY?0wC0m2mxvBEGHOqGxNqnz_|lHh6m1xq21wDgU~A
zrdjv-=XSHDTy=lN4zK&G9eFl-Qb3m7<#l^GzsOq8P7e}J_$}l1W$(<uw_!%xUVqpA
ze*ay>^cVO3#+4M_JT!knxVqoY89TRsd0QSKetX*Pck<_a!+F!b#J63Tcz%Y>*Ud(!
z*UvU-`~6J4=yQDAB(d;UDLGu%Z4Eo??QG`Ut}9h#t~Z@x|9_Qk%f7_B*Nn7&uX_sK
zN+PJ6{g0XF)fBJO+j3vjon>BgLt3M-NU)#Ja(bC=aOTZTU(T%HdDgdc(z>(KmzHE|
z#kT){JwY<+<>d8Cv+uh{2;K?bCm$QV?9!%Ob+*5yfrYV=dn!WnkDdEty}cycqiFZ;
z$eIh6ZtBGCc@@*vyLYzZ-(MHEyQ}Yt|1F~ZO=SMOT4UYyRev4!AL^F4xK3VQ?z7Ml
zh3@0=-ru+7W?VO#T6Q-t?bCG;-N$cBbd%j<z5mzkeR=O|3|p_|hd<5U^B=Xz<z`$r
zn>sDG+W67i9%j>Zf2_BE$#b5(j5qVrHhE#M^RsSm?%253y3o5bTg-o^_gim0Exyxy
zpKqn<KDwA~eQ{H&mag^J$NrnU*WbT>-O#o6?d`R~wfWWEUksM`@9Rwz4mZwzva{rU
zVQyi3*X#V5UZ<bszOZ|u8TO_+N%~%r%Y8rB^Q%+UfAz<fyg0Ml_Wz@q+b2t!7_fSz
zJMC}#Qfnl8BI%xe_=T@++8&$?oX-nRH?S=8jVyU_T5i72{J>zzde6B*>P%bS{FnZ<
zOiko(#A4>y+3Y9J=-lm2*8To@V}9qmhjJeq7hnH)e}T-IJGalQDz#SFDWCi8=>5*z
zj8J~DH9x2H&T;%36mGKXlVjTVm0oANHcJ%k$l8B4tvpZf_ND2cF3p}VG`))TufM&M
z`M&H*P+c7K<fd_Z;PySPpLYE8c{9u5!(?`e3(Cz=;S4E;pWn@{*nLs>%$y7JT5MNW
zewnp;$J48lK6^It%@odm_FvcU@ln_Hmo|A#Sfj%+rK54vv;LG5!kj%bO0;#EU5$6W
zi@7tovwPVElRb0nzwYe|%zY+)b`#h7XD>HuOV}o=_M2%bH*%~`xVG!QVfm@QDgr4V
zJM!)rEff9hw)OwR^^VW7ZGL#kx}B+=w?#|fk5%&nO$Uh^fAqTjW}bf{s3{P0cJbeJ
zkNDHiJ->L5k!kss=hyvtmc=e+h}@jN_;|<i7x#b1MYV|=z6$pj{=VNh;`VO7lvF_<
z2C?_mdN21>e9qN*^;<^xw-|f$K}(-mbI&v+y4uUX+dB7W`=am3?>@ifTvOTQ7=HKc
z?f3Tn_qC4J`p!B3L{n41@A<{Ly^{9tm5zOrKR$Q!{iLAv^`Cv>zg@3?ercXh%oi<R
z=13j6QcmZ86VB{$*MBfs-EGseNs>DIw(+%WK5<8I!58aEmOnGaO8?c{L@+Bfs?F6~
zl%2)YayfFZX6utD%;8t^COKuqSw(J9UznmA8a446-;CNN=IS2L_P9&@uas(blhvGQ
zb*<=^rNu|%?}w^y%wi2$U6oLon-iK9#$NVDVfPy8`eR{B)0hfcZcaD;Un7`ay1ygN
z+0AJ4qgI=e|LZ+<ZBM^vp8{SA?YhAKUTWOi(>oVt2fh)qC^nd0s>SEt#68nwx90wR
z8!e`+ywsy;Uh-h_%Ku8;I``&oo3+mTPusLm1|}7iDIB3@f96KFtxvnqQut*B<AkHT
zgTpWUYddJd%Mco6xS-soJAJ+0J_V28+3%OuM;?@8;QX`5|NNr@4Ts&U^_24N?T;w5
zF+1MjuV`sA-F%szk}*$X@GBXPg-KQymiv2M+|PVg;(~o^<z_LlzcIT--*)|;ePJE5
zZ+WWN-THTv&1cRmuyn2#XD{dER6Vp&;q$-mQEKykrK{b!k@NrKgFV}4T>q1_>wWdw
zQ&qXm#WT!yYc_Y??{~P|{bI7s^vK^%hiCA8*|}uL`i+`%ZmJw;TYq{Nb8O(>-}kwN
zGRhw(%sN*yyV7yR)S!0W%W(<Mb}1ZD3)o$@^1I5OIi2Uz4IbPo?)p97;ns#ip4YP&
zS~yslSyoNaknd2}o8kIG;$GLJXMEYtlc(%5+4)R&QvR-PyQSCv*BvkV_0!_x!+ZTp
z4sYfEbV!;1(}mdU7p$_aoZ0W6@_u=I{T@)0Lz5{rb;8tuc4ls6VUG^|f6wRflpPII
z-{%q_ydrq^k2SF=lMY^6!;*DXGkaPrTYmpv?(Q;Hj~n&5Y|-1(KfJp;H{<#`-nX~5
zCSEw=({%9B2hDAKTm3yPwydj7Vpa*!yckx)G_@>McK%smrsoD(pXO(7s!*xDHSe_U
zV{zFP=4Shj6gT{6so1osOpwJW-Tu&q)xR$8kGKC7|Cyuvn{U*ed5&Sdlh$W)YR`Lg
z@Z`*Pwz}ZwMQQhIA3jZtyKO6(@@B?q=e@T@_P6b=%<yGsI%xFUOGiL2yECisuc_CS
z`2p=MH+YP`Ih^WUZ?Ld_Lg)2u3-31UuB<+Lu#_d;{_GN|X33JYNPmOA9S##7%$p?s
zMoGlu!R~Y7Uedd#Y<+oug5~$~D*k)B9EFYR0xbX5%=uBEzm03FP{ZAuZ|>C_%zks%
z!AU7}|MNo+vwCk`+8FHqE9P7FvHu(8ziyiL;nV(Wa@#+FS|>|5rUbONtl{yxquaM;
z@6rEjg4(Sf&P|!(aiK|a<{Ph$<z}2$R!us3?QLqSJ7>w?%Q?$pXP;d0aJ~5ZWl`->
zrmrrP-w6`a*Q;9-aq^MjbD3!S!;vX(H7<swu|<C5JenBs@<xXG?lRfvt-o0&oqssZ
zJ$*yPv%OcUen<T?SiECxf!a(}v+5H+tR}a#R4~Q=pSy6o&XSk&;}Snj(e$Z%7k2CY
z=~H}_zTO!oGdefFUw(7-_Ky!PJu>^Y=kyX)S&0j^@jEJKT;Jv;`$}b*VbZt8>jg)j
zYgcZ`@0{>%hEcQC6)%m@`Y<-hhgMfs23@H;t^Gdr(VnF~ZzdmH5iR%dfG)G~j4x-L
z&i%Riv^{4@;FUVAvq45THav8=J2U%or?qLTvdeaN5f8g|>0jolNB=xMzI4vN-*bNy
z^zYi@=i9<Ne`87Y$AxE>>fB*4l{VGfcR#M<?(NO{%efcke-~hSl%y>te<CgV+C%jd
zazWsR;FtRk&zS5=+jsKFPgl;kf~VYj4EI~i;GA<fb?<e9k0&3^%&87DemK)|&dujc
zLMxoF$DN(={Ymheo6G_#+Qs*E_AqdAmS$LeNo0E~adJcFO9v*~-&<1dP41Vuu|rXN
z?w7YRixoDj?K?0_!PS^~e#P8`>)aWV+;f83qy9&pyY(n9{cO$b%KNH!xR-5Ci~V?X
zYxG4UONVp&>?eK}H+uQ=(ewSaeCPK}^1B`<o8Ye&x$&x}9}k1$wLRZ{HO{Qgt-56T
zx%Ak1oxbniQYLK8SBsv?BILKT!~Sl))#W<#Nk^*{vaijqxwKC|_WSu=)@QP%UpUOq
z%dYsfzW9VzT%XLH34YHEb$tCg{1Xn}s`XwV{Nm<*)$VyU3wQj}5wrivB)#kF(pZK~
z*VZh{@b6+cnLArhzU9F_v#@;!j(nN-XP5iQ6?)w}lk=0`?9owZd{-M~^nT`b4}PY|
z;)*X*d8)qTMXtItF=azi;je$sJ+2k0`NcYJo_5yjYT=TiUzXbJ(pe6#y?;&o^^8Ss
z$M3{V=lxS2?_R%AVa_4n>04M6?i!n4e7#cl%g%Zs{<-mAPfT4~JykK;ZgJdi<BX8q
zT5lpwuQ_@7X4xglnEE=d4b3OZzdWDkAN}FDXTL$g`HQE(hv@yw4%yit_&BWK^n0s|
zMj{IPGW~yj%XACm5m9*Se}3b)bGKhyG@2~HIj8dJ;~v?NEe}kd-fFKbIQ*6;>pw@N
z<BH4wEz|lkOBcMmk#@)EUD&VhyXT5q`#zlI=>H+%S?--l*CzDX2COX8&Xcfjjn0yB
zwoeXzaZjyT(Dv4bGWQ8T%C;LNR(wp8@~uDIvG2O!n&UfFuB`B@IsC1}{<F2t**lwO
zb(()oyL5em07t;`*ReJ?R#%wC)cEgWo42HXclOO)<_?n``;8a6Gf147yLa7_bKh3>
zc=$X#lg(zZ;APjMY^LW1Nrw{Jcwf6sp4}9%RJ7c0R?!8v8JxEN&NLhEHp~f0&%3jy
zY2E&+M+<zlPu1m~UwHiQ`Hc_H-S)_?leJ9r$grEi9=~(?rR_(x*WNYVzwq4ps>?+|
z+IbaeT-(3YH?i;E*Sj#Ye}k#ag0S5Od+I+h2{oAhmpi$@JzRi`rDOG-DU6HfX>bK{
z8kHY<U2s+8mh6={G3jUfPw)8=EqTqfvE|=)<5!<&OJ4Y<pEA+m_w0EOF0Nx#c)Xyf
zefrU^=lSU;7F<m^%C<se#o3wDZO+`!^I*K>eMQj5Y3KjC<;R?-2Xp(En4ek-9tK-~
z=H48I&a014YyDq*)8c*RyXq1xZu7Q|)wi4M_V4VjuD+&gW&YJ~-H+E|zihtf96qmQ
z_}8LZ%(<#JC3U|0j~D9}DNI<SYV+|qr%&9rX}*y=1578n>0a9Lt4)z7Cs6c6+OxgP
zJCiG=<*FXWRTXT3l)#^|zTcZ8e79BJQA|JXYOjA@Ow^Xm@BCH&=;vkrv$|_vKX2dD
zB&`V{+kV^kB%Nu$_(rO(Wo}qw{Jx+q318=~=Gqr-eN`*`SKM`3e(SP#i;9*e-{#zT
zrv)<TQXAe@eSG4>c}gu0?;ZSeKNM8vt9S}NKfJ!Lrmmc0RqgfMZsiHa-$B)_r{L@T
z#n0v~QU3Wrd&h^VGm^Ee_jogwm;bE${tDW~2Q7}ATdP%56l@nSn>zi)4-1RU-~2Bx
z7d{C&r$oh5P}OqZ3&jq*i?X0&IaE9+eff)JSC^KemDVel@`p1d-_`oxzPDp)9=}fK
z53_GKZNK`>D%sgS^Wpp@JLNsiCg;l@IMMH4V&A8vKVSOY`DCwqo$oqSJSU0#)H)(}
zyKm;Ck~NDKFX~t=VR<`bO8>ll<^1V;>-psG-k-ZeJ}Ued)3XZ`i-Y={_xH8SueM)U
zqW1q~{f_s0Ro>0|$HAOE#bRro*kifsshOuQ-<%db{q?+x&WE~v#lJzJ6v7wMwc2B;
z{GawEDz5833BHqcKYefBfh|`)3BUWR@%LoRff>8sKkhv%%5S^9(#ko%W`^(FHiJL^
z#7tI2O<eW0KlwJu6ctY`^HY^Ow$GfIET3@ak8X>T;-gvd2c7>{tFBZ(xXso7^Y6m<
z8}-<o4An0`FXu1%I`6oIWv=e*d;9yk)zu1bp18>4V;OM!)PCNSl&||g{93TfmHkru
zgHP2D&+GFnySV)E&L5R8B1@UMx2J8+E|*!mes6d6d40XvI~xrDTlZzoUKo{B{A<~?
z7irgoj@|t(arxR?MUl44zwR7eY`!h^dXHi1mvr{xc`}EYFJIeay-jPazVx~I>~kHr
zF5Vh==v^syMEL*hdn$ek>FxhMyZM}M^<P)9d1g~2m46o=@p*rH>z*&mfB$&RK3j36
zZus`|s(p_(7|c2M#J>OG&Y#jZrid<z%HnV9m+_nLby>3J<>7+UDRDb=1RHvV^PlW_
zE?oIy?ZYe8#XQRKaR*M>1{kl@WqvPt)ORi4Kd#*Gi<a+v{PBClwmjp7UYaF4sx0{b
zu6pq^fA)Wq{qojRTW4?Pd@4S*-}-x;-7oL(ZD%Wbe$ShE^wL?yRi<8#e?8n@9NWFB
z-EO_ajlUl&+InUm-zBTKYU{ox`~MHUq-t#@#Z8X-@asq26&8irndSUX?rx4xs(H`+
zHDxVt@z*m<*Pc5Vn03|dO_IFLGq2XLKXtjw=2U0J$b(KrLW?TjOp1sKXVOSHwZ&lZ
zHL*#eZ7sozD!0|^tbN=the>Xh)U%De6PQb0hc-^1J^f9AqVc^`$ssv9#&wduhbG=L
z_5>x0B|)ct+I|<xyz+Vb9*az&&G)OC{@v97^kYtr!d!E?c(2(PLF-Rc?5ZC2|KGpY
znt$~!pC9)B?6_qFB6(UAI40Z?@IK;M(0S-?OwnnnxpPjwoGCUxbMr~h<#K<Y_V{+2
zE}mv-wm5V4GP6A8S)NN*C_h@#l&R6ysHDQg^}OKR!|&|31p{)jCVjS<f4#IY_S4^c
z((HS7{G9W9-+rIo@2W{Zc;w!_^?p>p|LCsN>1@^Ei%Z_u?RZ}~ZSOy}*KsmOR@$FW
zzbe^abZx&)|CyHOH~(E^&#6mgY5i@q;aX^p^r;E)drmy-w@Y}wiTy+D_Li$ZO|0i_
ze*N6=d4Rvznx7qW-=9-RyDjtV{pM|V+PU}J`EN-1#*s8z=g#TW?~O`HPTduc|6Tmz
zC3kFt`aPAsOERS+>*pSx6FaZx&)xYEpDKiwm+kzL%BQlYScu>Lztrn#f2SRJ#Cs-g
zPMfL5%#V9@-~6}e-OTW0^ViAFKfX%(6y0QdrhCW#cl@4%&qVVLzVAEug(H8L**$%Y
zS@V?T(|>k}?y=mcyZe4c>r~4I)4Ac#_Z+|ZaQ(*jpZhB+Jrt(B<KOV^d-DhD9W9x~
z+YUXD)QLBm-oA+6_<v{R8vU$iM+-$JPLn;>v)wM?w|&@$hy!l(Vrn?N-wUcdU%pXw
z|F)Q$dD~Ks8ZOzN?eHSy;kK+_J)ad`Yx?)uXQWjvS@=$D_CC`MU+Vbn>TWbo|2x;`
z?z=VXCGQ_T^6j{drQO{#SG?5Er-w6N&AFBE{BT*?xBu5BH@%e8dGo4DA>DN5{97|i
z4<0$Skn0=dE_0VByR)A@oYy+z-Q0|Pwlj$;$5@NDE#cu%v3V0+w&t!^80Q0Nx8G@E
zg|+F1Cwcl-@-8{VW~lg0Ba?ki!rk+IXZ(8P@2`C3bD)7mjsMM+0=os4JvZJpn$Bl0
zU7TKG*?N{GE8tjPu6yVHY8^wd1->$ie{E0wzAjn!d!gx@qayP*PTcxh!qI;2=}*(;
z6`q}b>hnLiYVibv>04rV{`floP>*8ak?)eHlZ7A0y!$=Lq>xLwx>RY|X9YL4A3;@W
z^POrWZFB@rA2iuEhw;<p8%0;9KRMX>V=L#O^FeOc=9Lu5EWBe^B;e_2B5K^xeoS3Z
zTGaK@hm<7E2UjE)SWI7ks=4F+RnBh92}k4tC&W7_PT2W2xaiQkCmZ9{gzwvSp1k~C
zd85+Y{mZADUT$nXGO_&Ho_#-xe#dT4yt%zwCzxsRFY(R)9?vRSUviyq(=L9spOfZG
zGhbx9nsev5%4a9j3h5p9c0bGu+P;h7oI{Yma-8~{6sxS)t`eLEjB3oaN(+|AtSH*_
zOq)44fA!kui3$gvN=FskICo_++q6Do!L`N>u8<gda{t1v?N6u4re2MoHnD1p%xq4r
z&s~W&4f@LU-`#aiPycvkifTmO-u~xxwoNzQOMZyF_2XJj|Jt8C_qPRv1@VcdPMO7&
zd4Jo&HSrDlBG>=io;CZ}qWyUf95(Vc99pli^QK&vrk1Ai+t&FLKV`jDT`hWA_L|u5
z9Z_cNM|!GTj<dTl7TVa<@Cw^od-U0M-q`hi+uk{!pI)#t*<xqI!^e}uA=GVD@%O6g
zpW6GL=d2pKj9!HNUiC%tpuqp-H+Ct{Pq}m=YxWuEy}AjKN8ZP4C*Aw=eMZ@NqeH*_
z6W?tP_SltTIcw^iuiP`g-^<&?b$Ub6(kqD%)fx_H<Yh&>JbSk|;xW_Bxf8iBo@|+|
zxO)c&6Eo*3>H6CaO?z`?^z@je>Mz%R{9fvLfvM?({`sdi6HNY?t<ld>eSU9a%3BM!
zKM&Gl_uXe;tFt=SbA36VT;!7jztx2Gc}=h8?QJbvr>%Nh;={TX&tx20Czo%tj)-KC
zSolfi!{n?LElkQSRi>YNi^4vCI__Yt%((V<{lX3i*pjri>S^4sN0ED;N}N8ue*dve
ztm{ACX*kd}J9m-9p9jTjem@9Z_DSxtn0(gGgU41cK6OfCt9eb9ZTOL!zs{ew2+cWc
zzCgF)cT%B9aM;CwZCm!_U5(JoKO1vmrJZrawg;xubSq|Y22PiDP;g{)<f;6|ylwr;
zzc+pe&R(v*<-+k$BX%J<wx!RzUx&Yn%r!HJ+^~bq<Jq<!+gmrc@;>$QK9&7HH}&|U
z$TR1=9(_!GePes6u|97B=LH?k9(jo)|74{j_CD6AE9X&KY37}M|8ZPg+&4k%`1wvp
z4yvB1eE(wU<I~ZHjrDU5n0=`<%fEYO-*!2LeebH1JRfb0S1<gQ&wnZVK+3b}DxZI+
zXPx8Ck(Xg<Jt}gwHvd$&W#~iC-v^#ux?^;1`i?chI+}|v?AHCqFqhr9r6h>|ZQAMS
zwvsn@&n%rNrku=Px#6`T|GXmym*nzB=bxXtdy4kjXLHQAES~ixw=Aw`R>V(lezSY|
z&zA1mEVNhQ0H^BIvpknG5}xUwJ!4|^BX!s2nM_JhpqqX4;k>DvCK>&4a>@=17hSsf
z)#hK!mrtBt$-7J^vE;1`SKlm$<JYfG58k=+?6w<rIunB9<rZ(*_V-NgZp)`p3gyzP
zzg^Rrx;bs{=~rtkCJE~#bS8WJ2@G3*dhN^2Zv<9vyY}yPoL}Nj^|yz!rrnt;cjv&g
z#oK<V>C5)(Z|Cn(`TMr~<f_wey*{1Pet4=jW~+u9kN<*_%TCYM_^Q|5p1o(6=KK$K
zo<~fyrr)scxg>jf#{RbgGpo%$y!tKqwLDjJ>)vT16TY6D{ipQ&QpMyy9~xWI*QP!_
zsKCbWxgzpox!PRO)t68FF`6Fat*~z%LoXlemYW-H={EFkwv=4+>$Te^nNsuan;SJ{
z_Z#kidiHwUlc(+O7Z#iC?v^*2aN|+$o?RBbXPPC~RAgGdoafo&m8ExQ^QP**Zbeyf
zE@f-}iBx@G8M{^DXosR$na;lnb6Qd+-7;AheYUeHON-HFLHY{Dn4;~zzhzUR8Qo2@
z%Pd#+m<i=KHFaM&H-FaJ?WulY*HUN6xgB#2+x(zdUG>Tp>)M68_U$dp?eUS#RZ8e@
zp3W_`t{akPI%3v_ZC1RnE7$C<{mj_kGu1!tk30Bj{=MV(=T~>^TV0zeKk>vB>&X^;
z4wCHC{<l?DpV|<i6QPuse9V}WL8W(p`!|1Eulv4%KK~A9+g#bXu>YI0Tte0_ZJ#-x
z^bY3MaK67gd7j?-235O>4|I(szd123Z856&wb_S*i6iC7WdDL6^>xmtsuMV0oM^H0
z{1M9V%tGz|CT0I~J7$Y?>kD#zH~94J^(*JYYL6u?n|B^v|KW`7VT)8|ZwHy+^!+FP
zGKRl+Y~3O8U8i1e)^YCcv`wd;dH-pU)cKLRT<z(j`j0xserJ;}{{J)U>OxN&n?jw3
z^?GbND*xXwPD<BJzcnS~P<3zWG5txFdyXzGdVa8{E9%^zP1cg3^&#<=H?ze*9P&OI
zq1$-mTV>0A|E^tIF3%9Ou~F;2*)9KM-P5@ee^zVy{3>EBy|}QxK)`Z!x^ZghU2~N#
z&-$9V&wu?9um2}6y;<!1<9*xL{y3`g@rQi6!KR(Ye|_%GEUC8p{BHm3IZ4{nepFZd
z{Mh!HMVXD~Q2s@sr22cCZ+_;vY`;F~T6lvx%NFBLmn4(}c-<uGn0?}tlz%g^xJX1=
zZcvk!zjyw`DgHMlKhk~YzT7Txg6+V88xzwuUBC76XZx(>Pw!ctY2LrXPIvp<&Q|6*
zOKP4dq^_D-(Vxbq3eBBGl5JgGr_{XL^g=>}Zk+oc)${z8<&K8L?!yuL5_I0K{~8fx
z{af+b-QNnC+xH)R=01z9{eRz{a=DZ<)8^?^zTMx!&!G40)3wRpH*1vW{hsIh%kdY3
zLOpM=+}WoG%jYY+T($UZ*0g_XyUx_f>FhXpp{P(00w%s+_~TAx&7RrTNA|A_+oKyE
zHQ(sdCccTgG8k8L3(qil)z0~ip{r}(+M7)|Tbs7_?3wfT&H45jvz6*M*e&S!vi*8N
z-H99T1>ST*lkb+eE{i9xZt{P8wb<D6>zgA#?%SSy(jmX@<&XJx=l)u9S0>yk@_IY(
zM{B84;gcA#JF?%Jx5V#Cl@k_U>ik9|u1@C_duA}CHg|avb$MG1#F>JE6T@6?7eVWJ
z7ngth0Xx*8L8tU+naDes{T(|rTdQFbN_k!n=RqCT(J?z{R0}j@1|-BjZ<T9+MaGG(
zMNfWseyb^*aVOu8S)larSC#)N^HxYZt^aspUEd*FSgilF&%Aql{-ob$GuytsKKo+I
zKZZGazowPS*Sq!W$?p7n?MJrFp=n#Y3eMNr^t#R$OZv3puIiho?k*+bld4@F#8<z3
zJ@@quNrMU1ySJ|08BjX!jXqzI!grqgaV3uoDhp$Od;I#ge`dz|S)W!HuQHI%vNrrR
z!63z=wpm7`ex~Cq@ya=C3z9bd5V&U9c+k%M$L)7cG7Nm|Ws6rXTc<h2QTW%ztB;S@
z`ntG0sTY?18OeTQ=3MuKtm-rNa`e7&Dq7#i5}oB0A||J3`j?~f`Ralhdw1w<;clL6
zEu?;frJaF6eyXR7V@OPSL)+$#Eu}Mm@W{C6@1N!UbNBVl-yWUy@$Edadf)ouH!<5=
zZBv)civOghf9t-)>4qZ`P1*IYZ+92pnE6xG{oItKQmKtUSSL=n(jRwl>6<?qvcGtj
z=O-L~@mAd~z0gl%zm&vfD>Xh)%;!D$RIDc)GWT)9F-D`JZjG&tC#@S^oHL(XQ_Nwv
z_3Qq7JNvF4ui25CbNJ7CH_P8<IS(#>;_KP}J1o!S+L`}Gr)&%)=O%nov{)srxmStP
z#Qc<dkK7Md*9+#FjeT_oT9x<ge#MaPyX@CBU-K_1SzbIbWp%e|)){Sb=eY9B`ignF
z%9iH>Y9-mx_I%wZIs6QMvtC>p&HwA(lly06Hn-aKxqtj{z~jyFOA)i;W<R}hZL{^B
z7lvQ-g8u0J-+J}z+<qB*&v)j_D+?ZF?9mY`+ONs5z`NaJQQnSu=J)=0tdL%p|5f`(
z)Oi`(KVfyI213RGk(1ny&EvV}U2OET@5C?pH&x$?-`t$!w#{EWh)un4@p{fxr!;le
z99jNwy|j~Xn`uj9saM|y%gs%C&2B~c3)H`HKR>bl%OQ1xneJ9h78W~lW!013C53F^
z6cn8Je)W%TlWX$dm-~MzP-CfdermbN_}iv$$<mM8%akW5eXA+s`K-(Q^Qv#IVf5*f
z|F1R9e|>UCx_{9kUzX%oYGvPQ_~w3lWaX@PTub@oyHCIQo8|YmUuP?s>iXv9Jh!Yc
zfyw#b+8-TWbE`;ZzT9@BpWg&(dic)G*FE%V{ryT%MB2~LKDYCf<qqZEz034?q${Np
z?bP0=R=&A2^_*6=z1n}36=rJ;3u7Hr-TUS*59j~iw$0nG=*+|8rEJsx@zkkYIrsmK
z`1uX#zn?EjV=v18KFeo`o&3h|f~5b;b8by`KC)oegwt>CHttrtbE<b;v46T?=JeU~
z<J7_pnadhJL|5)GyPvs6ad~0EzuC!4-u`RZy3Klq!0Y<VgVTPkczSiC-szQrm4AxE
z<i08Ev8>o}=K8aw@B8_Tx5Ve~(V3?9eUFY<+qc(e`}WTKQ{(fR?|al!X45@PN-t&?
zX<uxO->`ne%fH<5vI+9B5|i&NRlC9bA;bFvucL4Cfn!>F3AxfP#~u6`&e*-(VR+#;
zyX^js4v)R7Y`&$03SR#owu}AhzkMIG+^;WjsS1%zKCj7cp=}ZW(%mKH_AJi{OLY?$
z{?l9iQKqKWMt=SZk5|iVzwMd)guPVJa?d2?<EQoS?++J<Rr<3dpp0?D#J}s6BdotC
zhvabBr5(sPWUsQMjuqUosfpJ;vy*FoO1`H=bKYyG8UDV@68Sn5EO$!VS+<|tcjLmO
zdKZf)a?3B=ELdysT;y3tL5<$z7c*|R2$UyBdwF}$-ucqEB*ef@+)K06Y;Wv)ug{m|
zRl*G));o*0eeZvANIY`R2J>Bi-+xIwn_QiyY5w)ywGF?QvZ{af7cM>gb^6}=+6$#~
z&e+$M_QpD|HM+xmK)I#w`t1|;mw)h!vB%H<HSNJ{rPtfv)Tuj8bh+KP`EPg4IrD!H
z1qB6vE}W~s=z?;~i?ZHz(tkVoJ}>!j#?pZOqUoL~J?Hx;)L*=~h4;5)-;>`LpB~%A
z+1s0}ey%XtM<UVi;f-SdqJKtrZ|l!{=#ZznaG~P^9i{abX7|ZT@w<WQ>N*46Gds`C
z|0z~oppn=+ecR6#p}XH?DqZ!i|5^MZLr-D%yIGq%-UP>$?78@P)7|iCPbL;FYPv8X
z?br6{#cv`Q`@Sj0lrQyp3JM8>a6@+2g2l%z_vvMpJhuM+@WJc9>>7I%8}}Xj|F3V#
zoqWIR_92JoZkd<6(|5*(2%C+!R!PNfFFeR*caPWp#LxeCj@(ifF9>mVnZL1T=gMc&
zkrOt~w12x^_le-S6T2sOeB)3|eX;h<=|4?Z<<lOBOL`a8^n~ejbeyPf+sd_iIsddY
zHGi>g&g_-E9E+0gTN|Xys^mVdTJu)v<?YvLR%}=P*lm73U*)|0oZGjqgzc%A<ea+j
z3$J0L;iSG}b7i#NT`Ta5`^swc@1r6+kKY<I{as()9{<2MFJb*7r>Wnk);|xOzA62(
zmXY4hX9whN?b@ycst&hEozp(QbImrbGh*-4m?ZsmrfID)W9MzZ_Vc3Zt>&wi=`W;Z
zn9}`<4w-jV@6on+7PYnRANw=2>w<Sz$~Wg{MZ65#P|wZ%pOtU+<kwc}M*q|kzy7_g
z-M2aK>B(E?d$zncoKU^{cYIylt)O*9S^C}g?nU38!@r$J%CG1{YMl0BcDs3I=c1)!
z|M%VO{d<OS+w=AbHd;?6UH@7XA3gWPhSw+mJ~N56axuI8?&YHVmol}FQ`zoUZFy91
z{$MMYw3z*Rx9heaKeljB<+Xp4XfJtA*}kyg&E!&<Re2gW-^{FL$aQ*gwOnBDs&kX~
zmaAvm7Z#nr(D%b!S5ryp)87c24L7tlT4ipEyO&j(u<^>i$kaUVFK0bnj^EU<*){!Z
z^remc@7%-n+133-F4}1=tegGr=bRX>bE2Q`ebRq@`_p;NMfnK<XVux{h1&R*=O<YH
zHp^AMA5d(^>Be7UlM|8aAU*4ORb2eqS?pOg@57y3TwI>~ZxeeKBj(TlMqF#dWs4~r
z6Sr0+eB4#?bY^{tNS$>5<aGX~ImRsR<;S}pPdAIQ|DRpwvCy`?Ab<Ndk+hto+NCSg
zRu`;2J<q%R=1<M(XG3cqbfv#DeYoa{)6(av=lxfdFSU!g*?nWP_525M&K-GQ46aN&
zcgK6rQtAIcYWM@qWBR8bEjlT7*K74u-TChmzcl;{|2#D&cx`!f-c!v@=PQbnJs#U$
zRXgPLN8^uGKllCZ{QUL1zP<7(_$c{lt82K6%RgbJCXRJhhdYaV^XEK2k|}+#ce}TQ
zE$6#S%{$CopNKMF3r-Q=wm5r9dhK52oqkpKOZol(?D>}L#8g*#{O7Kd?>BAxvO~3J
zb9~CxKl6;YDVuDVlN=wPC%hh%5^M5x&+Po;yzX$#vIUuZg&P}$pT6zj$ST?Es}g%l
zbYiX2^f!yjN_uzvnRaIyOZjWJ-@)uBGxqR)^O8F6A6t7q=4f2OBw-f8!lhTkbiV{v
zXf!L=nNODac{hH#o~+VKp<3nqJ^uyW`{t`0*sjaCFW0i@k4pFb{~gi0N^-vXpK1-0
zd}p~Mpk&h9+eVhs_vW^w1*QM@yZa)ds$uKyVvRMof5(P8KE3)!VXD~2($2NtUTT?f
z75fF=xYqw5Y)@ODi_4uEmQD9I%E|ny(Z6|g+pO$spJi_Eoz1*V?+c%~<JHPf+^1Kr
zvAwcm(+7*=`agta7^YV4oWt9hQz5?Tg~iRbf?X^-zC0B6JH9R5V#@t5d+a{*ZdBQF
zGWq%Rrw!(@j~8u_zvKC8qmtg0ui;hmxT_|6gHjXwr9*SHcNlMHd$RfK=Hw^W?Q9Om
zO*?<ipFg?xW!Pq;cS7?@-dyP0Q!lr`U<tF}ef9kxx>PnQ%iO4+bV_^b?n8gRu%8T_
zW7g$gcktHv&pX$->zJFZtKM2WMdsn-<hVOk*(s;_Blh+z{42aO+o8Vf|7(Nwd-rx-
zzZZA(UA=7Dmxh0L>azdrzxk?v^;egu<=-|{Jhdxmy7}B{k+oW(|8{{{(K9<$dk#8J
zzOnhe!Rza9*Z(}9_~F3%SdK!y%>0A)=AW1Ea&G3ayJM7MQM>xnjh(M8(zWL#7(Eh~
zIGTI%?v693LP1R(-4D-F+-C7l*p_S?t#5VkaQB4{y&lO66CIQTB2O*+!qYc*{h>sI
zq>sEx>(2YXco=-};GH0)U03FIK6>yvdHDvHdlz45aOUqS`H<{?PE#xYOZJuO=tp^-
z3Xd;0&)K2b`QieL+MT)?{oj{=-u}f)rs1gmoZD>b7q@;r!v(5Z?#%kxRlIIn$$nc&
zBfbg0zUynOElT>trLe15C^?TW%WTERt`3!?_m(wDPW#Fy2;b42c3~^~&0q<?P5x(h
zmaGn+vnKz#$hFBUYi;z6?OA`DPd^{}hGF@o$SpPbwe@cww-@GrpQU`6%gAi=hXz6R
z2an~QrXOki(w9>;XV%^|t#(<W&t#S_*fXUm^!>)I|5kOr*tb|xxNPS7+ytM=YcyZA
z1=QIs`?~(ZZW(7+*VNL--QrqWoH@&dUx1tr#&tPIpPzgD`0krY+ts2TBD%AJJEge3
zgH?ctJ5vx{9zpY^1^ysG5I*9oc}G|f3JQY<NXx|k3(ov3zg(VoY^&U{{`0%0W}f8#
z6n1Z`9H`XjIPpL4|LQ|~FaKWs;=`QYm&aE#uCNJc{r)~jV%E<esbQtvUl})8MgB?@
zmHjuL_x(;YwwfmjyI)<Znwl<qrgnMP4f`7(>dv{HUwiJB_0^QT%v<G$Ygg!$8T`#R
zb4tIR@ts||Jg=<a(W=|~yFS*p|58%=Bp<e=F>~?!B-elacQ;P`GX0&})1}V#Wyhy$
zS)W?<)4%Zgi^LNDH}2mvvop+opRSy)srh%uYyF+}pBO;n2TNR2-6OwV3g(fX<+S{W
z$gg|GlYj2+nk{1e`z4bapV!02t*O1z3ZMVp^pUacdG|Nyh3PNHc{R@kmQH{D{!w7q
z+1e>nrikoP?|-)LzFzY2nWv|0l~1~NqpsxDca7Dvw3E*!e0xz>^2&Vj*K4=3E8iO#
zZj_%}7xepLzC`W&$|*D7$0z!%?fDtS|DZi6G9mqv-ixZ(!=~%=(zucqT-y3zJKwQ=
z!M>Mx+r(Zwo6a`7IkWWMiBp+rRY7MD@xSfyHr?>wPdSbuUA8Csox-mDGkcSHT&kUy
zdRvsQlbMufyjgAILVNx5x9USIE9+XD&*-U@`I=mMmt^XF{r1k!@@(Jw_w4$%-sa!x
z_4-Om_DuIJ+IkviG|2Cae_dx*^XTLW@yB&f`eKh4Ot~&U_h{cc{ttI%pBI)-V$3#v
zdWz35|6G_&^5MEKid`KY9UiAYZQJXub<*bdF`iwlhga&ZH^{vvb8CG?@5#i5y)(Y-
zKa=?Ecy1?ep4HRM@1jm@*+1>`g>3l`b?Nb5o3DL%B5Yi#_=@@2w~Z!RvB&zR&wF(B
zQFX+Jck-QEMJ8;kku$Dm_MYaaxNT?1X%RP{4}oFJpBX<)pMFkrZME5itS+THS61|?
zcJ7q7JHNs#VQ+-bxqIJd{5|9o$MLse=XO)M;MbS4!ro1l*>3!jSNiR|)v*V^tvvl|
z``$9PJrSE<tvNh9ROj!qi>r2Xsc*I`nPhUsMV^29YdJQi8s3=r|BUK<mX>#q9#Q$f
zdPV%hlvFVv=`^*aa~m7V+|u}rAAN0Y_PsW1<Jz0=8ve=Y?6~T&Wjmw6gQph-p3L3H
za8YqxvVlOt%DwfsPR{aDHV*c2sg~y8F!}UELil34OwOtuyS}Zr__um3DE#?uEB^a;
zeeIj|wV#cO|D~wu-8mI~-uA=>&hp7dU-I6~+S<0Jd+XEB_fnHKo!;HW@XchI>izSt
zcQ)A07v<-Dysp*#wYu-MHRe0BFDzbD5GfS?D^kn4iOo=J+qyGSX@0YP?%yi6Z~yx&
z*68)U0NvXMn4Qx<Ut1PF!zj~8v%F93>A%V~zl^3|v9~=MEBsC^^~H->g}ZuA&)VEL
zlmAZa=XbAfxX+v$#iBQP+2+^co3!2tPP4IFp>~5g!^mGN?JxJ|6LJ>Ko`V1HdFy~W
zr2iuYljkL${3590%KGTK+JqYugC%4trkv5w=DxvoLeKxnQ&nRRzRaloChHq6&1N@V
zxLKc}ZezKT*0!GDpHF?cZ}V^bXB>abzDEC}qL>b2AkV+AJZhUKhO+CKJNXN-e^GfZ
zFMVR;?l^tr(!+I0>?)V`&5Vi@<DO<F_NVDkhrC_u$GN9|yb8H2+POCHHOKcZ*`Dg_
zoaVD{{+H(8^xoWfb+#`<XwivtOTJ_+yZ7Ajs1CnfPxH?A7B}Mlv%8wUU$b@c-OFb_
zUpz3iY|b>x%9q?TZY?hhjq(24z3QZiv?o{DPO+Q?>Q~?BuW8d#pWP?@BDu^Uud(;S
zPP3%@TQ+Z5uxsDjrtS@YA8RGWZ@HLQCpy{8`oy~b+&o%mAH4k)n~|(=E8^_GMXNLS
zw|<NdtrZm9S(cNsZ+Fig#p0WLUNLX0|Kjc@s{e3idC~fHyDWQ7p0{cE|Ep5x*CnoR
zi}!pz<o2ijr^)2khc_Bs3Mv=2OA#>K8m_}QQRUy4%4@kd&K>N3X0#*2a`XN2mzz_x
zz3pG0`+PcVL+xX(dA+yJ&so{ON$UmUz4)(;x9zJYKH0;1CN6yU{u{Fn?pZEYWbv)g
zY-wKl^QPY%_rA%k+}39J=Eob2jdM>&e0h=bYZ=et_bu)-x4*sg_oU_fGl>(Ex%B_8
z5f-a1KK%<+H!ZokQM6#2&V&!U6xRF7eD~i!{RhK=i(4vw-|IY5_ffH%@5-LtF;xYU
z+C@SV7u7dpCbsjgJ}bQ5`<@7&ip_?OHH)X)zdm-Un#I{`+eWS1Pan-(yT(rD_=?*#
zv+p`QT4ka=b?wi&JN9m`exsHt`Y`U99s6%(ADuVJDz}aw_^RkO>6UauR@l3BYIZlz
z_&f7FNL1Ljy>p{Q<#QL)0N-zX*7}t*B5o~Ts=svBo4tHxt}`lBjy%0J^;LLC@j2mJ
zJL8O{cHCQ?<|?OpH6=7`vk|x4&zbD3#x@bRR?doiZ{e|?$>7ro7US%9hMWKHx4B_)
z%j1P7yXI<{Icz%)I!royvWZ7sm2bhJle0qD<>S`ewYr`3TeoNb(O*hRMQbCgdY(Sq
z)!C!k<@i_m<VmY*k6IST9f_Ftzg2&Ae8jO|`}ZE=y02+te=b!hXv(oypmhNciga}v
zC)O^?xX;GXk$fe0;ha;pHw*5|96Qn3++o1{qp13SUW84xQDV&USx3vJ`SI*D?U|#W
z{VL*nPU_#IDRR{oogHQgoZb%>#`7xeS!es(v*^>BH}_^Z{#YNE{`_0%n(95uyX)<{
zuNP-^Meyr9IH@aJ`E91-*?p6>K)H8q@VWN)n|?3b*werF6j$K)O$lW(yXQ;zp0X{U
zZ1h^?aeU=G&a+Q5rdbH>7XR@5Y37qymN%&>YvWH`;*q}Ay)8}a%GK8=e>86R_x|PA
z&#(4e3HemjuW)nw%um-!=1JQ2#AzOWG4)P=od1%GrO#sIx-ysLXkXDfwD-+s0okkt
zCk0*lvNoMRWSzbGL*2Tx=yl&^thrA=yyL3z^VGpB%4}kNMuoNBb0g;N*~72))$rQ)
z&vRdyA7`8D#@ydyGWk(H!{o*#|J2kh=hn;!-)wbG`+`T%iixlP@|L_!c(k<8ZBg-@
znhL%TW*Z9@34Xi%@>jLA?7fl=+E*O9)VF-j+xb`Qc)jRjVZn*nr}ZtqOfooqI)$<Q
z>#M`I3Q3PH+oV+XtKZ-D;lkzQZ0DU)l`Ew!?$ok4$82+%A{TM^&3&5_vEO~tZrDzq
z`7KT_?0R{q?{&d9yRz;kH6A$NeNJuT42I~lEvr6+=v{l^S5jQ-ZmQHZ<JYIuDN`do
z{u~wd>HEs6v*rC~2LA7Q38&R}7O3^6Ka)+q@+MQo)cmH9AZX6x<(qAlKGD*rdhYi=
zUF9FDX?^6?{<p`fely$D-Ir)%k$?Qve(&`HpEIgVGym*PmyFrhQ|-pH`1%g_$S=N3
z&bz7~y{~TVTzt~$&xghzwbQ(!BopjUy{fM{{UFfuhiUk|Ne3?HuTA*8TRUR+Bi(7X
zLhjG*xX;|X`ljPntF_M?rNTQT<!3%Q*yPuHzH{}nxljEraVw<G^Nz}9zqc+av!_#d
zvhP>Nd!0P$^1q~S-ai-+Uw?U>*sJ@A3Rl>k$LuZ*E8Zov?mOd|2dOOq`qO`_Wjtq&
zoNjaUuxmqO#^T9M-B&N1b8uic)|M~XS%1t=etDxcGfzO((r>G8Zdu>@k^h(ZF?A&+
zd%el&r&D7rXH~X;dbE9x78Cc;Ia=GCTw+g6JKd(ss`6iFW1`UH?QQ?-l6W8b+n@jK
zyl4Z1W&O_iyNhC^w>-G{VnQPK{lYnF*O#0ZKW{eg2m21c13FvyzbxIdX3n1e`>D0>
z0)y0-8|;6#?QYxD-!J!78Pwl1XuchNz6aD;bZOW;|IFikuBmtapW57$^DJlYvq;Z)
zllIU+|II&NvgjN*@vzx*ZmIocv7;OJe!HdWG^yfGzo$*y_nm(QHXr{fBzN_USzP#B
zcLT*7t<_~BlVvtGe&tDVlqp!X^U%B>>};3ri7QO#=<xedzjt=$`{f@i<_n%>Z(8fI
zdWKdxZ;LSN)hP#-uKw=Bwu|l1r9D|0LhmFctdBK6Hk&S*aV|@2T|q!m`^=e!dfJSu
z=jhxCKKp?&ZP9-3T7UJ}xqO$p6_&nZ-@0MeUq9x{%{&Qa0@-Do{-&5Fzdn|}_Suoj
zj<VW>_SN~TEgKuBG(3~b3iN$er+#yyT3hvHr{Cd*b^6cC<>z;FY>`vrPFQ@&?eJlB
zu1}Uv8}h!ku34f#@A$75>JfGER+pdYCZ34C+>y^*GxOB_?nxE9>YZ1l{WWU-+qnJX
zmxdL$)Yd+ETED-!srj(;#+tdO!^<+_%{Q-*RcCnSk(8XXXKJNLRr#vD5y!$SQ@6aY
zl@(Ne{;9D3`qnP9GX1(K+nLfoJUe316n!)Y92>8m<jy``udDa?-}Prk53OxE*3Ox8
zM=8ne*v^)UMwM^xTwX4lJY~{_M}oRbcbiSf@=eP7KJ6D*@{<pKI=8koh92CVY5(Qw
zv-#_)Ew@^S-g&6<B5b3s`M%{7=c&usY`T8(WmlG0*W8@{%cKkpG%q@w%wxa2f5qPN
zb0@#m@)@l@aQeDK$%2g!A6qfMwNW^5-eF6=b46Iuje}l2KCi1X7hFrK?Vh-@a6`%F
zxnDkC4VhQ|>64hcYHW|`!`bZ<-K!3rI$L&6bH%bvhfXdFVVC~f>$B?~gZLbszjqve
z&CK#zb9Ihhfx&BKb=5+*V?VF(9g6Z*J;16yyX=N!`GEs#9JfZdM`!Fm`f<C7ouFXm
z-6rKuUJI{VeYXxbz5Ti5U#W7Wp8wxX@1hUQ(Vb}X?Fq*tce{hhiP4p59~IX)JX@9<
z@m|7Z(&^jtr%edBCH_ubcQ?<Q)F(O7Ctlw#-rczLI)~e=?Vnyf;yD*}Fsh_OwEOxF
zo4IGED?XmQvCg2sa{iOxs*OEszOMgJ6(;jIpP%`@gObvr7`sIr-`TqJH3Sp)`QG0v
z3M#O&)$%XrEIXs0aODfThsyjtdv5hFTHSe&>E%t+o-<cZ-<TL5d~eqDbBnIFcX)Oz
zwoSPEmFuwDnY7x#T+!82gRB#D)v|BT{`39)<<7rXYwz4!_VnH@ei_F{(@$4C+#GO>
zf8VFWhFWXG)`+i-INf#f=NI3&i0S@0|DVlYbNkkozVC;e&#ak~@%&_N*{-}6FMo-;
z_L)<pd06h`q%FRC@Js(&mwJvFigve79Ex7Itx%o2JXHAhZJ$ZU%VlRYPC1yCmRDr(
z(mzy$;bW{%jm4t8-Rm2FG|H_xa&FE3P{XTi7bm(+yO+Ia^~$t0syq4AmRedQHaBcD
z_>(3q9sKH5_~f6NqMGxs*PQ)0(QV%Uot^XBq+b2rpY%K2@ZbCJco&y-n#D}~_QmSw
z_k0nk{hxI3y!DiMkKZQ;U2B{5TikfY_d{Wa<SV;56&V_RX8dDV8T`y}|9z7+);5xV
z+TEh1cljs2ySsVD&ld*IteHCB+P6NJlRq<ger<o@HqV4(^74u2xQjh1cS|rmmiXGO
z>0>o9D*nj&^N)3A?wep)KhNv_{iu)Ko=KnN(@g3MHi3HWTY`4xMC_az+-gvN>q(n(
zC_|O)!E@J-Z<A;{`tMccyyz_x#NWvutDnxCyVyg<vf2Lsp0xJ%t5I&5GkbqsKEkJy
za$|C~MYsOLxm8A=US6;K(YJbz3)`JzE9};9xLx>C@``W7<(ZZ_491Kfj_9uuJ~=rq
z<(U87<V{&CR;<YRl+wyAI+bPH<$b=;kqyC#^3fl6e*RHWy)|Y+*e2a@Q2P>$_gRll
z=YyJPAUxo!8P1%I)!856`15F&d^Nb+2Xd8C5U<_6xbV;`0fB*$f92)+K*<Y?|FCC7
kuLH9{#1L72@z4IP$&CjoInRR`7#J8lUHx3vIVCg!0J9?N5&!@I

literal 0
HcmV?d00001

diff --git a/lib/spack/docs/environments.rst b/lib/spack/docs/environments.rst
index 336d574bd7..5ec1ec9032 100644
--- a/lib/spack/docs/environments.rst
+++ b/lib/spack/docs/environments.rst
@@ -49,6 +49,8 @@ Spack uses a "manifest and lock" model similar to `Bundler gemfiles
 managers. The user input file is named ``spack.yaml`` and the lock
 file is named ``spack.lock``
 
+.. _environments-using:
+
 ------------------
 Using Environments
 ------------------
diff --git a/lib/spack/docs/index.rst b/lib/spack/docs/index.rst
index 489c15645a..8170f152a4 100644
--- a/lib/spack/docs/index.rst
+++ b/lib/spack/docs/index.rst
@@ -66,6 +66,7 @@ or refer to the full manual below.
    config_yaml
    build_settings
    environments
+   containers
    mirrors
    module_file_support
    repositories
diff --git a/lib/spack/spack/cmd/containerize.py b/lib/spack/spack/cmd/containerize.py
new file mode 100644
index 0000000000..cc2c001560
--- /dev/null
+++ b/lib/spack/spack/cmd/containerize.py
@@ -0,0 +1,25 @@
+# Copyright 2013-2020 Lawrence Livermore National Security, LLC and other
+# Spack Project Developers. See the top-level COPYRIGHT file for details.
+#
+# SPDX-License-Identifier: (Apache-2.0 OR MIT)
+import os
+import os.path
+import spack.container
+
+description = ("creates recipes to build images for different"
+               " container runtimes")
+section = "container"
+level = "long"
+
+
+def containerize(parser, args):
+    config_dir = args.env_dir or os.getcwd()
+    config_file = os.path.abspath(os.path.join(config_dir, 'spack.yaml'))
+    if not os.path.exists(config_file):
+        msg = 'file not found: {0}'
+        raise ValueError(msg.format(config_file))
+
+    config = spack.container.validate(config_file)
+
+    recipe = spack.container.recipe(config)
+    print(recipe)
diff --git a/lib/spack/spack/container/__init__.py b/lib/spack/spack/container/__init__.py
new file mode 100644
index 0000000000..fc3750355a
--- /dev/null
+++ b/lib/spack/spack/container/__init__.py
@@ -0,0 +1,81 @@
+# Copyright 2013-2020 Lawrence Livermore National Security, LLC and other
+# Spack Project Developers. See the top-level COPYRIGHT file for details.
+#
+# SPDX-License-Identifier: (Apache-2.0 OR MIT)
+"""Package that provides functions and classes to
+generate container recipes from a Spack environment
+"""
+import warnings
+
+import spack.environment
+import spack.schema.env as env
+import spack.util.spack_yaml as syaml
+from .writers import recipe
+
+__all__ = ['validate', 'recipe']
+
+
+def validate(configuration_file):
+    """Validate a Spack environment YAML file that is being used to generate a
+    recipe for a container.
+
+    Since a few attributes of the configuration must have specific values for
+    the container recipe, this function returns a sanitized copy of the
+    configuration in the input file. If any modification is needed, a warning
+    will be issued.
+
+    Args:
+        configuration_file (str): path to the Spack environment YAML file
+
+    Returns:
+        A sanitized copy of the configuration stored in the input file
+    """
+    import jsonschema
+    with open(configuration_file) as f:
+        config = syaml.load(f)
+
+    # Ensure we have a "container" attribute with sensible defaults set
+    env_dict = spack.environment.config_dict(config)
+    env_dict.setdefault('container', {
+        'format': 'docker',
+        'base': {'image': 'ubuntu:18.04', 'spack': 'develop'}
+    })
+    env_dict['container'].setdefault('format', 'docker')
+    env_dict['container'].setdefault(
+        'base', {'image': 'ubuntu:18.04', 'spack': 'develop'}
+    )
+
+    # Remove attributes that are not needed / allowed in the
+    # container recipe
+    for subsection in ('cdash', 'gitlab_ci', 'modules'):
+        if subsection in env_dict:
+            msg = ('the subsection "{0}" in "{1}" is not used when generating'
+                   ' container recipes and will be discarded')
+            warnings.warn(msg.format(subsection, configuration_file))
+            env_dict.pop(subsection)
+
+    # Set the default value of the concretization strategy to "together" and
+    # warn if the user explicitly set another value
+    env_dict.setdefault('concretization', 'together')
+    if env_dict['concretization'] != 'together':
+        msg = ('the "concretization" attribute of the environment is set '
+               'to "{0}" [the advised value is instead "together"]')
+        warnings.warn(msg.format(env_dict['concretization']))
+
+    # Check if the install tree was explicitly set to a custom value and warn
+    # that it will be overridden
+    environment_config = env_dict.get('config', {})
+    if environment_config.get('install_tree', None):
+        msg = ('the "config:install_tree" attribute has been set explicitly '
+               'and will be overridden in the container image')
+        warnings.warn(msg)
+
+    # Likewise for the view
+    environment_view = env_dict.get('view', None)
+    if environment_view:
+        msg = ('the "view" attribute has been set explicitly '
+               'and will be overridden in the container image')
+        warnings.warn(msg)
+
+    jsonschema.validate(config, schema=env.schema)
+    return config
diff --git a/lib/spack/spack/container/images.json b/lib/spack/spack/container/images.json
new file mode 100644
index 0000000000..ecd911815d
--- /dev/null
+++ b/lib/spack/spack/container/images.json
@@ -0,0 +1,50 @@
+{
+  "ubuntu:18.04": {
+    "update": "apt-get -yqq update && apt-get -yqq upgrade",
+    "install": "apt-get -yqq install",
+    "clean": "rm -rf /var/lib/apt/lists/*",
+    "environment": [],
+    "build": "spack/ubuntu-bionic",
+    "build_tags": {
+      "develop": "latest",
+      "0.14": "0.14",
+      "0.14.0": "0.14.0"
+    }
+  },
+  "ubuntu:16.04": {
+    "update": "apt-get -yqq update && apt-get -yqq upgrade",
+    "install": "apt-get -yqq install",
+    "clean": "rm -rf /var/lib/apt/lists/*",
+    "environment": [],
+    "build": "spack/ubuntu-xenial",
+    "build_tags": {
+      "develop": "latest",
+      "0.14": "0.14",
+      "0.14.0": "0.14.0"
+    }
+  },
+  "centos:7": {
+    "update": "yum update -y && yum install -y epel-release && yum update -y",
+    "install": "yum install -y",
+    "clean": "rm -rf /var/cache/yum  && yum clean all",
+    "environment": [],
+    "build": "spack/centos7",
+    "build_tags": {
+      "develop": "latest",
+      "0.14": "0.14",
+      "0.14.0": "0.14.0"
+    }
+  },
+  "centos:6": {
+    "update": "yum update -y && yum install -y epel-release && yum update -y",
+    "install": "yum install -y",
+    "clean": "rm -rf /var/cache/yum  && yum clean all",
+    "environment": [],
+    "build": "spack/centos6",
+    "build_tags": {
+      "develop": "latest",
+      "0.14": "0.14",
+      "0.14.0": "0.14.0"
+    }
+  }
+}
\ No newline at end of file
diff --git a/lib/spack/spack/container/images.py b/lib/spack/spack/container/images.py
new file mode 100644
index 0000000000..421fc24425
--- /dev/null
+++ b/lib/spack/spack/container/images.py
@@ -0,0 +1,72 @@
+# Copyright 2013-2020 Lawrence Livermore National Security, LLC and other
+# Spack Project Developers. See the top-level COPYRIGHT file for details.
+#
+# SPDX-License-Identifier: (Apache-2.0 OR MIT)
+"""Manages the details on the images used in the build and the run stage."""
+import json
+import os.path
+
+#: Global variable used to cache in memory the content of images.json
+_data = None
+
+
+def data():
+    """Returns a dictionary with the static data on the images.
+
+    The dictionary is read from a JSON file lazily the first time
+    this function is called.
+    """
+    global _data
+    if not _data:
+        json_dir = os.path.abspath(os.path.dirname(__file__))
+        json_file = os.path.join(json_dir, 'images.json')
+        with open(json_file) as f:
+            _data = json.load(f)
+    return _data
+
+
+def build_info(image, spack_version):
+    """Returns the name of the build image and its tag.
+
+    Args:
+        image (str): image to be used at run-time. Should be of the form
+            <image_name>:<image_tag> e.g. "ubuntu:18.04"
+        spack_version (str): version of Spack that we want to use to build
+
+    Returns:
+        A tuple with (image_name, image_tag) for the build image
+    """
+    # Don't handle error here, as a wrong image should have been
+    # caught by the JSON schema
+    image_data = data()[image]
+    build_image = image_data['build']
+
+    # Try to check if we have a tag for this Spack version
+    try:
+        build_tag = image_data['build_tags'][spack_version]
+    except KeyError:
+        msg = ('the image "{0}" has no tag for Spack version "{1}" '
+               '[valid versions are {2}]')
+        msg = msg.format(build_image, spack_version,
+                         ', '.join(image_data['build_tags'].keys()))
+        raise ValueError(msg)
+
+    return build_image, build_tag
+
+
+def package_info(image):
+    """Returns the commands used to update system repositories, install
+    system packages and clean afterwards.
+
+    Args:
+        image (str): image to be used at run-time. Should be of the form
+            <image_name>:<image_tag> e.g. "ubuntu:18.04"
+
+    Returns:
+        A tuple of (update, install, clean) commands.
+    """
+    image_data = data()[image]
+    update = image_data['update']
+    install = image_data['install']
+    clean = image_data['clean']
+    return update, install, clean
diff --git a/lib/spack/spack/container/writers/__init__.py b/lib/spack/spack/container/writers/__init__.py
new file mode 100644
index 0000000000..a1d2fa3102
--- /dev/null
+++ b/lib/spack/spack/container/writers/__init__.py
@@ -0,0 +1,154 @@
+# Copyright 2013-2020 Lawrence Livermore National Security, LLC and other
+# Spack Project Developers. See the top-level COPYRIGHT file for details.
+#
+# SPDX-License-Identifier: (Apache-2.0 OR MIT)
+"""Writers for different kind of recipes and related
+convenience functions.
+"""
+import collections
+import copy
+
+import spack.environment
+import spack.schema.env
+import spack.tengine as tengine
+import spack.util.spack_yaml as syaml
+
+from spack.container.images import build_info, package_info
+
+#: Caches all the writers that are currently supported
+_writer_factory = {}
+
+
+def writer(name):
+    """Decorator to register a factory for a recipe writer.
+
+    Each factory should take a configuration dictionary and return a
+    properly configured writer that, when called, prints the
+    corresponding recipe.
+    """
+    def _decorator(factory):
+        _writer_factory[name] = factory
+        return factory
+    return _decorator
+
+
+def create(configuration):
+    """Returns a writer that conforms to the configuration passed as input.
+
+    Args:
+        configuration: how to generate the current recipe
+    """
+    name = spack.environment.config_dict(configuration)['container']['format']
+    return _writer_factory[name](configuration)
+
+
+def recipe(configuration):
+    """Returns a recipe that conforms to the configuration passed as input.
+
+    Args:
+        configuration: how to generate the current recipe
+    """
+    return create(configuration)()
+
+
+class PathContext(tengine.Context):
+    """Generic context used to instantiate templates of recipes that
+    install software in a common location and make it available
+    directly via PATH.
+    """
+    def __init__(self, config):
+        self.config = spack.environment.config_dict(config)
+        self.container_config = self.config['container']
+
+    @tengine.context_property
+    def run(self):
+        """Information related to the run image."""
+        image = self.container_config['base']['image']
+        Run = collections.namedtuple('Run', ['image'])
+        return Run(image=image)
+
+    @tengine.context_property
+    def build(self):
+        """Information related to the build image."""
+
+        # Map the final image to the correct build image
+        run_image = self.container_config['base']['image']
+        spack_version = self.container_config['base']['spack']
+        image, tag = build_info(run_image, spack_version)
+
+        Build = collections.namedtuple('Build', ['image', 'tag'])
+        return Build(image=image, tag=tag)
+
+    @tengine.context_property
+    def strip(self):
+        """Whether or not to strip binaries in the image"""
+        return self.container_config.get('strip', True)
+
+    @tengine.context_property
+    def paths(self):
+        """Important paths in the image"""
+        Paths = collections.namedtuple('Paths', [
+            'environment', 'store', 'view'
+        ])
+        return Paths(
+            environment='/opt/spack-environment',
+            store='/opt/software',
+            view='/opt/view'
+        )
+
+    @tengine.context_property
+    def manifest(self):
+        """The spack.yaml file that should be used in the image"""
+        import jsonschema
+        # Copy in the part of spack.yaml prescribed in the configuration file
+        manifest = copy.deepcopy(self.config)
+        manifest.pop('container')
+
+        # Ensure that a few paths are where they need to be
+        manifest.setdefault('config', syaml.syaml_dict())
+        manifest['config']['install_tree'] = self.paths.store
+        manifest['view'] = self.paths.view
+        manifest = {'spack': manifest}
+
+        # Validate the manifest file
+        jsonschema.validate(manifest, schema=spack.schema.env.schema)
+
+        return syaml.dump(manifest, default_flow_style=False).strip()
+
+    @tengine.context_property
+    def os_packages(self):
+        """Additional system packages that are needed at run-time."""
+        package_list = self.container_config.get('os_packages', None)
+        if not package_list:
+            return package_list
+
+        image = self.container_config['base']['image']
+        update, install, clean = package_info(image)
+        Packages = collections.namedtuple(
+            'Packages', ['update', 'install', 'list', 'clean']
+        )
+        return Packages(update=update, install=install,
+                        list=package_list, clean=clean)
+
+    @tengine.context_property
+    def extra_instructions(self):
+        Extras = collections.namedtuple('Extra', ['build', 'final'])
+        extras = self.container_config.get('extra_instructions', {})
+        build, final = extras.get('build', None), extras.get('final', None)
+        return Extras(build=build, final=final)
+
+    @tengine.context_property
+    def labels(self):
+        return self.container_config.get('labels', {})
+
+    def __call__(self):
+        """Returns the recipe as a string"""
+        env = tengine.make_environment()
+        t = env.get_template(self.template_name)
+        return t.render(**self.to_dict())
+
+
+# Import after function definition all the modules in this package,
+# so that registration of writers will happen automatically
+import spack.container.writers.singularity  # noqa
+import spack.container.writers.docker  # noqa
diff --git a/lib/spack/spack/container/writers/docker.py b/lib/spack/spack/container/writers/docker.py
new file mode 100644
index 0000000000..557d22c803
--- /dev/null
+++ b/lib/spack/spack/container/writers/docker.py
@@ -0,0 +1,30 @@
+# Copyright 2013-2020 Lawrence Livermore National Security, LLC and other
+# Spack Project Developers. See the top-level COPYRIGHT file for details.
+#
+# SPDX-License-Identifier: (Apache-2.0 OR MIT)
+import spack.tengine as tengine
+
+from . import writer, PathContext
+
+
+@writer('docker')
+class DockerContext(PathContext):
+    """Context used to instantiate a Dockerfile"""
+    #: Name of the template used for Dockerfiles
+    template_name = 'container/Dockerfile'
+
+    @tengine.context_property
+    def manifest(self):
+        manifest_str = super(DockerContext, self).manifest
+        # Docker doesn't support HEREDOC so we need to resort to
+        # a horrible echo trick to have the manifest in the Dockerfile
+        echoed_lines = []
+        for idx, line in enumerate(manifest_str.split('\n')):
+            if idx == 0:
+                echoed_lines.append('&&  (echo "' + line + '" \\')
+                continue
+            echoed_lines.append('&&   echo "' + line + '" \\')
+
+        echoed_lines[-1] = echoed_lines[-1].replace(' \\', ')')
+
+        return '\n'.join(echoed_lines)
diff --git a/lib/spack/spack/container/writers/singularity.py b/lib/spack/spack/container/writers/singularity.py
new file mode 100644
index 0000000000..32f29eb83d
--- /dev/null
+++ b/lib/spack/spack/container/writers/singularity.py
@@ -0,0 +1,33 @@
+# Copyright 2013-2020 Lawrence Livermore National Security, LLC and other
+# Spack Project Developers. See the top-level COPYRIGHT file for details.
+#
+# SPDX-License-Identifier: (Apache-2.0 OR MIT)
+import spack.tengine as tengine
+from . import writer, PathContext
+
+
+@writer('singularity')
+class SingularityContext(PathContext):
+    """Context used to instantiate a Singularity definition file"""
+    #: Name of the template used for Singularity definition files
+    template_name = 'container/singularity.def'
+
+    @property
+    def singularity_config(self):
+        return self.container_config.get('singularity', {})
+
+    @tengine.context_property
+    def runscript(self):
+        return self.singularity_config.get('runscript', '')
+
+    @tengine.context_property
+    def startscript(self):
+        return self.singularity_config.get('startscript', '')
+
+    @tengine.context_property
+    def test(self):
+        return self.singularity_config.get('test', '')
+
+    @tengine.context_property
+    def help(self):
+        return self.singularity_config.get('help', '')
diff --git a/lib/spack/spack/schema/container.py b/lib/spack/spack/schema/container.py
new file mode 100644
index 0000000000..cb1ed8d63a
--- /dev/null
+++ b/lib/spack/spack/schema/container.py
@@ -0,0 +1,82 @@
+# Copyright 2013-2020 Lawrence Livermore National Security, LLC and other
+# Spack Project Developers. See the top-level COPYRIGHT file for details.
+#
+# SPDX-License-Identifier: (Apache-2.0 OR MIT)
+"""Schema for the 'container' subsection of Spack environments."""
+
+#: Schema for the container attribute included in Spack environments
+container_schema = {
+    'type': 'object',
+    'additionalProperties': False,
+    'properties': {
+        # The recipe formats that are currently supported by the command
+        'format': {
+            'type': 'string',
+            'enum': ['docker', 'singularity']
+        },
+        # Describes the base image to start from and the version
+        # of Spack to be used
+        'base': {
+            'type': 'object',
+            'additionalProperties': False,
+            'properties': {
+                'image': {
+                    'type': 'string',
+                    'enum': ['ubuntu:18.04',
+                             'ubuntu:16.04',
+                             'centos:7',
+                             'centos:6']
+                },
+                'spack': {
+                    'type': 'string',
+                    'enum': ['develop', '0.14', '0.14.0']
+                }
+            },
+            'required': ['image', 'spack']
+        },
+        # Whether or not to strip installed binaries
+        'strip': {
+            'type': 'boolean',
+            'default': True
+        },
+        # Additional system packages that are needed at runtime
+        'os_packages': {
+            'type': 'array',
+            'items': {
+                'type': 'string'
+            }
+        },
+        # Add labels to the image
+        'labels': {
+            'type': 'object',
+        },
+        # Add a custom extra section at the bottom of a stage
+        'extra_instructions': {
+            'type': 'object',
+            'additionalProperties': False,
+            'properties': {
+                'build': {'type': 'string'},
+                'final': {'type': 'string'}
+            }
+        },
+        # Reserved for properties that are specific to each format
+        'singularity': {
+            'type': 'object',
+            'additionalProperties': False,
+            'default': {},
+            'properties': {
+                'runscript': {'type': 'string'},
+                'startscript': {'type': 'string'},
+                'test': {'type': 'string'},
+                'help': {'type': 'string'}
+            }
+        },
+        'docker': {
+            'type': 'object',
+            'additionalProperties': False,
+            'default': {},
+        }
+    }
+}
+
+properties = {'container': container_schema}
diff --git a/lib/spack/spack/schema/merged.py b/lib/spack/spack/schema/merged.py
index d56228c116..e118acf286 100644
--- a/lib/spack/spack/schema/merged.py
+++ b/lib/spack/spack/schema/merged.py
@@ -13,6 +13,7 @@
 import spack.schema.cdash
 import spack.schema.compilers
 import spack.schema.config
+import spack.schema.container
 import spack.schema.gitlab_ci
 import spack.schema.mirrors
 import spack.schema.modules
@@ -26,6 +27,7 @@
     spack.schema.cdash.properties,
     spack.schema.compilers.properties,
     spack.schema.config.properties,
+    spack.schema.container.properties,
     spack.schema.gitlab_ci.properties,
     spack.schema.mirrors.properties,
     spack.schema.modules.properties,
diff --git a/lib/spack/spack/test/cmd/gc.py b/lib/spack/spack/test/cmd/gc.py
index 76eb608cf2..22c85a1d78 100644
--- a/lib/spack/spack/test/cmd/gc.py
+++ b/lib/spack/spack/test/cmd/gc.py
@@ -30,7 +30,9 @@ def test_packages_are_removed(config, mutable_database, capsys):
 
 
 @pytest.mark.db
-def test_gc_with_environment(config, mutable_database, capsys):
+def test_gc_with_environment(
+        config, mutable_database, mutable_mock_env_path, capsys
+):
     s = spack.spec.Spec('simple-inheritance')
     s.concretize()
     s.package.do_install(fake=True, explicit=True)
diff --git a/lib/spack/spack/test/cmd/test.py b/lib/spack/spack/test/cmd/test.py
index 3595f91953..9a64209cfa 100644
--- a/lib/spack/spack/test/cmd/test.py
+++ b/lib/spack/spack/test/cmd/test.py
@@ -1,4 +1,4 @@
-# Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
+# Copyright 2013-2020 Lawrence Livermore National Security, LLC and other
 # Spack Project Developers. See the top-level COPYRIGHT file for details.
 #
 # SPDX-License-Identifier: (Apache-2.0 OR MIT)
diff --git a/lib/spack/spack/test/container/cli.py b/lib/spack/spack/test/container/cli.py
new file mode 100644
index 0000000000..8e5403f072
--- /dev/null
+++ b/lib/spack/spack/test/container/cli.py
@@ -0,0 +1,16 @@
+# Copyright 2013-2020 Lawrence Livermore National Security, LLC and other
+# Spack Project Developers. See the top-level COPYRIGHT file for details.
+#
+# SPDX-License-Identifier: (Apache-2.0 OR MIT)
+import llnl.util.filesystem as fs
+import spack.main
+
+
+containerize = spack.main.SpackCommand('containerize')
+
+
+def test_command(configuration_dir, capsys):
+    with capsys.disabled():
+        with fs.working_dir(configuration_dir):
+            output = containerize()
+    assert 'FROM spack/ubuntu-bionic' in output
diff --git a/lib/spack/spack/test/container/conftest.py b/lib/spack/spack/test/container/conftest.py
new file mode 100644
index 0000000000..802b34c5f8
--- /dev/null
+++ b/lib/spack/spack/test/container/conftest.py
@@ -0,0 +1,43 @@
+# Copyright 2013-2020 Lawrence Livermore National Security, LLC and other
+# Spack Project Developers. See the top-level COPYRIGHT file for details.
+#
+# SPDX-License-Identifier: (Apache-2.0 OR MIT)
+import pytest
+
+import spack.util.spack_yaml as syaml
+
+
+@pytest.fixture()
+def minimal_configuration():
+    return {
+        'spack': {
+            'specs': [
+                'gromacs',
+                'mpich',
+                'fftw precision=float'
+            ],
+            'container': {
+                'format': 'docker',
+                'base': {
+                    'image': 'ubuntu:18.04',
+                    'spack': 'develop'
+                }
+            }
+        }
+    }
+
+
+@pytest.fixture()
+def config_dumper(tmpdir):
+    """Function that dumps an environment config in a temporary folder."""
+    def dumper(configuration):
+        content = syaml.dump(configuration, default_flow_style=False)
+        config_file = tmpdir / 'spack.yaml'
+        config_file.write(content)
+        return str(tmpdir)
+    return dumper
+
+
+@pytest.fixture()
+def configuration_dir(minimal_configuration, config_dumper):
+    return config_dumper(minimal_configuration)
diff --git a/lib/spack/spack/test/container/docker.py b/lib/spack/spack/test/container/docker.py
new file mode 100644
index 0000000000..fbdc085828
--- /dev/null
+++ b/lib/spack/spack/test/container/docker.py
@@ -0,0 +1,74 @@
+# Copyright 2013-2020 Lawrence Livermore National Security, LLC and other
+# Spack Project Developers. See the top-level COPYRIGHT file for details.
+#
+# SPDX-License-Identifier: (Apache-2.0 OR MIT)
+
+import spack.container.writers as writers
+
+
+def test_manifest(minimal_configuration):
+    writer = writers.create(minimal_configuration)
+    manifest_str = writer.manifest
+    for line in manifest_str.split('\n'):
+        assert 'echo' in line
+
+
+def test_build_and_run_images(minimal_configuration):
+    writer = writers.create(minimal_configuration)
+
+    # Test the output of run property
+    run = writer.run
+    assert run.image == 'ubuntu:18.04'
+
+    # Test the output of the build property
+    build = writer.build
+    assert build.image == 'spack/ubuntu-bionic'
+    assert build.tag == 'latest'
+
+
+def test_packages(minimal_configuration):
+    # In this minimal configuration we don't have packages
+    writer = writers.create(minimal_configuration)
+    assert writer.os_packages is None
+
+    # If we add them a list should be returned
+    pkgs = ['libgomp1']
+    minimal_configuration['spack']['container']['os_packages'] = pkgs
+    writer = writers.create(minimal_configuration)
+    p = writer.os_packages
+    assert p.update
+    assert p.install
+    assert p.clean
+    assert p.list == pkgs
+
+
+def test_ensure_render_works(minimal_configuration):
+    # Here we just want to ensure that nothing is raised
+    writer = writers.create(minimal_configuration)
+    writer()
+
+
+def test_strip_is_set_from_config(minimal_configuration):
+    writer = writers.create(minimal_configuration)
+    assert writer.strip is True
+
+    minimal_configuration['spack']['container']['strip'] = False
+    writer = writers.create(minimal_configuration)
+    assert writer.strip is False
+
+
+def test_extra_instructions_is_set_from_config(minimal_configuration):
+    writer = writers.create(minimal_configuration)
+    assert writer.extra_instructions == (None, None)
+
+    test_line = 'RUN echo Hello world!'
+    e = minimal_configuration['spack']['container']
+    e['extra_instructions'] = {}
+    e['extra_instructions']['build'] = test_line
+    writer = writers.create(minimal_configuration)
+    assert writer.extra_instructions == (test_line, None)
+
+    e['extra_instructions']['final'] = test_line
+    del e['extra_instructions']['build']
+    writer = writers.create(minimal_configuration)
+    assert writer.extra_instructions == (None, test_line)
diff --git a/lib/spack/spack/test/container/images.py b/lib/spack/spack/test/container/images.py
new file mode 100644
index 0000000000..808676c39a
--- /dev/null
+++ b/lib/spack/spack/test/container/images.py
@@ -0,0 +1,58 @@
+# Copyright 2013-2020 Lawrence Livermore National Security, LLC and other
+# Spack Project Developers. See the top-level COPYRIGHT file for details.
+#
+# SPDX-License-Identifier: (Apache-2.0 OR MIT)
+import os.path
+
+import pytest
+
+import spack.container
+
+
+@pytest.mark.parametrize('image,spack_version,expected', [
+    ('ubuntu:18.04', 'develop', ('spack/ubuntu-bionic', 'latest')),
+    ('ubuntu:18.04', '0.14.0', ('spack/ubuntu-bionic', '0.14.0')),
+])
+def test_build_info(image, spack_version, expected):
+    output = spack.container.images.build_info(image, spack_version)
+    assert output == expected
+
+
+@pytest.mark.parametrize('image,spack_version', [
+    ('ubuntu:18.04', 'doesnotexist')
+])
+def test_build_info_error(image, spack_version):
+    with pytest.raises(ValueError, match=r"has no tag for"):
+        spack.container.images.build_info(image, spack_version)
+
+
+@pytest.mark.parametrize('image', [
+    'ubuntu:18.04'
+])
+def test_package_info(image):
+    update, install, clean = spack.container.images.package_info(image)
+    assert update
+    assert install
+    assert clean
+
+
+@pytest.mark.parametrize('extra_config,expected_msg', [
+    ({'modules': {'enable': ['tcl']}}, 'the subsection "modules" in'),
+    ({'concretization': 'separately'}, 'the "concretization" attribute'),
+    ({'config': {'install_tree': '/some/dir'}},
+     'the "config:install_tree" attribute has been set'),
+    ({'view': '/some/dir'}, 'the "view" attribute has been set')
+])
+def test_validate(
+        extra_config, expected_msg, minimal_configuration, config_dumper
+):
+    minimal_configuration['spack'].update(extra_config)
+    spack_yaml_dir = config_dumper(minimal_configuration)
+    spack_yaml = os.path.join(spack_yaml_dir, 'spack.yaml')
+
+    with pytest.warns(UserWarning) as w:
+        spack.container.validate(spack_yaml)
+
+    # Tests are designed to raise only one warning
+    assert len(w) == 1
+    assert expected_msg in str(w.pop().message)
diff --git a/lib/spack/spack/test/container/schema.py b/lib/spack/spack/test/container/schema.py
new file mode 100644
index 0000000000..3f33a3f9f7
--- /dev/null
+++ b/lib/spack/spack/test/container/schema.py
@@ -0,0 +1,16 @@
+# Copyright 2013-2020 Lawrence Livermore National Security, LLC and other
+# Spack Project Developers. See the top-level COPYRIGHT file for details.
+#
+# SPDX-License-Identifier: (Apache-2.0 OR MIT)
+
+import spack.container
+import spack.schema.container
+
+
+def test_images_in_schema():
+    properties = spack.schema.container.container_schema['properties']
+    allowed_images = set(
+        properties['base']['properties']['image']['enum']
+    )
+    images_in_json = set(x for x in spack.container.images.data())
+    assert images_in_json == allowed_images
diff --git a/lib/spack/spack/test/container/singularity.py b/lib/spack/spack/test/container/singularity.py
new file mode 100644
index 0000000000..445a119f6c
--- /dev/null
+++ b/lib/spack/spack/test/container/singularity.py
@@ -0,0 +1,42 @@
+# Copyright 2013-2020 Lawrence Livermore National Security, LLC and other
+# Spack Project Developers. See the top-level COPYRIGHT file for details.
+#
+# SPDX-License-Identifier: (Apache-2.0 OR MIT)
+import pytest
+
+import spack.container.writers as writers
+
+
+@pytest.fixture
+def singularity_configuration(minimal_configuration):
+    minimal_configuration['spack']['container']['format'] = 'singularity'
+    return minimal_configuration
+
+
+def test_ensure_render_works(singularity_configuration):
+    container_config = singularity_configuration['spack']['container']
+    assert container_config['format'] == 'singularity'
+    # Here we just want to ensure that nothing is raised
+    writer = writers.create(singularity_configuration)
+    writer()
+
+
+@pytest.mark.parametrize('properties,expected', [
+    ({'runscript': '/opt/view/bin/h5ls'},
+     {'runscript': '/opt/view/bin/h5ls',
+      'startscript': '',
+      'test': '',
+      'help': ''})
+])
+def test_singularity_specific_properties(
+        properties, expected, singularity_configuration
+):
+    # Set the property in the configuration
+    container_config = singularity_configuration['spack']['container']
+    for name, value in properties.items():
+        container_config.setdefault('singularity', {})[name] = value
+
+    # Assert the properties return the expected values
+    writer = writers.create(singularity_configuration)
+    for name, value in expected.items():
+        assert getattr(writer, name) == value
diff --git a/share/spack/spack-completion.bash b/share/spack/spack-completion.bash
index b408d0b234..623e9fba73 100755
--- a/share/spack/spack-completion.bash
+++ b/share/spack/spack-completion.bash
@@ -313,7 +313,7 @@ _spack() {
     then
         SPACK_COMPREPLY="-h --help -H --all-help --color -C --config-scope -d --debug --timestamp --pdb -e --env -D --env-dir -E --no-env --use-env-repo -k --insecure -l --enable-locks -L --disable-locks -m --mock -p --profile --sorted-profile --lines -v --verbose --stacktrace -V --version --print-shell-vars"
     else
-        SPACK_COMPREPLY="activate add arch blame bootstrap build build-env buildcache cd checksum ci clean clone commands compiler compilers concretize config configure create deactivate debug dependencies dependents deprecate dev-build diy docs edit env extensions fetch find flake8 gc gpg graph help info install license list load location log-parse maintainers mirror module patch pkg providers pydoc python reindex remove rm repo resource restage setup spec stage test uninstall unload upload-s3 url verify versions view"
+        SPACK_COMPREPLY="activate add arch blame bootstrap build build-env buildcache cd checksum ci clean clone commands compiler compilers concretize config configure containerize create deactivate debug dependencies dependents deprecate dev-build diy docs edit env extensions fetch find flake8 gc gpg graph help info install license list load location log-parse maintainers mirror module patch pkg providers pydoc python reindex remove rm repo resource restage setup spec stage test uninstall unload upload-s3 url verify versions view"
     fi
 }
 
@@ -628,6 +628,10 @@ _spack_configure() {
     fi
 }
 
+_spack_containerize() {
+    SPACK_COMPREPLY="-h --help"
+}
+
 _spack_create() {
     if $list_options
     then
diff --git a/share/spack/templates/container/Dockerfile b/share/spack/templates/container/Dockerfile
new file mode 100644
index 0000000000..740f46e9ee
--- /dev/null
+++ b/share/spack/templates/container/Dockerfile
@@ -0,0 +1,51 @@
+# Build stage with Spack pre-installed and ready to be used
+FROM {{ build.image }}:{{ build.tag }} as builder
+
+# What we want to install and how we want to install it
+# is specified in a manifest file (spack.yaml)
+RUN mkdir {{ paths.environment }} \
+{{ manifest }} > {{ paths.environment }}/spack.yaml
+
+# Install the software, remove unecessary deps
+RUN cd {{ paths.environment }} && spack install && spack gc -y
+{% if strip %}
+
+# Strip all the binaries
+RUN find -L {{ paths.view }}/* -type f -exec readlink -f '{}' \; | \
+    xargs file -i | \
+    grep 'charset=binary' | \
+    grep 'x-executable\|x-archive\|x-sharedlib' | \
+    awk -F: '{print $1}' | xargs strip -s
+{% endif %}
+
+# Modifications to the environment that are necessary to run
+RUN cd {{ paths.environment }} && \
+    spack env activate --sh -d . >> /etc/profile.d/z10_spack_environment.sh
+
+{% if extra_instructions.build %}
+{{ extra_instructions.build }}
+{% endif %}
+
+# Bare OS image to run the installed executables
+FROM {{ run.image }}
+
+COPY --from=builder {{ paths.environment }} {{ paths.environment }}
+COPY --from=builder {{ paths.store }} {{ paths.store }}
+COPY --from=builder {{ paths.view }} {{ paths.view }}
+COPY --from=builder /etc/profile.d/z10_spack_environment.sh /etc/profile.d/z10_spack_environment.sh
+
+{% if os_packages %}
+RUN {{ os_packages.update }}                                   \
+ && {{ os_packages.install }}{% for pkg in os_packages.list %} {{ pkg }}{% endfor %} \
+ && {{ os_packages.clean }}
+{% endif %}
+
+{% if extra_instructions.final %}
+{{ extra_instructions.final }}
+{% endif %}
+
+{% for label, value in labels.items() %}
+LABEL "{{ label }}"="{{ value }}"
+{% endfor %}
+
+ENTRYPOINT ["/bin/bash", "--rcfile", "/etc/profile", "-l"]
diff --git a/share/spack/templates/container/singularity.def b/share/spack/templates/container/singularity.def
new file mode 100644
index 0000000000..616e677f96
--- /dev/null
+++ b/share/spack/templates/container/singularity.def
@@ -0,0 +1,90 @@
+Bootstrap: docker
+From: {{ build.image }}:{{ build.tag }}
+Stage: build
+
+%post
+  # Create the manifest file for the installation in /opt/spack-environment
+  mkdir {{ paths.environment }} && cd {{ paths.environment }}
+  cat << EOF > spack.yaml
+{{ manifest }}
+EOF
+
+  # Install all the required software
+  . /opt/spack/share/spack/setup-env.sh
+  spack install
+  spack gc -y
+  spack env activate --sh -d . >> {{ paths.environment }}/environment_modifications.sh
+{% if strip %}
+
+  # Strip the binaries to reduce the size of the image
+  find -L {{ paths.view }}/* -type f -exec readlink -f '{}' \; | \
+    xargs file -i | \
+    grep 'charset=binary' | \
+    grep 'x-executable\|x-archive\|x-sharedlib' | \
+    awk -F: '{print $1}' | xargs strip -s
+{% endif %}
+{% if extra_instructions.build %}
+{{ extra_instructions.build }}
+{% endif %}
+
+
+{% if apps %}
+{% for application, help_text in apps.items() %}
+
+%apprun {{ application }}
+    exec /opt/view/bin/{{ application }} "$@"
+
+%apphelp {{ application }}
+    {{help_text }}
+{% endfor %}
+{% endif %}
+
+Bootstrap: docker
+From: {{ run.image }}
+Stage: final
+
+%files from build
+  {{ paths.environment }} /opt
+  {{ paths.store }} /opt
+  {{ paths.view }} /opt
+  {{ paths.environment }}/environment_modifications.sh {{ paths.environment }}/environment_modifications.sh
+
+%post
+{% if os_packages.list %}
+  # Update, install and cleanup of system packages
+  {{ os_packages.update }}
+  {{ os_packages.install }} {{ os_packages.list | join | replace('\n', ' ') }}
+  {{ os_packages.clean }}
+{% endif %}
+  # Modify the environment without relying on sourcing shell specific files at startup
+  cat {{ paths.environment }}/environment_modifications.sh >> $SINGULARITY_ENVIRONMENT
+{% if extra_instructions.final %}
+{{ extra_instructions.final }}
+{% endif %}
+
+{% if runscript %}
+%runscript
+{{ runscript }}
+{% endif %}
+
+{% if startscript %}
+%startscript
+{{ startscript }}
+{% endif %}
+
+{% if test %}
+%test
+{{ test }}
+{% endif %}
+
+{% if help %}
+%help
+{{ help }}
+{% endif %}
+
+{% if labels %}
+%labels
+{% for label, value in labels.items() %}
+  {{ label }} {{ value }}
+{% endfor %}
+{% endif %}
\ No newline at end of file
-- 
GitLab