main dca509fe793f cached
49 files
12.4 MB
3.2M tokens
139 symbols
1 requests
Copy disabled (too large) Download .txt
Showing preview only (12,960K chars total). Download the full file to get everything.
Repository: facebookresearch/segment-anything
Branch: main
Commit: dca509fe793f
Files: 49
Total size: 12.4 MB

Directory structure:
gitextract_o4om8lod/

├── .flake8
├── .gitignore
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── LICENSE
├── README.md
├── demo/
│   ├── README.md
│   ├── configs/
│   │   └── webpack/
│   │       ├── common.js
│   │       ├── dev.js
│   │       └── prod.js
│   ├── package.json
│   ├── postcss.config.js
│   ├── src/
│   │   ├── App.tsx
│   │   ├── assets/
│   │   │   ├── index.html
│   │   │   └── scss/
│   │   │       └── App.scss
│   │   ├── components/
│   │   │   ├── Stage.tsx
│   │   │   ├── Tool.tsx
│   │   │   ├── helpers/
│   │   │   │   ├── Interfaces.tsx
│   │   │   │   ├── maskUtils.tsx
│   │   │   │   ├── onnxModelAPI.tsx
│   │   │   │   └── scaleHelper.tsx
│   │   │   └── hooks/
│   │   │       ├── context.tsx
│   │   │       └── createContext.tsx
│   │   └── index.tsx
│   ├── tailwind.config.js
│   └── tsconfig.json
├── linter.sh
├── notebooks/
│   ├── automatic_mask_generator_example.ipynb
│   ├── onnx_model_example.ipynb
│   └── predictor_example.ipynb
├── scripts/
│   ├── amg.py
│   └── export_onnx_model.py
├── segment_anything/
│   ├── __init__.py
│   ├── automatic_mask_generator.py
│   ├── build_sam.py
│   ├── modeling/
│   │   ├── __init__.py
│   │   ├── common.py
│   │   ├── image_encoder.py
│   │   ├── mask_decoder.py
│   │   ├── prompt_encoder.py
│   │   ├── sam.py
│   │   └── transformer.py
│   ├── predictor.py
│   └── utils/
│       ├── __init__.py
│       ├── amg.py
│       ├── onnx.py
│       └── transforms.py
├── setup.cfg
└── setup.py

================================================
FILE CONTENTS
================================================

================================================
FILE: .flake8
================================================
[flake8]
ignore = W503, E203, E221, C901, C408, E741, C407, B017, F811, C101, EXE001, EXE002
max-line-length = 100
max-complexity = 18
select = B,C,E,F,W,T4,B9
per-file-ignores =
  **/__init__.py:F401,F403,E402


================================================
FILE: .gitignore
================================================
.nfs*

# compilation and distribution
__pycache__
_ext
*.pyc
*.pyd
*.so
*.dll
*.egg-info/
build/
dist/
wheels/

# pytorch/python/numpy formats
*.pth
*.pkl
*.npy
*.ts
model_ts*.txt

# onnx models
*.onnx

# ipython/jupyter notebooks
**/.ipynb_checkpoints/

# Editor temporaries
*.swn
*.swo
*.swp
*~

# editor settings
.idea
.vscode
_darcs

# demo 
**/node_modules
yarn.lock
package-lock.json

================================================
FILE: CODE_OF_CONDUCT.md
================================================
# Code of Conduct

## Our Pledge

In the interest of fostering an open and welcoming environment, we as
contributors and maintainers pledge to make participation in our project and
our community a harassment-free experience for everyone, regardless of age, body
size, disability, ethnicity, sex characteristics, gender identity and expression,
level of experience, education, socio-economic status, nationality, personal
appearance, race, religion, or sexual identity and orientation.

## Our Standards

Examples of behavior that contributes to creating a positive environment
include:

* Using welcoming and inclusive language
* Being respectful of differing viewpoints and experiences
* Gracefully accepting constructive criticism
* Focusing on what is best for the community
* Showing empathy towards other community members

Examples of unacceptable behavior by participants include:

* The use of sexualized language or imagery and unwelcome sexual attention or
  advances
* Trolling, insulting/derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or electronic
  address, without explicit permission
* Other conduct which could reasonably be considered inappropriate in a
  professional setting

## Our Responsibilities

Project maintainers are responsible for clarifying the standards of acceptable
behavior and are expected to take appropriate and fair corrective action in
response to any instances of unacceptable behavior.

Project maintainers have the right and responsibility to remove, edit, or
reject comments, commits, code, wiki edits, issues, and other contributions
that are not aligned to this Code of Conduct, or to ban temporarily or
permanently any contributor for other behaviors that they deem inappropriate,
threatening, offensive, or harmful.

## Scope

This Code of Conduct applies within all project spaces, and it also applies when
an individual is representing the project or its community in public spaces.
Examples of representing a project or community include using an official
project e-mail address, posting via an official social media account, or acting
as an appointed representative at an online or offline event. Representation of
a project may be further defined and clarified by project maintainers.

This Code of Conduct also applies outside the project spaces when there is a
reasonable belief that an individual's behavior may have a negative impact on
the project or its community.

## Enforcement

Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported by contacting the project team at <opensource-conduct@fb.com>. All
complaints will be reviewed and investigated and will result in a response that
is deemed necessary and appropriate to the circumstances. The project team is
obligated to maintain confidentiality with regard to the reporter of an incident.
Further details of specific enforcement policies may be posted separately.

Project maintainers who do not follow or enforce the Code of Conduct in good
faith may face temporary or permanent repercussions as determined by other
members of the project's leadership.

## Attribution

This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html

[homepage]: https://www.contributor-covenant.org

For answers to common questions about this code of conduct, see
https://www.contributor-covenant.org/faq


================================================
FILE: CONTRIBUTING.md
================================================
# Contributing to segment-anything
We want to make contributing to this project as easy and transparent as
possible.

## Pull Requests
We actively welcome your pull requests.

1. Fork the repo and create your branch from `main`.
2. If you've added code that should be tested, add tests.
3. If you've changed APIs, update the documentation.
4. Ensure the test suite passes.
5. Make sure your code lints, using the `linter.sh` script in the project's root directory. Linting requires `black==23.*`, `isort==5.12.0`, `flake8`, and `mypy`.
6. If you haven't already, complete the Contributor License Agreement ("CLA").

## Contributor License Agreement ("CLA")
In order to accept your pull request, we need you to submit a CLA. You only need
to do this once to work on any of Facebook's open source projects.

Complete your CLA here: <https://code.facebook.com/cla>

## Issues
We use GitHub issues to track public bugs. Please ensure your description is
clear and has sufficient instructions to be able to reproduce the issue.

Facebook has a [bounty program](https://www.facebook.com/whitehat/) for the safe
disclosure of security bugs. In those cases, please go through the process
outlined on that page and do not file a public issue.

## License
By contributing to segment-anything, you agree that your contributions will be licensed
under the LICENSE file in the root directory of this source tree.


================================================
FILE: LICENSE
================================================
                                 Apache License
                           Version 2.0, January 2004
                        http://www.apache.org/licenses/

   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

   1. Definitions.

      "License" shall mean the terms and conditions for use, reproduction,
      and distribution as defined by Sections 1 through 9 of this document.

      "Licensor" shall mean the copyright owner or entity authorized by
      the copyright owner that is granting the License.

      "Legal Entity" shall mean the union of the acting entity and all
      other entities that control, are controlled by, or are under common
      control with that entity. For the purposes of this definition,
      "control" means (i) the power, direct or indirect, to cause the
      direction or management of such entity, whether by contract or
      otherwise, or (ii) ownership of fifty percent (50%) or more of the
      outstanding shares, or (iii) beneficial ownership of such entity.

      "You" (or "Your") shall mean an individual or Legal Entity
      exercising permissions granted by this License.

      "Source" form shall mean the preferred form for making modifications,
      including but not limited to software source code, documentation
      source, and configuration files.

      "Object" form shall mean any form resulting from mechanical
      transformation or translation of a Source form, including but
      not limited to compiled object code, generated documentation,
      and conversions to other media types.

      "Work" shall mean the work of authorship, whether in Source or
      Object form, made available under the License, as indicated by a
      copyright notice that is included in or attached to the work
      (an example is provided in the Appendix below).

      "Derivative Works" shall mean any work, whether in Source or Object
      form, that is based on (or derived from) the Work and for which the
      editorial revisions, annotations, elaborations, or other modifications
      represent, as a whole, an original work of authorship. For the purposes
      of this License, Derivative Works shall not include works that remain
      separable from, or merely link (or bind by name) to the interfaces of,
      the Work and Derivative Works thereof.

      "Contribution" shall mean any work of authorship, including
      the original version of the Work and any modifications or additions
      to that Work or Derivative Works thereof, that is intentionally
      submitted to Licensor for inclusion in the Work by the copyright owner
      or by an individual or Legal Entity authorized to submit on behalf of
      the copyright owner. For the purposes of this definition, "submitted"
      means any form of electronic, verbal, or written communication sent
      to the Licensor or its representatives, including but not limited to
      communication on electronic mailing lists, source code control systems,
      and issue tracking systems that are managed by, or on behalf of, the
      Licensor for the purpose of discussing and improving the Work, but
      excluding communication that is conspicuously marked or otherwise
      designated in writing by the copyright owner as "Not a Contribution."

      "Contributor" shall mean Licensor and any individual or Legal Entity
      on behalf of whom a Contribution has been received by Licensor and
      subsequently incorporated within the Work.

   2. Grant of Copyright License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      copyright license to reproduce, prepare Derivative Works of,
      publicly display, publicly perform, sublicense, and distribute the
      Work and such Derivative Works in Source or Object form.

   3. Grant of Patent License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      (except as stated in this section) patent license to make, have made,
      use, offer to sell, sell, import, and otherwise transfer the Work,
      where such license applies only to those patent claims licensable
      by such Contributor that are necessarily infringed by their
      Contribution(s) alone or by combination of their Contribution(s)
      with the Work to which such Contribution(s) was submitted. If You
      institute patent litigation against any entity (including a
      cross-claim or counterclaim in a lawsuit) alleging that the Work
      or a Contribution incorporated within the Work constitutes direct
      or contributory patent infringement, then any patent licenses
      granted to You under this License for that Work shall terminate
      as of the date such litigation is filed.

   4. Redistribution. You may reproduce and distribute copies of the
      Work or Derivative Works thereof in any medium, with or without
      modifications, and in Source or Object form, provided that You
      meet the following conditions:

      (a) You must give any other recipients of the Work or
          Derivative Works a copy of this License; and

      (b) You must cause any modified files to carry prominent notices
          stating that You changed the files; and

      (c) You must retain, in the Source form of any Derivative Works
          that You distribute, all copyright, patent, trademark, and
          attribution notices from the Source form of the Work,
          excluding those notices that do not pertain to any part of
          the Derivative Works; and

      (d) If the Work includes a "NOTICE" text file as part of its
          distribution, then any Derivative Works that You distribute must
          include a readable copy of the attribution notices contained
          within such NOTICE file, excluding those notices that do not
          pertain to any part of the Derivative Works, in at least one
          of the following places: within a NOTICE text file distributed
          as part of the Derivative Works; within the Source form or
          documentation, if provided along with the Derivative Works; or,
          within a display generated by the Derivative Works, if and
          wherever such third-party notices normally appear. The contents
          of the NOTICE file are for informational purposes only and
          do not modify the License. You may add Your own attribution
          notices within Derivative Works that You distribute, alongside
          or as an addendum to the NOTICE text from the Work, provided
          that such additional attribution notices cannot be construed
          as modifying the License.

      You may add Your own copyright statement to Your modifications and
      may provide additional or different license terms and conditions
      for use, reproduction, or distribution of Your modifications, or
      for any such Derivative Works as a whole, provided Your use,
      reproduction, and distribution of the Work otherwise complies with
      the conditions stated in this License.

   5. Submission of Contributions. Unless You explicitly state otherwise,
      any Contribution intentionally submitted for inclusion in the Work
      by You to the Licensor shall be under the terms and conditions of
      this License, without any additional terms or conditions.
      Notwithstanding the above, nothing herein shall supersede or modify
      the terms of any separate license agreement you may have executed
      with Licensor regarding such Contributions.

   6. Trademarks. This License does not grant permission to use the trade
      names, trademarks, service marks, or product names of the Licensor,
      except as required for reasonable and customary use in describing the
      origin of the Work and reproducing the content of the NOTICE file.

   7. Disclaimer of Warranty. Unless required by applicable law or
      agreed to in writing, Licensor provides the Work (and each
      Contributor provides its Contributions) on an "AS IS" BASIS,
      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
      implied, including, without limitation, any warranties or conditions
      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
      PARTICULAR PURPOSE. You are solely responsible for determining the
      appropriateness of using or redistributing the Work and assume any
      risks associated with Your exercise of permissions under this License.

   8. Limitation of Liability. In no event and under no legal theory,
      whether in tort (including negligence), contract, or otherwise,
      unless required by applicable law (such as deliberate and grossly
      negligent acts) or agreed to in writing, shall any Contributor be
      liable to You for damages, including any direct, indirect, special,
      incidental, or consequential damages of any character arising as a
      result of this License or out of the use or inability to use the
      Work (including but not limited to damages for loss of goodwill,
      work stoppage, computer failure or malfunction, or any and all
      other commercial damages or losses), even if such Contributor
      has been advised of the possibility of such damages.

   9. Accepting Warranty or Additional Liability. While redistributing
      the Work or Derivative Works thereof, You may choose to offer,
      and charge a fee for, acceptance of support, warranty, indemnity,
      or other liability obligations and/or rights consistent with this
      License. However, in accepting such obligations, You may act only
      on Your own behalf and on Your sole responsibility, not on behalf
      of any other Contributor, and only if You agree to indemnify,
      defend, and hold each Contributor harmless for any liability
      incurred by, or claims asserted against, such Contributor by reason
      of your accepting any such warranty or additional liability.

   END OF TERMS AND CONDITIONS

   APPENDIX: How to apply the Apache License to your work.

      To apply the Apache License to your work, attach the following
      boilerplate notice, with the fields enclosed by brackets "[]"
      replaced with your own identifying information. (Don't include
      the brackets!)  The text should be enclosed in the appropriate
      comment syntax for the file format. We also recommend that a
      file or class name and description of purpose be included on the
      same "printed page" as the copyright notice for easier
      identification within third-party archives.

   Copyright [yyyy] [name of copyright owner]

   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
   You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.


================================================
FILE: README.md
================================================
## Latest updates -- SAM 2: Segment Anything in Images and Videos

Please check out our new release on [**Segment Anything Model 2 (SAM 2)**](https://github.com/facebookresearch/segment-anything-2).

* SAM 2 code: https://github.com/facebookresearch/segment-anything-2
* SAM 2 demo: https://sam2.metademolab.com/
* SAM 2 paper: https://arxiv.org/abs/2408.00714

 ![SAM 2 architecture](https://github.com/facebookresearch/segment-anything-2/blob/main/assets/model_diagram.png?raw=true)

**Segment Anything Model 2 (SAM 2)** is a foundation model towards solving promptable visual segmentation in images and videos. We extend SAM to video by considering images as a video with a single frame. The model design is a simple transformer architecture with streaming memory for real-time video processing. We build a model-in-the-loop data engine, which improves model and data via user interaction, to collect [**our SA-V dataset**](https://ai.meta.com/datasets/segment-anything-video), the largest video segmentation dataset to date. SAM 2 trained on our data provides strong performance across a wide range of tasks and visual domains.

# Segment Anything

**[Meta AI Research, FAIR](https://ai.facebook.com/research/)**

[Alexander Kirillov](https://alexander-kirillov.github.io/), [Eric Mintun](https://ericmintun.github.io/), [Nikhila Ravi](https://nikhilaravi.com/), [Hanzi Mao](https://hanzimao.me/), Chloe Rolland, Laura Gustafson, [Tete Xiao](https://tetexiao.com), [Spencer Whitehead](https://www.spencerwhitehead.com/), Alex Berg, Wan-Yen Lo, [Piotr Dollar](https://pdollar.github.io/), [Ross Girshick](https://www.rossgirshick.info/)

[[`Paper`](https://ai.facebook.com/research/publications/segment-anything/)] [[`Project`](https://segment-anything.com/)] [[`Demo`](https://segment-anything.com/demo)] [[`Dataset`](https://segment-anything.com/dataset/index.html)] [[`Blog`](https://ai.facebook.com/blog/segment-anything-foundation-model-image-segmentation/)] [[`BibTeX`](#citing-segment-anything)]

![SAM design](assets/model_diagram.png?raw=true)

The **Segment Anything Model (SAM)** produces high quality object masks from input prompts such as points or boxes, and it can be used to generate masks for all objects in an image. It has been trained on a [dataset](https://segment-anything.com/dataset/index.html) of 11 million images and 1.1 billion masks, and has strong zero-shot performance on a variety of segmentation tasks.

<p float="left">
  <img src="assets/masks1.png?raw=true" width="37.25%" />
  <img src="assets/masks2.jpg?raw=true" width="61.5%" /> 
</p>

## Installation

The code requires `python>=3.8`, as well as `pytorch>=1.7` and `torchvision>=0.8`. Please follow the instructions [here](https://pytorch.org/get-started/locally/) to install both PyTorch and TorchVision dependencies. Installing both PyTorch and TorchVision with CUDA support is strongly recommended.

Install Segment Anything:

```
pip install git+https://github.com/facebookresearch/segment-anything.git
```

or clone the repository locally and install with

```
git clone git@github.com:facebookresearch/segment-anything.git
cd segment-anything; pip install -e .
```

The following optional dependencies are necessary for mask post-processing, saving masks in COCO format, the example notebooks, and exporting the model in ONNX format. `jupyter` is also required to run the example notebooks.

```
pip install opencv-python pycocotools matplotlib onnxruntime onnx
```

## <a name="GettingStarted"></a>Getting Started

First download a [model checkpoint](#model-checkpoints). Then the model can be used in just a few lines to get masks from a given prompt:

```
from segment_anything import SamPredictor, sam_model_registry
sam = sam_model_registry["<model_type>"](checkpoint="<path/to/checkpoint>")
predictor = SamPredictor(sam)
predictor.set_image(<your_image>)
masks, _, _ = predictor.predict(<input_prompts>)
```

or generate masks for an entire image:

```
from segment_anything import SamAutomaticMaskGenerator, sam_model_registry
sam = sam_model_registry["<model_type>"](checkpoint="<path/to/checkpoint>")
mask_generator = SamAutomaticMaskGenerator(sam)
masks = mask_generator.generate(<your_image>)
```

Additionally, masks can be generated for images from the command line:

```
python scripts/amg.py --checkpoint <path/to/checkpoint> --model-type <model_type> --input <image_or_folder> --output <path/to/output>
```

See the examples notebooks on [using SAM with prompts](/notebooks/predictor_example.ipynb) and [automatically generating masks](/notebooks/automatic_mask_generator_example.ipynb) for more details.

<p float="left">
  <img src="assets/notebook1.png?raw=true" width="49.1%" />
  <img src="assets/notebook2.png?raw=true" width="48.9%" />
</p>

## ONNX Export

SAM's lightweight mask decoder can be exported to ONNX format so that it can be run in any environment that supports ONNX runtime, such as in-browser as showcased in the [demo](https://segment-anything.com/demo). Export the model with

```
python scripts/export_onnx_model.py --checkpoint <path/to/checkpoint> --model-type <model_type> --output <path/to/output>
```

See the [example notebook](https://github.com/facebookresearch/segment-anything/blob/main/notebooks/onnx_model_example.ipynb) for details on how to combine image preprocessing via SAM's backbone with mask prediction using the ONNX model. It is recommended to use the latest stable version of PyTorch for ONNX export.

### Web demo

The `demo/` folder has a simple one page React app which shows how to run mask prediction with the exported ONNX model in a web browser with multithreading. Please see [`demo/README.md`](https://github.com/facebookresearch/segment-anything/blob/main/demo/README.md) for more details.

## <a name="Models"></a>Model Checkpoints

Three model versions of the model are available with different backbone sizes. These models can be instantiated by running

```
from segment_anything import sam_model_registry
sam = sam_model_registry["<model_type>"](checkpoint="<path/to/checkpoint>")
```

Click the links below to download the checkpoint for the corresponding model type.

- **`default` or `vit_h`: [ViT-H SAM model.](https://dl.fbaipublicfiles.com/segment_anything/sam_vit_h_4b8939.pth)**
- `vit_l`: [ViT-L SAM model.](https://dl.fbaipublicfiles.com/segment_anything/sam_vit_l_0b3195.pth)
- `vit_b`: [ViT-B SAM model.](https://dl.fbaipublicfiles.com/segment_anything/sam_vit_b_01ec64.pth)

## Dataset

See [here](https://ai.facebook.com/datasets/segment-anything/) for an overview of the datastet. The dataset can be downloaded [here](https://ai.facebook.com/datasets/segment-anything-downloads/). By downloading the datasets you agree that you have read and accepted the terms of the SA-1B Dataset Research License.

We save masks per image as a json file. It can be loaded as a dictionary in python in the below format.

```python
{
    "image"                 : image_info,
    "annotations"           : [annotation],
}

image_info {
    "image_id"              : int,              # Image id
    "width"                 : int,              # Image width
    "height"                : int,              # Image height
    "file_name"             : str,              # Image filename
}

annotation {
    "id"                    : int,              # Annotation id
    "segmentation"          : dict,             # Mask saved in COCO RLE format.
    "bbox"                  : [x, y, w, h],     # The box around the mask, in XYWH format
    "area"                  : int,              # The area in pixels of the mask
    "predicted_iou"         : float,            # The model's own prediction of the mask's quality
    "stability_score"       : float,            # A measure of the mask's quality
    "crop_box"              : [x, y, w, h],     # The crop of the image used to generate the mask, in XYWH format
    "point_coords"          : [[x, y]],         # The point coordinates input to the model to generate the mask
}
```

Image ids can be found in sa_images_ids.txt which can be downloaded using the above [link](https://ai.facebook.com/datasets/segment-anything-downloads/) as well.

To decode a mask in COCO RLE format into binary:

```
from pycocotools import mask as mask_utils
mask = mask_utils.decode(annotation["segmentation"])
```

See [here](https://github.com/cocodataset/cocoapi/blob/master/PythonAPI/pycocotools/mask.py) for more instructions to manipulate masks stored in RLE format.

## License

The model is licensed under the [Apache 2.0 license](LICENSE).

## Contributing

See [contributing](CONTRIBUTING.md) and the [code of conduct](CODE_OF_CONDUCT.md).

## Contributors

The Segment Anything project was made possible with the help of many contributors (alphabetical):

Aaron Adcock, Vaibhav Aggarwal, Morteza Behrooz, Cheng-Yang Fu, Ashley Gabriel, Ahuva Goldstand, Allen Goodman, Sumanth Gurram, Jiabo Hu, Somya Jain, Devansh Kukreja, Robert Kuo, Joshua Lane, Yanghao Li, Lilian Luong, Jitendra Malik, Mallika Malhotra, William Ngan, Omkar Parkhi, Nikhil Raina, Dirk Rowe, Neil Sejoor, Vanessa Stark, Bala Varadarajan, Bram Wasti, Zachary Winstrom

## Citing Segment Anything

If you use SAM or SA-1B in your research, please use the following BibTeX entry.

```
@article{kirillov2023segany,
  title={Segment Anything},
  author={Kirillov, Alexander and Mintun, Eric and Ravi, Nikhila and Mao, Hanzi and Rolland, Chloe and Gustafson, Laura and Xiao, Tete and Whitehead, Spencer and Berg, Alexander C. and Lo, Wan-Yen and Doll{\'a}r, Piotr and Girshick, Ross},
  journal={arXiv:2304.02643},
  year={2023}
}
```


================================================
FILE: demo/README.md
================================================
## Segment Anything Simple Web demo

This **front-end only** React based web demo shows how to load a fixed image and corresponding `.npy` file of the SAM image embedding, and run the SAM ONNX model in the browser using Web Assembly with mulithreading enabled by `SharedArrayBuffer`, Web Worker, and SIMD128.

<img src="https://github.com/facebookresearch/segment-anything/raw/main/assets/minidemo.gif" width="500"/>

## Run the app

Install Yarn

```
npm install --g yarn
```

Build and run:

```
yarn && yarn start
```

Navigate to [`http://localhost:8081/`](http://localhost:8081/)

Move your cursor around to see the mask prediction update in real time.

## Export the image embedding

In the [ONNX Model Example notebook](https://github.com/facebookresearch/segment-anything/blob/main/notebooks/onnx_model_example.ipynb) upload the image of your choice and generate and save corresponding embedding.

Initialize the predictor:

```python
checkpoint = "sam_vit_h_4b8939.pth"
model_type = "vit_h"
sam = sam_model_registry[model_type](checkpoint=checkpoint)
sam.to(device='cuda')
predictor = SamPredictor(sam)
```

Set the new image and export the embedding:

```
image = cv2.imread('src/assets/dogs.jpg')
predictor.set_image(image)
image_embedding = predictor.get_image_embedding().cpu().numpy()
np.save("dogs_embedding.npy", image_embedding)
```

Save the new image and embedding in `src/assets/data`.

## Export the ONNX model

You also need to export the quantized ONNX model from the [ONNX Model Example notebook](https://github.com/facebookresearch/segment-anything/blob/main/notebooks/onnx_model_example.ipynb).

Run the cell in the notebook which saves the `sam_onnx_quantized_example.onnx` file, download it and copy it to the path `/model/sam_onnx_quantized_example.onnx`.

Here is a snippet of the export/quantization code:

```
onnx_model_path = "sam_onnx_example.onnx"
onnx_model_quantized_path = "sam_onnx_quantized_example.onnx"
quantize_dynamic(
    model_input=onnx_model_path,
    model_output=onnx_model_quantized_path,
    optimize_model=True,
    per_channel=False,
    reduce_range=False,
    weight_type=QuantType.QUInt8,
)
```

**NOTE: if you change the ONNX model by using a new checkpoint you need to also re-export the embedding.**

## Update the image, embedding, model in the app

Update the following file paths at the top of`App.tsx`:

```py
const IMAGE_PATH = "/assets/data/dogs.jpg";
const IMAGE_EMBEDDING = "/assets/data/dogs_embedding.npy";
const MODEL_DIR = "/model/sam_onnx_quantized_example.onnx";
```

## ONNX multithreading with SharedArrayBuffer

To use multithreading, the appropriate headers need to be set to create a cross origin isolation state which will enable use of `SharedArrayBuffer` (see this [blog post](https://cloudblogs.microsoft.com/opensource/2021/09/02/onnx-runtime-web-running-your-machine-learning-model-in-browser/) for more details)

The headers below are set in `configs/webpack/dev.js`:

```js
headers: {
    "Cross-Origin-Opener-Policy": "same-origin",
    "Cross-Origin-Embedder-Policy": "credentialless",
}
```

## Structure of the app

**`App.tsx`**

- Initializes ONNX model
- Loads image embedding and image
- Runs the ONNX model based on input prompts

**`Stage.tsx`**

- Handles mouse move interaction to update the ONNX model prompt

**`Tool.tsx`**

- Renders the image and the mask prediction

**`helpers/maskUtils.tsx`**

- Conversion of ONNX model output from array to an HTMLImageElement

**`helpers/onnxModelAPI.tsx`**

- Formats the inputs for the ONNX model

**`helpers/scaleHelper.tsx`**

- Handles image scaling logic for SAM (longest size 1024)

**`hooks/`**

- Handle shared state for the app


================================================
FILE: demo/configs/webpack/common.js
================================================
// Copyright (c) Meta Platforms, Inc. and affiliates.
// All rights reserved.

// This source code is licensed under the license found in the
// LICENSE file in the root directory of this source tree.

const { resolve } = require("path");
const HtmlWebpackPlugin = require("html-webpack-plugin");
const FriendlyErrorsWebpackPlugin = require("friendly-errors-webpack-plugin");
const CopyPlugin = require("copy-webpack-plugin");
const webpack = require("webpack");

module.exports = {
  entry: "./src/index.tsx",
  resolve: {
    extensions: [".js", ".jsx", ".ts", ".tsx"],
  },
  output: {
    path: resolve(__dirname, "dist"),
  },
  module: {
    rules: [
      {
        test: /\.mjs$/,
        include: /node_modules/,
        type: "javascript/auto",
        resolve: {
          fullySpecified: false,
        },
      },
      {
        test: [/\.jsx?$/, /\.tsx?$/],
        use: ["ts-loader"],
        exclude: /node_modules/,
      },
      {
        test: /\.css$/,
        use: ["style-loader", "css-loader"],
      },
      {
        test: /\.(scss|sass)$/,
        use: ["style-loader", "css-loader", "postcss-loader"],
      },
      {
        test: /\.(jpe?g|png|gif|svg)$/i,
        use: [
          "file-loader?hash=sha512&digest=hex&name=img/[contenthash].[ext]",
          "image-webpack-loader?bypassOnDebug&optipng.optimizationLevel=7&gifsicle.interlaced=false",
        ],
      },
      {
        test: /\.(woff|woff2|ttf)$/,
        use: {
          loader: "url-loader",
        },
      },
    ],
  },
  plugins: [
    new CopyPlugin({
      patterns: [
        {
          from: "node_modules/onnxruntime-web/dist/*.wasm",
          to: "[name][ext]",
        },
        {
          from: "model",
          to: "model",
        },
        {
          from: "src/assets",
          to: "assets",
        },
      ],
    }),
    new HtmlWebpackPlugin({
      template: "./src/assets/index.html",
    }),
    new FriendlyErrorsWebpackPlugin(),
    new webpack.ProvidePlugin({
      process: "process/browser",
    }),
  ],
};


================================================
FILE: demo/configs/webpack/dev.js
================================================
// Copyright (c) Meta Platforms, Inc. and affiliates.
// All rights reserved.

// This source code is licensed under the license found in the
// LICENSE file in the root directory of this source tree.

// development config
const { merge } = require("webpack-merge");
const commonConfig = require("./common");

module.exports = merge(commonConfig, {
  mode: "development",
  devServer: {
    hot: true, // enable HMR on the server
    open: true,
    // These headers enable the cross origin isolation state
    // needed to enable use of SharedArrayBuffer for ONNX 
    // multithreading. 
    headers: {
      "Cross-Origin-Opener-Policy": "same-origin",
      "Cross-Origin-Embedder-Policy": "credentialless",
    },
  },
  devtool: "cheap-module-source-map",
});


================================================
FILE: demo/configs/webpack/prod.js
================================================
// Copyright (c) Meta Platforms, Inc. and affiliates.
// All rights reserved.

// This source code is licensed under the license found in the
// LICENSE file in the root directory of this source tree.

// production config
const { merge } = require("webpack-merge");
const { resolve } = require("path");
const Dotenv = require("dotenv-webpack");
const commonConfig = require("./common");

module.exports = merge(commonConfig, {
  mode: "production",
  output: {
    filename: "js/bundle.[contenthash].min.js",
    path: resolve(__dirname, "../../dist"),
    publicPath: "/",
  },
  devtool: "source-map",
  plugins: [new Dotenv()],
});


================================================
FILE: demo/package.json
================================================
{
  "name": "segment-anything-mini-demo",
  "version": "0.1.0",
  "license": "MIT",
  "scripts": {
    "build": "yarn run clean-dist && webpack --config=configs/webpack/prod.js && mv dist/*.wasm dist/js",
    "clean-dist": "rimraf dist/*",
    "lint": "eslint './src/**/*.{js,ts,tsx}' --quiet",
    "start": "yarn run start-dev",
    "test": "yarn run start-model-test",
    "start-dev": "webpack serve --config=configs/webpack/dev.js"
  },
  "devDependencies": {
    "@babel/core": "^7.18.13",
    "@babel/preset-env": "^7.18.10",
    "@babel/preset-react": "^7.18.6",
    "@babel/preset-typescript": "^7.18.6",
    "@pmmmwh/react-refresh-webpack-plugin": "^0.5.7",
    "@testing-library/react": "^13.3.0",
    "@types/node": "^18.7.13",
    "@types/react": "^18.0.17",
    "@types/react-dom": "^18.0.6",
    "@types/underscore": "^1.11.4",
    "@typescript-eslint/eslint-plugin": "^5.35.1",
    "@typescript-eslint/parser": "^5.35.1",
    "babel-loader": "^8.2.5",
    "copy-webpack-plugin": "^11.0.0",
    "css-loader": "^6.7.1",
    "dotenv": "^16.0.2",
    "dotenv-webpack": "^8.0.1",
    "eslint": "^8.22.0",
    "eslint-plugin-react": "^7.31.0",
    "file-loader": "^6.2.0",
    "fork-ts-checker-webpack-plugin": "^7.2.13",
    "friendly-errors-webpack-plugin": "^1.7.0",
    "html-webpack-plugin": "^5.5.0",
    "image-webpack-loader": "^8.1.0",
    "postcss-loader": "^7.0.1",
    "postcss-preset-env": "^7.8.0",
    "process": "^0.11.10",
    "rimraf": "^3.0.2",
    "sass": "^1.54.5",
    "sass-loader": "^13.0.2",
    "style-loader": "^3.3.1",
    "tailwindcss": "^3.1.8",
    "ts-loader": "^9.3.1",
    "typescript": "^4.8.2",
    "webpack": "^5.74.0",
    "webpack-cli": "^4.10.0",
    "webpack-dev-server": "^4.10.0",
    "webpack-dotenv-plugin": "^2.1.0",
    "webpack-merge": "^5.8.0"
  },
  "dependencies": {
    "npyjs": "^0.4.0",
    "onnxruntime-web": "^1.14.0",
    "react": "^18.2.0",
    "react-dom": "^18.2.0",
    "underscore": "^1.13.6",
    "react-refresh": "^0.14.0"
  }
}


================================================
FILE: demo/postcss.config.js
================================================
// Copyright (c) Meta Platforms, Inc. and affiliates.
// All rights reserved.

// This source code is licensed under the license found in the
// LICENSE file in the root directory of this source tree.

const tailwindcss = require("tailwindcss");
module.exports = {
  plugins: ["postcss-preset-env", 'tailwindcss/nesting', tailwindcss],
};


================================================
FILE: demo/src/App.tsx
================================================
// Copyright (c) Meta Platforms, Inc. and affiliates.
// All rights reserved.

// This source code is licensed under the license found in the
// LICENSE file in the root directory of this source tree.

import { InferenceSession, Tensor } from "onnxruntime-web";
import React, { useContext, useEffect, useState } from "react";
import "./assets/scss/App.scss";
import { handleImageScale } from "./components/helpers/scaleHelper";
import { modelScaleProps } from "./components/helpers/Interfaces";
import { onnxMaskToImage } from "./components/helpers/maskUtils";
import { modelData } from "./components/helpers/onnxModelAPI";
import Stage from "./components/Stage";
import AppContext from "./components/hooks/createContext";
const ort = require("onnxruntime-web");
/* @ts-ignore */
import npyjs from "npyjs";

// Define image, embedding and model paths
const IMAGE_PATH = "/assets/data/dogs.jpg";
const IMAGE_EMBEDDING = "/assets/data/dogs_embedding.npy";
const MODEL_DIR = "/model/sam_onnx_quantized_example.onnx";

const App = () => {
  const {
    clicks: [clicks],
    image: [, setImage],
    maskImg: [, setMaskImg],
  } = useContext(AppContext)!;
  const [model, setModel] = useState<InferenceSession | null>(null); // ONNX model
  const [tensor, setTensor] = useState<Tensor | null>(null); // Image embedding tensor

  // The ONNX model expects the input to be rescaled to 1024. 
  // The modelScale state variable keeps track of the scale values.
  const [modelScale, setModelScale] = useState<modelScaleProps | null>(null);

  // Initialize the ONNX model. load the image, and load the SAM
  // pre-computed image embedding
  useEffect(() => {
    // Initialize the ONNX model
    const initModel = async () => {
      try {
        if (MODEL_DIR === undefined) return;
        const URL: string = MODEL_DIR;
        const model = await InferenceSession.create(URL);
        setModel(model);
      } catch (e) {
        console.log(e);
      }
    };
    initModel();

    // Load the image
    const url = new URL(IMAGE_PATH, location.origin);
    loadImage(url);

    // Load the Segment Anything pre-computed embedding
    Promise.resolve(loadNpyTensor(IMAGE_EMBEDDING, "float32")).then(
      (embedding) => setTensor(embedding)
    );
  }, []);

  const loadImage = async (url: URL) => {
    try {
      const img = new Image();
      img.src = url.href;
      img.onload = () => {
        const { height, width, samScale } = handleImageScale(img);
        setModelScale({
          height: height,  // original image height
          width: width,  // original image width
          samScale: samScale, // scaling factor for image which has been resized to longest side 1024
        });
        img.width = width; 
        img.height = height; 
        setImage(img);
      };
    } catch (error) {
      console.log(error);
    }
  };

  // Decode a Numpy file into a tensor. 
  const loadNpyTensor = async (tensorFile: string, dType: string) => {
    let npLoader = new npyjs();
    const npArray = await npLoader.load(tensorFile);
    const tensor = new ort.Tensor(dType, npArray.data, npArray.shape);
    return tensor;
  };

  // Run the ONNX model every time clicks has changed
  useEffect(() => {
    runONNX();
  }, [clicks]);

  const runONNX = async () => {
    try {
      if (
        model === null ||
        clicks === null ||
        tensor === null ||
        modelScale === null
      )
        return;
      else {
        // Preapre the model input in the correct format for SAM. 
        // The modelData function is from onnxModelAPI.tsx.
        const feeds = modelData({
          clicks,
          tensor,
          modelScale,
        });
        if (feeds === undefined) return;
        // Run the SAM ONNX model with the feeds returned from modelData()
        const results = await model.run(feeds);
        const output = results[model.outputNames[0]];
        // The predicted mask returned from the ONNX model is an array which is 
        // rendered as an HTML image using onnxMaskToImage() from maskUtils.tsx.
        setMaskImg(onnxMaskToImage(output.data, output.dims[2], output.dims[3]));
      }
    } catch (e) {
      console.log(e);
    }
  };

  return <Stage />;
};

export default App;


================================================
FILE: demo/src/assets/index.html
================================================
<!DOCTYPE html>
<html lang="en" dir="ltr" prefix="og: https://ogp.me/ns#" class="w-full h-full">
  <head>
    <meta charset="utf-8" />
    <meta
      name="viewport"
      content="width=device-width, initial-scale=1, shrink-to-fit=no"
    />
    <title>Segment Anything Demo</title>

    <!--  Meta Tags -->
    <meta property="og:type" content="website" />
    <meta property="og:title" content="Segment Anything Demo" />
  </head>
  <body class="w-full h-full">
    <div id="root" class="w-full h-full"></div>
  </body>
</html>


================================================
FILE: demo/src/assets/scss/App.scss
================================================
@tailwind base;
@tailwind components;
@tailwind utilities;


================================================
FILE: demo/src/components/Stage.tsx
================================================
// Copyright (c) Meta Platforms, Inc. and affiliates.
// All rights reserved.

// This source code is licensed under the license found in the
// LICENSE file in the root directory of this source tree.

import React, { useContext } from "react";
import * as _ from "underscore";
import Tool from "./Tool";
import { modelInputProps } from "./helpers/Interfaces";
import AppContext from "./hooks/createContext";

const Stage = () => {
  const {
    clicks: [, setClicks],
    image: [image],
  } = useContext(AppContext)!;

  const getClick = (x: number, y: number): modelInputProps => {
    const clickType = 1;
    return { x, y, clickType };
  };

  // Get mouse position and scale the (x, y) coordinates back to the natural
  // scale of the image. Update the state of clicks with setClicks to trigger
  // the ONNX model to run and generate a new mask via a useEffect in App.tsx
  const handleMouseMove = _.throttle((e: any) => {
    let el = e.nativeEvent.target;
    const rect = el.getBoundingClientRect();
    let x = e.clientX - rect.left;
    let y = e.clientY - rect.top;
    const imageScale = image ? image.width / el.offsetWidth : 1;
    x *= imageScale;
    y *= imageScale;
    const click = getClick(x, y);
    if (click) setClicks([click]);
  }, 15);

  const flexCenterClasses = "flex items-center justify-center";
  return (
    <div className={`${flexCenterClasses} w-full h-full`}>
      <div className={`${flexCenterClasses} relative w-[90%] h-[90%]`}>
        <Tool handleMouseMove={handleMouseMove} />
      </div>
    </div>
  );
};

export default Stage;


================================================
FILE: demo/src/components/Tool.tsx
================================================
// Copyright (c) Meta Platforms, Inc. and affiliates.
// All rights reserved.

// This source code is licensed under the license found in the
// LICENSE file in the root directory of this source tree.

import React, { useContext, useEffect, useState } from "react";
import AppContext from "./hooks/createContext";
import { ToolProps } from "./helpers/Interfaces";
import * as _ from "underscore";

const Tool = ({ handleMouseMove }: ToolProps) => {
  const {
    image: [image],
    maskImg: [maskImg, setMaskImg],
  } = useContext(AppContext)!;

  // Determine if we should shrink or grow the images to match the
  // width or the height of the page and setup a ResizeObserver to
  // monitor changes in the size of the page
  const [shouldFitToWidth, setShouldFitToWidth] = useState(true);
  const bodyEl = document.body;
  const fitToPage = () => {
    if (!image) return;
    const imageAspectRatio = image.width / image.height;
    const screenAspectRatio = window.innerWidth / window.innerHeight;
    setShouldFitToWidth(imageAspectRatio > screenAspectRatio);
  };
  const resizeObserver = new ResizeObserver((entries) => {
    for (const entry of entries) {
      if (entry.target === bodyEl) {
        fitToPage();
      }
    }
  });
  useEffect(() => {
    fitToPage();
    resizeObserver.observe(bodyEl);
    return () => {
      resizeObserver.unobserve(bodyEl);
    };
  }, [image]);

  const imageClasses = "";
  const maskImageClasses = `absolute opacity-40 pointer-events-none`;

  // Render the image and the predicted mask image on top
  return (
    <>
      {image && (
        <img
          onMouseMove={handleMouseMove}
          onMouseOut={() => _.defer(() => setMaskImg(null))}
          onTouchStart={handleMouseMove}
          src={image.src}
          className={`${
            shouldFitToWidth ? "w-full" : "h-full"
          } ${imageClasses}`}
        ></img>
      )}
      {maskImg && (
        <img
          src={maskImg.src}
          className={`${
            shouldFitToWidth ? "w-full" : "h-full"
          } ${maskImageClasses}`}
        ></img>
      )}
    </>
  );
};

export default Tool;


================================================
FILE: demo/src/components/helpers/Interfaces.tsx
================================================
// Copyright (c) Meta Platforms, Inc. and affiliates.
// All rights reserved.

// This source code is licensed under the license found in the
// LICENSE file in the root directory of this source tree.

import { Tensor } from "onnxruntime-web";

export interface modelScaleProps {
  samScale: number;
  height: number;
  width: number;
}

export interface modelInputProps {
  x: number;
  y: number;
  clickType: number;
}

export interface modeDataProps {
  clicks?: Array<modelInputProps>;
  tensor: Tensor;
  modelScale: modelScaleProps;
}

export interface ToolProps {
  handleMouseMove: (e: any) => void;
}


================================================
FILE: demo/src/components/helpers/maskUtils.tsx
================================================
// Copyright (c) Meta Platforms, Inc. and affiliates.
// All rights reserved.

// This source code is licensed under the license found in the
// LICENSE file in the root directory of this source tree.

// Convert the onnx model mask prediction to ImageData
function arrayToImageData(input: any, width: number, height: number) {
  const [r, g, b, a] = [0, 114, 189, 255]; // the masks's blue color
  const arr = new Uint8ClampedArray(4 * width * height).fill(0);
  for (let i = 0; i < input.length; i++) {

    // Threshold the onnx model mask prediction at 0.0
    // This is equivalent to thresholding the mask using predictor.model.mask_threshold
    // in python
    if (input[i] > 0.0) {
      arr[4 * i + 0] = r;
      arr[4 * i + 1] = g;
      arr[4 * i + 2] = b;
      arr[4 * i + 3] = a;
    }
  }
  return new ImageData(arr, height, width);
}

// Use a Canvas element to produce an image from ImageData
function imageDataToImage(imageData: ImageData) {
  const canvas = imageDataToCanvas(imageData);
  const image = new Image();
  image.src = canvas.toDataURL();
  return image;
}

// Canvas elements can be created from ImageData
function imageDataToCanvas(imageData: ImageData) {
  const canvas = document.createElement("canvas");
  const ctx = canvas.getContext("2d");
  canvas.width = imageData.width;
  canvas.height = imageData.height;
  ctx?.putImageData(imageData, 0, 0);
  return canvas;
}

// Convert the onnx model mask output to an HTMLImageElement
export function onnxMaskToImage(input: any, width: number, height: number) {
  return imageDataToImage(arrayToImageData(input, width, height));
}


================================================
FILE: demo/src/components/helpers/onnxModelAPI.tsx
================================================
// Copyright (c) Meta Platforms, Inc. and affiliates.
// All rights reserved.

// This source code is licensed under the license found in the
// LICENSE file in the root directory of this source tree.

import { Tensor } from "onnxruntime-web";
import { modeDataProps } from "./Interfaces";

const modelData = ({ clicks, tensor, modelScale }: modeDataProps) => {
  const imageEmbedding = tensor;
  let pointCoords;
  let pointLabels;
  let pointCoordsTensor;
  let pointLabelsTensor;

  // Check there are input click prompts
  if (clicks) {
    let n = clicks.length;

    // If there is no box input, a single padding point with 
    // label -1 and coordinates (0.0, 0.0) should be concatenated
    // so initialize the array to support (n + 1) points.
    pointCoords = new Float32Array(2 * (n + 1));
    pointLabels = new Float32Array(n + 1);

    // Add clicks and scale to what SAM expects
    for (let i = 0; i < n; i++) {
      pointCoords[2 * i] = clicks[i].x * modelScale.samScale;
      pointCoords[2 * i + 1] = clicks[i].y * modelScale.samScale;
      pointLabels[i] = clicks[i].clickType;
    }

    // Add in the extra point/label when only clicks and no box
    // The extra point is at (0, 0) with label -1
    pointCoords[2 * n] = 0.0;
    pointCoords[2 * n + 1] = 0.0;
    pointLabels[n] = -1.0;

    // Create the tensor
    pointCoordsTensor = new Tensor("float32", pointCoords, [1, n + 1, 2]);
    pointLabelsTensor = new Tensor("float32", pointLabels, [1, n + 1]);
  }
  const imageSizeTensor = new Tensor("float32", [
    modelScale.height,
    modelScale.width,
  ]);

  if (pointCoordsTensor === undefined || pointLabelsTensor === undefined)
    return;

  // There is no previous mask, so default to an empty tensor
  const maskInput = new Tensor(
    "float32",
    new Float32Array(256 * 256),
    [1, 1, 256, 256]
  );
  // There is no previous mask, so default to 0
  const hasMaskInput = new Tensor("float32", [0]);

  return {
    image_embeddings: imageEmbedding,
    point_coords: pointCoordsTensor,
    point_labels: pointLabelsTensor,
    orig_im_size: imageSizeTensor,
    mask_input: maskInput,
    has_mask_input: hasMaskInput,
  };
};

export { modelData };


================================================
FILE: demo/src/components/helpers/scaleHelper.tsx
================================================
// Copyright (c) Meta Platforms, Inc. and affiliates.
// All rights reserved.

// This source code is licensed under the license found in the
// LICENSE file in the root directory of this source tree.


// Helper function for handling image scaling needed for SAM
const handleImageScale = (image: HTMLImageElement) => {
  // Input images to SAM must be resized so the longest side is 1024
  const LONG_SIDE_LENGTH = 1024;
  let w = image.naturalWidth;
  let h = image.naturalHeight;
  const samScale = LONG_SIDE_LENGTH / Math.max(h, w);
  return { height: h, width: w, samScale };
};

export { handleImageScale };


================================================
FILE: demo/src/components/hooks/context.tsx
================================================
// Copyright (c) Meta Platforms, Inc. and affiliates.
// All rights reserved.

// This source code is licensed under the license found in the
// LICENSE file in the root directory of this source tree.

import React, { useState } from "react";
import { modelInputProps } from "../helpers/Interfaces";
import AppContext from "./createContext";

const AppContextProvider = (props: {
  children: React.ReactElement<any, string | React.JSXElementConstructor<any>>;
}) => {
  const [clicks, setClicks] = useState<Array<modelInputProps> | null>(null);
  const [image, setImage] = useState<HTMLImageElement | null>(null);
  const [maskImg, setMaskImg] = useState<HTMLImageElement | null>(null);

  return (
    <AppContext.Provider
      value={{
        clicks: [clicks, setClicks],
        image: [image, setImage],
        maskImg: [maskImg, setMaskImg],
      }}
    >
      {props.children}
    </AppContext.Provider>
  );
};

export default AppContextProvider;


================================================
FILE: demo/src/components/hooks/createContext.tsx
================================================
// Copyright (c) Meta Platforms, Inc. and affiliates.
// All rights reserved.

// This source code is licensed under the license found in the
// LICENSE file in the root directory of this source tree.

import { createContext } from "react";
import { modelInputProps } from "../helpers/Interfaces";

interface contextProps {
  clicks: [
    clicks: modelInputProps[] | null,
    setClicks: (e: modelInputProps[] | null) => void
  ];
  image: [
    image: HTMLImageElement | null,
    setImage: (e: HTMLImageElement | null) => void
  ];
  maskImg: [
    maskImg: HTMLImageElement | null,
    setMaskImg: (e: HTMLImageElement | null) => void
  ];
}

const AppContext = createContext<contextProps | null>(null);

export default AppContext;


================================================
FILE: demo/src/index.tsx
================================================
// Copyright (c) Meta Platforms, Inc. and affiliates.
// All rights reserved.

// This source code is licensed under the license found in the
// LICENSE file in the root directory of this source tree.

import * as React from "react";
import { createRoot } from "react-dom/client";
import AppContextProvider from "./components/hooks/context";
import App from "./App";
const container = document.getElementById("root");
const root = createRoot(container!);
root.render(
  <AppContextProvider>
    <App/>
  </AppContextProvider>
);


================================================
FILE: demo/tailwind.config.js
================================================
// Copyright (c) Meta Platforms, Inc. and affiliates.
// All rights reserved.

// This source code is licensed under the license found in the
// LICENSE file in the root directory of this source tree.

/** @type {import('tailwindcss').Config} */
module.exports = {
  content: ["./src/**/*.{html,js,tsx}"],
  theme: {},
  plugins: [],
};


================================================
FILE: demo/tsconfig.json
================================================
{
  "compilerOptions": {
    "lib": ["dom", "dom.iterable", "esnext"],
    "allowJs": true,
    "skipLibCheck": true,
    "strict": true,
    "forceConsistentCasingInFileNames": true,
    "noEmit": false,
    "esModuleInterop": true,
    "module": "esnext",
    "moduleResolution": "node",
    "resolveJsonModule": true,
    "isolatedModules": true,
    "jsx": "react",
    "incremental": true,
    "target": "ESNext",
    "useDefineForClassFields": true,
    "allowSyntheticDefaultImports": true,
    "outDir": "./dist/",
    "sourceMap": true
  },
  "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", "src"],
  "exclude": ["node_modules"]
}


================================================
FILE: linter.sh
================================================
#!/bin/bash -e
# Copyright (c) Facebook, Inc. and its affiliates.

{
  black --version | grep -E "23\." > /dev/null
} || {
  echo "Linter requires 'black==23.*' !"
  exit 1
}

ISORT_VERSION=$(isort --version-number)
if [[ "$ISORT_VERSION" != 5.12* ]]; then
  echo "Linter requires isort==5.12.0 !"
  exit 1
fi

echo "Running isort ..."
isort . --atomic

echo "Running black ..."
black -l 100 .

echo "Running flake8 ..."
if [ -x "$(command -v flake8)" ]; then
  flake8 .
else
  python3 -m flake8 .
fi

echo "Running mypy..."

mypy --exclude 'setup.py|notebooks' .


================================================
FILE: notebooks/automatic_mask_generator_example.ipynb
================================================
{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "5fa21d44",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Copyright (c) Meta Platforms, Inc. and affiliates."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b7c0041e",
   "metadata": {},
   "source": [
    "# Automatically generating object masks with SAM"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "289bb0b4",
   "metadata": {},
   "source": [
    "Since SAM can efficiently process prompts, masks for the entire image can be generated by sampling a large number of prompts over an image. This method was used to generate the dataset SA-1B. \n",
    "\n",
    "The class `SamAutomaticMaskGenerator` implements this capability. It works by sampling single-point input prompts in a grid over the image, from each of which SAM can predict multiple masks. Then, masks are filtered for quality and deduplicated using non-maximal suppression. Additional options allow for further improvement of mask quality and quantity, such as running prediction on multiple crops of the image or postprocessing masks to remove small disconnected regions and holes."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "072e25b8",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "<a target=\"_blank\" href=\"https://colab.research.google.com/github/facebookresearch/segment-anything/blob/main/notebooks/automatic_mask_generator_example.ipynb\">\n",
       "  <img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/>\n",
       "</a>\n"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from IPython.display import display, HTML\n",
    "display(HTML(\n",
    "\"\"\"\n",
    "<a target=\"_blank\" href=\"https://colab.research.google.com/github/facebookresearch/segment-anything/blob/main/notebooks/automatic_mask_generator_example.ipynb\">\n",
    "  <img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/>\n",
    "</a>\n",
    "\"\"\"\n",
    "))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c0b71431",
   "metadata": {},
   "source": [
    "## Environment Set-up"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "47e5a78f",
   "metadata": {},
   "source": [
    "If running locally using jupyter, first install `segment_anything` in your environment using the [installation instructions](https://github.com/facebookresearch/segment-anything#installation) in the repository. If running from Google Colab, set `using_colab=True` below and run the cell. In Colab, be sure to select 'GPU' under 'Edit'->'Notebook Settings'->'Hardware accelerator'."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "4fe300fb",
   "metadata": {},
   "outputs": [],
   "source": [
    "using_colab = False"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "0685a2f5",
   "metadata": {},
   "outputs": [],
   "source": [
    "if using_colab:\n",
    "    import torch\n",
    "    import torchvision\n",
    "    print(\"PyTorch version:\", torch.__version__)\n",
    "    print(\"Torchvision version:\", torchvision.__version__)\n",
    "    print(\"CUDA is available:\", torch.cuda.is_available())\n",
    "    import sys\n",
    "    !{sys.executable} -m pip install opencv-python matplotlib\n",
    "    !{sys.executable} -m pip install 'git+https://github.com/facebookresearch/segment-anything.git'\n",
    "    \n",
    "    !mkdir images\n",
    "    !wget -P images https://raw.githubusercontent.com/facebookresearch/segment-anything/main/notebooks/images/dog.jpg\n",
    "        \n",
    "    !wget https://dl.fbaipublicfiles.com/segment_anything/sam_vit_h_4b8939.pth"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "fd2bc687",
   "metadata": {},
   "source": [
    "## Set-up"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "560725a2",
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import torch\n",
    "import matplotlib.pyplot as plt\n",
    "import cv2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "74b6e5f0",
   "metadata": {},
   "outputs": [],
   "source": [
    "def show_anns(anns):\n",
    "    if len(anns) == 0:\n",
    "        return\n",
    "    sorted_anns = sorted(anns, key=(lambda x: x['area']), reverse=True)\n",
    "    ax = plt.gca()\n",
    "    ax.set_autoscale_on(False)\n",
    "\n",
    "    img = np.ones((sorted_anns[0]['segmentation'].shape[0], sorted_anns[0]['segmentation'].shape[1], 4))\n",
    "    img[:,:,3] = 0\n",
    "    for ann in sorted_anns:\n",
    "        m = ann['segmentation']\n",
    "        color_mask = np.concatenate([np.random.random(3), [0.35]])\n",
    "        img[m] = color_mask\n",
    "    ax.imshow(img)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "27c41445",
   "metadata": {},
   "source": [
    "## Example image"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "ad354922",
   "metadata": {},
   "outputs": [],
   "source": [
    "image = cv2.imread('images/dog.jpg')\n",
    "image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "e0ac8c67",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAABiIAAAQeCAYAAABVBSJEAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOz93ZbkOrImiH0GgKS7R2Tmzl27qk6fVk+vkWaNrqU1egjpvaUnkNa8gy66T1ftnRnuJGBzYWaAgaRHeERG7r9yy+XJcDoJgoDBYP9GzMy4wx3ucIc73OEOd7jDHe5whzvc4Q53uMMd7nCHO9zhDnf4DhB+6w7c4Q53uMMd7nCHO9zhDne4wx3ucIc73OEOd7jDHe5whz8v3A0Rd7jDHe5whzvc4Q53uMMd7nCHO9zhDne4wx3ucIc73OG7wd0QcYc73OEOd7jDHe5whzvc4Q53uMMd7nCHO9zhDne4wx2+G9wNEXe4wx3ucIc73OEOd7jDHe5whzvc4Q53uMMd7nCHO9zhu8HdEHGHO9zhDne4wx3ucIc73OEOd7jDHe5whzvc4Q53uMMdvhvcDRF3uMMd7nCHO9zhDne4wx3ucIc73OEOd7jDHe5whzvc4bvB3RBxhzvc4Q53uMMd7nCHO9zhDne4wx3ucIc73OEOd7jDHb4b3A0Rd7jDHe5whzvc4Q53uMMd7nCHO9zhDne4wx3ucIc73OG7Qbr1wv/X//ZfN+eYGUDxZ+pfpB8AKAwUZsg/u1cuZ7Z29D4ixJhAFIBAABGIqP5en8ksj9N7mblrp/WodP3yUNvldY/bs7iUeq3vx3Ng/Sic9Y0DwBEMQmHSsSggYhCxPpbB2cZS7EOZL2AGygJwAXIGgAiiCXEYMRw+YJhOmB5/wHR6wOnjDzicTjicHvAwPeBhfMDhcMA0TTgcjxinEcMwIKWElBJijEgpIYSAGCOICCklgAAOaLO1Gp/tOOhk1uGket7Ggu0aLm3yFSOYM5gZpSyGECilYJ4vKCXjks8oJWPJZ3DJKHlGKRklLyjLgrLMyEtGyRklX/T3glIKGAWsz+Qi7dq8Mpf63Y6ZF3BhLEvRPswozMiloBRGXgpyKVgKI+dcn1OY5dXKFtcIQAAp2rL0sxScz2eUUrBcpL9fL4ylZDydn5BLxnm+IOeCy2XGkgsuc67DFwNhSIRxHDBOCQ/HCafjiGkMmMaIYwLGoONdGHkBSgFmTmCKGE4fEIcRp48/YJyO+Pzjf8Y4Tnh4eMCQEo6HE4aUcDocEWPCOEwIIYCi4EoIASAS1CgBXAKWsmDJCxbOyCUj63HR98056/gQCIQQFOdIcHAcR4QQME3yrGEYEGPsjyEihlBxkFIExbBZn0YPPE1Y0weus7PCZ6Ut7GjLHlTcwvZa7uiSXMfI/fXZfhf8Bxs+zchlxrI8IecFS74gLzMW96GSQaXhH5esOK3vjaJrrR+LnBc5IgptKf16BApKyXJdKeCi/Udrg0oBMSMFIEXCIRLGGHCIwBAJUwJiJIxDQIyEYYoIMSCEgECEAwYEIsEnIqE9ils2jxQCKEQQRQj9hK7PomPFrW/s1rCOQV172l4ibTsO8l3Qt5t9ec/ixqogF8blcsHlcsHX86yfJzxdzvh6OeO8zLjodSDZt4ZhQgwJx+mElBI+fHhAGgY8HB4RY8I0TUJ7xwExJQyHI2IakKYTYhyR0hExTkjpAAoJoIiSRnAcQAiyNxKBgvaeCAyyrVDmtZt32aV7nNzul1QJ+ArvqcD2+fW+zbquSylYFqHTl1mPlzNKXjBf/inHWej2fH4SHFuEvi+Lo+dG03Ve8zIjL0ulH8uSlSZesCwLLk9n5GXB09MTlmXB+fxVaM6yoJQMxgUERgqEFAjHMWIIAYckuJgICIEQA9k2jHkRmnWeZ1wWob3LknFeMual4Lww5lxwXgqWDMwZyIWwFNnfbTRHwzGiSittzeXCWHKpfFGbAUHKEAJCIKQUkVLEOIwYUkKKJPTP5ouMDTKcleMFC5Zc8PMvZ+Sl4HwuyLng6TJjHBM+fjzi8+fP+J/+y3/Bxw8/4C9/+Rsejh/x4fQDHh4ecDo9YJomjOOIw+mIcZowTGPlHRr9p4pbOQsdW5ZL2ztL0fktMic5Y1kuOpeLo2kLcha6k8sCzoYPWeYxy3wuF6WJikt5FlxaZvl9Xs4oXGpf7OjB6E7/sfP9bzIP7UNyIShQt+fUvce+O5pSSq6L0mhq5Rv0s+S50mbD9WxHx2ewp9WNzQLc+l//TkQdnSN3vl6/Obe+Fqvz7b0j7f++P87r9re/7fLZAUrq1m2ESrfW97ej3bvt40s8/V5/v+V6//0WceL6uGzPv9S39b743PGWNtb3PTeeezzUtWvXfen6HQEwUJYEAiPGRR8gMmZGRmZgYeD//H/5v+H//r/9P1F4QCkD/vf/7/8b//v/7/+Dpy9nnJ8uIBIZ7MPjgGlKmAbha7nScF1HUWVIL+reCHvv8NK1b/39tdd9S1u3vM9L110bm628/zxc7+N2wq7h+zVe/3rb6xOA5yYzMopKwuEKDbhKG0y38Q7w0vh96zyu36VQQeGCyBHR/FyJwfpp9LrI6gpHMI1Y0n9CoRPm4a84hyP+/4e/4hIHnNMJREDUxVcogAMDxIjESAACJxASxlAwBkZwdIgbM1y/Z84oXEQu9fKYk909jywyknxY27KZVo4Ny7w4HqaXyxoPlFHKovoIaJ/k+aPDHdE3ZNUBzMoPLBUvyN5FeYmlzCicpSlTdzEws/AQT8uCJWfMXBxvVICs7zU/ASWD5gVUCqDyJfJF5coZXDLATT+DInoFKjOozE2e4CZ31o7Y9da5qgTcx7X1kpN1vHMxJYASPj4+4vHhAZ8+POJ4OGCehZ/8xz//gfPljJ9/+SfmRd7BdEG1bT2mmPDh8SPGccTj4yNyzlXu+/LlC4riTNvnAkCh6tCGYURKQ9WvNX5R1oDhw9evX7EsS+WNbe2M41ivy3nB5XKp9xgvVWXd0tM1r7+y9rZjStovkSWY4fjzRWWQ4uigjHlb93IMFEEIEElZdZhg6JKsV+YQnR4QiIBcJ0pMFADDww/4y//1/4H04S+Y/u1/FR68XLBcnnD+8k/MJeDMEZkJGUDIZ8RyBrGwgxEAkekQC5Yi+F4Uz6E6jHyRNZcNF6Fy6zwLXi5zG6eKf7reTeeBDLDoWFAyiBnEBeAs+G4Kth00lXXhn+Fokh573myNnbfQabfWduBb9/G3Qim3MU03GyJ6+HYmZO/a5xgoItpRnGx7sm+M2Gcu+mvp6iS2dq70bef5cvQ95E5B366XxdR/ty/UGBwCKIpiLsYJcZgwHo4YpiMOxyOmwxGH6YBpnDCNkyguBiWMw4A0pM4AYcpkL2CTauaICEwMgo45aV+wRegqGJNukvrKxW9EYN1DbZPSc7oxlWKGCBHYzUiQVfmQlwWFTTkq37k4RYV+cs7gbMJ9VuJsxKQpAMwY0BkickFBQdb7cjVELMq0qCEiqyEimwJBlOuFS2eIsNkHgEhBlZ4BpAJTwxNjehRP9bjBWf+Hb7zb1RlXV5BS2EABTEEU+tHjQ6hK/lCPspEGaoqX4BhPQ02P4fWlKm7YoxW/AkAcnKJCnmvGsBDkE2PQv7eKIFJFHMjYQDcE5AcJXT9a1+y7vsN6ZVcm8bqAUmfpynXczbEavcwgBtmwSjbczKrUzRu8z2UR5Zwp6fQYSgFxw3NpqzEppRo32kbnFXNZ+cGcM+oGpn1jVuaExThqG729byi6CUcVuiggg1ECoRRCYYAKgZlsqTskocaxdIjc6ITRetJ1a/NZleA7UybosNU2dYYNIgTD42AKQ79mmjBg/QD6fakq5iqaCC3JtuFSABBQAiPFCxiMyzyDAVzijMSMmKK8eYlAYURj4phUCWKfAIYyvXAP9sfVWLy0Qz6/JzchobtOp8nWDuvCN6PPWqnafThXem74WexYr2nrowk0bf3sKbvavK6/Bxm1yryv7l3PNjX6hPo81GP37KrNNLxVvNRB4oqnBKrjBHcdObrgmMZGjmR5XNljjacQxphUsN9SfL/10qqNGAgpRjFgK38wDAOGNDgjQ3T0WfBvPXbs/3IPlHlu9G/zgf/u5lv7WEdzJQC1Ud724Cp4FHb85TVes98bep7T99PmttIpu46oKQmudmqPa1WFhmsPOwro1h9PQ1uTHY9ccZhq+1dpAe1h0a3Q+Bj/vKtXPyMsf1/w6/E6/Pr9+n3BLQrH5/aQ7zu/be9pfJ6c36WDLI4X5iBg/KLQsyB+bsHRBf9/3Te+scfvKOjfriTv52DPAPVS/15jQHlveEkXsHe9h3bvPq31z/h+76e842tu+RXH+rvOax12/YOhvIo+u/6/5cVgPNbOwFUxQtur/ChY+Wfdp0l3O8dDXMVz2c2fwZQbYWe/tj7vvYN/vY1IvwOmhhEZrR2fnUdeHZ+7xn2tY1FlgZ3O3AJ89cvNcPX9bEAIVbbrDeGO17yhD2x38DVcoc31ldfjZrCyI5HIRwgOL+xzZS9tfHF77zXfym7+93nY/vyWll7hg7jx2O19r1zojuwQZnNHd4I7vKGYENKAEBNCjE7y1htNlmdScuBkPHetfMtgonZf1xcbf5XvnJy3C1XEo9XbN/mHybdFSkOonq9kDK/fX0zn8K8GbzREAO8xWBWlX5isrfcCKbK8zEysFbrXL9xuBSZcWl+vbRTr91gzfoXN/q/n7C4WJWBVXrNvh8Al6bsmUIxIwwFxmHB8/AHT4QEffvgJh8MJjx9+wDQdcDw9YhxGjNMBh+mIw+GIaZwwjEMXCeGVutXLTzf/ECxbV3FjR/r+2/GRqAOGN8UzN+cCdsrN5rGtildeqrAgv4vSKqv3gHkRzBYRUcRCvywzULJ6TWaURSyfJWdwWcA8d54JfpNo3rtqLV1M+SuKsMsyi+Fh0evmjFwYc85qiFiQM2NWz9xcDRpNISeESJT2gQKGmBDV4z/GKB4bIOTCKAwsRQwhy6IWXY2+0GYQQkBhIATd8KCRNF6xxeZ9Y9bnHsS7PGCIB1AccHz8iGE64PHjJ4zjAQ+nRwzDiNPxASklHKYJKSZM46FGI3RK3RAFQ9hmXzwGCkyhmOvKoBAQmGGRPkn7EuMg4zJMiEGeIZERA4hCF60jngdyX3CGCDGEuLc1vCuk8254uFqzxmnVPapfu8Tbc51yjBilmKK8v6ZXtDljmOE5ZxRmzJdZccc8YbMY2spFPIfzGaWI13DJC/J80QiJGcRiiOiictRLxeO7reO6Dhb1WlYjgRkmil+bbl0UziumlxFQEJgxpoAUCXmKmFIA54gxBqDI+UgDqERwVAMGiRd6Ya6CCQURIqiYco0qI1fI6G8W6kNALozMYqToNK4KMUZdN4ITRt8GVa76iAiB0hgXfV8xLgCZMhgyvmIky3VNAkBRz+yvX7/iMs9Y1PE5hhEhREzTASklPD09IqUBDw9fkYYBj4+y1o78AWkEMDASEWKJYIogTgAnBAwgRAADQBGg6Iwt6mFfDScm3nkhHLrm+jF6ab9d/15x2QIRuRm1hEYKXs4WEXF5QimLRkYsyPo9X2b1NHpSY696tavHValROBltDaHOo8yvvFtKSZl9BoWIkVnmnmQdxRilz1nmOKAgEJQmN2a2CcCo9ISM+SUzvgYU4sYEO1nZ+EZm6BoCsgmNRa8LRsup/t6hbzdf+3PReAO5VLwtqZ6QeaFKa0oRvkLWSUHOM4gIp+OIx8cH/Nvf/4YffviMn376CR8ePuHHTz/icHjA6fixRkLYcRyNd4giNNiAGe0vzdPOPLoaTVIHAd2fLRLC9nfbp+t+nXPlAyRypBmtPF5UqAKorfkgK4NpI1g+L6RdF+rsfqNLpBNvv3cCMK25JCcIUQEFoLAZydr9IQQwhFaVUhD1mYb36/eAKlBq300AoyZA1S51NOH9hRzHJndj5hWia574VcrGXkpd/XCH18If1djCDJScQSBEGiGyhnncNVrNDFAWj89//vMfOJ4CHh4+IsUEQPhKTIQQGIEYKRFCABgSoQZecdDVI/cqIt7hDwivNXi8BmQn2q613ef9CfVORAHgAOHdsVKgXHthcktsFeHurvJODeKmJPyt6VhERkaVi1GcC6iTz3x3XqkvvApeEW4N+2duH7SXHb1XSHsekOwPf+zu9PqoF96LWx+hPL5EOujHos99q/XZz7W56tEbB/dZIwQkkjkMCeM44HA4aCYV4XFE5l1EtqgOL8/3u+SCHHJzwnP8S3t9pRnK9JSc6/jlKBEj4uApDpUpoukrQIgh6q09/+iNGWudVSkZkqlAeGxzCF3zp2s+d+980UweQJP9bS15uKqvZ4asaa7rub/O8ZpEYogBQMssYwQgxITp40+YPnzG9PgJ6fiAFGXWCkMijuMot4PVaSAiUEEojMAShWHJZArUAajqBZT6UgQCIyQdk6KRHzXxjK69IHKjjKvo0LgwUMyhrKh6swAUlM/W56kxgvU8ggjJaymgCooAzKmbAfgwkn1Z5E+4OezAKw0RW2Q1Zaie0ctWigz/t//tjTTK5vTdPBpuaOI5hmWvD0IMfPNGBdfCIOu7rLrBAFjCoCiOCGlAOj4ijQccHj9hOj7g+OETDtMRx8cPmMYJp+MDhjRgHEZMmpJpHEcNHRuq9zsFYdirRymo98RcCbB1v0IvZPae0ltDhG1i1SO8po9pqZiKeoA3BVTBMp/BpWDW1B2zpmTKRRVXyyzW5rxIJIMZHHKGGDfMi9wUGKrQYG4GBk0XkWdRoOdFjudlRimMJUuKpnleUArjsrT0QrkUzHPeREQUTb1gDFWAbBhLSki6AcUYkVSZk3NTIGcNs+Syz7CQw0HaeMLqhslF8IUaxlVHFBJPsJASQhwwjBOGccI0HjBMh+oVO6QkG2mU4zpipipV2mN1A3FpgSrT5bCICFE96GMcECggRTE8DEmOzfDQpwtbe+ba+3TIyls6w9zW5p5y1frumYza1ur3hsswK0VlFup52DNd+i9NdSTKbWWKNIphXi6KmxZ9oCloykWYKEtdky9qiJglZHeZAS4gzopDcrSony4FGVZMTZb0XnORvpohzdYH1wiLFjG0fr9IBZEYzAGlBKRQQBwwEMsxBBACSg7IAEqOQmMCS8q3OmXc4RBq9AOBOYCo1HkmAGxGDJ0PYkPCxjB6A4TgmuGQHmOLjKhIw1DGMoCKnCBqnskV32i1D+h9Vcm6aNQUMUIQZUbOWelvRkgDBmaM8wKmiJGBwKImZw5gxPYh+Yg3Z5S+VQ14rxAR701uI+G8OZ7b2tZej2zv062VZvysgpEa4LKmzVmyGso0vczSpVxaJFVezlg0gs0ifhaNcLNw9ZpaqzRagmro6/sttIARYkRkRogBzLHONwDZTygBnCWcVw0RVK0INpy90Fv3xaC0JzCC4mOjgxVV20g3mU72wIo2gte2xzcBU0UmR85rc2QzCrf2jO6slbl7/Ic7qw+lEDCMA6bDqOmXjpq68YBxnGp4eY2cTOKtZJFpHf2tzdr+7o2ZvPu9v3bvfNn5e1+Q37xxXZ+2HlwngTpWe8La2jjh8WBj+GgT0t2/bt9+l6kk2TPUSEDuuP4A5nggQpU3WPg2N6KONCjX2vPc9dKP26FXqDwDuh/aa18b02tjdYsikDaLY/frs11c81ObZ9yiMMSWj/j1lPrf/pw1jXtv8PPZKXFe0a/bgNz/dsYMc/pbCMK3Xy4Yhln3pqz8DGnULyMEcfCxFBN9v/S9nOz2Uk/X7/8ecA3nXhrja3Lpa575rXiyJ6P/WmvG9BOvu+db+6bj1jpwnba8H4rcDNfm/z3x1StugTUf40S3/ibheVY6CLm/62hVoahEpitf9Q6QNDFyqfELvBnrxrrdGhHRMgCsL2Trvp9v5d/WbV7di3h7bXcdr06t5dvVhU0WwNV+r26sN1R655lZY1yv9c9/vxGX+vXp3uDa/dxfR85JURzFqMOtXd4N7pkqBniesOM1u74KTl/jbywFTQ5iKC96PYdQ+fXV0zdtrHlmPxZNZmi42unidvha/721Zfy1H5+KLTfCet5Xuhi7huuybo+gAIoDhuMjhuMj0jghpgGBugxqYozQtcwgcCAEJtFvcW+IkJtMV2BCABz9FWc8CgEiTwbpssnSmuKYguEFq/+eey+7lpsOTBzB5DxBaBexvbDRQHbD4s510PB2gxPoz78nnf49wRsiIm4cCH/ZN+7tzwksrzVGbNt5uV73W5kTb6EX0NVIrAtClHw98kH3AAKXCSEOODyI9/rpx79hOJzw8PknTIcjPnz8jGmc8Hh8xGEYcJoOGGLClBLSNCGpEcITa1rlN95DcBNm11vjVrnQajAYcQMYhS1VkbyneBm3lDNsnt+qeLXIB1Ns5eUJXHLN6zcvZ2nfaj8sfQRFyQWs0QmgDMB7WTZLcmGuOcbnWQQTMyjMmof8fNE+ZTFAWB69Wb9bjYh5WcQ7O3slDExvBsASqzCizsFxmiTaYBwRY6hjLh6ikjM8F0bJXNM3caNEMEt8gJZPCeoVQECAKKaJJTWM3oRSNW4DQkgYjw9IwwGPHz9iPJzw8YfPGIYDHo6PSHHA4XBE0jyCIQYXQZPcrmK4IBbsnCWnevPOt+gI2wgiQkCt/TKmSQ0PIyJpbQiiLgJi3wDS42I9rjZeAFc3dH+/MbKbdivT1RT5dt5f7xVmtU1mqfXCXL3rl2yRPBeXo1M9w1ny3lskELMZ2lotlCWf1eBmhgpZC1wW54VsY+8NDNIXr/iz9XDJ3pCmR40M8oY75lI3fFvfKQEpEaYhYEwRyxwxDRFlkSNKwpgCAudqdEuxIDABIaAM1HiAEISJ66Y3QFzZqfsQifdD0RRnVSVHTanX1Z3QYyCqUTgUI0CkzhBS7wKMqvwmkIvoCRJ5FSyBU89wETMoM7BIVNb8dBZDp6xQDOMZMQ7IeUEcRjwVxjhNoHHCARFjCQAPmHBAoQMKHUFhAocTOExAPIrXBiVUBzMz1NR1WEdBRQirRcBNlsBtUI1nq/1Kcm56Y5b3aF9wmZ80r+lXlLzgrDUgrMYPX76glJYX1SIiSp5bJJur5WNRPX20iuGf4IHNr/EGhQtCzIIjWSIAmAsCCy5RngGImSeQfgIqnYmx5wMKJP9wcc+NsSBx0VoQLLSXncMBm8eRrkGdrRC1pkNodLnSnzo5DL8IeH0sAAdWBbW20tG9Xlip+YLrE4EhRnz6+IDPP/6Av//97/j44SN+/PQjjscPeHj4iGmQSMphGjEcWmrHmvc2trpAhisFXKMJq1Hdpz2s0Q0Z2dVuupbGq7CmXzR6lgu8kcqeg0rbCbWAQG8Z2uD/NT7yOaPEHn/JxRlIqUVwwcLvVkJnk0OERhUAoZO6IDwhxW7PWhsfujzAW7VpE3gJaJFQL7Pf38KemwLoJRb5tcaHa/Cme5m/7SV/M9jB6Xr+t4P3cAB70zyS5ag2TSS3H/RYmEEUMcQJXBi//PMfKDmglIRffv4ZX748YUgDYkgYhoCUCCnNCCG3XP6d0q4pa/6QKPQHhW+lE7fBe7fv6fnb9QZ/JLidrl/ThLdf7Ypi/BScLvC5Pui9BQzlJEXWaGkZAKhUrOoXsMVOct1Ly5X+ieMAV14bxE25urquyjNVOlEnHnBHM/2W5BWO9bv1Wfta9HmNt18ry5u+pjhZtYDBpJ7mpOpTarJcY5JUeVEYKFkjIvRcY759J52cvKMgfVd9aR2p7mxKUm9vOhw0IsIKScnvjRd9uTMMiRQIIWBZlo73CiFInc31PW4OzBDBTMhBnumzjohjms211DHxdftqrbCl1dvodW1Op4HrBhE7ro0Rdo6Iseh0emdFPxLAGre2YCV8KxpAa0KwYCIVqR8RidpKIAKGE+LxEY9/+58xPX7C4cNfEJLUx1hY9V4UENKIVDKABUzmKB3F3sBFjRHSXSoQA0ApYCbF+SKRDgyAJHtEKKgyBAokvN7v+XUoG96zGhuqrEFmfAjtPkAMJ0UcgQ1NdabRKNTemLYo+zWwu/PPDq8wRDyziewps9HP66a1DV17fiPzyhGzCtrcPscYy3W0OrdSal555jVPhueUm9153QzaU3UXtOs2PbVRE4/POEyIacLh8IDheMLD4ycMhxNODx8xTgdMhxOmYVRvRomEGNUQEVNCUAV4iEGUIVeMEH4cqtUUvXXYZOxGvJrnIsCOEJviyjxbzSO8NEWEFZHR78tsnt+qhJjPqqC1Qk0X9ZRdekNEdoaIIlEN0HQqZoiwotNWmGpZRNl6cYaIXIoWvyw4W6TDYgaKWQqLqrHAFLlzLYbpNouuDpIwRQTWvb0gUEDWMNEYm3dp0WgIb3zwSqWeibE8t5YmqSlfmzrGrz7ZmEOMoJC0oNKIYVAPWKslkgYki4QIQTxhybxgzRsbVelfKl5YOGFu886GyUK4De8k0sEKpEeJhKCAFFuNCK9MJtNW26fD0YazMEZOxwqMGqFR1yD3663heb9269/Ffr9m0GjGODvf8KBF/FjB3eoh7gxytbDqrDVQZk3VlOdaC6WURddJRtGonZK1oHWenaFN10YWRrSo4Y2z4pY3RHDBeVk6PM95kSJpzhABbopPzzSL8C6RDjllBCRwKRgCg1AwByAgYlblbl4WEBg5R4C5eptXz2ArumzcMlpdCCgjIDQeYApt1lQBZkyfoHtbG5u6ImSe9I7/UCHD+lJ1HJUKKtNmuKZrmmwl2rPq2gMsSqzkAkBoEEKuRhSmBA4JFAb5xFE+YWznQlQjhB11KLyymuQ/JhNO1pEQ7Ovvdfi7a5hjV8fECSpmWK4K4xrRMGskyIwlL1JYeh0ZkTN4VZQ6azFqo+O1NhB03fmQcPdC6y2+n2dl9M1AQQVgQuSkXirSQJAZqIonT0e1VfFE54AQGDFElCCeOTEE5CDnA4sBWGj4eixbXxmQ1ABE1VMPDq8aVb8OrDSsCaBbnoc3EjvVfth+k4aIw/GA4+GAo6VtVLovjgoJIaSVl5muoUB1bVXhiRsN9IJTFZKvRDVsIx6cEWp1Ldx7ewHJ8NNf50Z8NYBeFHje6PAS2J5S/8Z1/rN5vvL2vKX60ohUKl6J0XB772Nv2UWswnsDsj1oNSQ7/ZBbnzEkPK9Aqpe49p5zHug8A1eGFn/dpo87wO6/5wTzukSfmd73UHzuvdtzwHWabn3u69q/qcU3tnPrfWuj2ns8W2hqqWvZZEGvcIlBi2qqQfzLl19wmS9KD+X3EK1mlO+ri4yo2sYX8H/nff8s8Nz83Qrvde/rx/aW51675qpWQP7vcGbbDF3TLr2iB6+FW+nmtXu+5bl1D6S1fkUzLjxLgOsGYgqbNvomdrLyvtQiS10PjKOSvjilPO3tvQwTHKo8u/temz66/Yp3riHl7F4Y+tZD4SX89sS15z30uzDVzcP4yHWfvcy618burt42VDghqPJee29iz7r2pt8KjbeqEiiMYRFnxogUXbpmdv1et+Oa8K3ZH8bDllI6HYQVit7nV7xDjKVGdemFi0VD9+Nq+5bxtoWbE5g48OrVzA6bezncG5S8XqIOQ0cP2veiDl4ip26vuzIT136oTzW8JqMAJjgDABMoRKTDCePpA8aHjxiOHxDSJLKuPUF5WVAASAw2LCqAqgciNSHWHlGT/UFSq6HWWiRGlc5JUiuxZVogfY4JZtoBGRNrp716dUak2iFdSKoNqLRFx1QniCFGzzoxuvquRfrKfLrzfy6WYhfexRDxVrBF8NJm2P/eCPA3ig3fdPctYEp50oWipEot72ZMIYjvvCC/IHVCCCOmhx8xTif8+Ne/4XB6xOe//zuGwxGHD59FoTxNGGPCcRwxpYTTNGGMEcdhAKcIHtKmFsQ1C2pVLNumQ71VVnRFfU2IXmHQlAu5iKKqGSD0uxogFvWEFUVVwTw/VYMEa0RELU7NBXlZxDPZUnhUA4SkT5JaEZrjj63ArxgiZo2KWNRb3AwP58uCXAouF414sMiHRZS2y6K/mzFkaXUgTAHPsPHS8VRtZRtXORGpgEBYloIQA87jgBildoQYEmROltJwxrxARQnoGAglyIECQiCtnZB0M7boCCN8ooAFkRi14oTj8RHj4YTTwwdMhyOOxwcMw4TTdFIvsZYmSeoxxIo7IFIxTSI3siqsZ61bUMdGn23pPJKm+BiHETEmDGnSfqshIkntAI+rIMJ61YtXSM/8FO5Ztx4n95mkNc1ZX2uGiH08R1OcoW3wrIwEmJuBbRHDwjKfkUvGMp/VGDajcMacv4iC9mI4ZgY3iRha5qXiuRggFN9LwZwvuOSL1ikpriYK18idUpohohapzoJfTxetv6LK4GVxv5eWp9IruYzpiYEQIzANEWMKOB8TDlNEWQbMU0TggjxGBAA5FcQA5BxBzIghYIEwjpmTpiEpbh1QpZd14qsQoMxkLTRtyidbG1TxKDrjViBCtGKVIegaQqVzBEi0QakzjgyW6KQCPTaDKpg11Q8hhoAhRJSQMIcFHFjHUqKqArOMcUg4hAlIJ4T0gDA8IBw+Ik4nxPED4nBAHB8R4oCQDqCUgDgCIYgniatX3eEyed7bcuO2T1E8NW+wvTVR6brR1NX6sIiIxRvU8qKp8xZczl+Q84zz5StynjGfzyh50ciHjHyW1HpLviitVTq+zDCDtvDnLETUrN6ur8LcbqMXzXg5DAmlaD79UkCZAC6YEEFcwDkCXEBFjGJRcTpqVJmkjVP2lqCGsoAAo02LeusQsg7NHIWpDyGroLwyJNs7KN9r8q9NxVpMfI4j6WlQr3Rtwoir1MRBmOAsY3k4Jjw8HPHTj5/x+fNnfP70CYfDCdN0xDgcMMQRKY1qpG6REOLIEKshT/BhncvWRcLVdeKLmC/uWrvOR8/Jfo5NakJvtFjnztX9WHkWq9fznEzsx/85eFFBvlpHJnR6hUyLlLiydIkkfy7LTi15aVHvY73GnuFrRZhw263jTrOwq2b4biAsSRszz2deU4hdM1a8BJ3BoL7/86mxfg34Hs96rWHjXwIYwn9m8VqNGqUFaBBYYaQYMI5HxJjAXPDLLz/jP/7HF/zy8y8AJEf1MIwYkjhFMl9gtbuqukEdFhqlZkj1tTvc4dvhX24107U9idxH+RdTOprTpHJ+okimel/wSnNX05K9kq97iu5JgYRf07SHNR3UuntmbzA9Zb0u6FOMN11tvbuNudO8/fXabt3tk9aZen8/prb1WVpsdsf+tRyv6/rUNcR25KbY6BrhnRvfAi/f34xcBHCovOg4jDgdDpjGAUMKYHXKM2/5akhQ5XTFwZ1HMrjWX7AaCj5DA0NqDPT9Fr5T+FSRF0rRqOwibbTUmnqX8rWBAkS3oHKaRQAvLu6CGeCsuk6dtWAe9nKvjI3JS75e5RY3SrGoiFBx422w1r42fJL6e1LHgZmBbKskIsYRjz/9O6YPP+L01/+KdDghHU4ACspyhq1cBrXUTCrrmxqAQ6i4WUV4QBwTKENytEh0Rk23SKb41wwuJegSltoQRn7U5RehFBRzeKyO42Z4UD4cDKtFQdVxUmiWGWSZGRxs3YYq08jEtVq8tf1qCGkR8/8q8A3FqhtcR+jvaNK5sUmh3U44MWXWrzzL3cZYdzfRIlUyr2l1Ujogpgmnhw8YDw84PX7E4fSAh9MDhumIw3RETAnDOCLFiGkcMaaIYVCFdApiiNjxCG59MMufLIzm3agEhLynvynH0TxmYZEQRhSb0qBo2iVeGyJchIM3PNSIiMU8wdUgURZVoi4AF3CxVB6qwMhZNp+cNXVNwVIWUfpqjYhZDQqLKlgva0PEPKsxZFZlm7zvol67s4uEkD1ZlSG6WVs4pylFjdZsGAQCliLeuDQDpQRwUSVYEmWE5NxvBqGmUPTI6tLaOMVrCEEiGYKcg244YlmOiGkQRZPWhhiGCcnlBDeDQ58SqaGrraMC6HhqfnhNo7Ho5l1pqjNipCiGiBQHOerzYkza/5XHpykxVs+WvjRlkBmCXjQqrOA5Q0RnRFI8b7itPdDvtgvWdZKlwNei0QbeIFHKUhWxVaGbvad4QZ4vut6skLpFELm6DcUicmbM2QxuFtmQ1ZDAUvNEDRK9IUIUeE+L9cX6qtfV/P/mNVEntNKMqHNWMiPHIPkdS8EYAHDBlCIAxqCeJEMUuhFDQIkBvCSEIO0GK+RbCCGq0FEdHJqA4mYP3utpo5/ZUYj10TXuMm74ZRt/9a0yNLO51etM8VlXveK5FChLYAAZJMXlo6RDS2lCGg4YxgcM4wlpkE9MB8R4QIgWCZFAIUFzBilvw30+S9iCcH1FLzts8J7bH3u/d6lvXDiw3ZO5Rd1IpIMYIsSQPGNZpFh11qOcb7UiiuJ9K2K81D1F9h6rKK8e9c4QsZr5nv01QaNGREj6JEmlxSBWlpQB1gKkxpxKSiVJz2TROYYcwvwGTScHZNbKHbEgFtbnSXqnSEFTPZW6x7OOszHPjuVsNXvgaJl7Hy+Uk0rCrI1VPDSZrDLIbf7l78bg2BoZpwmHw4TT6YTj4aiKuBExtoiIZLQ5Rsc3bBXG0o/GK1SccXujRUPuRT7032WT4/UH7Xw3UhV/XV9qfwzHrzB3dN3I0C6RMd/8zu5QnyPHRot6AxH5G3aUyv3R7Xs7tGv9YaaKA1XHQw3/dl69veEzWrD1e7+s//Y09frF36JUZ4fca2ODMfN7ERH1ktbTm561ecYr+vx7Mn48F2nyvZ5ZDcffwzDjcS0Yr9AMdHaVeKQKD385P+E8A09n4DJfAIgTjzgqyB4AwKVUZb9w4TjQXXgJT5qx+OWxf+maa2P6Pcf89wSvGcvXwrU2X7vGanvP3fNOepHnxuF7jNEe7NNb4471uy3bF2mHXMOVT2+GiBr5pHutGPclNWbjl9Z90zbcFeQ61JxcUHu8Ky+u261EqKXJlH6jnjdeo+OdOnnG+u14RTcOvOo11Y5a3+umr4pLN4amO1hxAps3MwXDVVjTPm73NEboGbiuaNtKdVdua6/ZjqQ1flKsjpPyOqXyoF37nnd9pleep/U01XQhni/w8lHjO7hry35jd40ZAohYIrXX4+J1Hzt7yZo38f1Yv80ebKfbn7C2X5hXL4T4VhhSIxoEYuGK1V0TKY1I4wmHh08YH35Amo6Iw9QMC8r/VjzX+8T+ptEjjnISkZVdk1RNjoeW6Bcx9FS+mmvn0GQspTOGP8QgNnnbeY9ZG2Q1JuReBtVILSI1oOi4eNnMr9v23Y19HUeHnVeQ9KU98Nrvv9Z+8FZ4F0PErXD7UNjEv7BxAS8QUrmoboykBNsEyO/EuO0JMrU7nohIL5BrSp+EEAZMp08YDyf8+Pd/x+H4gL/89a84HE748fNfkYYJ43RCjEKEY4qYxgExBQyDKKNjICBESf9hG2HNT42mLHBKhC4fHRhrT/Cac36lrN0UmYREOizq3Q12itdqcDg7z1r1FM/ZFTl9krYWn+LGK2hVIbv4WhAWAbFgybnVgljUMLGIkvV8mdUAITUeLvMCqxHBhZsiV993WRYw++Lbe4u6eYz7n4yJMpQrOQMZyItYzYchIwTx5iUKIE4Ai+Kv92jgju6TClOBAmKIGl0QMCSqaY5CUC9WVYaOhwcM4xHHx4+YjiccTo+S3ms6SHRNSgjUir12DJTOrRghpKbFZZHUVkvRMS+L9imKci5IxEOMCeMwyXEcWySE9luMKVzX+1YB1Ma8bupuDnze7GvrbH3uJUOEKD48vq8VaHq9JmKvCjnFy+Y5Lh7jhu/z/CTROosY6S7LL3pe8XqeezyfzUhghjbzIi645BlzniueV4PCYpE/htdZhfJS13EpVpTdaktIXRI4upDz2rtCEJwB8eLlgGEAYiScLwnTGJCXGV8nyXN+nBK4ZIxDRMGCIUUwZ8QYMbLWCNGcnCmb54koP1NCVTBXtt/4CZsnW1+0NWR5g1qNstGICKZuIdWIgkoX0eoCVI9rqLclSzSbeWCLN0RESiOAgEKQd1pYDRFHUBxwfPiMYTrh9PhXTIcHHB9+wjQdMY2fMYwT0vCImAZQOkgNi5SAqF4bxPJBhGffS8V/1HmrQo2jGbbfFRMiYHJEw+NmHCirfUCMbVb/ZZ4vyMuMeTkj5wXz/BUlz7VGxHL5ipwXnM9yvJyl1k9ZZk3Fl9s6YW/kY1gkxDVBwGisCKWhTmGMsVu/5iEUozCNSXOKQguVUQkgZOUzxUuGVkXu7HkSqSX4QoGQNTTNjHSpGtgkcoZ0rtjwRZXaxrqGIm2ZTw0cX9JokaKnCZx2vtOE93IA6zNk3DwHK7QrpYQPHz7g06dP+PHHH/HhwyeJjBuPmMYTxvGIcZgwjpPQ6CEipICQWk2pnj4qHfLpuhzuZI2yMsNTq2PTatpwyZqLOGskhN0vPIMvWN79XfG2Fxpz99uWxt+mCKf+yEZ0yC+9KouwGhiKplliWhlG2ckyK35zvcdyYSlwiOZFx0T177XCtQrc1JQQL8N1xcBbwXRGLxl42vWv47nXxoXtvq6GIH6Gn2feaj6eedazbf3KsDYC2rl/VQhRohKCVuCRqAfW6FMAJJXZlqXg6ekJ/+N//Dd8+Zrx85cFX3/5GQSJ0BUFVgZRQc4QxYOp/6gpEbxa5uVqgne4w78uiDLubfuL8apVVjZFH4ljXdTVJ/7gAZktzSZgjLyt2GqysDSs+owaFaybsjcQNPWv9sf93ylG63kCWBWbndBfubr+BetGac1ajUg5UdCU5xKVK22HECTqtkjkuDegrB5QB9BkpKK6BPUDF1mnH3X0Z9Z/u9+rkGQf3rmn784tqHD1EnK/rxS3gQghJYzjpLUhIqoOq7SaEGbAag9bz2f/QC4sddhKaal+IXNAuedBvOwkUBq+qVGCLbaeGaZqFf0K1yja9pbCO/rnAowSWi1RLwu9RbEsfI3o7fpBeGEuFYw3qtNfUymbTM4gaG1GzFUOAgXRaT58wqe//U8YHj9jfPwMxKj1GhbJiMDqMG2EQJ7qbFDy7hYlYes5mD4gBEiUA0BB6jWIjGcGgghJZbzA0rzBrTWrSVgL7KmTta3Xbrw0ew3X3plM6iIcVAAQBwolcKHpl3RQ1Zjp7vkXhG8yRFyzutDOWF7boK4p7f0S3b/x+o9rZX9P1d4O+5ZI1yVnjaoWOp+YrlJV1POyqCV3eEoTUppwePiIw+FRIiGOD/KZDlILIg0Yk6RLGDSP8xCjeMKrF62lLzOpWPC87/vuB16h1SuFinIKdmS7plg9iIyi6ZlyXjTFh+ab73KKL81DfLYICMs1LrnyLYVTyc4Q4Tx289JqRVRjQ60JkTGXjGVW5dmiholckLMYHnIuuJihwor2auRDsfRIvshvP3zYw04ZNvONlGvcFHQ4Yzn6KGeEEkCUQSTpQoS+6xgzd89tDBaqYhZALV69V1shhIgQE9I4YpgmDKOk37Ai5ha1YIyS9b7hjBad1hQ1i47Veb7UlFe5ZGTOagDTAkU1IqLlG49BPsEiN4KN0ZYz8AqlhpO9EaJ6MJSt4uAlQ2A72nlhKFqe8+c8ebU/6M+XsmjRdMF/qw0h+N9qPWStAVH094bvanBbFaBelkXSji1NsTfnBZeyVDy3VGJ5kcigecn1mAtXg4Mpg2eN+KnKYVVoV8Ve9uNkBEVpGyAeD4t8fzovKIUwBFk3Q4pYckEkxrRIxMSYixihGECQdE1MJAWkUBCCrLWghaFDCMKYqHJPjG8unJh6ZV4zOOwYs3S2iOWZcAo8r9z0HjGWEq2lrBMBwYQEpghQBAVGDAUcAwaGFExO4tUV0gNCHHF6/AHDdMLh+BHTdMIwnjCM4hES0lgjIUTp6wq0q2d/NUY4lK6C24qG2xz1+G/Mj/u9U+QW987Ou11pvEQ7aC0I/WT75LnWhrBICV8rgosZlH2R4dL3wc4X3ul7P4s9g6eo4BS2MQYNqIggJgQ92t5LVAR3SWhbrf9tbdlTSDOAWeomFiN/cbSrRqQRVWNGY5urXOjKBusa03exsOFQr28GbUFh278b3bOoipaWgGq7ba5RaRaRFMs+HERom6YDhmFCiANiGBCjGItjSohRjIGSO92lyXOjb/tTFfzqsaVLWuOj71ffV/taE0pt2q3j1Qh11xd2AipWawLY7gNtD92JNPDjWb8Z3fONNIOfh6DzTzpH6Oay8YVe2W1GhsKlo1t7hlWgpYHyAqngzDPK6RVe7vz8jLKbr5z3dzfYMxx4Hv8tSnS2hfTG+1/7rLVMsvfM38IY8K3RCM/xWb/GuL7Hc1gVP6ycQHH8F4WIMQ0gGkE0oGTG09NXnJ8yLk9LrQPHzI2lscXKtubamm/yGimav73vz733LUqlt4zbc/P9UrtvUXRdu++3MpztreHv15e98Xr+WS95t1590hvn5i19uHW82nUvXU9uXfXnyZ1rURCautBuJU1FQ6T8nTorEWkgcWjZVvx+TNTqRbCLXgCq3NP4Nm4q+E7+tp7pD8asvaytqgpqi+rqxpvcnbWemTXbxsXzDZ2uCebwqPJCY4eMq+q7V4WHVZdfnGtGd5M2s7M7Pj8eL6KUjevqsTYONR21RPECEDl27ZRYu8GVh67n/WU7uoNrckjlS+u9q66u5LFaOxVayBhrxznj+6UPxueZUvvWPf/14Pnj2/cf3cXlLwZA3I2B6R5N5GIQKETEwwOG0weE4yPC4UEj/h3iqzGANLE3WCPMqx7Vrmv9qSNjvDDaNc4c6bZxNUxoaqpNwWmC4oqmUQqxeZFVpt7uMZnc+APPUPgR1r/YOPBuwbW2PFLyLTPyPLx2b3lvPuC18F0iIjxpfo4o2dC/jjno0OtV97wOrvf75smFem+uCJW1LfsBIbOkz0nTI8bphE+f/w2nh4/44ae/4XA44ePHj5iGEQ/HE1IUZjvEKF7sKSINCVYcgAlaJNmhtm481aLJLn+z5v/eEtC8OecNFkAzQjRlq+Z7zjM4zy2qYL6oB+0TFk3lUfKCMq8iJTSdU1kuqgBTBVZV0JaqmDXl67JkXPz3LErUWYtRX+YZS01dszVELGbc0L6CnYJytRn1eNqNcD/nWBOc9iszY9G8goUlz20pUpQnaTJprvkuueLLNfE/aI77poBVto0CECLCMCKmUQqbHx5wPJwwHk4YJy1WrQYCCkJYC1vuvbbZlsLIDIl+WBZc5hlPl7OcN0MNAUOUmhCgIKlq4oCUBoya/mnQSAgpnE6OOdO1gba2eoXw1lPaRsiYzj0FyBrWbXvd1rbg6joCaJtSxCKAJB8kI88LWCN7LEVNLhklP7kICXecz1qcfRaP2EXw3Oo0GJ7nueG3HS85Yy6Sb1/OSeHqZc41IkKMdFLHo3kll+4d7Hs/PvbxWOw8MyzssjDCIhEyXwNjniUyYs4ZhylinkccxohSGNMoXv5DSigcpbaCKuFS5mpIjTEgFWhEjeCIKOIgwgcZ3jdFaYx9BMS1ejhVsCBSY58zIsEiHUpHGzMDWcdCvDsIHCIQGBSsnkpACAVxGIWWxgQOEfHwCTFNePzwNwzjCceP/4ZhOuD08FHS6o0PEh00HCQPfxJjRFCDhLwsV6VLP0dN6ftSVBCDa7RBG4sen1tu/9yNATNX48NlfsKyzJgvT8h5xjI/oeQZ8yIREXJ+wXx+apFupQBL2XmmM4642jvPGyFk5TdmUNPQoXmRA1H/1poQSxbiFAKIC4TMFaAI0wvNC+7pnTYtRggCEiTMd0gBzAEpRxTWVE2sRokSUD1fFLJWCmfF2wIzqsn7EEGE46A5kG19ebzVT4vGKTWku0VWNNop8qXWZeAMBEIaIh4fH/D4QZ0bDg+aLmyS+hDDQdL0DQNSIsHF2KLjQNQigsq6VlKpOJNrfZFGO/t5VT4ExY03d59GhzNqLZ7uWYa/1TwDXcqCStUocg2XaGc3bb9dg7aWGoJ4owCR1KGp4ght96TuSU4xJkpUwc/6ewgdTpiAWiMj0PL8mmL1Zbb0Ck97i2LgDaKRV+pvnXTeBt96/+/lGXd4PTBaTm7RYUgkp9A8RooRDw8fwCVhWUYsmfHlH//A+Zzx9JQxX75iyTOy8mvdh1h1IcaEewn2XhviDu8Df3aqYhkArr/pWm6m9j+tryRJAwtC1OuLKRTBwssVUzlKfcTqQMKA1Phye62XzLnnrSrvxM3po2mZuHbV9faWDdee0L/+zm2svL4cyB1dZEQpm/20GjesTaWFwitKxHTlDcHt/fTt2A+E79/VV+OXLnhfWD+OCCkmTJNE7w4pamaMRV/WIgtQ9QsMSAHoWx63o+/a+33NHvSOGwWSHrDxd6VkUARiSGAW5yZzHjEZtzUGiIASEUvsZLFrjtvWh9t0k3zl71vAvzj3p1Uhw9Rq1RWKCGnE+OknTB//gvTxJ8TDAxBN9SyRjRwiUNTxkLNbclGf5I0/VPGeCKBMbU2bnL+SocQQoCmbKKiTn0P2SoAYCH69ksiIxJCoSSt8LTwDArfIEI2Q8rKJ0ZvArbaHQMC1dfQrrazfFdxsiFhb/jxcR/63bbt+kW8FAq6HW8Sja0LndUGDVse3owURELhZqdnIPwMMzYUIQkoTKAw4aiTEw8cfcTw94nh8xDQdMI4HDMOANCTxKh/UszypUjf6HRiafmSdOxVtI1KBvRZ5RLPc+mLMwCplE9t1TalkhSez1gyQug4LkCUlkuXKz0UKGpsHbcnqGa5HqSFhKR1yO6qnuKSPyZpuRpSu8yzRDmc1OsyzpakRw8OSM+Z51lRNLWWNFFjOTZFuNSDAsMQZ1ZLtlEPMZuDxDI3jADbmNxnrtaejMWOkytTGELmirWCw87xc4zHX9vXaYtdqUSIluiEkxDQiDaOmgRklJzhpEVZlHdkoORVUY4yOQy6SnmUpMtbzsuB8udR0IETBpf7S8LrgIyAk7ZOl+ajGB7Jn+uLEPa4Zbnoh1PpmClpibBi0azSpZzJQ33vjheuNDTbGHv9N4QZLI1LcWljax9VLkYiGrKmZFsF3LUzNptwrElWQNfLH6j8Ifmt0zzzjkgsuWQpa2zmJABI8t1RN8r0Z2nLjTOX9c9s2/bh5plwmyhUQ1r9rUTQwqDCe5gWZA1KS1AiRGOdZvFYOS0FMA8YBoDIjhYAC9QaODApS+DmWAGapHVEYWpQ9SlFJUK2DwuC6fnxExNoA0d6JKu74ReRxrRb6LqV+Kl6wMlhBDHwUgRAJsQhjUkpBoCT6i2ECxYTh+BExHXF8+CRp0U6PGMYJ0+Ek6dBcZJIV17YC71Vgq3S8rXejz1tF74ZAwJT9/hp7n4b3zvDgDLNG18UQccEyX+rfEhEhNSKyGpqX+aIREWqUzqUWXxe6tmeIQJ965wZGmrk4hWyv1F0biylIOC64KO8YNSJC6ByVhv0e29sg+rarvb8d6w3c3WXpvawFi34QwylX42mgRmvZzZn8TXWdtqPOqd7nLFTt6axRd8QYR0mJdzgeMR0OGLRWUAwjYhw1IqJFqVH9RJPk3LibMOuNBQ0X94U4T0sbHe3fs5tc164ZIVzERY3Y2QqL1/uAOodtVm0PXkdErLtzRVDgtZJ9i7t2Xr9tG694C/HutJRM1m9VPviIiIb3BKkppYWrYZ5pTbyqjwE93xdua+BWb/pbPPWe87Lai5r4Fnj5/oZrtzxrbRS8tY/r+/4ocK3f+3vp299vzU+/rq2mUCQSBUYpTTANROJUE0dM0yO+Pp1xXr6AubQ9Sfk3I22ktLuUojQaukwqde8F0nWPfsfzfNteusXz792PW8bsvSJAXoLn35d6QqqnVi081/qzl1yRUJ572DfDtXl+buxeExXBtJZVTd7lnRd2BgLy1zZvcZiyUR6ACFQbIUH5fhCAgEClmgyFV6u7fJPHoXsneVWhOrZxM0K08WlcIb1iPdWWacWf6rv2SmVVwIJqmpZnsXJDO6k6jAjKGsdZ6vvVLkknQSYDMJpS1V28q/3yjKpnN2+lGc+wQlev9UDiJJOGAdPUUjKJs94ssmHFVTfr7Gf65Qfu8o9uDl13oKx43xJb6iXbZ0Llk4PVJLoi6zQ+bX+QSjWi3wbvvz8JnpGZGtayj8NfBokj7HTA8PAR6eETkCZwGMTphjWGhwBGqKlNiUwLF8S52oyNJPdYXdRKLWg9BzqGdlKFMTNMhiDGnaZ/MtyQAtUWoECkfDGpHB7EuU3wX89xafori6xUmadfRCZj7q4seP50d52sLv+e+/VvAd+xRgS5422DtadEeukRhNfnS3veCPG+C1cUDk5PANv4CCx5HzBMR6ThiI8//BXH00d8+su/4Xh8xOPjDxiGUYpLpiSK5BgwJFUcaA5nRF0UuiJlP+prQvgNVhRRvddrp/xlVbLunDelMNByOjelqzD7XGagzJqixnmIz2fx3J4vmorJIiGkmOk6l7gobFvR3kXrPVi6pXmWv8+zREbMi6RkMkNE1iLUZojIpeXSt9QrbKmY1PBAtI9LvSBaNUbrq3R3eu5edApUMUSQ0koVhgDU9A++Da8iY5dGyr1LLqw1eQJIrdHDcMA4nTQtjBaqVmMEQelnVeZk6ZN6n85ZClNf5gvmZcHTfMG8ZJyXRdZfCIhB2mIiicIISYv3DhjTWIuhtrRMUIZJGbV+VFd42vA1723e3O55ySNgT2FlY9hHRFiuyeZdK/f1St9qiMgtBVnOC2Y1tlmNiJqiSSN/staMKFpHhWudBlGG50XWwDI3Q8SyLLhcxAg0zwsuS8ZlUfxelg2e+wgIv86LCgQRUiRK1rMOI63GaT3IFbTIsJ5fFj2WghAJJReMKWBeIqYhgplwmBI4JhyGApoZKQZMRSIKlqG0iIgQsSQWfFmKKukZsTAGEBCVflf+sK8J4VMbdXihzJ3Hj1qk2dG4rMbJpUhRe/MCZwCFCBwIiBEUpeAlSgGFhMIZpJE+4fCAMEyYTj8hDUccHv+KNB5xevwBaRhxPD4gpoTpcKyMddD2qNLwJkJxjUbxXuF9RMR6TQiPJRvP+hrD94YXzYjGpdXbWSzl0iw1f+bljLxcMM9nNURoZMSlrxFhKTDMsIxV1M1LymOD3ZBpRVNT0PJKgWzKXHnfAISkAmQGoUVEUGGpTwAGsWHyOrJEeJdq7CLxuvNGCAuI92uksJjtcudVC2WG2302WVxYIzZaxM8aqvzntx6VhHq6aXuC5CCdpgmn0wEPHx5xengQx4ZhQkoHpDghDiNiEmMEaWpHClE/vl12eNIMVS2SZuu0YMJXjWyA7/+a6/bP0jYdLa74yVmjOC1qyfEnWgDdG7a2bXNN1bUeay/UP8uHKhKulQn7e0/b3TrhgdzGBzH+dF7YIYAUx33O4kojUGqRd2aufAyZgWqnC80Joq29b4W9YbpFae/H7r2E5Vvm7C3wXn39PSutf21461ha3ucmWMlZWUMBKY0YhhOOhx9A4R/45ekXMOeaTpA1Aq55zBpdEB6sKj/1WTDlIfhbUOib4T3XyR1uhfV4v5fS54+jPHqNEeKZX/W43fPFYQ7dd0m4JElaSHU8wcu+UDpgefmVoxLnOk17bDybPd3J0qCmS+zqvq340jWYPnH3Tdc8LVicQdz41H1/s58oj7l9mhp3sGnHHBjbi1E/wmx6JuuLKlX3dBb28QqHq3DlAt5re33ba/De6Q213RACotaGOB5PSMnqA4n8exgl4wKIUBCr0yPYHK9eeLMdWcTjgckWzUjmIyN6HlB4Xn0TEmMJAJSgRiLHE8s1fvbbu3tHO4sS3l7/awJBFEy9Sr0awmARRnI+Tgek4yOmH37C+OEn8PCAEgeEcoZpQQHGgggGS3pvXZsiWSWpq5CzGiOFF44rg1A3em4P73quTmlBjQcFuZpMbLUAWk9QxUdxVMvNGCFvqPpWrumbTFKv1qm6Hja92B1V6cFa73K77vyPDq8yRNjcvyzA0Oq435ZXrb5eKOo3t9vDkl5i6hrydHZp9zirB8nPoAzrBtE/RYhK1QkpkRnHI8bDA06PH3F6kEKSh8MJh+mEYRjUABERhyRei0MSIhtjtZ00VYgSOu1FMYWVEz73lAbFNk87t4qI6NJ12BbH3Ckj6u85o1iUQy5NsVWLSi8aEbHUSAjppxWMtqK/mhN/1hoTmgff0i1d5kWV44tsRkvGMkue/OpFXgtaNwVtVZAAsOKeXGeo4Ug3c8783SszveKsfd9sLNxIY10dujmzMRLUZhHgyoCoDtIZ3QwJ9Xk6Z5kLiINEiimuxZSQhgHDkCSiJkYtCtzeiblouLripPaysNQSWJaMp4saIi5nzCXjsmSEGDTNUkTSKAgKUr8kxlQ9bXuPW6UjbnhsCJtSSd+nNNyUMFOu68oGsuUDvW1j7vYIxxCYwqyuC/Wc85ExpiTrvmudCDglXS0qnVuERK2RYkXaSwas6LqtsVrHwa8ZqYGyzMJszYtE+Vxmb4iYa7SE4LnVghCctzEVeqCKXOUUioWsUts3t4YIQw0b4yJRV0Zn1DAgtUQI54WROSN8lTU6JCloHWPEYUhIDxPGFFGgOf1ZQlVTjCjRIrPESNTqtgBELX9mAGlx1z5tguHCNjpC8Lo4hDOBodI97DOiDFtnFnIqTBdFkpDLQiCOiKOktBmPDwjDAdPpEWk44XD6gDQcMB2OYpwbRzXUuSLd1evZLQ6NTLL5KrpG14p87MyW0QVfb8b/1vaBpkQ2nPVGCMMvi4aQiLZFU4/Zce6+10i2ooWHLdLLj7v/e682hJFb7O+zdb9n1tRHjR42Ay80UkvrQiCAis6dpmuSfMEkzKRFL3ZP2q4BMiRUIbnKS4o/Xt5j15IJxPZGZk/zT+I6Tk6wNMbe42jrUL1PMaUy1yEETMcR0/GAw2HCNE01Oi4NCXHQ6IiUEGJUY5jRaKrNr+fNR03uCWzXjBItcqyPqOjXmhoL3Lvj2rpcfaoAxNjt1/4eQfWf7Zneg/E5WF+3yzNsOItNI60fnXBFm09NzxAEf6n4vvaC8K8Kb5SJPR++zzftPGr1+1rc/L0qa38P/XqNF921SIi935677xbYXzc7bXd/Cb6bk0FhcZj5+vSEEKSe3jiMGGIC4aL1i4QfM0an1vrRVH5EqhjhZmbu92O3O9zMb942bq9t65b29tbUtTbW59f9voYzm/X4DN4816/XwHsox2+nk72e4VWwuuXFXm8Y7tXP70jbXzv2N485NCqCqClKgMpn91qf/j7jq0w+XEnQ7i/jn6S+Vot70P+75rfztzEYVD6BN79vW1L5s5ORPIe65sd35kyHxTsxtD57+Vb1Bq3oJ7zy2q7ZyjvUmMvaBWr0qwnA1/vof9pc/xLwzp9797u5sfY3Cvl2jkJoDo7jCCJoOm6RQTCkWu+SjLcwOYDXTT6/F67PW+rrmgLWnJfYDNQO17nNIYMlfU9lTOWs8c7Xnt2nIupx8lv2kVvftz17O07dCt6wt8qvQ+SyOEwYDgcMhwekwwk5RDAIicUxzOYnl9YIkTh7SRLXKOne4Z3BWkSEXN879oqc5XhL5Y2t0H0g+Uv2e+stOhTtqUaTDUTnoevL1icZ7QGsxovpt/fWTZPdTOa0s3sy574c+mvBr8W3foeICFodV7864tuJae/wwl4wvLaZGPRC0OZX/Z87PlQar3xsd19P1o0KcUfDvUcaqyaCKOJwOOLw8AEfPn0WQ8TDBxymE07HBylOPQ4IiRAHURaEIdYUCkbDLRUEtPK8KUjXUQ/27p2iQMmeKbNhhNYpHszDujdEaJ55rQ3RvCUXsEvPkRdNy7Q0ZVXJrXivFevNavHNi6ZgUs9a8SQvWveh4LIsmHPGeV5w0YiIWY0Sy8woC1cv8iXnmmKljYVNmBCNqsNhnTteMeKGR/R8+h/5bY1LPQu1+bk4jCFgXemdDVe4lo2u11dlFzePjqxKHCixFkOEFKi2VDAhRcmxrx2QOiVL6522a0afeV7w9emMeVnwdT5jKRlLKYgpIvGANAAhJoSYutoQvbJVcDasDBEMSHogbuGxpfQeKpaT3HustPV0O7TxksHu10EfEQF3rq2b/rvlR/deuy0dU0vR1BsgFszLBVwywpyB6t3bUjJZNI9F9sxqhLgYns8LzheLBGoGisWt0fqBG7P63hXZdSy47oPMaPSrDfQKJzOqV0DNmSgiQWbgaS4IS0GeGSkC4IJplDDa45gw8YJpSMiFkVJELowYAsYhargtpOZClrzPKQGVGYAwKZEIHMIGH/aMEC1I1+bfCyLYGmF3PoAZAxpzbNGaFMQYksYBcUg4PHxAGo+YHj6JIeLhE1I6YDyeEDW/aYwRcRjEAKHe6G1/aHS9rpPce0C3o3nk9zPU11XZeW82w9vKEKH0W1IwKX5dLljmM3K+1EifJc9a+2duNYBqyr3FGSJkc1rvx31ftrLOVqC0N2v02IwN3fa8otGCu5JTmNQTRkhs0NyeAVQACqIoDxyayLyiN+4hndBrZLsbb4baitd95PYO9V2g9MbS6+zRNd47dEjSjSFLzvPj8YjTwwnH4wmHw1H2AP3IfjAiJTMeB8VnagoBJ1zV6KA1/7D67DovlL4guY/E6dZZx0g1+n/VAIHm0Sh02MbhuqDnJlInoQkavfHyZWg0RugDMbf0SX4Buxfba1+6sOUr1kaIoN5aTBq2Xq/tBRbxz/p1BJhfR1TZe27j9+/wrwE1OkHxnkLQWnXiNPPl61dM00ccDkecL2eMw6AKqxklS0REYcsjLtG5MQaI8QGQNWTfLSRsu4b/SPAeyqtfc439Ptbzt/XhreqjPzKmiff+XmqmJl+80IBRdOWtSNPurm8lSdmKIrETqqgP5Pe/7ePWOhBTAxgPYXyD/b66u/uLVr+YTgT12H7s2qqMnwhbvbMC2suqMr09eYdnuHLe2JrGF1J9X3Rt+hd4K8bx/r21zSu/vwaqIUIcHIdhwDRNTRbRGnYMqbUnj+daR7B16MY3WuEAEanuQuRN4cW4q7tXsaJU5ZKcLeqEVVjSgVkqzSt1zKouAlzpLjM6Xvzb4e3tbFbFCnVrLU09kaYDhuMDxocPGE4f8BSSooYYIogkSiGzyFA1XTgRsq5wW1PGB0vmhFA7ZEaiKvKBgOCpkKypYLJhiSBoRD2XqwaDeq/Kj/aSRpuUidA6NW09cjUc8qqd1VcW6V2+isPc7vNNR/MnhjcaIlZCz1qhTz3x7cex5UdeTw6vjr7RzZV7tM8v7DcRv/4e8qfJn9ecvGthz/bb6llpob1VOtb+ScGU4fgBcTzi9OlvOD5+wunxB5xOH3A6HjGNI6ZBCraOg3iepyiREKHmEA+1X6bQYC4oiwXiNcXIVUF+JdRXpVH1Su8VD8UUr5q6qRogsssLvjBKhhTdzZobP2tO/Oxy49di1FqE2lLczBoJcZmlnsNFvGzPZoiotSEkCuJS09UsWOaCZVEliHqHm2JblBR0fV13e+Z2gzeice2aXtmp53QD6ber/c2RefUbd9glRNQhWkHAUoC5EJYiBiEUAjJhZACISHHEOIjXa4xC1MVTfgEjgJdYvcqYmzEgA8g542k+4zIv+PnpS42IgBLiMQQkIkSKSCFhjAOmYcCQkkTwxCDKWhJ1nHgPkyPCGumgYYxdmg1uylT7DtacgnWN65yslY9XYE8JWiwFWVXIZl2npiAz5lIniL1CTdOBqAFiUcNDKQuY5QNegGUBihjnOGdg1tRGNRpD2mH1JM/Zap5YCrIFl3nBec4SCXGRguEXNURIWrLFGQs9g0OV3rJjDktX6nY1Tmvc31ykeVk7umgMGFW8XbLUD/vliXFeGIyMaQCAJ0xjwsclYBgSHjOQUsSpMGIoKJlFMZoKcknITFiYkIplphQaylRAmaVwdBQGRkI6bd4IISh+19q4PqJFv7JG23ATJZgJhQm5AKUQCgcQBgREMBWEWCT0OgBWoD0dH5GGCcPxR6ThiOn4A6JGQsRhxKB5TcMwCAOjxd0pujwRQF2LQo/lmNmiWvqtjTVqojL9hqaqPDEv8VZfZa0sVnpQ6bdEPSy5MfhLfsJcnsQQYUXY84xlOWtNCPU2tbR3i9J12+/yngHFH6FrrldCkCnx1/hnxhn3LtUTxkaBzM896gTLjdUMQCypiBgAad5V0r+5F568Uj2XgswZCxcsrNFHLGmYmK2AsNAzsjnUeWprpRkwupeq8ygCjARtkBqNbR3LXAotNz5M66WAtc5QQQAjUcBxOuE4PWAcHjCko9SGCEnqsQRCDIwYgBQDQkygYJ8mLPkUXhthvvsYnW7ODK0wta1JC0l3Y2zjbbye4bQMBFpUjaeZZuzK1SBsv/l+2r5wzcjQnVdXrJ7/7P9Y24hY+88kmLZ+RkeHnaGhV9UQ6kapEQ+WAZfZChvKsRSW+jklaDRg2awb69daUc/9C3X4SHJhL7yhkqR6pr+iLsQNf+zf/9Z9ud6/d73xU27hVGXVTYpLd42bxLWxZh3lcq3t9Xt5pcXtYOO3FVJ/K11sU37073NrhMRNc/mGa9tFRjuE/hGE1kWNJsy54DzP+OeXL2CK+OHz3/HLlwLCf0MpM5b5C3L+ilyekKBRiAywFpPUVQcQo/Ai20IAjOf+PcNzOPiyUbaH947e+J7Peg3c3q+VbGb8bZXrrM/X+r7hol+GX20cbhgD2RA8JX/xBmbjRfR+reVmnGkVF9x2wXZv/ZvRcusLaSwEZCds+J6QyoAE4de9OVF0NMZboMmT5kCZmxOY6UgAVFlzO2beqcec1bi2aTXmPDtTo/mNb7I1CnTz3cSoZjCoY2LjSconwMmk1k6QTBtZxH+UoBHqFIUfAqoziPFU4IwmGFGVQcjSzpCkwWssUHEf1472V9ZH03XJudJ+c0O5wSaW+RVex3jFOlAAJCX56XjENIyIFLGUJ1zmJ5FR1DlyKVnSM1XZwWg6NeRzfHkbf6mpITJfARUxWIcg4xGQECMADuCyCN9lWMGo0nSTraRdc7w0GcUyLJjeAZbg2MakoohNuvxt+7I5uXiHq/We3Q/rdh+/hQZej0qU2hfSuBkJACI5X4uChwBKAw4//AXTp79hOXwGD48IyCBmZIookhsNRVOSE1jT7cqrU4EoEKiAqegsGX7GGmFd6zkydE053sS/u+FAIC2MrQ8qVGUO4mYAhPIBoAIOltJVqIpE2rPWrybYmuTCVSdFpp+tMhM7Htv0kKWtkzr5q72H7D+08b4yO/sz+3rG5Tkc+R779TdERDQLVEN2953UOChn7Id2uxKD7n1142kGpZUQw9uh3rNgbzaSZ4SJF8GEvNWlnTHCKVSoHrUGRPWqyXVDAEUQRQyHjxhOH3D64e94ePyE08MPOB5POB0PmIYR0xiQongKUwyIKdbFI89VQwcpYXXpYbyf7FpxsE03wy2vsil9zZm15ni2DdyUnUv7niW3eEtJU1AWoFih3UXT06hBgjU1E6unZC0Su2g6m1lrS6gh4nwWxezTRVMyXRatW6AFqdVrXAwSUqDXv9vVgq46v9egF+D3r31ZyLbr2u28w9CaYa4q3cxrfdV8qYRKrMgLEy4ZmErBUkjqFZBsqGaIsJoQIai3LxfZCDXtDVVsBmb1GJshoe6/XJ5wvlzwj6efsSwLzucLQogS8TAMskkHNUSkhGkYMaakdUxIN3I0Rw95a3mXImtn9kwabw0QVaGk4+SZS/HEt7F+fj3vGiIsT2BVXrW85HXzqIojNYSYh68aEFoqm1nrpMwoLAWpuSzgPIPzAsyLKJoWBoo92fKbl2qcK3lGtogew+054zwXnC8Z58tSoyRaPn8xSnjS1wlLyjGxMbp7yPzCWujbNWKv49I4afm/ALOOW/nKCKHgvGQMibFQwWFccC4R05BRQBhTBhWpHcE5I6aIWAqWxEgcEJkQivMupyz1SIowA4ndXu09o5SxNo+n2kduOGT8tDivEIwtEqcXMUIIKkTxzwgzGLMS+wKKCRQTkqZiGo6fMQxHjIdPSMOE8XhESAPGaZL0ZVE9dYIWeQ8tZsNWd3GFnYsyWaUaU9Z7ILp598rPot5Qtb6K4njFOUaNgjCD8pJn5HxRY8QFc/6KOT+pgWxBXi6SnkkjInKNhDCjtKZmgtI65zm0d/T7KzM2e359mxcULOvriICAhCbcqcBLRYralYya202LO1NQo5UasuwZZoRYsgg8maVmzcJmiICOdRBmtDRepdEn6RSjJf7QaXJSCNWXFmE3QrIg257PaB43jekmFVQt8iOAkQJ1hoiUTghhRAyDRBoFQgxFjRFa6JVGGRtCxY0W1bA1PGwjI7aCKqEZdBtNXQmw9jG6zo4/cSm+zPhgEWhccju3Y4jocOwZPOqMER6v1pd2qLlKIVVzyK4FRfeq7m4w6v5YFQGBQKV4hyuNhLAjoRQNLydxRiD1FrvW0etegW033o0uIPed16JxO8/+/Eop/ZLMcosC3/fBP9vPV//M/bGg1WTa/O09b89g5fu76durQQXV3V+s7St3vvGZ3ii399v6On/+JYPCW6KIbuXXGh/OqpCAaNqUbyUAiQIKCItG8f789QsO0wM+/fAj/vt/+6eomfJFDBHLF5TyAGBEoCQKhkKAFcwMgBhMRf0ZqaV/XOPQLe/5XuPx2nnfa/dblQhvuf+149Dg2njc1t5rjS87LbRH3Tg3nvd6LfROGK4XN6zBW+HlMZF33u/JC/fperRhq05BVhiaSaMXWquWycF4RdljHC1Sx4AsnVcWqY0xAbXOsvcpJr2eseZZeicccVLseec9Q4TJnu18LzNafTm7xLftI60rq+P7SdQU2da0vS81vhGk2S5K23FN18aQVLUZXI0RNWI8EKQ0jgoRbOYhzYnfKd0IZoAAibNXU164e8zBpCpSvUzl+L+dPbbn2KmOCRFrSh4g20wyVKHLGGLC6SBOuoGkZsLl8lSzXixFHIQiO0c5BqyKiGGWT3sE9A4ihSUzBxVSBbnqMRCREMBlVkW8pAuSeUWNBGoGB8Mn4eGsRgQZb13EccYUhi2Qws3DShba27uvGSH21vlzxtM1aXnOECEPiGBEiNxkH3kXZgINA0Iacfj0E6bPf8d8+Iw8HHHIP4M4o5CkaOI8g7kgwHhecR7jEJCXBeCsbbPgP0UQIghB58pSrpcqOlS6ALtttWsT1fSmzKb9ompokBaM9nOlN/aLTgyq85CuHeYidSStkDW5topyKobgRQweZm5ksBpA1utFr+j48D0afo1ZtGa+dS/8vvAdi1Vv4VZrnL/+vdt8C+wx2nsGkE3fwJCiw3atoFAcD4jDAY8fP+P48AkfP3zC6eEjHh8ecTwccTocpDbEMCAGy8MfWv67YPZDKBGTZ7T6B3uGiG0qBQDNQuuPDFfwsWAr4Psip6ocMOWTS0mTVTm7LDPKYp6zs3rO5urBnWep/bDMsxgvLhr5oMfz5SIREGcpyHuuhohFc+hnLdSbJQqj9O931QjxDvBaIez5xpQZU6uuN1j4i2QeqM65eM8DlwCMCKCgTKFTjDSlDquSM4OoAMi6YYtCf+YFmRmXIl74//jyC54uF/zj539WPmYaA9I4IIUBQxowxIRBczfGGBFTXxuiKl6JWt0L2MbvjGDKyOyl/7B3sPcna+SqsLIzvK4dNiZVq3xfTzVSHC03ZZhE+tTUZzUSoSlia22I3Iq256r81SLXcIyxK5BsaZlmjfg5W02Ii6Zh0s/SRUHoRszea+d6GrHXQofnxj/uKC88PVYeufaRiJAz4T/+B2MYAvLCOIwJnDPGIWI5jhhiwHFMSClimhgpFYwjkEpGGkYsgTETI4SIEDJSzFgQMKtnYxiTeJDHZrRt8oNL4bISSqqCFI2NIWXIq9d0AAKbATiC1EARxgMojhjHE4bhQY8njNNJU+BMkoc/JTHc6XoIVljbqfgYjZ73OInKTOwxnRsaZ2vDOFzzKPdrq+Ku0E4uRreXlpap4tkidFp/t2skIsIbIPRYhUBoOPL1PZN5P2/wc7h4DToF8K0NkhfEUAUzVkEyZxMolYcsEuSx5OI+rZYNk6QoaIwxAKfUoEDtXD0JwAnYz72fN7T4te7ndxwHTOOE6XDANB0wjANGqxWUtH6P0WeXHixEi7Lc7pmM9by1ZzdeYUvTe/xsxlD77nESxjOhp9W+MLuvSdXxPFeiNrw32Eue7t8Cxo99q7K6i9K4cr77hNDSODB3ePGbgUPtl2BtvLimMN8Vwr+1nzvwnoq/Vz55NWbfAUdv4Fd//fd+DdjchEpcjZZQDDgMB4QQ8PXrV8QwgE7A6eGEv/3tb/iP/17wH/kLmIF5njHEoHqBfr9gNsWM8uFv5PHfVTa4wx1+FXgNJ9bu6f++bfMhKL9GXgm+aq+wFpW2fO7q6KFRrLbvSa+t+K2130cteJ7fp5vmlQzgDQ6NU1MeGjCCgxrZWTQlI0s6405BX4ooHI153AOu6kbHNzceST659Q3uferf20jQ+k6FNXWoG3v/XSbC8aAM78xVr+HV3PgX6P5297+ACkZnjVfe6mpEDkvDgDRYbQhJU2kySl5KVwM0oOnLpCZmVL7Uauw936dtH0mN04QYo/KcAYXX8u7aKED1fdaGCEtxbnxOCGZ8oK4t03lf7ZeTd0zG/p76UIu0JwICeQObnNfAc0wnScV0+vAXTI+fkVPQ4s+yVv0Y1VRHgNbt07Vn8nHlc0kjpES7mSHOYFVaIIgxwcgJ7+AgoxoeAKuVqsyq0iExYlk/HF0iUm9AK1RNVSgs1YAgfS1mrwBq217OBxzds377Tv6LwTcZIvYUCv3fbXDfukCa8uvbFWlvhWt932+zbcSC4LJZlUpoCTFNGKcTHh4+4vThBzw8POL08IDT8YjDdMBhmpBSxJBSzU1H9qnKXJE2vdKqcPNatBz7rrfYFNp95tM2cN3gsLPRFXd0CoKshXlz6RVXNUVT9grbxhBkLSx9WeS3y6wpmS7i+S1FqkUxKylrco2MKOqZro7qm/d8Dr5VcXBLWy+fN7zpcW2t/DHc8qF+y7JgiYR5BmJkRKXKZojo50wrTXidJQNcpDj1AlGGP+UZ58sFv/z8M76ez/jnzz/rxj5gTCMiJAoixQEpppqOSWpCxE2h6o2yAUK8i1O84qryqldisilZ7fjKufGKs2vPXH9MTWxGA1lvise1Por75Kx1UNTg9gzTK+vVrPtacFo/NeLHlMJzUw5bMfeWjknnckOH91Boi1nXYOsdic28rK+pjLQx6npNzlJgLEVR4h+GhAA5ggvGFJFLxpgSmIFhMJolHhM5EBYipFRqFFUgKVBPIIyDMRiakolRUUTGZjvfZWeMLNVNxwjB+PWAQLEyFiEdENKEYThiGA4YxyPSIAUzLRd/iBHQVExhxWB1zL2n5844bHO7N6frtVKNdA0h7ER9/2qIUMOX4awUSNcoNo3K6Y0OPS3PWeh9yS4SYhUBsbeON7hl35+7ZoVr6/Z6L3SrlbOZ2nYvsDJCOIOQGnqLGhhyaYYGi07JhSUcPLfQYO8DZsYIe4z8sU/Pba08Z5LpFdB+1LbrMaVBjA/TiGEaMaggF9UIEWNEDM0ghkCVxwAVp5TzPMF6Ptd0EnWPuU7Ha8Pd93W727Z9XYm+9tW6DtY1XPPj6I/vBixS47XnevrZ8GyL08/BniEiQD1GgUrz9tq7+ow3sMb9u7ytUWbe8AbXYM8w4fth11y795b299p+jva8H6zG6oVH3NqX1/T5JaPPa+GWuXjTM+pQKQ3UfY4hdaPGcQKDcH56wjQeQQCOhwP+8pe/YL78Ez//nMBgrR8XERZp1K9JqAFddAS0eu4ru8tr5VSDa2P+Wln12jh+i8z7Utu33tfxJa9sq3Xfcwf++7fDa+jut9z/e4Eez9+jvZ5/fVGqYM9laRvu+/o3GN+ha5JRhK9ShTlxqXw4k3hW9/c2Y8TawW3NR8gtqrPx+4r22zi02ifjVVbpiHwKJOq+r8bGy2mmwEc7WL+v8lxA1fNc47k2aTB3oRJS/crYnUZqegNHKVFlcce7+fY2dKhOtimhUT2+TebpnkWh1pu0mpPNAXN2Nh+dzyCGlxBCdbrxsvcaXqKT5kQZVd8i7VlMMzX8qHJxL594Wc74GKv31/i40PBY3wWv2CvX+8xLvNJbgVWJHwkgcuPZHQjD8QHT40ccTj9gOn7EOUVJb7SiPY0eUXeSSCKDrS4HG2+txogMifLPXFS3yu5ea0d75GUMPU9osnelYTrPqPoxOy9Rx4DiKaPDzzY23O4x44U8uHtPdm2LQwXr5aVvk+rtf3r4LhERW4Q3QufOEGD54m9dIHSlrdf353XgBZJb2mwEQTc1QMs5JAAJx4dPOD78gE+f/4bHD5/x4eNnHA4nHA8HjOOIlAgxEsIgStyg3r1WRBKqrLZNyLwDRTnalGuWJ117XPv93IZVczFXg4bzcnRENVuO5rzUNAk1GmK5IC8Xl0v8IpEQtTi18xgvRSMnMubLRSMgNBXT+YJlyTifL1hqZITkgF0WNVTUsCxJM2Rhli8pI74H9FvQW++uXMguU2f8jIUHGswhYKAAKaYbEULSmiKh4qPU4Zg1/2HbvOU3yXqYWVMynZ/w9XLBf/vv/4HLvODL1yeM44THhwOGMOJ0OOE0nXCaHnGcrKbJiCkNGIdmmPBK16IbAbMYILLiqxW1ZX05nzqsHfsPV8an1HHZg96O2fLsm/fthjnl3PrAbT2wMpxVEVbToC2SjomzHK1OhEUCae0IdkV8USQpU9a2rDj1PEsqpvNFCoQ/naU+x9P5okcpyH6pyuAMn9/0FiWcjso3iXLM5nXL3TkZ7/UKaM/KOQu9z8CcGfh5wdfEyMtXjEPAL+cZ0xDx4TDiMCY8HDMO04AHBkb1jDIlbJiFJgZ9XlAv82UuIJZIhkBuPa029YpJddywO47dm6izeGQpzI0wgELCcPiAkA44HD5iGE+YDo9IwwHDdBJGOI3iaR5TU6itFGtV2cqWb3YtIPV0bT3uldG1N9b10dF4OIEsS2hwF71Wlq74m//k5eIiImZNzdSMEy26QlLzVRHFra06jqYIBm1ppvuyt+/6d/bMty8kV8/bWBAagwmgGR5C+5vUQ6Wm4pJQezMESuRdwbwwLkvBZZHvy8KYM2PJwFI0RRPUN8/Lcx1558rrqn8NChutKmqMCFonYB8X/W7ThAGuazONkgrscBDHhmEYRJBzAl1MK4Ox/t2y3/Zjvi3m3n4zHmItEPtC052xwN23H42mkWOVPvfRZt6rsWtjFUXn8a1DM2eM+J7KpOdweL3+9xSTZijy9NWfNyHbilm7u2u7dt8e31zPf2c26do4PHc98MdT9H0b2CT8K73z7UCQtIn2twDX/4lE8ZQz4TwvuJzP+PLlFxABHz4+4suXR3z5+ohxSBoFOKMmYnT7w3vj3q8pg/z5gFd/39fG7wc2ZoOX7zC9T4Wt4lpOsziJBXPGye0qYhRiBHWOlHSUohg1Q4ToIFV2U1muOPmSmYVvZZFD6/OrLqRlUTFDiGPCa99FZm2peqsSIpsywtJTNpmWsKefMP0LtK8WcZ87WYDZnM5U1wPniKHP5GIOqfb+TqYpYryBN9jUVEtYveOWD7wO167dOS/EWhUZaz7T/qLKL4cYME0TpnHCOI4ohbusAGaIWOYZlxirk1iMvSGicHYKaAbz87hrfBWpwYRCQClR9Sg9Dhs/G9TLvr1oqG3VIzl5TXm5WvONPR93jffv4XsZHa48DXViiGuBePbCTgw4fPorTp//juHxR4TDR9FX8aLzLXMv8p/WWtBXsBoh8reOfQiCs6RGCF1DYohQZ1YZCG1E+in1QVifzbX+qX8V1SapnGjREI6ukRkUSN/a+GiVH2tkxGqUqNVjBbZUcn929nj01+u7/4hwsyGiepcCeB1xagVNrB1ACc5rx7hef8ONfnG+w6K8jSC0x0lYlaa+0eLUUhtiwDA94HD6iIeHT3h4/ITj8aGmTxiGllvf0iWYMrkpU3QMAVVosttQXVGmss0dfM0Q0YheU1jt/d6UBC0VDXsFQTZl7KyFTVVRq0aIarQoluvZlGEtImLW3PjnWZStloKp1oSYRTl0mc0j3IQRyc33XkT4VoGkXgfueCxhOPpre8X41RZRBaydC1kbyLn9tsQoxYEZAInHthXqtXZMoQNIKhHmls4rK++RS8acM75+/YovT2f88svPmBepyxEpgTgghSRpP4YDDsMBY5okRVMSA8QQmxHCiivVt3IbQuGCPn9mY/LWRgjm+uad4q39tj9We8re5z5+87d1UIulguGLWnf473KVW1RQS8/kr23eMUUVdRL9IOlx7GN1T4zhusyLGOg0AsY81j0urZnbfjwIPRq3cdsbq+7KzYV1KmobDa/3FYCmyEQBFgBUGIyMNAujPKSApTAOYwQX4LIow8ZAjBEgQkwBMYgnd4oLAhFSlMK7JRdkKshZmKOYAQRhloSXoMoNrEXbzUttfjOGUQvFsiiKKY0IccAwHBGHE8bxhDSeMGrqvTSMiDEhqkEQ3vt35UkGoBqPm/LVG+QsxdSWOW3rp29xzwhh68zqoGyjeNSgrLS4GSpWR42G6CIhskXlFWPtRNnuDBE+aqExd/v4s8XZ/t02ERB7Rz+91qYKIVR/aAxx4QApWid5frt0aZkl+iHLml00IiIXXyuCahbdDZ41Htx422qEsChfQdN9I3T//rXV/hkyyBL5MCSMg0RDCB5GxCjpl4w2m0JbPpo7VaPjNrTxOVrJaswDdq9p87oiHCua7nkMc6xo0TtZaxt54dwE83XfXgZvhPitjBG+L3vf10egpWOC8ncUtLR19wzaPPeqQcZ48e78G192B14yQrxF8VvXtjDbb+oX7dCXmz2kVwO2iWPi+oMqxTYNYEMhXny0a/Qb4LVGoT147f2vitC5rUVHVNupGMUZp2jdrvP5CTEAx+OE4/GA0+mIGGXXKTkjk9THEWXTas/X/7+XGmBNp15Li167Xl4D3xpl8Ry9e6nt5/u6Q6xe2Y9fC17jvHhLO+8j1xqOvUNTbh46Xl//I0YtebV/l79D554h6ZYqzyq/VyMCJDULk2VpyLL3MSFQQUFL2yv1KkpVzBv/shcZodoD9DxNkwoY7L0ctd9Oubz+MOvRpWliX+dwLad57/KmY9lPiW3pt03X03ghLs0Y0WpYNCOEjasf8/pOlYFrcrdOLrBS2te9d3v26txuTjudYuVv6hZH9cKgBuakaUUvF8sIIBHbpjheckv3zYEhkRROD6G8jthAqNpC9mDNR/Z8cnOutL56nYG921oWM551L0KuRkSQ1hhww2m89Xocn6Nt30p7rtFiS2nEWuEyuPVdGDWyenz4iOnDj4jTB4ThuJFpjH9rcnmo41VZUh3zwiz8LmSqBTVL1Z+YQc4cFasNgfs5KO6duD7I/tbvRYwRrO2wnZeXr32zW4AtdhsvXpfztTFetVNfXn99F3L/B4E3RURshaOrV76xW1egLsb2zPdSOn8PYBSAM5ikXM4wPSKND3j89Bd8+PRXPH74jIfHH3A6PGAcR4zjgCFFpNjqQpgCi3WxMprX7FKjE3JdkLah+E3Oz9NW+dpvvr7vTXllaWj6PPjsjBCtkOnSCvcuF/WYnWuRataUNYWtnkRGnmVDmbUWxNP5gnnJeLKaEBoRYamaLsuiiiGtZ2F59X5j6+E68GxLoJ4Xalpx01450z2jKhb1exbviUsAIoDDwsiFAIqgmABICpxlmbVlIejLIoTcokkWFvyRNEAz/uPnn/F0vuCXX74ACIhxxDhMeDw94uH0iMfDI06HB5ymE47TAYdhwjRMGJIoXwNFydWP5pnMWoIqq+JoKax52NUbw3sN1PffM4QZw6TEmtZMnY7nij7tGx/W9ShaLn2oslaercWrWYwQ8l2KKbEWpi5lRikLiuK7KW2LFQLWKCJ79qyGNIsAOp/lnqezRkRcxAhxPl9wWTRywtVW8XwbDCccbqxx8N1IpQkY8JtmP+7+qF/0RiBoqV6r55LLjBgIT3PGOAR8fbpgGhN+/jrgeBjx8XzG8TDh4XzEpwdVchOQkRFUqWDM4TwvyjCoR8ygHik13LoJdVw5ENS+wZ1rjJFGYQRZI1K8MiKNE0I6aATEA8bDI9JwxDAeENOElBIoRkgcqzCb/eMazlpqrtLh4tbIds0QYbUg2L1fu75UgSVrbRMrTi10O7uP4e1cfyuLGtP0mK3ejxapNkNEdqmZHKqg5LZnG4OpEmcd361yjFafPfC/UTeflREkvzeoZw1LWUM2xl85Tts+JeWSfKwWxKz7zmVecNbC8fMCzJkkbZM6wEmYvLRz3egsOMusERFkERFUhd+WK3Z/z2bux6Uae5R5n8YJh0nSg43jVKMhQkiIQWtEBFcjIkjasD2xsQlZ6/PrvvWRL9U40eHilalcPa9Uz76sBmsX9bn6NCG7jyIyYXFNm9ZRELcpqwjbtFqrK75Bu7OnHF5HRIhRv6AUiQQr+hvUc6/uWzD8e54/b4I0fjO26dp7r6/x17aIqt+S22u2hG6bW1+0+r374c3Q9rE76N6qFt75cgFjwHQ4gMuCf/zHf0NMwJAIITA+ffpY+TEi9Xoly9e8UvRUIzXfR/wOr4I/fyTXdZ7MMrAbfewudbUDiBq30WSXJi3CeAoAgV2cJovBIcDJbChaR0K93vU6Yq5RCsanbNI4srW8SqHk55CFv2i6FdYualSGGiCoZEkXVQqCOkkEFu/tamxY801efrI+ep6aW+Qns4ua3nsfaDQFLLK6GSV83YrGsPrfVF/FWcbOam1uIijgmFo3X20mN1+3oOMAn7VjDQSEgDgMOBxPGMap8kKiY1ra+xdgvlwQiEQHEeKqu25eIU5l+6xRjye1vmEIep/0NVBz4rH6D1UvY/uRGwDB0RbZyoWr3mKPR1sby1o7+04Entd7WS/7diCy+rRN0R5IIsEBYHj8AfH4iMOP/47p878hpwkFAeBFDX2rcVE9QtWMBT3JjRLIOlTDgMO3woI9TAQOAa0wgxojdD0ETTXbZEIvYzU5SgwI5jhv54Ky/qU7vzMym986YwQDpHJNpSG/JfP6O4NXGSK8YP2cMWKrUMCbF0ZdXLBNqP6yueZKA2967rdCIzC2qQWkQWpDTIdHTMdHTIcTpumIcZykiKTmbRaPRfVOtEXlFCrsNyGzDOqR6gbJm/nZU8Qa4bXf3RvU37bKBrO2m/duaZ60eXHK0tylbuLcvBl9rmfxrC1ixNCIiHkpuNSaEWJ4mGsOc1+c1/r7dsbv1oiHa/f1G8D1Z/T4u/69Y8k2z9x+b+eZGXmR3PnZHDJAIIowBV3JGRlAUY/dZdFICI2MWHQ+zovU4vj69QnnywXz5SJ1IQapWSKREBOm8YBxmDCmEUOUotUpirIr+mgMUh4OXOerOpZU45l7vxWuCg7upGpitM1qhb8e718XEWGMojKN9dlOwdMxCJo+xB3XURJVWeY8eE3RZgW2LDWTeHiUGhGxZIlOmRerG5Fb2p7Vu+/iyApX1r9cU/i8uB7QGK3O7OEetN+GKH4DotqdZFyWLEqBpRRcloBSMiYzOuYMJsZcGAUBQ4o4TgkxBlAA5jxIREQZHT2RDwCkREAQmtn62iuw/VvZTmMRaGaEMDIcjBZr3tKYBgzDAWk4IA0T4jAhJsnFT9UTBx0N9+NmgoXhRBUe2EV6ubXuj928sZlhe3xoyuBGq1tR34abzNyiGmpEj1P41rRLPj2OGaPXOG5rl7p+oBuCXvFTlfDk52R/+2641Rsh/Pn+u3+eO6oCypT6DKo1ILJGOpSihglXmFpSMXFLxeQ+VRjp+tu/k3LUda4KxFbF1TtnzdSuhT57x+1cC44SUhr0IxE5IUSQMzwQWZSleXcF61YVjP287e+B2z1pe936/uv8WPdMNVJXurwT9eDptm0ue4LdNXq2Nkj4Id/e4yWY6/AWBdQ1Ptra8/tY7bMzqNSifvX5GvbOa6H12tj/1ir9Bps5UdgVwG8c66v72jvoCtfGiN0KL7ztKr/h+YYera0NpVmdX39fX7ddr9e8r7+Hl/6tUPtyFZWp4nvOC0KIGIaI5ZLx9ekXDAOhDILjx+MB8+WMZYZGBzd6t2eK+DXhVv7re8KfTYH+kuz23vAaL+Vr8NLa+7Xf6TVg6jvPoZXuN0D46yZFdG9T+dX26b2pnbue7fVVXiumIkXgdk3lja/wD9qcPIMdj8WoxNbc6bprTAZVhT5tIiF8BETry24/4Oa1eP6n56lLKTWt8VVeCE2Wlbb7qAyXl7kfaO6/e6VvHY/1UcfATW37wY/lLuwx9/0XCgEhJqRhlFTTyt+IM6DJ5C2rgBkOLMpl/bRb9JB+rNsY9rJK9dZfRTisd97G/8rf7TpG09O5K/1Q7sh5/txbec233is36r0MlZtcH4mQphOG00ekh09Ip48oMaHK1E4mbAyTKog8b61FsEFogTgUdPU1eaL9EzkGpPVi1uIhHF0yHXYdEH+hUKuqt9LrCUHnJnetubfpG/WKcvfjcxKQ70F31w34+meA71IjosH7bYz9pPcC+O8H1u8bAASEeEBMRzx8+Izjh7/g4w8/4cOnHyUl03jApDmcp0FSJwxJUjIxhaoogNoTJXd1dpEQzcre7ZFG3FbKCu/53TaulRKg3YEuL756dfeFeZfqIdtyip9bjYhlqZERZZlbrnwumC9S4+F8vmBZlhoJ8eVpxlxrQ2Scz5KSZl4WWIHazf7Hq3X/G8CusHzDb/I7lDl7Hqe3m5N8Losoa6bzjDTOuJgie1kQ57la9ZcsBhzV08KURxmCG1KPYMbXr1+x5IIQIqZxwg+fPuHj4yf88PEHfHj4iNPhhMN0wmE8YhoHjEmNEU4B21g3rQnBlo7IcE9xMmePsCumCrs4aqG2puRtuMs6lk1x04+XNyT47wtMGSuCaVbc15oRejTmsCpyWSN8ikX+iKe4pWRi5yVeLAJEvXzFq0NrQ2hR9iVniYRYFpwvC+bZirb3hog1vu/jzK8lmHjFasPhtfexzU9growBQMhqmJizpLqZl4IYF/zz6wWHXxL+45cLjocRj6czni4X5HzBpw+PeMBR8nZy1hBOLW4FRiySq7No/AXDPIqC8uBc51v65plIzb/OAEegee+rL0hIoDBiOByRhhPG4wnDeMJwOCKmA9IkKZviELWuTz9avQDCGiFkUQu2LtSssKLjaxpdGUvuFeA9M621fPRodUkqzmq+bKHhQrdLjXhYXOqlpX3USOxrn/T5+l1fVv3qnRhM2Wqh0i1k+q28sn9G8XyyMawwmmK+ewHMAbmQGh0Y88JaAyLjMhdcFsZ5Zlxm1u9aM0JTNGUvVNicmIKsis47HLIfJDLRPHQ/NFrYjCh+P7ExB4AYAmJKOJ5OOJ4eMB6OGMYJMQ6axiwiuU8MksZPGH3CniHlW8BofH9u+4ymEBABuRp2ncNCy31sNDjLtcoLeWPFfpTNrw+3ODns9dX/bekNZZ5bGplugXSGCJHgiN6RPya8FBCyuv73Y9z448N6HK/h1Fo03ojKLz/pd7BmXgKjqlD+DQSEAHApOJ+fME4RxyGClwU5n7HMM34pFxyOEdNBnBjAASULL9bsOqo47Aw9v++xuMMdftdg7C8JH7TdQ0xmqJne3TmL368rXvc+akdTCu6SSFUksno5r2SRjo82w0J93mrvJoJF0sJdu37udr9VuYFZ03Aq3coiZ9YUmNoYAzW10rXoz3VEBNinhEITZljGtfvOBSgi29ZPWfTe1flVWikvIfWqU7fXk2mP/fdnZFO7zHgcZ/SgEMTRaxxxOBwQU+wjXrWNohEj87KASNLyeWiRDcJT3rK9VaOPfgKxpJyw3ocg0cURAFq0SpXTvKGNGZKinZR/a0PQ6zoIXKib667NFc6uU69v9Xfbd/pWkOllmeMSUSxF0zAgDiM+/9t/xfHzf8Lhh78jPnzGEhKYgJDlhbmuH/9urV8996Iahc18NdwirZMGNqcyZyxUGsAh6t7unlOKBF4QNE6DqnEUbKn0SflekvW4PyIQ+VFwLjSPYu0qqf6I2zri/n2JGi5XHuSGufgzwbsaIq4rYd/WXscU39DI3kLjK+dvgWsh488v9r4vDCFYIY4YphMOx0ccjidMhyOGYXQFJKVwZAxUvRazueI6JDXBvpjS1M7Zy4Kw9iBvfdtaz9eEbnufKXf3LPprj1mXE9/nxs/mSdtSSZniSlIsNc/v9cciIMRDtVSv4XVqClSlHW82mvU4vJegtYtvzzzrObxp+/XeHLwMWV1zZx3LrLnNLf2VtEeYcxZdD4fufkmZpFEpsxiXCrPk408DjocjjocjDtMB0ygpmMzwkGLqcjGaxybDcPOaF4h7V6eIEry0MdhuxEU9Obiw6RV38Hhf6bfbD25pyIoya7aZcWkeJvDX12NxxoHiGMi8us7uRb3ePPfbR3PzF/W+XpoXdl1ndR1u8arHmbfjeGX0njWcPc/wXA0PrXNNGoXZhAzbrHNh0CJK33kRRe9lkYLAxzHgYQoYxxHDNGBeZsQALHlBXAJyyYgcHY4ZQ2NzHCq9rCyQCQAGyhhQIARunhgM9boIASFEjYgYkdKAmMYaCRFi1NR60gZMebweijoc60LAbaj8WK8ZUz+m7G/AHp63mjzryAhfBNii0ywCoru2Ckg+b7+PhrD16fq4YxDsjRB45sgrNHY1JdxxjXvWiJeBnIpX0nBYFERNgSTzk1kiIOyzFDU0ZPksmbvfZT/y64Fr51oVChcpR/6sXF+/S5JT45/RC37762299s0IPAwjhlHT5MXUUjBRQCBJ7bPOd1v3n7cybO8AW/rqcLj0+FwFuI4XauNxyz7vDdbf862vCYnryOK1MWLLTxj5bMi9UgXAFDCyFG4L09+PAHG/q0ZpO6L7bfvrXstv3bL/6IX2gFe139p9jh97qU2/Nt8Hrs/B3jPYvf5zxoc9Kvny/n29T8/DzXOH7Rq9xfN7G3Hixoi1AO1QEAMg6TcyluWCef6CNBxxoKQ6Bk23WFFhpQwxWc/jCLfvv4ax5hZ587Xwkiz0Xs+6Bb+ec9r6vcOvaaz7I4xH4/e6Q/1bqND+mJHxTKK1rYy5456c8nZriKgpkbsu2H1Owej3eu4dOSwN22rjckZK6x/Vr/0b+npk1D7Gw7Leq0x/1aWs5Fs7XvvUDBil1YggMxgY78aodTbaeHL7Hf43M0Bw/4G/3o0Bu3epk12ZEjdQBCkS4jFgO/PtfwNXU5ZIZalY9Qs2Dt0OZ2Ozicjuf+/P79O9tXNPbc/NUx8RYcapPc6o35ukXUkJS43Jh9/LOx52Z8TWfd17T/8e7w+m0Df5SeTqmBLiOOL4+BkPn35Cmh5BwwEm35rkZuizadUtPUcCbDOu8tA6vblEBIucXp0TCjupCg5NqbYPItcXh7cOZytd6eYKiu/uttpRR0OYd95z5809/2N6gj8AvX9v+CZDxFqI+u7A9b/rl3xjP9YL2xfbfW0bjIiCBBpOGI4f8PDxMz59/gmPH3/A4+NHHA4HTKNEQgxJvRODWvaqEUJt8LYJFa6e0dk8o30U2pX37wX4fWsrYPn5LfTNFAAFlt++pVyyj9aGKOJRW+YZOV/EMzzPaMWrm5FimSUS4nK5IOeMrxYRcdFIiMssObln9RhfpKZEXlpaG6Antq+Z9peY8d8CRGnQz8UW2ubfchzqvGkbFx2/82XG5bLg6Xzu5nhepBBriINak1NjuCyNPggxRiSKGA5HPDx8wOfPP+Lx4SMeHz/gdDhhmib9HDCMEgqfBlF41UI/StN9JESncK3RBT0DZDj4HGOG2gYA6q97Dnz9CWM2LMrIcF02ES0s7dLYWPEvKcibkYvgeDZv8nlGnmcx4uSMsli6Mk13o8V8lzlrhI8YHpZ5kZooFhFxnjHPtg4WzC7c1J5PWmdhj4kV/Ph+OH1dUbFViW2uh23xjKLCRNDQx4LmFcPM+t6MeZnx5angH19mzPMZX778E09zxqwoUwiI8YzCjGE4gChiSAUgQloymAkhCvNY1HJFJDcXmBGkbHCHKCAEwUkRahIWIsQ0IcSjREGMJ6ThhJiOSMOEkEaEFEFRvDU8o2G2IyuuZeHVgns+UnqfNl8zQkDvAW/XjOWYlUg2qw1RhDaXFs5sdX0Wqw1RtL5JcTVOeNFc/YszOCtudukCuXaNGNVY2CCgY9y0v3vKWOPz6hkvkBI0tzc2imQvbhCaeBPsjKsJwYU0vBtaEwIS7TBnoadzxmXOOC8Fl5qayQwWUG80aDqA9jDyc+F/qH2Ttwuw2ElqI8P9m68jvNaGHYvYCoM4NUyHA6bpKOmZrFB1MGNxMxoHTQUp4/dONOOKF5zgpL37jdAJcD4i0xvBfC7dW7tIu2P53rDB550+vmSM6I8BIUiqRZgBCZD0TM5Djtj24Ov8+YvGGnr2az1L10IlaB9fn4P1/nU9srEpK34L6GjSr/3sl+btDwSvehcGQD4ybA/vCrgsmC9nEBUcTwOevkpURF4IX7/mxizDHFm4NnVNZXaHO9zhBqgKVVXtM3qPZlvrezo52KpuvE8IIiMkRFEehgC2ktQsNRnAQT/C2wXyJgopWgxuefdNidwc9KCMYGx/UzNSql5RmEPlZUV8KAhBPNhBDASpAyCMvHGdUaOVqdIciUKQ71RMfjftK6+im53CH9RIF5w84PPOuztIZQNa00rrhp2ukQ8aEWGppUrr05afW3/vc+ujOvv499h+9aaIrvfMCBTV4VEcaghUZSS5vukCwJJZYSGq8kcwb/k6Vv5VekNUfauqU2m/5ZwRKIJj4022e1aTfU2vUKNTqVUP5brvxK4N0UuQBqBo/xXf5Z0z1rCOiPCwt6++j56WIdEdIrEUfcT08UccPv2IT//pf8bDT/8F5+MH5JBAvAhuLkXlbZOn4WxZal5QnacUoQdMcqOg61hxlSE0ABRQwOJ0IGe0FouuNa3DAdURkcrdIqu2DGWN4pjxQecQTVLVEUSjUi6Ch7TvWsOXbJhk0LHFfZdyX/tLbG1Y//14//nhZkMEc1ucnSX5RWPE+7F2zzH/r1lgr732LZ4pzAzWoqaSpmPCMB4wWk2IcZSaEDHIJ+ima0YIvwHpxlSVoGxFT4CqiEL7W75z35crH/9e7QgIQXXWZXbfnaesKAKa96x53XYhhS4dTtHIhqoAy5YLv7g83Fo4VaMnWt70fj/czsfbhLNrholr8/2cF9FrPYy8d17bBNf37b2Xy3dn8wbLZ56dgnGRDU3bNkNEQpAUOSEpprV1SgRRWsWIaRxxmCY1mk0axTOIYiuqV3gI4rmgii0pIATF24a79ciegUDtu+eOruNn702CnTF7acyfWw/StjfUOY9bcMN7bvje0oaU7u8+jYgZEi2yp7QIIYuI6CIhss5jH5LblHn9+l6/t+xrRq+x+f0WuOX6fcPHCzh/5boafg0jbSQ5+AtjKUIjfo4FA2Z8/HjGw9OMh+OCKScZr5Br1FQujFDkXgRlG9ZMwVUFiIV0m0cVROBQ4UQUuZZ7f5CIt5BaDn7PaKzpgX7MGNGnY7pGj/ePleGp9Ln9vv8p3acP+86rj6PvO/f6VFJl9RzACwuO38K+QnLLR8idJkAaX0bu2I2tKWN323b9MGOFi4Io6qUm4e7QaA+uONTWpouCcEyskqTaHbO5MKFVcLMxWClsiVpRR4Lg1g7bepOizmhj0IjKGAU/pRZEqwnRjs2rq36HiggOF7sXuBFEtrh+w2ujDzq6jyu4/Y08Zt3zv6mVffDr0mw0a5p8qzK23d/47aqmqAIyVyK6t67Wfdv3VO33jnZ2fa0KUh1ZdQLVi++zXxNifY0/vhf0PM8+3/Zez97O83Pr47b2XvIo/7WcEeRZ9S+7ovv+HI98rc3N71VVZbvo9gqTW3IWBUhKATEKrS2csSyEAPN/dm1QrxTzioQ9fuW3GOPXwksGUH/+z2LY+t7wWoPqa+65dv01+fS3gVuIk7/GJah0W5NeeL1VRyeJpDhwM0To2jU+kQNQgrtVeRvmRivWsvIOD2FGgUpnjL2UG3TzFWFCrg+QVD8BTKV3IDVmsKaFAqxaxnOruteW+b2CYN7ajdux754HWDXILh0Wr5/N9ZruU+lsG4v1La2L2rc6PuReYp+H2H1/zxTp00nr8Em9yVAvq7IO2zxaE41HlOeueYst73OtK1s+s9xAK/vZY2bdV3o6vOahetnPyUP1HZocs+3rdk/qnrVjjPgm8M8g+y8gHk4YHz7K5/QBl5AktTzQggzYYVNlEU3qaLJc24xdSrYAoMj3osIWkWVVCILn5NY7DB/bs4wHZjRfhG7EiLpMZtZfrro561tlFjpcb6md1mNk19nakL6RvX9dO9ytvH8leGVExG3CRYPtIvhW5urqk140iLwdnmP6r10vnRqAcMR4+AEPH/6Ch8fPeHj8iNPphONhwmFKGIeAFCFWvRCksKpuuvZEUwbVSAhNr2Pp1jpF1HrfqATOK5GuGyMs7U2voPKFpTUfvkZC1DoQsx7zgqIe4bxo0V5NO7NoyqbLMiMvGV8vM5Zl0WPGl1kjIuaL5s5Xr93F5xxfqWp21vwfF/q56H5xSoStFzqE2hOw5Blfz8CXr18xTb+AS8Y4JLG0A1JbgQIoDCCKiHEUZVTJoEIYKCHEABwj4jDi8dMPOJ0e8fDwiOPhiHEc62cYBkkplkINnaQQqkWZIVblqkhXHEJxBSqK5QNXi3VlLq4xjBadIOPRb+Lt6BUIW8+D1m7hFgnBzDW/JFWjSFPEFktvU1MruQLt+jdrJETOS42MyItcv2japXmWa88XwfOzRQI9LZiXBV+fzjUyqKgitCqrHabQBldeVnL8OlDVsbu/lu6o9TkA5TaakpQo1bnJC7AsBf99Kfj6CxDSP7FkUbAiRKSwgCjiMi8gLBhiBiHgcgmIBepRgxYdbUxJh1tAU09xVc4GqVANCgNSDIjpESGdMI6PiMMD0nBAHEaEmEAxScJqzbkvLWpdCjRvGcMf+15lABu5HZz268Izd+vfW5uMZZHaELlYjYisuCie5XkxOq6REPOl4nMr/NbS7i1ZonRytoiJUqOILP/tukxcy+RLq/nd4mmTR94Ph/ew0FjWWreFWQ2BjKVIxMNlKXiaNSJiWXBZMubF0jMBltYphKBGKydMAFokHY3BpEq2bGAqCLZkSZnUjZeNixOYO61vYwSISPLpmuF4mqrBOMUBKQ5dCj3/kbaoCZMraHO4DyYwAZb6qq8RY/0WD0K430K9fw8YngY3IzSh+kUBxFXmeI5/v8YX1md/A8pV0eGVvOLN7XeKGZ8aQKioL5zor/HFFJ8TaG/qw42GBf0Df2Zh6rfeYX872JvTtbLnuvLn20euVGGdVEkpFCLDMsrnPON8/gUxSqT5MBAOxyR7cJ5ViSG1o0ynsMNRuzch/f7nxec73OG7QKch9zGXXpJp+7nuXpo6Up0qCEjBlPsRIJa1zgVUgigoSVPkcNH1betamDFiRgkr3lhT/dSUPyUCEH6wowcMcGQwZWnParqhIEA98Inl0aWAs9StEUYHQFFuUw0mxIRAAAdR4pqDWx0mGK9UUEpECCLzEoIoWwkAZ6yLBVcfBNoxSABVT9Q+0rc6T/VjHupc9abX6ba8A0g1uHtGiJcYs3oJo3qXx4AwJEynE4ZpgmfwhKXuUyehO8d1XokIKSXEFEH5dt2gl6NyzgghVl6rvffeW+n5Og9q9Fb8NcU2qYOcGU4sIkIitd0O5+Sk5yJbfzUwfSMWEIA4nhCGCR9++j/h49//C9LHH8GHB5RZo0LaTWCLDCFC0HVqA9icskT+YUQQSZh5YK0vA4CYNBopSx1dxWMilpqOLEXjS5XigWjGA6UZnJu+VIbOhexXw5q+Lkv91PYziWzPFvXk+G1t3xagSoftGVTa+qzGB32cl/0Nx/+F+I1XRUTc6im+b8HvF9FbhKKXWNj1QqX2Qz13i7Fi7UmyafeqoMndOxFFUByRhgnjKEUj0zBJXv0UECNJJAQ1/Hd/uGa5RRm4BdQpqyqBqF2piLxn/d9T9rq36K/rFoTbzDce4KUqdNvR/c0tRY9FO1jth0U/1Vvcp17Q9/Ue3uzf1xSIjX58E7xms3r/ZzVl1t61XqnTdn3jQFphpnlZMM8z5hjFMODSLllaGsDyhEegaIoQEmPYQAFpGDGNk0ZCSD0IU2yFKCk9govkaYosrm9yTZFqzJD/55Wq144e703Bd+16YH/z7r8LybeDP0dtBVUF2NqQty4qVT+q4FzjfYsKMm/rtgasHkqLaGlFrrfIsN2omgJ3nz6t6dqLirlXwFpBWrFyPRdAVR4au1/fQxlZE/4JZCrWOvczM5AZX77O+PnLE57OMy6zpb2yvP2l826nLEXAuhrAbna3A9CUbuROhhDBISHGAdFFQgRKQuutPoqlzcJKqcv7tNjmt6H1Fl8N//oL+9+f/Vj6pB366o0NPrJnHQ1RXD2UVjDPFbOz9Ynma1oFkSs41XiGdn2/h2734mvfXwO2fRj9YIZGOljdB0Zmi4Jo67BF5lEVeIPicpOVDLNoQ1rk9y3u2dYvqQS4Kui7Pnc0lLeDhVasOiqt7iIhQvvbxjYENXs4hdzbdzWnbHB7tT1LaHGL+tzzNqfVd7h9wZ1p17sheK7vt/B9ey101zepfIt3DdG3rXaGt76G1S0RAevHMLc/usiIlbFizS/cNgbXntuoMvAy77P3RvuGx5f56nW/9/aZTT9vGVN6215Xb16f+Q4GqFtgb1ye/30fTz287l3W7TU56JZ29uXF555lFxo+Ko3QtE0M4aVkiQi/G2MQh47Cuh1x1Y95A5s9uuvRjmF23fdvmftb5+3Ne90b1vvr5uR7wbfLV+/V729p51tx5P3H/i3j+gK96BSzvP5xw01f7VInvlBT5hqtDhJhwMTqe2e0p0XPGv9Ra0QU5ZWKGikgc2KOQZUP134Q9WVpCRD6EozOmD6CwRRAkHQx8rt0hTjo7wQKEPmDXa58VVySKSdBXZ78jldiU3Ryk7Od7G8Ka+EH+kG3q1aibeVTr8+k561e4gr9pG0lp6v7Ddf/VoMt7xhCrNkXjL/yQcWmp6rfVzKP8blBa6O9hMO1Vcdv7OnLAJsCal8qf9u9XPe7Hwuuk9Ce6W+rDiXOGLHHv71E26/xV9+ku3LzFmJEGieMxw+YTh8RhgkcI3heYIhG7KpKkMdboFIGG0o0fK9jKtKVyCvahUIS8cSQCAn5PaOWg/HDa4IZkaQs3eAB1SliZ1xYQ5sTdKnz7RH1fdhLd369uo41Rl6GdEemr0KqH6A/KbwqIoIroXvfQamLayWUbf9mYGUFvtrmThtvFchuVXismxumI8bTZ3z89BM+f/4rPnz8hIeHB0zTiGFoxgjioto5mQ5J6aQIzVw9UyUioveg7ZRUnkhr3nvrv0/HsTZCAM1T3CIisjMqWD9M8WrpZCxHeC6Lflo/rfBuqyWRpRByXmoh6su8YMkZ53nBYt+XLJ7jmlZIntnm0tYvOWHnzwGNXdh7Lz9fRGti2W5YFolA+fLlC8aUwHnBmBKgxaljGBBjAnOoORhjiADEo9IUv1MMGKYJHz9+xOF4wvF4xDSKl+04TRing6RpGhJCpLbZUqOfW4VrM1KBGSU7nIQLjb3CADQ8bsop5t4Y4cdrb42vIyJs+LaKeTcfmzkoQJFonz2FfjM+uMiJIgaGuj6WjHmWiKDL5aKRQDPmecGs6yBrjYTMbrZfpL+/7ob1nMBaFab+ekCV10CMqhANRussbEf9rykgMtRDgpTxLDgz47//8yuWMuPThyOOhwEfjyccR0JeGAsxSiaUECEBLgXLwlo4Wh6RK+41XNU3gDEmICB4r4c0gdIRaXhETA9IwwPCcEJIB1CcQGFUjy317SrGfMh7ljK7iDZvxJJe+aHc7E06lH3+WKzWBnd0nJnBuUhKiiz4uiwzih2Vxi6L4KFEPGSt6SORb1wWLCVj0d/k+kVybuelrmXpg8e9xmDVkPwb99BbeK7XGiGYSGXEyumtaBK01oArUq2pAucs9VxmrQ+RdbuW0HGoR50Kxaz4DUZgEX4KuNJE3/+2PriOGBEQHWn3zh1+jsX429ozo0KNWJsmDIcRaUxIQ1J+I1VjsoW7i3BPtuw2Y9xBVQq8MO66SQfNb+u99SUiYt8IUQfBf93shU6pTy0yoI6PpsPqlf/vBMw3kddrPGz7/i2MiyklUN9/7TUnArvuxa/kdd/Wn9vbvmaMWI/Z805Nbl1cuf8Of05gw20FU8CZkhFBvBULL8oLLwAv4uwVA0qwFB9rXm+1TqXxfcXqrwzfYnC/wx8TrtG/3ze8vLetJdf1HbRSvoZgvA0hUABZRAQRQpGIBEmJFCA1DjxtYM2O1HgCOxpf2uqZMQhR5clS+2Z8OTHXXPNMrDWZAihYilK0NwkAEHWfzpKFIAjvQEUyzwfl4yvvIp1wfW8Rj3JNrHTPqJLXZQVzjIEoaQuZJ7kpNRlWB0J4dudA1I2+6uFAMpZX6Q6h1YVwxZrZz6wbk9WdjKB62RY/LcpdmeM4TBgPBxyPR4yD6Cgs6ji4tbEfEVGU32zRvzFGBCLl21tfNmIWC97Y+RYRkdW4TRpBTLVdG1+r5bpnuDDwURU295WHYj9u2tHf6/LXfh1ODzh8+gseP/8bHn78zyhxwmL6HDBCETwKUQ1Bfn2aocL9DdvrdmSgGAJiYWQSvCtkmGTrWuqnUdG14ArLEwEBESUQQBkSRS0RUFKDQmycDKjTojovAk0oJdSIDKq8QXsbOSh/QYbX0o99tbXhMZp8D4+Tv9fJf3/4pmLVr4VeSWUEiTe/9fcAppQnsySuYCMvbxbwbRN6G7PnvD3hN9L1WUKIA9JwwDgdMB6OGIYRQ9Kc+qRFlQzXsSXdTaHJ1QO1WsrgFVj1jmpnXLfxnHLX7q3tgevq4FUbtnl1aZ5WufD9tf73lnu7OC/w9nfJ3kPXPE/buD8/LXz1sluZ+NcYpr61jdfBXptrjKG2GYLFsHO5IAXNn2dMRbL0SVrMST+goHKceB9QSlIoahgxpAEpRil6qtfXSIgQ1Aahig8oijjF6taYwF20gOGbMWPr+/p73Rjbd6dcrKAC6lbEBBpitbXUjesK9+uacPeuDXQthyS39tZrrjhD3noN+Loo2Xlfr+ee11QCe2/4m8FGcdT9pkdUlrfSq9UOLL9xmz23DaBAirJ/PTPOlwXzZUFZWm0IKyIcC9c0MLXOHHk8gjNwOAa6dtoYcfVeCgkhjvoZQDEhRI2E8LUh4Ii6PRMNZ8BrmoqK+6vBXOGqo9WrMfeK7SoUGV5qVJqlFvO1e6wWhI9oK/4+1nutIHBZ4zP3/XU0ifC8UtboBdwdt2PyipfwjN5OI9Yzv+zrh1uNCKNH9pvVgvA1IepjyPZ/ZVIVq0shM10B2GRQrFAY6DhU43crC0HVOFGHrnvZfmyJSNIw1YgIza+rRoegH8HVUJX59WW60UJF/4bS/nntexOI9VztY1sPpPuLXGcpBrzHo19/XrlOdRxfo4yrrdV30DlaKbL3FNtdO1WJ74lX3w/nQ+hv7P/u+LwVjdFjHTaFZ3kJU8Bib1wqYr7aCEF7eLB3piHkZjxEgcuNlO4aY7b9fk7h+pIytp+B65Skw4vuAdsLSc8TueM77bWeXG1aZXv+ah/p+rYz5zd+t/2hp83rHq45p+s49Ny88FUc3V5j1+3ha0O3nXY2g8eAKgcLlabsUgWbKB37O6yZ+tarxzy3gr6Xp/v3NSDeDt/LCHLzu+3i5t4Pa97z+/T7rfDSWtj7/b1w4HWGjdePW8fHEbSwrDTVClbrHztdIKNp5Pd/+Rr0Y39LS1R1KMxqjKi6FwFLvbaGQKIYDFpYugSS9E5BhAv2e5tGVDkKJbW+bG8FuX9BIzV6R4nKxLkoWqYeOwO17PZ1z/S8nrVn/9we2nLNO7zxclOdoF3t2XYifD+ugvEY3J1q0b7Kb/kwj71He2Lr3slqnA0pIUWrESEGFIavrdf3v5fFZcwsRRN2urK3LmTYedWmPouMF7F7jT+9tqZtKnmDi33fG8/2Gng7fdCHmazoT3ue1J+GX9diSIrTEePpA+LhETScUELQgtEFlt5a0D8AJHUbm6zbnGr6/ZgdDegY4p13sL9aO/ZhvaRbaZ2h0pamEKktx9RwuXWD2m+eTmx+NQl4vSfZ/7y6c//7Bhzf/xzUvaR78rX7nuHNdq66Fdtes4vcbIgIoVWfvxWMINy0sSqxtg1oPQTV0wsEZp+DnCA5hMk11G2LN/e36w41lAHJurPiqdBNB6rGClQAKiglQMKKJlA4YDj+iOnTTzh9+hGPP/yAx4cTTtOI4zBgjAmRIogiWNwq1cIHFF7ATOqty1g0R3wuRWmHV37279i2GkVsNiNARvPAZTBnudY0JHpHzZWvfpylWF0K8ZAt6jHLVgtinlHyjDwvtWYE5wWwoqe1KLV40s7Lgsv5gsu84PxVcuM/Pc0SGXGZpTbEOWu+8dARSo82bBzON8/0HxNkDWV3gmS8SDw6fvnyFTkvOJ/PGAc1foWAD48BIUUMQ8Q4JIwpSUQEM3IhqfkVIsbjCeN0wMPxA6bpgON4wjRMOKQJQ0gILJ7qRCR7UgCgeFms8PKSJf2WeoCbF/qyWF0Gzb7nLM/M5HDWF0vX35VdK6ogJTg08HSGyy4jFIrmGC4a+1EywCw5O9GeWZThacxOAXgBygyUDJQFnGdguYDnGWWZUeaLro2+YHv11NDIoFlrQnxdMual4JezeKQ/XS61ULUZIwBUDxA32XiLsPDrwz6DFiB7Ccp6zQY77YC7ZlgroT9dGEte8M9/POGfxy84f3hCHgZ8DUcsHBGHMxYueAgRQMR5GaUGj62ZEsEIqmEu1Ysd5HCOCJJeT2o/0PABGD4B4xEYJtA4ASkhDoQQGVraR3JKmj4EVneEBS9YjmCNANJnEfdiQv2u/dsxScl46Nqw2iXtu0Qr5HLRCAg55sXq7pzV20dxtsxgi2xbFqHnRaMl5hnLZcYyS0Sb1DyRJVSHraIkV0IdojBkgWJlKr03e/c+xhevBCGJ1WpVE4w53irpQsdEm7KXqdQ7zYglfxMKAgpFFDAWZixcMAPIROAYNDJxcAYbmVQTjD3WEoAYnLe6dq7RFFTjus00m9Cm6GJ9qzwHAZYT2AvirSgaaZutTsDx4YjT4wMO0wdM4wPGeMAQplojIqUBKSaEFEApNMN0XQpKU4NEA+VuCStzS2ZYoFW0Q1RDjfJ9EeASECLJ+qKijJQZ9qBebkvDjVqxW79rasGgNU7WOFT5Sf14uZ8IIJ2TEMWj0tfEuBqV8SyQ0mPntQ9LR6XeUIaDpBwrCV5381uFlXZum4xr//kWIwYQQmi5eLm+C2OXWLwSanowXde7TTq2u3LodR1auol+DwYAL2T2SoDGt24jPdBdR0QSPQTb+mV9VsVM18Xe9C0en26cNte7vppOY7XtfusO7Od7ozRl9wzaXsfP4iytjnvAK9ls79o9MXT1pFcrqbnSCyLzqN17VsMDeU7QeUv1aqGZOqdxaGxCyQA/uev8M9ZKA9S573qidGz1tpu3+d6RCr91JMT3ef4rdAjSi835l7D1uet+73CL8e6W+6+34c9dV+698qkAWJT0AeCsqZOMdhaWCASoBz/Mc1hWbaAo0cTqOJFUD5RIPJWTZefR/cRMAAEkyk8EWMbh5pPI9Tpv5S+h7bqSWkn6nRFQXGVntsbMCwVQXqvUYSLIT5EiAgdkiijIAAgFWp8pSN56ELSGnEv9oxHFgcSzfi6aBYKVR1RjBwsjDYI4sQ4URFeDgsxZo3T1PnVuCcoIFWItps1AKC3FVNE3MH1aEP4PpvM3elkZ6BWa8HPHtv/LPttHmRj3XylsjDAjVQgJp9MDHh4ecDo+IAXZ55elYJ6fMOcz5jJLxo/SHLCgvEcuC+Z8QcoDIiJCHJGGgoBfRPp7cVsraOmBtJ9csJQZEREUZV2lMCBTQd7dF9rubvI/EWo0hVxDlR8lEl2XpQfTG/c6t/MsJ3G8ydDIVdYCBB0KCKXqWSXdIXFBYEYCkMcJPE44/Pv/gsf//L9i+fG/4OfDjwBloGQkvoA4gzmCOSAPB4CAgAvIFf4OUAdYk5W4OZEI32gRQ+IotrDWHa3v3QwQUQgMUpb1JutH0kcBEP0Wy7uAGEmZx0AscojWfcn6LKFLSUQWZDBngEVX5iMeREwXw0uq/G4EULCUBbVAq74xyNq3N2Gla0Zn3ByuDDLMjp7dAJ2s/Cravt4jXrsvvO76mw0RPgzsLRa4axb55yMh1gOgok7tw3PU0GDb15fepesTmQDjmoef4KragJFuCREaEOOINIxIw4BhGDS/vo+GUDueKWZq27bwqG1Kzvq75yn+HHRe2f4DbsWK/LVo11Tv2Hrfuh5EKw7kc4qbYsA/z7xqLed28wr3hVFblMXufPh5/Y2Z9PeH6+/z3Kt2RlI95pwxz4Q5XgAUjWaIqhCyTZCqUo1tUwSDYssznmKq98YQ1avWe6k25gJY51Xcq5/g8BFoSiS0d/DXoV5jFyjeOvwXVFgRZ2OA3Jqt4O5rl/uLnFe5v97+rsaRPod+vy7Z3dKvpxoZxIzMfWREn5t/3wvUuvMtQuJ7CZgvtfMcZerG+Ma77UwpjAWQ9DmLpLqycQw6tgtLdARRabKDZ6qtMBgTvCGbVQVB+n7RGIuQpMh7SOJlbgykLoKqHLXm9TmmmN37uIHYMheG77YO9sZD18Vem/06bGnQfF0I5qwF24vzMlrVk8jy4VVEhPFNxI5BclAVQ8+Bnw/a/Nn4Mr8ldxf2/EGvuNznBbjrXfNEY/e3ZwD9e6k82H/XbsRoOUwbbWRWw0YdHzW22jNZLuoZxtY4dR+9y0VF+TknIsSkEREhIiqeBqXbpJ8Qgijog3tHImHGgRakYTi9HmbrHvk8xo7/IidKkN0sDDjUgMFubDvjgrZL5I/9mFJ7Uj/3bnZ9pyuNegkZaTsHjbfaxzP/ZHumzaWhZxsZbud9T1eszDV+rqe1rgUbpJ371m3dyrtv5v0qnbccvujf1wvHeH7ob/EM9+B5d8OTnjFf8wJr+WDvLdbft7Rs77q9ft0E3EalOT1dkYV2ercPL+zFHuFeCbfKba9s9Up/XpZrNqS/Uhy7oNRW133tVlGlDdfWfQ/X5dXb7v814D3m6iWv/be1/boxeYkz3Dz6Owz5e0S7fC9ceAvObfUw7yMHdP1Aq/5WDwTnN2j7Vu2VUycaL637P1CLWPsJlhQpV97X8QhrJ7Vu79CfRO9Odf8n08XYNrLiw7t3ANr1QP8e606tjp2/OW2poZN266cqx/1j2HhXJ8ewf9Zqaexug8/ubHpYHQl1bF4DjXv1ZyqjB6JQa5zFGLV2ZY1d77ODdK8jk1blHC4IHGubIDNhbfu7Xeftvep8mG7M8RKEnofdW4NNj+Hffm9gqBruel3fbfvR6/WzW0TYsgjb/jKAkAbQdMJweMRw+gBKEzhEiKNfxUY3tY0v7uQp4810rbe1qcZGavhcgKYLvfI2AVTTtVkaLos2ArjVl3Y8t2VK6JaVyRx1XkvPR6psYrLiukN1ZE13ZWevsaArgYCsXWAHN6/zsdfgtftYHXbHp75a3/qK61+VmulbjRFvBxHe33PL9O9yYxdghKdtFJ5hbgskxoRxmHA8HvH4+Ijj6YTDNGEcRwzDgJAiKDolFhrSMmyxATmrwtLlFLfnbRRP1qeOgFkkRIuG8B7fsrr7+zsPbi7iLctqKNDc9nmRXOFFoxxyXlpqmZwh5vmmUG2/LbX2wzwvuCziGS458a0ti/K4w9tACN88z5ofN2OYIw5acBoQ3I9RPhQ0R14Sj5JUCBQTxmGQXOPDIJ8oIZJyn3i5hqqRczgH7BbFbfjYlPZWj4Rd3sRrRgwj6MziBeKVoXZfjZpSBvK5Nb5dO2uGarvZ+Xdo6cPcZ/XOfk1YIeqWhmmp68BqRfgC1X4d/xpCzR8NpBg1cJkLzpcF53nG5TIjTQVUGHMuQCh4mgmxAEMsoEggc6HNMpYl67wbn6E8RQHEUAcCQkRAAmgA4gBKA2KS9EwhJs1bG1BWKiOuUWWNDvYG261xud7rztffO4wkHYeiXkHbIupmbLDopFINvo0ez/NFcHEWD6NlkYiIZbkofs7I86znskZEtIgfW4MbVmmlXP4W8Ir2PeiU6f4a2mfYzJ+uY7DcXmxthBCQUkBKhJyBYjwI977rduugaeqMUYwBADOWIoKqOtNAeAVztHNGWdfXAsMn6Wf/6rKvE5HU6WDWug8BwyA1IlIaETUKQsLcYxPs7O8QXdg6oTpxrRyBr0cOmFfz/jx3hgWsUjHV99p+6j31e/+3CAGSD9ZyKBfKlea3Z94GL/GBt/CKt+J5r0Tf25f2+ff1PVVQ4caR3qo8vBnek+F+6VFrZfEz7+Llj6oTeRfF+B8InHz4mzz+BTx+T/i1nvNCL37DZ9/hXwn+VLSMd5hDKK+zcqiArnEXs2bqzNaM5Xnidq7qYW5UznklH/TvdcZ319H6Gu7rzVCd5lZ3iu5SlZwme+7IA3s6ntaTlcxqWtaN1QGra1wbncjr2zOZW69ZGyFe4ileM1DWJSIgRoRhwOEg9SiTRsSi5KYrU52YKJNF+W0KU2bCovUXh2Gp7ysKaXHCEcerV/Tvua6T1ijTDCl7chytDAtreZ6ZVZdCtY6h1M3s9Su39MWO1x1QdvgsHaNs66j43zVCWoU8RsDChMcPf8HxL3/Hh89/w8PjD+BxBAKkJqMZEigiDEmMAmx1GEjlJ1ZDYtPbsO+T/NHh2VZm7t/GIp1jSghcaqIN0locOS9q1FQ86owPIleEIFlBAoAYrC8STc2mL+UCSdfWOmCOXL6vxefzVRtEjaollUEtY8cNCNnh0ItX/7Hgu0dEbC3wb4W10tCOK+K5urZT3az6covgRrB1qhikyGvqjI7oVOE6IMaEpMrcIQ2uSKSmBiCqyKkPrbkH2RQVxYpSN0WT9W+txPJj0+65/qmb4w7B2r++zyXu01VwpwhrhZDWirGs9SFKsUK+vKuwvsNbgNCKRxn+SJqkQlTnSwi/5SsUlavZnwHbWKW4UAgBweGsRfHYdQJsNjpU7421gp77nI4bPNxsNttrjaAz1uf17avxgatCao9ebfCrY75WwGi/7TKI5kW+7W/ZedfeUMGuJkqft1+u91183zXxa6yxd1eKXYHCLZpkyUJjQmEsYofAoiHhVAQ3fKEzLjVDlzK1ij+wgEkCgqTwYcs/pun0JO++5S61tWdNGWPFnSHC5tUfpS/t04+VlwX2BBITyHqaX9+v4p3DV1fvodJwwzuLcHO0eW1cY/cu9hzjo94kQN+ADjtv/Tw42tQ30qJVfCvGiJpnk+3hQWlhDKS1cYoy0Y15h+IMkTDZZA8jqqHxEf08Wh5dKoIrXAxT/EvTqmfo+QWjtW4uiCQiIqbU6LcL/TahqUVHUDNCEGkRNrhx2Bta6v5ugtZLs0L9kXSadgwR+0aI3jjhC6ALDsrgdLzd7n61DywIvMsjdgaANyqJ9trrhFLdym5uviFy1+4zPXhtj/u76j673f/fCteUy8+N9UsGCvv7uWufe/at0MkIK8XC3rNvedYt/RbF1W33r/HhvRWcu3h8A9w6T+vzL73fS8+51u5zbb3nmH1LW6/Bn1vuv5UPe+m6a3O4d9/6FW4ec7us7n/Un68/r9bclT7/2nDrvH9PA8SvJVd7PpVN6VZV7ZZaG86ogGcmSvkkV3TWlOKFTX8nrbJtoNyhy7ZFo5+22XK72rj2+i5V9LPeNxl0tf12I1BHgrn2x19vf2/bkHZNdqwybzd3JqzYX8b7+8fTG7bl9TP0yKsP/PE1be6c3ZkgooAQQ3WeCSGgasbX8rTcAHDPr5rzbincFSq3CGCr+1EUl+z35zr7HK3a+1gfvRFi07RfJzYcjveh+uyez7/WD9/u89/XtHiN+XbWNJoy3wSWqAdKSNMDDqcfkKYTYhpRQhCcVrm68rLBJBhbv87oR/7ZpDJB4ycIO3zti3u+yGHMoeGXjaneb9+sfZO0AHL12anvA0ijplZ8sbVvL2w63PVasR5Qewf3+i9CHYMrvMwfXW/6qxarfhZWgmMPV4hkPfKV8+8IDClEtDJGAOg2HCAgDQOm0wkPj4/4+OEDPjw84HQ8YRpHpCQFJKsnYmibrFlBC0x5n7uIiK3CdrtBbZW9+wpg80b37QF9xARXRZXUhfAREMsitSFaRITUkEDJkvu/RmKo9+1SNApiwbxkyfe3zM4jvCAvZnhpY3uH20A22egKzDIKAXnJIC7IQ5Qc5pIJE4QFgRYwzzr3QdIzkeTTHoaIYUwYhuSMaC3Xu4DiVyHJL8kAs6XaKrX48lKy9Mel37IPANUGw+Fn3uCrIMUWl6tFmxpfeVXZgy3BXit45R6nZDFmheGKrpda9yTnuUUEqUEhc/NEzzljKfLbrN7k8yyRQJfLjMu8dBFBLcrie2DJnwwYWBapLfN0WfA0Z8SFkROQZvPwYMRcMCfBlahuEkXr75QFxtc35SiE7YqRkEIAcQJjAsIBMR4R4gSKk+SlDgkISeoJUKPlzISsBlfDf9gzi9Fq9yqM3Tm/dt7awDP0vdR0X0qPc4vUqRESrhZEyVnq/hhNXxbk+SI1ImbBc1vDdQ/RPppQ+DZh+hmF4Y1XmuLZcZXyBwcnUXY3KC0L7m8CISIERggFKWWgEDhFUEkIBOSYsXoIbO+NmsfcWNWoY5GUSa/GBjbhsUX/dcIVM2YmzMXTWqoftkda3RlmjOOImBKmwxHT4Yg0DEhDkpoQKSHGoDRcigDGkCoPQuoYQQFA5vpqzykI+99a8enNnNj1WEVE6CfoHHSGkhBQ6ndCKdLHwFbfgWXPsTZCAKvXk1eM9QaNraLqVvieCqL3gk4I3n1PzyO/1Nirnnx7u743LwjLu0/a4Nfzbf5acIsB4T2g4fG7Szf/UvBb4ckdvg3WNVrusA8vG6W/P5iDijsBcxToOac9Wcf4nFZXybElSvwKghUu1rzuBO7q7lR0WRHMqsMBaopIEwKaE4Yw3ly5OZU/7TvvoyI7ObUqIrkp7S29phlENopEFk/xjh/s3qjt4/LucH1yCk8r9LAzrqseOyHD/i6rT+6/o7h38gpSx2NYwY7t02pPOigFFAgpJQzDiOPxKBERKaEsC5YiGULy0hz46vtKbmnlqxnLsiCEgGWZ1elG6peFqJ7yS4vkfgk6HcQOhCB8tbmu+awla/Dr0uZdInrbnmRe/TJWBVbU4lp7147NyLG3163WnC4S70xkGFRTLCku0nQApg84/fSf8fnf/xccPv0N8fgIhIjCGWTZUIKkR0pRGiMpyyAZBtiiAaQvdYHWNbKVI4xuSFf36ZsYIAiJkqwNk+WrrkhoRgKrH1lo7+fHlIL4m+X/g70/3ZIc19UFwQ+kZGbuMeWwz1S3u+77P1v3WlVd5+yd4W4i0T8wEKQkG3zIiMwIZirMTSZxBEHM0Nx3AKryKcySPbftGVVWJPK8jkwWtSPuk25EjU5/ZzT9Vzku/3RFxK5mceveOxCLozB/q52tg5xtw8jptTrctCYABEoTplk8IeZ5xjRlTxYcmXHvQwzKrOIKEyY3zTh6xO44Px6UW4qI7Uv2UhzjgJz82Tp8slvONk8IRezBEr4PxzN6PvDqMqEM82Vq8z0IrG9NtL1ZCYSI6Lg4xAJHuBqsyAFaPDkP0uTCqVFI1IRI8ihDk/RoAtImoDSLa7OqVg+YAA8rJQNfgt+esIv32x7sD+Hx06dIDzzbL42A2pvSuFdC2+4NFKzHw3i6XVnZr3EfNKFxm5dYooXFeP97Lu+1p9jgVL6BWS1gmDVHBCNVhE80QoiaJXWtQK2EKiEtAbT94RIuIlBNqKyJi80bwjwhSEIymQbD0LFCyi7OjURinK9Lc9aj5sYMtR84fMZ9UwNcDXvK8fiIy3vviIbr+77T0Jde8ccuEN1Pwkubf68F3TtvbzyzfXps3xlsY0Duui1eA0xJPCGyXBMnUPOtbW2yAJmPs1uTxvRKS3KPiRvhz31uHZDCprprD3S6tskdjEGF9h5+ybwgUsgNoXjcCOFIh/Rz2sYXPeX25rzhJ1Jl8AbTNNZnddHYFztzTDE0fEblgn3yzjiG9/bIigZv5EzOS/Dr63Fyo8Eu1bUnjo6C6nvbbVJ9bv9uzOulsscYx3qBnjl+yVyP9UY6/rVC5te8e0/bW8YR97V9G6zcXNuL+vCy+m2dtuYr4o5RsDLSc9f6uvXcJdpwLG8BT99beT+67PqacHcuvrCuiKp+kHIvTnlPmL2JD9lb53tBj038P4o/ep4xpI11qtO/Ew0KLN7py9oj4tYiNE/sdjMmcxHNBps5nuDjTHIY50oeFehwRkhuzbw5htYWr/sz8ODd3/F7d6H91j3Xen/zgofHKCXJb5bFYMYMhTqvcrRzRGQPbdWFJq4ud2gCfrko0MC34KFIz448WkfnDDzLtXOq5/1W07BzYx9/7+33bR7JOJ9G640ezWI41MInuUxpPiE9fsT08AnT6RNoOoDF5xvQhM29vMXqilRr42soToB0GODeI8LG0RkV0cAUefcbj9WNMcC0s/eBkg4DD+y/Gub6TVJPrEAj2ztMHQntf2o/SeNA0d5a75RblcqjQvOvRrO8WBHxJlr3HVxwqyDi1iYwLNL49+Z7W0yUYEDQ0G9HxUQAZcyHIx4eP+Hx4QM+nB5w1Pj8OcVQHu2wFKYieEJwL8TlDQFl27zhELD7owCs66mFTarDfeuHCUc1kWntY4qXekapC3iRnBG1FLBeMcQMq+WthGQqWIpc57NY4y5LQTmLF4TFxv/bKAS+QZHwHlU12YQpEXJizFPClBNmvVJigCqYxRuCICbhS60AMtI0ASmBcgZ5XPHU70kSpMpUpcXKIEriEcAslv/D+osQvn2KoqIIvFYAaMoog8NGfBSH70YUKPkZT4MdZQTiI06mcSP0Ls/sihDxcDVLkatLtD6E4QGH0EHiFfG8FJyXBUsxTwjLDWF9s3GsmfGfBfCDg8SNuVQWD5OlYC4FWCqeC8AEpCSHXC1JCA8W1/BaVIFxNkKMkYiRzKOTgJkzjnnGxAdUnMB0BNIsF8nFlDVsk8EfiUcMj+GPOHhEjJZKPZE7WrTE0pyIDN8LPpfvLbRXxNtV96X3qVb1bjAvHIPhglLFG4L1d/vNQvKNfdIt5fejUNqfS3vn+fUzfpsAXROozaU2zulWG0KoWkxXSUUu+CuRegwwwImRcsWk8bsIjJwItaauLlmL3oOrlKYkEGK7ufm210j7IgqMUWnVLGyo4//EGqcJ5kzhm7Ik+DscJEdEDp4PzQPCwuw1Js6YqH7i7LP10eba1nhrXcRiiN3CK16VKxISKliVPRzmJHhIqDdEooxKVRQpVZXpHD0pssSeJQaS5InYZBRHLuNS+Y5o9z1hEpFZUqLRoo3tASWhF28+L0YBzc2T0Nd9WQlh9f48v96q/CgzOTLYrxGyjnVcq+vW5/6M8j304W3KjwK5P8tLihklqKTCBX+LCb6VZ0ts+1lDD1MCGCYSVSWEVYqQKPtS40qVJeEryazsL760LXAf6R8Oz0UBa1WjwAQN/RLeb4IlGafjr6GNyuyyI+jjsdfkNFzgeVkEx7DIGMYUcW2f9gz2PCGaPCl0fD09W/OzMZOEhJzEi/d0OuEwS46zurQ8i8Y7CR2bneYUPl3qqZ4TT/hxMcwh5Dwp/5PFy5YKrtFI23K0VsyDIVVa+5/soOtYl3hE2BlzH27cOxM2DYHCc5LvABK9JIAZyBQK0pcs3IYYqaYEpIzDp1/x8B//Jx5+/1+Yv/wneH7EmRPIwn6zeiWpsTZryIqsuV1IL4HnrtPyAZOjrunJ6Pls42SPrQwnXU05lVQGU4vwrlQLqFYPz2xTwizeQ5Y9wh1sCMgk3wnWb+HH9B9HLGQKT51P56uMPjccpN/N+M0UFf2GUOXF3+K8v63crIjYA+7Ruulaae/IWr77ZN+4UftXHELlY3wf8WCjoIOTzZryhDxJqATPC6FA6fKqUJf/ZUjBEN9GN7u+sznmDYLSAXmaNtD2zt7B2XpiWmVVWIy5IIIlbZ/fIcQR76y9Wxx3CTVVPWxJ7SxtuVEPK6HS2xGwf0+BrswfKdLMCWLFmxPylDwxqREdLYl5AbFYjouAB6BkB/2GZSptePQQHF6aIFSFsfZ9sKpmJXIaUu8ZRbl6L4NGbNjf3IY+lFEQQxSJyrA3pEEHu23Y6Pty61VtzwQPEWY075DgBTGO5VZrvx+v9POikBCE7JrImi0ZsOR4kEhGJKF2WJQXXIFzyJ9AYKTEDt+UCBMnVGRwmoRQS+IZAZK0Vw2ph/4ok2Tr7YwIo1/rOI6N+91+gOHl/jdnIjDmJemTxBuB2fZVy0nScMHoJTHkhNDBmfA4Ev/dCl0903XehGLbf+qC8sE/afudsb0or23qvkDkkhC5ItDWEEApAYkEj1aJVVspuk7bP6rcqkaUQs9ymbORTnL+2BhfEqbXlpIZSAwku4fmZE9OfBhESJFEfNkv2vCIWOeFaILtfg7R4XtQU0Zcnmc4Xbeef1c52C1/wYTp47qa5ZqfP93fgeAPMYKjMs8+2xl2WWBudNz2uPZp3NES7uWlF9bfhuOVaQlvUvz0vb//tu1jgYUGs9vFcBLdxDi3ejgs+csFyfcKhq8pSO7ty0vP3REuV7TJRrm3b2/BS43ju7XOcXx75bV9/Csz5y+d2zdoecDJ+zD81mRlD+fre7G8dD7ukT/8CCXO41vNyV31XF3G/pwbWnIZiLQrd6vxfzDyh5HAgT7qc5VFaYbTCvK1CfJv6Tvt9XX7nN6Su6zb6ImkvbN7s1WX5WxcTXPhzzReNxCX3RUUEc68YP0cEGiJ2A6GMY693hrFapIBCL+Vc8Y0ZUzThClPYoAC6iIIEJHLM8wAhZghBpZrxY8I+kN+1tD+iHNWcG45AYa5NlrU64h0psse1jTSFo/XrjXPZ/XvGZbccm+b9tH6Lfl7YJC2qGBKGelwwvzwEcePvyIfH4HpIIZ4TJIEmgJvGHmzQL+3fLvrrdW1ukGvj4ZPJnsax7yWIzX+lYb62zvkHfDUNTYMkvEBomyK3BDZQLgKS+tbRcfo9LnyNBzmHtv73Ovs+tfji73yVz0LXx2aKW6QyCRcmgh/DuMivJ0nxFuWxqA2pMwwNxuCxRpDmkDTEdPhEceHjzgcHnCYZsx5krAIgQlnl0JYbSY464WW+4Iri0MWDj3AhU8tDE61nl+lMjshqsafZo0lXhe1kNVP8Y6QvBB2xTwRFr9a4pGL5e15KRITf6k4LwXnIvHTaxGhbJPsfH8w8P0XIcdEqEaY5oxpSjgeJkw54XCYMOUMMIsl9PkJ50w4z2IFvJQDKAOzJqqeJrFGSCmLpbBeW9awBm+WIKq4h8CYE6K4pwyL5G4Fv70gtYT7ZpUxjNoIJ6wJ8CgE2Tq0nKjT6WvHw0AsqCKiuvC2F/Z2V6maHyP+XbrfFs2bsQQrj5iM/jL8G4FFV577mxcdvuAqUW6el4qlMFIBFhZBbkUGccaZSZMDC9GxLCI4fj7L3JciMZrEuUHyQ9REyDxhoQNqOoHzEUgHVJqkXrdrkDPAWCWHk8GTrVcM9GWLkIp/yx6D4/MuvwqzepS1UErFEqHzEpSAVXB1WdSTZ0FZzuoZcdY8EmfB8SEvENs+DMSckVcu1N8gFK8u3tYv9wrlBibg1kKaayClZqUPZHDNSgMyCAWS/CYhI2NJkDMRULwhdEEpsh5nVQah9MSg4KL2GeGGCBLdC9wMzljnlkmVlTJbVXkG4XF6JjGnCVOekSe91LU92RU8IiglUCJRtOCyWABA7K2vheHXyCTJZ3xTvU7ICPuqnitRqWCwA6+7tdnocfEbSU7Q+5pDJrDFXg4E+wgPV4TSrylvVRftCj72ngeM4U0wGrKBRxffd6/awDxdU0DE78y3j7vxpOs1uEeRM/IXtzS/qXT6DvmMewoF3PtXKS+Z878aQ/39llvnce+5v/Z++Vm+j7I2aegLB8G20byAsn4ktDUBmExhDqCwhGcyasbPMeX5jPVjFwJu0+Ak5Ep/XoSXN6h2tP3CfkVBuMtdjEdVzO1tcDPMJSWUPO/h3hxhLWRlNhmKzJEY+bV8bn2Yb71UTiMeEHZP+1s5eEb4woTPMSJBnIt+Pi4Xk/ZKFIbj4YDj8YSHhwdMKSPrLCzngqJeDgTCNM0oU8GSF2mNGeblXAFQrd6yhHiCeFcUBtGz9qtc7BnrPFQSuUqtNdC6DU48r1kd+R/j03lVr8Fo9OQVnq4EkBJPbdL2vU8b/bwmb/VParQD10WWXWlINkJdBJTd6uXDCYdPv+HD7/+Fz//5vzF//gfq/IhCEq5ognhQCF3fjLhAMleZMgCg6Lo4r2CKiY3ub9GGKXhEAOwOPeM8CMxXz03KtYJU6RaVSI4LuMqYuclzjeNIJPwYEYv3FRRkBVmoEgywKB3cOhQUM+hDxL2KrPn70UR3KCIig6d3eP3dGO4eQW+h1I17V2QXspC3upxThwJutdiJz+52acS3ABiCjPKkCSLngwpzs1orpoYQ0NwP2eqww667emFG61/1DbTafMwrgdeuZn4LoP1AMga270v73LmME15ZxmvuAA6eEG4RHucx9OONy9+ZqTE4TUTIGg/R8pLknBQGZUdULljKGcuScD5PoFSwQJ6BHiSePLQTGulv6K0K2NdVwhC5UN7oGU+gXZ1Is0Q+o9DVBPw9/NZdGL5klOl1O/Ln4bdGKGpLrV29uj0Vwo51MSuHa1ROuKKGo5cEgodI7FpPcIwESJyCv4IsZW/PvakgaAMvNeFaIygZFaA8rJcQUqUq81A1zAslFCZUymL1YR4R1FJ4+Vh0f0QYCp2Dc0PDnNyCj7yf4NV7Ps6uueF5ZSIYbY6qMim9l88I3/b74JU0jGNrHdu9kZ26TXnWBNypg/GurV29RNsvQovQiviL9iyG4ySeUPVkyDlngBOIs8yJzidB9y/51KIaL0Xw8EHSXsCRgSdhI2BDpyiMyerJIEm4Rib0ZWVSqdHu+mKaMvI0IeWMlNU7QnNcpHB13hHKBDY6xNZ2f432xAiN2dE5jxOO8JVHZcW6jo03lV+V/poCw/5GgMPOYn5QmtPQxu4Yb6Ux7ywX2w5gusb5L+tLp9zRM66jig1ML9bylvPQj39UXsb7d9X6QgH3Pe/dwz+8e7F1fbFweC0c2StvNe4eL1N3773KW/X5W5W32wf7a30bbrl/n2z/dtu7tygj43Pf1d4M5Xvrzz3lNedfby/M7fsGs2Z0T6CCwEALN6S/eEhKfcLMK0UIqILVhhjDQHxA/fdXFKMDI3/YokU0mhveW+0TR7zL4bIJGM8k9v9GfnT7il7MGkpVk027Id9mAmpun701TBuL0/76rPUpjmWEmWtzHclNpffzNLs3RKIELjUYOValg8np2ZwnsPFsQiyDurmFy97MEOdWPsRXIPD1onCoSFnVXp1Mrz/XmNeTsE3T9bxFLKbwSCmpsRw23r+nGO9anRZ0at35FoRP4Y3y8YTjx8+YHz9hOn0ETQdUosDiaL0EV7SZ4sN+N1AXJwzFChz2bTfujVyfMIxiiqAdWn3gi4ltzxrfACeOufIKvONcOd+h+MfabOvd1pNg68L+KfNrHWn7/FIxXuyvfH7cW944WfU4wVc2S8TLVybdAeje/edCxlDXTlub2sbQfmPWaf0MEVKeMM8nzMcHHB4+4Hg84TBJsuqO6YpSBz1qRZiLJsj0zTEisuYJMV4AOuFnP6YeOY/jbgeqatM1RwRzgWWAH4XEfdvtUGONJ+i5JapZgTOWwljUE0KsxrcWdD3HP8vlYoKWnIApE6YkYZmmKUmy9CzKicoFpRCenv4A8wJQRUozeJowQUN6JMkLkVIGwQRXkqQ3QRUR3A6WyoxaWCz8LQyXegC0ROUt9Es1wijEyh9hqVNCYFsRcR1RbyOLTqgf9o7DcThcZD+yhxezT7tvz7XY+2V1LZWxVJZcKbXAElOXGixWGABr2Bfq+/ojHUj3FlPyVLUcN+0XtdhMQkOUIt+n5HiVGahMKJXwXNTjhQtyzjjQhJkTKk3gdADSAUiTS5zNimRUynmfOmWVkiMb+PqW8ZliofseKKdNfGy/2X/uEdHDqed+qEW8JZainm3iCRfjyMY+b/V/9IgwYhHdHN0Ky9eYBfLcE1sCTbO4oS2awdbOLGzAAEt81MxV+8wgTBCvCIm9T2CURSykmOFxebOGtas6ZrOaMRO7GvrhtD1MudDmpRHWFdnHIc+bJwQ5YatrrOOeDzMOxwOmeUae1SNCPSOmPIUk1jF8E/rJ2Zys/TWJ896YBp/gHm8xYB4SaKT5hdIrFFsPSOpR4br1e8vCPioj2vjeVkC0Wxfd+Nwd5SXMZ6eYeWEd/SJ8P2fRz2PxxylvqRy8RRHyk+Z6r/I2a/izfN9ltAynTubhTzmBY/Si81xoxlsAQkhKoc+URINFd291RUVIK00KEgWFq97cfKgYjd0rAdiVAEaidSIutH6boWZsm5yciX1Y86PjFaNfsOV0MxlOLWCLUsGL0vMWtWL0iIjfPUW49qHawOG0p8/sxp6+eZuLgBeUQXnC8XgSudnhBFTG8/krlqXg+fkZbIFxKGkIpxl1sjmoYIiSQGTeAhVMQJ4ycpJwT6UUyT+mdV3tKKsMglObY51vSoHmTASq5IqKWIFN1Rbf160jGOQKArS6Y0jVrS5eOBe3zk3N4oAQo0V5lgxZZ/HKqAwVKM04fPyCj//2f+Dh13/H/Ol3YDqFKOoM8+Amdedxmz1Td3DS/dC8ou1tbMho+0Egbu+gjOj5j2Ysh0FWpDn+iFokGli4NzRd3AjKNOIUluTVScJ91Uq2AAonJrsKijrfR6Ygu6W0/T4aWMUZ+DuVVykiKKzD9Wd7Rsj4yNsJvia4t/oubsAb+mLlJgLXNXj2j24Hk3YQIaUJ0yzeEPMh5Igwy8S4+QZho4KeV08c3BI7pB8FpLX7viXoGjWvYTib68b+jh201j9TQoQwMh4uJwj8TDDWWYWHw9qFhu0A9TnB33GL/UmFDDEbbcdycI9woSGzlvMZRBC4zAyiBZQrJGlrcuuBMb549OyxRKru5RIEsObx0h3eXbz5YOkBOwjWyXBjWd83BE/rZ2gbB3T7YiVYNThuJ1Lca9FS3D0dar8nOsJiDNtUA+yH70NXQp9sn/7cEasSUCIFAS0jEAOOm5TSIMGrQKMxRDmnX5gkiS5L8jumDEoTkCQh9WhxZULiaOnVw4DRIvtWTFeHac+iCb5X+H2DKRnrj3jXFRv+XIPdtUdEwxu+R4b+3bJYt5z1vSdEb3HSHho+bymEDbdYbpxhIiR1xOWU9GFRuBIkZwSQwaXK77B512RuZKGF+nAp5urMAa8YP24EMbOEEEuxg2pxkwBPwi3dZIFVWHVWX8KUJ7EkmzQkk9Ib7gmRUjevdla0eZTz2+9fmdCXW2O3IiRDTMy+8cy1nvhZtHE/MDztbNzvN6Otwd5zW/c37/k//e+77Uf4DM82Bc9Az43bIjxzC03NrhV7WXmNoHZkqjuBzIVx3DSPN5Q9JWr87RrT/z0Jqu+B1fdq655yTXBy62+3rtXW+/d6ZUhdt+DGtyuX+n/v+9+y3+GXi7+v17d/71ZPiUt1vlf5nvDBS8p78BhR3HFHT+CyBzQYcGcCkvxZnhPCGhiNDSKxd2VobPXblytPM1fQJXqe++e3yFhnX0xuEkU8vPa4uOSBD6Ph0Wj7RtePglHhJHo+N/C+8e/Og4LRKydsrJEneAFNETyWE5Hkh1DDmcJLF74YxEhJ87lxRk4Tcq5I5ey53TAmM2YJu5pyU0RcEupvdpHha2CKhkrVQzZFC3mTkUgYJ6iw+vKkWP1wmO4F0Ea3rg2trvOQW7LAjvajxga16pWpZoBIFBH59IjDhy/Ix4+g6QRQFvmSyUVJcjECVYIUM4MqgJQ854I1GMOnsvYh9tf7DW6Q5vNh/e09ny3DdORRjTNIqoDglAKkmnwqROzgxtm0hNlN0dFGAOctxjOq7WPrg+Gl7b1h+3+vjLTxJpP0Nyhv7BFxX3mp0HkFGAMTEX54o4UzxMC+icdziyBuYvPhhMPphMPxhMPhoG5m2ZPrkAoyanifAd8IfkA4nuf+SbKDay2QGg+s2P9rM03ertVjQi07zMQzonLxGITtwKxwgQuaMMvj44fDpNr9JSYv/msTcd9DEbyplrtu6apwYEoBVJSlgAA8Pz2L5USpSFPBnD4h5SKKiGSHvLhHpqCcMGEWoOBCaGGHbG01Zv8qP4QJNNEIm9UhOQpcvPDwiU64eZPwZdgrI27oDxUh2Fx5U6t6MDSLExtT8/gYc2JY3gjzjlDPEc0PEZUSQmSvxyBjvDq0H7Nww1sEjRFrSiK1BpIA++S4jTTGbFKKJiVCYgIogYlhDloVCZwykGdwmjREU1uIpHH2k+41Q9m9Ekr2HQZFRPRY86FsnGeI9ZmKZVA+ozb49PBKXFEh+FqeRceUeOzMUYGm3krVLaksrNiQ9Bpb+xONMFzdvweGKVzwc7f7Pd0mDI41qlmO9agJibNYMoEySCMNp8oolDQnTgYpfNUs8yUMRgVqUqaBTY/lF1iIWVmzdrYbnCZicAISEhgJTKKMcKYDGvGW1A5MwzIZ0WTMJkg83ebDjOPxiHk+Yp4OYgDRXRMoZ1BOGropqaOKnRNoc3N1hfrQZC8qrGsc+dm4RKE7zv9e6tPGOUAY723BJq/ev0Uocysj+1oB1aZF207/onXYfn06ld8pP7OHQ2Jpa/Vn9Oj7LC/lnaR828W/T/h//3s/y7cr7yHQ/ll+jCLnUjO8Edqz/Wjb3wyR1Zd1pfCPZhKXMIbTvXeIiVgPTzahsdPOo0JilL+sB9v40NafwEj4e84DDDKfVpX9Z9EDBh5oFYrJPBysvRieyYgt84Su62e25EmrMd9TROhLKWE2I96cUUvB+fkZ5/MZy7JgmjQUk0ZkqBNjKoxSzihlERlVpcB/Cd+ScsY0T5gPBzBL2NVSy+1naMfT1U4RkVKLYmBKiChnIPWe9pFuKBOIGsyMSgiQCO7H0EwvKQZrFaw8DVvXAWjyd5cxaqdzBh1OmD98xunX/8D08VfQ/AFczwAXWLhu2Yci8K8AssJWquIaUTtaPAFkfkyqQBj7ebHIyjmtS41f1KEIr6XJs4kSOKmpIkc+OhqTsr8qBmitpa5OtvtNMeQoyvaA8nkI/Nr2glwZ5g9UXqSIuNXN+5L12HvRK97mhqDxUr+vjwUqMG8nox8KKtQSl7HJrRNzzi1GM4Xj0boY2rYD7iVlPJxGYe64DLKB21jsr/4gtRBNJugyBQNLIurakrJyHTX2NYT3qB6Cpru4JeTuJuUdduePQByLcLWtNcHOk6relgxokl7mgufnhFonMFfkwsgPFn/RLGhN6aDCuOAdEQWFBruRABsF/s1qw6w1+r5vae31l9U41/uEXbk3vrclW9tTdHBQPKzGhQb7nVcH0B9iG/uwu0YvoSGZsR6vqzHvzcVfubxuT4Y5MiuUzmKkEY7gKrblbkkhLIQbUqSExGJpwyCHcYd33QdQ4lf6TWMvvE3Df6YkAI+4ca1AvjZPtVZ3VTeYdMWvhk0yRUSpxogYvDUPnoZ7Wx+tPs/fY7i5msKi+N4dmY1LygibJ6cTb1rTZoESPSKiNVAzfBtmn3sBZt+38QBEJ9Q3k7WUCFwlSXlCQmICcUId8iyAFeewOXjL+918opEgPt+1qrWN7nPR4oJI3bLNAif0OHr7yMDssrNd4V8VDjlLTiDq9kUa5nSIb+pz9LY4ZpMuMfi1+cK4J8Y+9Lj81h5uekRc6Stxr7i4JPCPnzs92IXV6+/u1HijkuRScQUWIn14m4XgOO57lP9bj16al4ueK45jtuvdwgX3zt21te/ObRcorD1Y7rHw3+vD+rmeVn6NwP6Wfr6mbCum93H1S7w7rq3VXrvx3Vu8Kt5Cqfie5SW44VZe/t423nLexjp/VIXUPXKX74bntX5cXDJuSoiVkFsMFV2BHgtRIOGUpo9GLGMfbuhqmzcO1/icEnaB7410zGa5KN5guHUAhTZDfyIP7Z+xf8QDBcftC4f6VwqSkCMgVsnhvYvzt+YL7ioubBdPh5wtLLTw9GbIanK2aZo0YTmhLhUlFdCQLHrks9y40sOTaj5MwkZOhj0eot3b8oiwd0dlxF7dW99jHY1+tbBmL8d7I70X6Wz34R7Jf7IwSwnIEzAdQMcTaDqC8gxgAUpR+RCrGkMYKyJoTkap2JQVY46YXpq6pk3tnn0n6xeMVlfeEC3/g4xF4dp4O8UTNSUQSx5TKP1obLpvI6/JPD1CT7t5E5/5YoKE1d6idvvtWavd8t3g/TvLu3lE/BmH4Xgwv7TNS4R8T1BFnLxGvpSSJKieZkxZ4zTn4AmxwfC1g2U8CF9X+gO1H5vPV7hfQ7ty9ohAyixjq37CBFSmpOBgMevhaiTOeCkLlmVBWYp8lqaEKLUlsf5ZXl9cEQHJu6rnmKwdAUupSJXAqEgaWz3nM87LhOlQcayCMUXYph48FD0iJMSY5IxYw3AXqmilmBqtORzYByFUVyucMHsJiNgBMPQzfvYEVu0OvVZJIDY3lBB9iKa1sDm+W2rwjHCB8Nbg9qnWHgf9iKVfm94l1sLnsYbRaRZAGq4SRngTAEqSEJgB5KzW7cmUbuTKCGhYpp5OMwJEe8NRiB8UEjVaXNymiIgCkwhfFaxGSgF+2RQPpuwVj7XmtWPKiBBqKYTLa32KHjztPdSWI6LnYSKZuC+Mu492Xp+PxmD6nKMn/LfKVUbdLLAYQmiTxfQlSVKtCqSUEohFsM81JHy29UgkuUi6bjRlq1EI1eCgiIdKIvXIYQKnpgQBCFndhx1GwR5OTAfXcKc9Q0ni4M6T0xxN+ZAc3/fKiI15s+sd8UvDsaHR+DsDPe4cmPArpbM4wwAnd/Jxl+jJW5nCb6WEMPf3nka+Z2EvjzvC0Wtp1lsY9FXvnOYHLi3siJPeo2zjvbdZ979y+dHG+7P8mOUnnF8ufMu5s3OG8MDHcRCcS1HhM/RMMjFiLxN8oSBw68xk/9ji86TPPa1MAJgsesR+W2TeBtSUG14fsNHO0CedGOc9nM+2h5Wfdl2N8eL6kwmC7RrGe/sc3VOaIoISdaFFAXiOUWbW0E0TKoSXdqVCSj1d6zyOXBIaXQyE61SGpNUXeqbCalDj76ydSrxSRNg7powQq/v+t7H+YSY2vq95nnvprZHXbCxLx9C1S4X7SJAcEWkC5iPo+Aiaj6A0A/xVowsEToUkNBZRAVdWUJMgs2S5+Gwz+lphpQjZkr/086L9o6Ay4JEPC02p8VgOsiiTuVYGimoiEqxbyev3XjC3XCrehxG1cNe0/EGv2x4/SLlZEXHN+qsBDbrPrXp2mTv9TJ1NoLP2Cmv7yJw94BGaAJNCtMArTOXqdzbxE4E1kSyZMKsW7ZmlmJmAfMR8+oj5cMJxnjFPE1LOTQmRRKhFlKGBROTQMd1fx2z3CH77mX70fgBZsqTh0La/VZ6jeV1VkKVX4aLhl9phaBadJuTyEB/doQyIhScgSXctKayEpqiFQwLfFh7kPTfpX0s7+NK+jkIWOTxL0TXjhFwttiIjQ2Rv5WlBSgkHzjgQwESgTJ7QlFjTUqsiwmAGSRF0UssDV0YJQo8wxR6OqSmxmkvoehSO8BsJFgRvA3HZoLlb5w5PdTSU4ac+T4V4/vR9EZgNQlxzUUUbVy1LsxavLemvh76Jcfe5JV+rzC2Ztx6GltR2JCwN14wz9WPzPUZ6CDFSasHzUrCgoqQKpmex0kgPQjClCaBJE3MRKmUAhKzKiQRGoopCjJwJhIw0zTgcTpimAyjNIJpBmqyaXTGhXhIgD71Ta8uPbfkmzLIDiLEoe8bC/t4q/nsIExaZICgebjkd1JNNn2X1vLFE3JUXVC4AlwDHC2oRCxcfQJUxyNaT3dmTrdsENpsAf0Pozfa7adP8bO6fbRZBFJgm+zvSBhEHjDDSdba77wQxGT8mSgFrLFEW72FkEGekxGIUxAVEjEIMKur14HPTcJUoOkQZ5p5U3FjowpI+rRYgV0ZNQM7AFAhqG34lOU65OFYQ5RifgVpBWfL8HA4Jx0MCZWEIcpox0QFZFcgpqaKOFN2o4gNUm9eFMqy0saabMLliHGy6uYOWSNMQs7fXxTUO8NwY4TanhqojcyPTWRtsDUsfwg+vyghrrvAyfsaP1Qgz7bufRXug5vPTC6VJfxi9Y2l4b43j2WFCxmbz07NCbSyWGDzSk+SLtrWm9ypX9gx4Rsa8jUD60Nmwdc9ut7Nd7IwcvSHX70UFwfV636ZsKSXG9sc53+wnreHax74mDYb7F/iscQq4q2L1+6rOC0rgvfHdUr4Xmv3aeRzLd2WB/sKy3jP+F3r8Mv4en9uod/VwC1vRoVDqYczP0I06VwJYw8krULsd9rbaIVyGxy08eOneqs0d/Lnbxxth7BpNOTy98/eOTCQ+sQf3ZHQpIBbdcR2TkjipNUn6joZrYQCZCZWFjhSxAvtjiYBMYswheTfVQM7OzQBbA/jqcUlK7skZmZglBGaHn82KG6hUPeQMw8JSmkQm/q1/RdqBJcimwLbR52N4VgIgBoNMpDQfKSnkRJaPn9HCIS8aWUIZb6VgW8hsz5Vnz/izMn45Y8zrOSSldmKDerBQGqJ5AYc1XBUOH3ZuhPOaGKhnECakeUY+nnB6+ITj8RETE6hWPC1/4MzPWDJQc0bKRw23WyRpcGZQeobkLNC1MWVBLViWFhY854w8zcjTjFSLG/+4Ydem8YCNWuezCgxVShK+NefGl3Q0V/Cup0YRG0sTJ0wM9KvyHKa8aPNuBjl2X9inba/CPVqjPcvItAAMkVmChb8ASVhvBqgmGI+ZKCHNYtw05YScGImK7ocWJguQvCkpyd6mJHBSlWhv4dcLzKSvo05Z95LNl8p8Wl5ZrV8XJWXNw6E8RdIx5pxQVa4oYcAD/cvSkIM1MZgqqtLSFeLXkSE4K+k2kcwXuu9g/QSgCcoJcOWGbwhb52qya6PZNKQ9d6PvMMgIgP4sR0zTlz0ezaCGr5wttxSBOcXJhluMjTS4cxH8iDcul1d6RDTgjn+3OegHf+2gJf+v5XNvSgg7XH3sXb0uCOh+QBfubLfdDcbFGstaz1JFmZCJQCgAnh0oKiYUTOB8xHT8gMPhAYdJFBHTNIGSppAn1cRSVktIHRCa0DICUDzUEH7fUkZ0SgidC3uVEKxTA+MrG6i4Ja8ITdvfJkRtyXlVCBuTH4XamAngJHH6qnwXwSt7XohlEVe7Wur1hflZvOxtHT8oTTkAmdZFBT61MkqSAyIlkkRCicStLjFOqChJCB/KLblpYkLihEwWVkyQs1CCSvEZXeM5IdhDwrAJRmu7WgzKYQxoGMSPqEiA1fadht2/PS3bXHbbI4MiwueyJTtybwe1JjdrETsUXRGhVuNc9pURTQnRvIGKJ2wHJMZif8CEbX/D+L7f8uZMujEJIGQI3D2dF5y5YKEK0LMc3qkiJRZcS5OG2SGwKiLIiAGqKFRREzAxiSfQNCPPR8zTEZSmpoyg2ZURTKbGIPeCcF0bm3twI1AEbtZKiJFp3GMiBRfrnip9zgY5HyP8qUUQDzDL5hkRrnoWWFb4pWoMi/EvSZ7Tue9QfhOnroSPJgx1AkUGAZAmBA8GAvFE76zXCe6dMgDB5qf1bVRGruGPDH3JN24wBRIziJQJ4AUcmA3GJIw1CgoqCivdQYpH2Bg8UtxbWogrR2fCath2zyTKiEmZtUyisEjZ6BpoKCd1ISYl/LmCuIAIyIlwPBCOx6xucQmZDsjpgJwm9WaTrWPeETDBOxJY86aQEuIl4KFL8Ais4VcnFMD6eXMDJxs/TBnRCGxXXEeDB2WexXBB9rHglcZ0WX8aB7BfRubM4VWZbIWQ7pndSh2IxnaNcejbtJoibTb+bjR0O9vh42zMilxEfd/i3pN8JsZGhbByl5iW1TCHOdohRLbmdD0uzZmie61C8vNQA4iLdW/18VKfYnmJUPxSuafNS0KCPWUEEGbE1h/GzBoMDX1ga4MRK9j0zriySfZ+byDUj6l/5vpcx2d2DcGsL9f4xlf+fmvZG9dbw9ZLyx4f+7K+XabZxirHpXPc1bGw/UMjugyyMnQyhVX3mywgtsX8Bmsd+hClGlvlNev+noqrl9V9/ztbyhaC0kBgABbTnsO/PW7xs59EYGmiQ+E/xRCukAg0EyT2fGJCThBZDCUkJDWcM2H6un+9qEoNbBy8TNgntEg15QaxKixIhZb2TguWKS3IWVudlrEGFT5Yv5txkvJ/jkz1jQqgqlDYlBI6ECepEuB0fUXFAhamYyneI+sdc+2towJtD2YQZSBVoKhixsStzpAbEa43fDolLGlbVDJ2oMnhekhp96IeAgD4LGfZYUY+PuD4+BnHwwkTRBHxXL7imc8oE4FzRkoHzW9QJadarqA0CZ+HpDlFpM+lVCxLS3id8oSJgTTPSGURRQS3nCPYOYeMPjEeTtZVwvY2kxszLFaVmSklPCRR8bllKC/qzbDn/kupKSIMDVbnHwgpZdRaduVBrc9r+stkgAlF+DAcnL+QkEpCmSVOCi4VoIQ0ZeQpISdCTgyis+wRmn1eYDwEt7BXIEbxfKBtVP38mmJP+5uarNJCcrlnC2QPmqLQFGzJZsvWExIaq9Ql4APtgyOhpoSoqfHTlicj62YjblvItw8jJLOG7ydWZQmxysqU2o2yLHbMofNh6MFpe9tSYYE5huZ9AZ722b2/jPKbpFEiislv7YC38Og+jD6CxLXyKkUEUTv8x0PprQ9ar5MCMIX7gfx+08LGUGqySNeDOxWkYRamLImp1bUsqwJijM9sGn7TKGODwWPetgRZ9W0QZl16Tj7RDgwjUm1z8lif3TRhQEte2j/Tz1b1pNYhXI2/p0KF96PBfqgywkytcvAxV83nKgQU1aIIBEBJjuRSSpimSQ7plJHSJJ8UYjuBVvDbt1l3cWOEu+GP7vfXjP8tGcBR0edJgC2htIep6e/Xuj0OOcxjkquWyL1uKGT+juXtGa54qEvIsefzgufnM56fzlgeCqZaVcxlBFJVRgeiTHABnpSUCDkLo8CUkecZ0+GAwzzjOB9wmCbMU1YLGqy58DDWSDhFhZfhPyPcrishBqU015Z0PuBSOymqhk+K3m0NRk15VkN4PIXvVVL5dWi1u1foyju37dntvb0t4Nxu/7IQYWMZo3Zis0cN56SUkJVpyCmBk3h61MRAkXkzSxbWeKnVrdfJ6c6q9Kx5WTAJsc+FRF8M8zZTQtgSX0PeTyRWQFOeMU0H5HxEzgfxanMPzD4s5NbUvek+dVqiDjBscF1hHj5AH35shYOH/rU9Zs/Ehq9RgbSCn7c4P1aC49iddyp7wtvLiiNszmmsbyyjMH2r7TQoC99yTl/7zPjstxQYbwnfx7ISzm/Vg33QMib+vQohmm5cefZPgoM/q3xPfflZtstbKoXea7XfUwnxvRXDVdzR7SazCee10kPGdtJA/9HqIlj8fGKNouECjjjHW3IKrTPcdonHBgnR0yTtDHUZyOZ6rnnfFd0PNBpxU56yX5z2uRhVIshxvEuhv2x/j23f0RcVAvJY32CAEDoOO0XMMIIgIc3n+YDT8YT5MKNCvD2WpaBW1vwOE/KUxUMF6HNDKuAQqecKi7f8siw4Pz8jKz0sdkLUaBbyLAn37XfqaUkJepId/zSadgGQJC8B1MDE2tuRk15SyFvfjba+V9bKBgPQz12NcvSqYTesBIvHO5eqbVsVbUzdjo/0P4AYZnbkL+NY4n5oaorYR8EeiYTTdw9gintJVR8aISZIrjrwbrJYwyVWVc9zjDx75L91AIpTAhKh0aQjfKcBddB44zZe9r1Lvy5V+0NAymBSuYMa4OmP6DSON5RXJqu2uVsD05taH4kerWmXqS3MrgLkrc96hmjFGehIcSKJNe7JcDQcU06uPYrKCAFMcs369iEGv/+2RIshB2uCh8MoNh8FXr2Ft/dto3YThBVuyoj4aZt3ZJivWWj9qGXcRmvrQN8JYo2dTGEGSBJUPaPF/w8I9q4pJxyWIw61al6ICUQZ5pEkxF5rJ9g/C9hgjaS3hazcEyuB0HkpfEclxKgouWZhZ8V/3Tgc4xU9hOBbJiRrv3BIMeJz5nXEqyRZf7fybsyWEe6Ky0qpOC8Fz8+ijChLAc/Ridq8cMQ6K1mWYj9D5CmPGUoZeZowzxPm2bzaMrKHtiEXSMexXtwHDhv3KSHs0Pd3TIlVq+Pa8fcWOi/Abm3KCfduszwR0YtiA95vX0d77jY8fit9sKVs3BPmrfu6a9fbfYx1cziXt0TbzhDoeZ6JNKG1OIvFM5X8u+HLdZ+LE68VnMTLJpNZjwOFGbUSaiXHPUZYJ1OK5Fk8IPJBrMaSerKpK0Q/ZxeUOBfw8q3wEETdq9kTvFixBfcG83WgNbpnh71khQJDGe9tlbcQSq/eDeew3uhvtwfvbuteVLpWQlxfu5Fmd7psg54f63mJEqKvs99le+tD3Rzf1p+t+vas2u/p/1guKXLG36+Nz+/v0DGrcGGrtvdg73Jfr/0Wqn5RGefi2rrd3KedckmRfeu7t/bxeyx/pb6+pmzB1avH7jKV++oZz6QfrZhkoM1bENY5WcD+Sy8nt7CQ6PCMfLX/EK52fsSZbmvQKt8+nfuzlTfFMWspRzcG3nqm8cZOp+zxBesqr5cwj8zNWnp1xjNjHeoyvNspKsY5u5F3BnQyObRj98Os298+4PAsEXKeME8zjscD5mnySB3LIvkGRK4muQaISTyWyeQTkY5opZaKQgvO57MoMeYDKsNztjbe4rK8YGtPGw/YzmwRhOecUavUyVw9cXWjcFipl316YYvmikqIWhv9c1XGMdIfPFLJaD1jwELRG/8McKPHNRy9yTGlXqXGqI1wlKdHYTpbQ0P7lxUq5PxO947Wl6xtVYwkIjX6WvM6I6T7E6RRP/QHf4uDDLTjQ4ZPb4l6aKQ2o4i/k3h0O/xtjL/HY9fX+r3KWkGkRp1txsLEGmzcZyT8bsmq37LYoXOz5vKN1otIXPYG8PDDh3WyKU1I0xHzfMDhcMB8mEV4NSbTsbAISTR4lXXz6IKyMtMWj+xWwNsTGvXfFQHqrqg1uD1ZPP/KGqJDE1RrPgeJsVdQLBFqEGaZgsJi6Uud0pdSK0rIDVHHmNnfaGN9n2Ut8opKgGvF3rRERETQsGTsBB5cASZnQa4GwwmHacZhnjHlEW6jEs3eVRJm8HSJAnh/LhInb4xY9xQRF+fJu7JNxEk4lRZX0uDWvtcouK3R+t3oMA3DVA3+K2qxHCmMpfYeEj/3wctLBbDUivMCfH16xh9fv2JZnlHLLCGzIJe40Sb1aNAwJWPURyX8KCXknDGrF8Q8ZWQasxYNxI3DzoZ3QWQ6tpgR9Pug309N4b2uU5UR1WLOFsW5EtamLIu4gC+LwLOHxJMwTJ7YWussivdHj4h7yzgWIPAjw/6kQLCsFYvb9d9D3HDHEK9/dazpzAz1KJioe59URSsaAHiM2WnKICKcpwwQYSkCU1NKYr1VJJijmmp1uNr6UhiYGBJGj4BMLAoOWFg3DfPluZeEDsl5wpwPmKcjpumInA5IaRbcnZPmh0jOxHT4PIwszsglZUR3n9f3R+Jc7lt+nWiE0LzJtvbN6JFjn6tQkdzWkLDmcfqzYXM4q+e3/n5N6eAaWMf2f3XdHJIjbgm4h3eaFnZjv4ql6V7ZEvLdI6zdPat1HLcJo9e00o9UTJTxVyo/aZyf5c8sb6KM+FnuL4qa5Ig3odv1vR+NKzz0HAWaC6yZIBJaUFQxLIp5Q7eUELGYoBFbvw682CX6h/3TxMt747K2Rh44CGX13BVblNCHKADXF1hjw/DAW8SreUvHlixEDPeffiFcl+cw9CiO5OJTPH63qikh5QkPp0c8PDzgcDwiAfjXP/8H//r6FU9Pz6CcMB9OmOYDpvmAmipqWjCdM9K5ySqSytVMKWB8zfPzM4gSjlnC8qYkBsOUJnGUp0VW6JVnVKSzS1k090NCSgxGAjOhsyjHPj010qGjguL1xym5wo8VuEysnGBeJQpvyi+296hJ8DmI3kmUAGvBtdQv8sdBNrRlkMmskSc4JF0cey/FsnJIyFqdm5BEnEjCxANBWWIsg/Y9u4eJellADchq2Cc7+R2r7zNClyOEWw8l54UmuAtDaYqZhiI53I9U7remn6KSnznkgTS0EkMzQUMb30Gjvosi4hKjcu+Ekv/LnTLi8vOhbX8v9musY2Skwu1xLEDXC4IgnilPck3TSpgriSI13I0FazbNEVuNLeagsut9u9eEAgiHHnM3D66Zt1rZAKoJVE2g5UqIYH0bQ3ashM5+cEUBgeUKGIQMHMKC2Ls/aFkTyduTcav1ZtRMMhqCtrWQn3qiSWBBDu9pypimqIDow4qNvYzC15VwlRG+WyzJrtVNYmt7XNtzshZcXlBCDJV0wuGhT11scoNlbjDd509Ze0R0B5Qr6Uwxwf53jN/fzcdfvPxZ47CDulTGslScz2c8Pz9jWRbUuoC5wMMyoYBoUgGbxeAMFkFspASphTmpd1tI8mtPKBHmoxwIk01lwwaDM657T+C0UDVWonC284jghqfbfmyKYSGIg5Kh1Pa39dHf2Q7HdOuaMq+Fnlb2sNdKSLohCF4JVqMVRv9H64g+eZFeoNAvIsWFBDuPCSY8blSIqk6UCZYbUxLydcoZzJL3we6XmrBQRTJmT/sn4QmURawQZoWBVEURUYklTjDgcZPdBijwjs0Tc0bOksdEQuylzvKrhc8ZCcSmhDBmjPn6ml/6fT3nkbnu328wOCok1uHB2pnTPts+fn3ZOkNuF2bx8PxIU9p96uHu5nKJUV6ff3HvNMur0Nd4pnf18u4+jsxwbEfoTYOjcR68h6u/zeOy24Nb767u97j0duVF/Gzvb7V5b7m3ntueu7zHojDjljpfomRb8XJX6NRvWe4Z/1j25vB7GNf3WP4u9Op7lrfCLX+5clm80t3k7lwTokboLnYaqxKCjz5MZ+2CU7vHRiEx4xLu3OtTdwo6zTE8w+MfbSS7TUWeGD2vALtgsp/2TpQxRVq264PWQ1196zO9EV76T2yb0Q/Uvl9NsEq9cDVKTrFFZXaToj9IroXD4YjD4Yh5msF1wdfzM57OzzgvZ0x0EI+GPCHlCUQFRIxkUUfMwFezBZAKhY0fOi8LUl5wqKzPJg1BncFJciPIfJWxl74W66H39JOF7XXhN4tgNiWjvyxXVy+wfakS4rIHwf4YpOqeFuqlO0qfhvxrqKXBSuguw3L9+WCabDO0Cd+Po/yx5wm6/kYYDd0LNvjynWGb3+WpK1rYxmljH2A0UTMGF0WJALLls7C9NVDJYT9bKxT2wNAOAZ03vGuBhr1BKqvmZm5yy+kRFQXx+1sVU+Lsghx3gIGYH/KW8s08Igx24mL1m8WfxCakbpW984d4teVWsgvwesEbhxQYKY1PZ8CGDKJJtLXTAfN0QJ4ky3zKJshNjhxFa0YDUOu/G0KgW0rb1IFpdwGbbZaWtEUQ9NIJrNyjwS3CF9SyoJaQzNTvqWVtrXKv9vkjarWEvBYShD2+dQwdMkzyD17WcH6rEiLW4YheceIYQrLfIoTpcMB8POEwn3CYj5rcdPIjfasws4cMKSzC4FHo2guQxCL22j4eCUgnrC6N+Ma58V3RCX7jIdMLwWxP+FVEwC3fbT9sKSHgQjRJ0h4sf7klqObaevWz3FFcFiV/1AosFXg6V/zxvODr1yccpozn5z/EovwwI6WDvEgTUpoBiGUKQ9ZDYKBKAmoiEGUnfKdpckXESpSlErurFt1bcA24oqHhwnWs/PhOp2jwJL5B8cBVYFMVEJIUr+FzU0p4EnbziOiEu/ueEG8lfOgVhzseEVFYeUulY9cMEe4f6sM9YwCMUWCAsp7Zl3uQEmECME8TEhHKUpBqAZgk+XOqKGCkWtWzQdVjkRcsmi9C6ZCJKiZKEoPTApcGoS1pGKhpSiGMmOaG0ATbzRDC4nVSS4Bo08RmoBCJTF4985KyPgesnQGWO2VuUASHe5WLJ2uXfRK8LIxpfoPyYgLeuIZvVDoLsMCMjPtKn/b52lIubJWRGe7aRsSJ9r2FUo2Pt/AaPU69c7RoEz7WsqVwGEM4hM5+z4V7/u5n+Vl+lnvKN0bKP8u2XGXrOY95r+eWnyMkRnXUkUGqwBYhaCJTUlgYFOODB37a/7VDqecFwT0NbPSKGYK8bAKCPCZ+5/67PgR0SYy7jpt4V85W5u7k617hqJAJ1Th/bs+JIROh+thj44MB922F2iz7OLnJ38wrtJogdj4hHx/x8cNHPJ4eRHHw/Iz/53/+G//841+olZEo4XQ44TAdkKaMWuRgpJzlGoWeREBKCjnioZyWgsqMDCDljFwz8nQAiER+odELbpNR9Dxc42N6mstkf0mTDjAnzQ3J4G2dh7835t3aos/uVUbE93o6KcCi7rEO5m0slmdUHo41uly9jVv2YTVadHgtyopMLiMGSbW70MHPMA5rG0onKT9uWeXNm4qTeksMAmfxbifJiWq/EEBcnIb152MHfE8bT9PvQ5EPy1/ZX2nMnvHtIixabzKnbn1975CBv0NpeBkganIusHj5aAZxuWoFJcLpdETOt+eJeJEi4jVC5Ka5sendmuCXERBby9WxI/rF1raz7Bof7n6xQ27r8Gga1pwnjbWvQgANCSKWX6KEYIoa0Shoat+uaQt3Szzc9BC1z6iskI0fwxtshFiqwvhXE7j6fUMQFczFY5BHoUOXG4JbWAkLM+GA/LN42WaU18qI8eDx79SUEILsmtQqbtfubSKkaUKeZlWeWbJqagQFGRMfYBXo1ndFvA0HTPsMTYe64jhugYst6894b/tw5rA92t5qB2IUfg2CsbBPWjibctEjQg7VnU/2ZXoRIRHH3Y3wB9hUtk1YgblClGFLqTifC85niQm6nJ9Rpgm1nsFMYJqUoBKrFCITv8Y8C1I5KXGSgkeQE1dbgtwrlzyI1Xvx/XavF9RaacqNpoSoiocNfmMuktrBq15sigfD31HhEZXYYR+Oe+aNyyj39X1MDfeMqojdvqzu25r29MpK1hxwLyEpcaKMQEpAbUzu9hgkWd2khNeUEwjq0UBVYpaO+L3RpQjL7IoIITtYtA2pIrExJoGwJ2h+CFOcZYFZBAOIiBvtPFjBsNEfHL5vKBEiPN9Z9vdB+71XRmztpaZ86JgXGPGkc/NCZcIlr7qrgvrxuU54MDwZaL14Zt3S7701WCnygtLA8FbXBhGAur5/pe2t54mHPeXMU5P3UJiPeF0i9fc9HaymWOPW8/397fpug+drZ+29MHdpziNN9xay1JdY+b9kPOP7cYzvaRX+Ek+Q96aV/j5W8COlvvPUHn8Skd3d5eVyhlcXP662O/+a9b3Ky71BG3t1fAse4bYW5Uzv5DU8ym+EUBm96wjNqtmkQCt6zeuSwyjKQlwmsupNJClvO/83f1OGz4SWozDbGvH22GhRuDIfRG5c6BczEho/2deJpoxgBCGsKSnCKLu56MtNIlBa/RGISvYzjMITBAJTAuUZaTrgeDxhng9grlhKwdevT3h+PsuzJBFHcs5Kx6pwmQiUciA+zCil92E2w1grYpwjnsSSxyFrhKDbcF0UohsfZkZM67NWYlPYZyJbr31a+hId+vpiKxpXA4hj7nYOtf6YLNOe9fNdANVl0fLahjf6wEvavx1vsMF7GJ0oCjg4LNkfzMYzDd66NlJaj7PtI831Z6oHl7j3FCaUD2VTJOl/OqBuPPb7pRWMb1yCN9n/fz7OtuL4I9s6B9j3s50AakoHAnCYJ+TpdvXCm3pEvFRDNxZDkhQQjNy/sGC4tJyvKQqkFBF4AFyIBe00HTBNM+b5oAJdNPV9ClAd6+02nB1W5AOJRn7EIsz3zaiHi13tPNkm/EzxYO24wKoEzwgTXJWCZVFPCLMCN6vEMVTTliC2SuJkD0PTWZrrUfh+C/a3KfccRsb7i+DcDr5oXTEesoI8pvmA+XDEYT5hntQjImVY2AS4MC8cIBuW32DuBPbWVNsz1vZ60df7+vIhfU/pFRxrJYO5HZrg1vOhmAdEiJ1falmPu2tDYb2ULqfEuA+6+J4/y52lwS+DJOQVGE9LwddzwR9/PGEi4F/H/wGXiuN8BFAxnzMARs4LCMnxVCnqubIwkDMSC0EpOFwvygNxqLgbxjw0gnQrvn0j9O1rr2hogtXeIyIqIvwdbpbkqAyG5vrhpiDjWlCWs8BsOUuOnsXgeWnwWYKSwkPvNcakP+vuWKE9uN4ksNceEfLoWxHiI3sZ8CDDhfI98a3EaLVDPAHIQMpy3tai+LX444CE8JqYkHNSAlis9XLOAKowIdDk0xyNYpoFX0/zVI+FDO1StjBh+s/pdMDpdMThIAnWxRMzK+xGuA35IYT87onpjjl52dw3vNozE6Myowu9BLv2ni3dnqpBmSu91rPHGIwgAF0JzuPy31lu8hoYv/xJ8jMi+LwAa0bu/dtfC7rfl5neb/va/b9D+fuO7Gf5WUL5E3Hoz/JWZTgLXE5Stx8HMNJoHhjTBJsEFcJLjgihq3qhp4cipg2DEQ5CQRJhotFsBPHVh/OHjQZu/GyjaQCowfV9AsLdJzfObDbZF7Vxtd66nNQ/mwHJRitkT1ShcTU8LSm/4cmsLRa/EaYmUHIm59oIVaAzynVMlqV9r85bMCgB+fiAw+kDPjx+wun4iOfzGU9PT/jj+SsKV5xOD3g4PeB0OGGaDug8lMMnk1PKPYlPcJ4JEMXFPM9IRDjPJyTKwkMSeX69FqJpW5Ym4xDv89YFyQXhw+Z2ye9CD1UFNqKiz/WyA0tufUu5l77raCKTfwBAqrDgRIlkj1UVPiZKyNOMNM2gNIMpCbXuba+RtMv1QUhhj0ZFQacwIJJcFAaT2FEsRLnoxrmw4jkoWeoIgGw/29gtrBSQKbn6YJMH5aD8tE03tu3jTI63iNkVGKaYMT7PLra9Fvbcdy8XiuMn91HT7xIy7dffPuN4PN5c5c2KiBFw9G537z0n8C2UEPf3j7q/ePVbE0ylJMy/5IYI1rMj0hzq1Y41pGW4j/snbe8pbHc9IBsbjzESuWPw5eCBA7vd2/KMaIlL19az/aG5RgC90IyDgMsQ8x2Jx/9i5V7+t3+eVu9vWc9sWtIogHayT62zPajfg2Qrp6lZ0+YmuOqtDhVx4/Kat4MkwGAgPOQA3p6Hl+KO654QUdBr+D8Is4wQY4PTuBfawdAn8Y2uu60Nh/md/RAJzVvHe48F359l7bdV/sw2aYBzyafF4hWxLDg/Zzw/P2NKGctyRl4keRglAkKIOoNXC5sFZk9gZUnPCL0C4h6PCPvdm9so/d7ZUlBst2OEJGOA2c6rpynW+lBMlvuE+3e6/R26zX1/u7V4Y4HfVn2X9/Ut97mr238OfEtHgDrna6GMDBY0HpITXz0vaiEEEqmVjXKLiQg1JZBm9rL51SPR87UpvSx/E1BRO6tAIydSIiQlCPKUMc0hFGQib5+Ga6Agh9lZ3395Wa9Lz7iETx5hew3rvWKvfVoFHNrbU0LIGXk5zJe1cUkhdhHPdQzSAGQ7j8X2rO57tpSMrZ+ze4sraaQTjdgNn9cCpN2rEBjn+SV17/1+jxX+t1BYdDAZ+jB+H0tjjN++T99ScXOt7b15+XP7fF9bW/vwvfr7Ui+urTrupUuvllfA6rcWx+zIuzbLSzwP3otev9uA7a0LKf20ll7cUUejd9joF3UJaAqIDVp0HLvJUcZz2ehz69nQPaeD/S1unyJl7Hi/SMdsNI9Gt4T6AxPD2J4dt0D3+ZB5bQYlw3C79u3txjAFjh7GAxmP3oh94y+CfCnM2VYvx97b86v+xfYApGlGng84zCdMeUIt4hGx1IIKlpCj86yGYUHoaR/UfweR5DcI8os218LX5ZwBZuRpAjOr8D+jARdtjjXuV6NLJbdbG8/+XpY5uuWs26JD43ej+fqxXS7tXX3P4JHQBPsdvaclSZhXSmKIxUq3OK9oNDWZLAY+F44Bwrz1fJb8xjx46XCvOIzwYsHXWgX2yh79S60KYLXPCM2bqiLgF0c+3MJj7rHyEfwN/uJkt55078c1HCuO4/h2lNm6dVk/7udi4C0pER4ej3h4eLi5lW+WI2KrNIKzJwEubbQ7j7d7ewRmEZpXssNGwgOQt56R04xpEteyaZrVhexirWCQWkYOgkvETfeCHu8JZyQ+kguvJN59davYEpOb6sUhrjiXAq6LWpDLOyZNiQcyM0vuALU2lkNFrY53LMHjgfqtic/Xle3ebzPxG4fSDQu+InQiEqO2H0Zmt+sjAzRNSNMk3hCHI+bpgDnPGptQM0RQfKtqmt/ih/CeBfhaGLs3lmZtElt6C8J8FASbsMbqN2FuVbNkH0tpFuItV0pvOe4W6U6cylWqCH5LqShF94BfZgUMwSkj5fuz3FVs9qrG9D8Xwvm54vl5wVNK+PrHV6QK/PHwT3BdkOaEuczISeLogzW/xMJYKnBegKQW7M0+xFHcUORGy6+w4SGEuDcb0T8KWPt7F3JECNZue8Y8a2AKB/NmE3y9LNGzx3JENE+I5hFRW7LrEELMaI0axvvSfTkyiL2A/EVV3lgYrnhyXFjQcJs1bsyMjJhNEaHeEJSEcUnIMkf6HTgDsD3dznEjy5LmeEgpIUFiZxIb3tPcOqCVraBjBoJkvs6ENImiYcoZmZLGRWacjkecjkfM84RpSsiJkDJ1+SHIc5/8eZbqVkZ4X+0XN4QoGHNDmEv96Ekm9QKyd1o7APzM6zwhXtDnrfcuCZv2sPlaIbI+5l8ilB/P2vH3ZoFXu3XvmGZ7noXBc17KaInxs+u0bumeVL+5vA0MflsW7TXlpbD5Vyl/v/G9ENB/lp/luy/vwIfssjcm4LvWHz+NXDAoMs5RlGhUqvAB8XxMJoZXgWJDRxtnO5uBSE+ndDmsNsbl5/A4ID+T96SX7TkGvA3LqTme6YZ9Oh9dAmpKYiA3zgkxiNjDOTn2MmEvqrrk6lU1OoApCpzx2en4LsEzjJ+kA+y3GgGUpoyPn3/Bp0+/4vH4gGma8Pz8jHJeQClhPhxwOB1dSUGkEfeTRv/38Ex9eHR240LpKEM9MUjo4mk+oc4V5+czKE1YagEtZ+Tzs0zDXgKHOMxaUamqMiJfebrJYWydI30m09UboZlnxFsaeG8akIffLdcKs3hEVEA8qw8PwHREpUlBR2ly5V7EXyD5OCK/J+Gc1vKoRBJqjKuFUWMDFadJDfqqqxy34dGf83y0uhuT1mN7jNkdf5z2tb4B6BSbzhr2AoDVWhABlISLoyS5W1KCB4pTmDcBPnf1mBwKm3styg++HeUha8maRwZo+KjhNgZ4AQDMpwkPD0f8/o9f8PHj482tvIEiosdIoxbvr1wcccI2xhpYzHpW8kLk4BExCnJbpWpb7gdfrx2XWptp5Av73o0jCMFgVsB9vHHLAWFhmNZWtjW4T8nmdMXJhhC6blwNKXDXwb8Led/rBWPZY8qCNeROnaMVxXiva5+Hei7sPyJyeJ08N0RyuO0FdaY66wWpUfi2ddl6G8wQjX0KQpGOuGsz4ufBC6y++vnaaCfA7qXLhGX9WCvGtdm+Qogyg/+NLl+zjrqHqf8zPSO+LY63dFLi8lqqeEbUUlCWgiUvWM5nnHPCcn4GEVDKWWEx+XoI8UmOm5uG36yNgXFnG3GzCffY2KuMzfvtnQ2489ijugO34As9PDYlRlSOFA3d0oS/bY9GeLRTqdFG/n3o971CpktPb1VlOICxVlaMMLcLg7z9jPClQrdsWeiAQ7xhcwVPCWBlAWmEkd5bsNWFpgBwdbvNb4Af9PMpOJiF4TJlgiefloTY4Aoi9qTqrnQI3phep/bjinVE9+W99nXbN1t7ZyPP0AY+bftl3dfI8NxnGdrauPR+x7xEWnfrBDfSMdap9+3p97SSbu32OSMMAjvzDx4VDdyEP4gqu56ote5fwwtbXib9s9fhrWek971HL7X93uUl+PGlOPUty937/RVdfatx3jpv8bm/Mk96L5y8hg5cC61uq2vV5q5A+s+A9z9/P90z198CFt/N82V4fqR39KZ8OD099iHKV/TvRkgJTRTqWo2ANv9sVYT769FH2izQu13vAg3ssozhu9Pljdfr5npr2vX53rRNaWBXougcoPHnRL3nq9GRcjr2FAl1UxvmOPAf9n3o2uper9nYGFN8XvtZmfsHE4FydkPIKU/IlCQUMlehewHM84R5mh2enBfTSYjzkkhoYInCxNiKBkZESHmSvGt5Rq6MlCekYLBxjRSJcoE4KmcJdt+LeLGt6wgf9lz0fLBGzEO/947YgOar+7bRT63bKnR2+lQjA+RJvSGS8tpRFkIuR7FxRR6IhnF2nhkK32x8WKRBO3oRLtg32PbzyK/ITzFW9HiY1wESvS2XnwX4bjxw65zV0b9PmitN1CoUaWeOmyV0ySu5hou/Hc0S5YAuw0Nbngaf8ts0ZczHCY+PRzw+nm5u5008IsZN8fYH7AVq5k8uzKyABchGlZBM83zENB2Q83xBQ2oAqdup1m0kYgevAv9aaBWevYEINwGVIBDNBbFI8lKJHV7BFtN+OaPUglLOKtAzi1qzsA3WiT0K8OeWZdGrqGCwCcB8GrpZ6RNQ/d3KWxDcK8Hm+glpyz6pHQbjEyBgnmccDwc8PDzgdDphmjS2uMcSb4lODesYIm/eAybEZZhFa+tjL1iS+9XnQ+qx56h7LwII8xYKv32+Yj1bAt+W1LdZ54pHQ4ih75bjpRtnbKsXIHNXz7KccT4vWM4LlqV6bPif5eXFHEoY5tlQcT5D8ROjLAuWlPCvf/0L52VBJcZ8mAFIzMspH8FMeF4IpRKWMmHKgITdSUASoqvZt4e2FSYNf49eQWbVYp/Ehh97C6uqFkgjji6leR11wmSwtFmiIllz/CgBb3h6Wc7yWZ47T4liOU/c06cpLKCeEJUZnpKLG5F5z7l+O84zJnNbwHtv6Yl6hnlE8ECjGAMDXGCHiUDI8PhIpH+7TZrUIXhEzz/1fipKfAqYipdN7XDPxkwQIaeMKWfMc8I8Z8xTRs4Jc1alMSVl2M4gYjwcHnE6PGCeDpjyrImrxXvCvSIoMB2G05NT2W0deH/eb/ekCEox7vdHNWOHzsOsh8HRs6gxPLX7rNEoIqz7Vh9fopR4LyHZS88zYxwv7UExLki9ApO5WztThlzeyfcdTvfM17YSAs6Zjr9v12tCqb8vzfi9llsh4+/lDfGzvLSshNF3vfu9cP1vX/7KCrGbikv0blvF3tBgrIgBUstrFV52dY5HydgNrcMFg4Myxsm7oa8rj4hICwelhNMl0WOzF3fTiAABAABJREFUNlqvPd8Mh/Rlp296L4yoHHDSX8fAsLSwiQg5SdjPUtWb245Fkd72c4wKshyONV46LqWp0PHhDKDesRHX8ikRMquaRfuWH46YHx7x6ctv+PjhCzIyoLIiMHA6npAT4XE6IEHkEsy6JqgAGQ/e5BUpZ2SWaCS1ViCpZzvbUMXDdkqEzBnzfAABmJeD9DVP0j0XrsPBt+lllUeiQEcRwElpauMriMR4SeUnPpNqNZ9VDsMAmFiNfE2QLbS4GJDA5SNwaOjlKKMy4rpBhiquakJLNCu/VZZ/KgNMGWk+4PDwiHw4gfOMwgCpR30pRXJAkHhvVMiyJFUccNhztvQbagCYR4QDrCsvzM9pyDATWfK2lXRrEjRILszzfFFv/0V55EVllzL3a3zD0DkJPV1LpqSflNQLokoeQCL1jOg7tb0eXh+t7nw/JYGQfQUE3sJaGQ+ZE1JO+O33L/jyy0f89vuXP9sjokfsWxr3S5Yot1ipRK3MuLD3LNvorXHNe2ONBIbf9SGi1CwX1U1sr4MO2INyoW+/KSsujXBv7lzgOghdVwJYz9/QlAsucPWD1A7j9iyYHVH7ATsIDOKB2guj28FMbRb9YP+7lPEwuJcx21/Xi29pW21WyVUT1pEm8BKhl1jURsVDtLrY6gP75976ssKIwXcUgMTeRKvWW2ZlZ9Q7L/f3rX87dezsld4LwirY31e9sqPtKU/QqofTS8f7vXicfdO27Q+1orCEZCUQ/ybwXJYFRITz8zMYjOfzEyauACcwEkqVyxiBRuWYkHkkFrQPG/h7C8/ZPmj/9Ptk7931mQDYPlm3WYe/AwPlIW0uW5tr7dvzvUFQXRI+vlYIxcz9mX/hua3vm7DJQmzrhw9H8FJjCrxo+54Ej3rlQ3jI6/e5bWSu/ORn5GV6RQTJkuw6TxOmecI0ZUwpYZom5JQwUUYGoSp3mvOEKU1Ke2wokY0pwr4igboxvVHRwba1MJokhiPbyTu1CaP9WWJ1SFP7s3oJTu8pe5ak3fcLzbjQY+OhsX8NRtt5bvdv7WsvyF/T5a1uclLTzzh5YlDa3dbu1ueqvdV7/R/XlBGGG8aqLrWx39/73tmuY13u7cstpcGQt37fe2+i7DUAefm43npu3mOur7U1lr+q4mWPT7l1nFefewH+8Lpveuv1vNY95dp+v/TsdTnHXxOGtkujtW4ro8gv3g9SR4PPjbeNiuGtB3Z72X+OHe56Emgap0P26HenTzi81yo0Phqhjnb4XpL5wHl4Ebk2D1jLpbHi+dsAnMZv7Ag7rYZ4D2NfbphQrcfkYoif3SCAPE3I84z5IOHMfdk1VI/QuyQhmTiBaogigurjkOoanUCJIMSx0L1G2zJM5lUdWJLmP5D8rkIzB2IEZiLfhkI+hxTGMo6V7W/jOdCGB0CNoqjVHUC8o9vRQEKq0vXlfY+I23gye9cHAONSiM2wFJBkz1mMq/MEKC/EG7I9T97uvJUFNw57N35dFZ0hV0K0+toEcDfP/qbvx20amX1MGg3A+A+fjl4e0+7bd25rioHeCGtPmlfQuxnnddg/jfJEeL/tzf4cXj29W66d3y8uLCPpvNJiu4mQcsLDwwmPjyecHg44ng43V/+mOSL2NHT7L2Bzfh2QI1LYWYjW1i0bcOu9y8/ZRjWGLZLhonCwkEyyWSll0bLt9vh6cTcl1TzdBlQDo6l3XaBaTesetfwFpS5qMXtuOSKqxmuuNXhCLGD7NK36qo3axR5vXhi3CbyaL907CEa+83IN1VyFAe7fb0RghId2eE1TwnyYcDwecDwekGhCQhaE6AfhdkxxZkaBCtV3xtKPqa07AbD8Cm1Mb7/W14RU40G6aZVrigR/rjaCcqOOXmAWvSKil4VZzbzxQfHDlQAzLJ4Qy8LNS6dUVCp4/voVy/mMggV5mlDBmKYZp+MZwISCGRUZZxzBWT24NJRWtGrqV6zHy3tKCCdYHB5K+NzOl7OCJ1hIM/t9JAKj4rd59KxznrAS4QVwuG6w+MpIgLeVDVzyVmV77pv3IgcC1+gLuZKTiuv+JuVnstSnaLFCCVuIfVrlHmas6sqMwm3/x3BukbkhQJTCU8Y8zzjMMx4eTjiejqKIyBr6kRImZCQm1PoEoOJ4fMDh+IApH8UjIk3IyRTLSa2ycse4jMzOW5RL6xrxIdcGq8wcvIp6PCy5rILHqK9r7xFxS7/uhbnbrPL7s+Wt943Q0ft9G+k7u4yuXSl0hro72vdiH67PnSSRbP27BgvjWPQLbl1Prenqs3/XcpGf/5Pax42w8T2Vt1JK/ljldiHIz/KzWBHqiK4jK2ZwEG4x6bVxbsVnLjQcaGUON9ddsXBFTfDoUtT2/gZtH+nunrbpZSLxeVhd2KpL6KDmMdva3hqqKCAQxOFNsLwzY3APgq4/wRsiXu4BwXsV7patY7wT7GpIpuOHBzx8+ICH0wccDieURXNUMCMlwunxARmEA2WgAOUZYtXOCxgLKolH92piiPpFZmgkDsLz+SwGw2cx3Mk5ATxhyjNqKZKXoRKqDqIHv305Yk/zrJ9zLwcE2Z4aP11THGzuA53ju+WtXmwnUBPue1v6SQRKGdN8xOnxI+bjI/J0wsLccg3Wilpb7hYiEo8JNOcQMn2OenxUrMPYxtyH3aQP+3E1Cv2tsvJkCHSxKoAq4DzFEqJe2Dw0WQz7f1HI01R3Vq9KKcMaaGdVmaA7k2y0Uktidt7HccpVmfb3XGzeBI5PxwOOD0f827//A7/99hmfv3zAw8Px5tpuVkR02yXID13WSe055n4jAW84ucHSot2KiCNiQrr46i0WCzQOMD6PgIgSbSClrvLdk4IQkYr2j8axxKf7e50iN7THvumjRexgMdsJpcbEkCYsYLfsbgcWvB+OvOxQZnHtWiXitv29BQbjmfcKfuGbbmJbuw5kGrK6zEbHu7ftl71HvAvU9iSMOIQo0ZIleEq5xZq091cw1R+0hkjj4bEl8LA+MkePiAYE3IB9RTjGVtuO3t6zW9aX15QR4/Pt70A4dkSaP9TeGeEb0d3Wko/1cfk3wf9GmP0zYPv7PwRHLMieb624xzFriKYCZuD8vKBWxvPXJ5SZQXQAEaNSQiXCQhUpxvwMuEqSi1tL1uQ2jI2CcHD4e4D9VtVasWCfq3HyzhV+cwIrEncBllmtQho8t5GtoPMaKIRz7X1kPCND0O73v68/uyEGPAOgU/I7bUKtZvMlizjL9vdItDKjC7tkuUcKS4imloCwoRE25AzBaSkFL7VpwjTNmKejJKCeEjJl5JSQOSOBsBQhvUmNH8QbIub5WdMjm9bow3z6PEVCJDJ3NL5xW2k0Qsw7pTMYYXaEcfvus95gdIRVigt4RfjROObGxIcH2u+uMWpfHZQGmmVPZLcSgDpth3bQXsK5N030Pt0rfWhNjLMG6gUel9H/OOKd3tyADMZ5ufbOnufI1jP9s/vzYhVcGvIeFd73ZZjVq2O59GsAsM3OyX40+I8eXWvjk7YvuudfXLahfNvT5XI7jQ+73N74+95c79Et9ygfXqKsiHN+4Sl/5iXk1S3KvZcoWbbH+4a0qKI2QXlX4OGmVjca0M8tfuXWufHVudKJe+b6NevyZ5VrR88ral7dcaxGCOGtoYbnHfG1fknrbF/1QVKsZud1oHVlPUM72F7e2CRt9lyfi/RlQM3c4dtG4LHzjEHoOPIJsX07o0de00ceYGrjWq0jtz+61jp+lteXtaH0VyMcNmaPg923L+7YfmxHPHfn+YTD/IBZc0NI7r6qZ1jCNM3IICQmFWI3S/aKMYSV7bEotGB4Hji9Y6GZbF0kwbWFrhy8iO1Ata4H8OzGFNaj+8XPtubFMIhQYPkeNssesO6UW73ChNeR8SVNZt54QfPeEMKKUkKaZkzzCTnPwmOUgrYBGN1mQPhzIF944x3LOdqI0wBrdnB0MLdHC4z8r/42zKHzaD7eYYK7rxYwKtCnGH4P8rK4tj05wDqsNpZNObP9w+H7DeWqbGurndsq9hqc1w3WioaVAIGp+TDjeDzg8eEBjw8POEwT5nwtiXsrt3tEBGP1cdKAupkYxjop47q+q2zTNgMrWzhpsG2uukGbS74GQUBRMw00d5KXEGrVp9ySkDCApVRQYqTM4AnIh4xsYRRAmBnI2mxlBixub6R4WCw23c1OBTpMLSafII2k/KrExpXY4qvh+/zJhlRvB9dcnlF5aR4OFkPcPxf/zrVgOT/Ju5oroi56UCgiSo4/GCjVY7PXyliYcEbCcyWcK3AuFeelqhUjkDSmXL/KuLDp/yrFTivSfXKJrMEaGXpILx4+Q937FQ13yPcpwYgKeZQYyJQxpYxDnnDIk1vT+tvJulO1Ek1UxEBx2KxgLKi8Heubq1pfs8TCr6azrgHJMcC8bI6ngwYfzEgKNByxZeU7Hk5+SHBp3g7hORnHguqx9WU/ABUr9zrWGIaqqFvKgufzguel4Hkp+KqfT0vBeSlY6uLWGT/Ly4sTvuFaCvD0TPjX14KMgocJfmBmKjg/MZAIT3+ckacDHj5nYDqgHjI4ATxPeOSKDzmJcqJmMGcAk+6k6vjJLTEGYtiKhZ+JigD5MIVGkvpccF3Uk0HzPXDROqvTZyTSbs1Twq4odgVykX3WYvGfwXUBF8HvrB5vEnaveE4JQwhMKjDXgzxB9pRB6+bpHYkmai7iSQn7bImex/VbKQ1lHlJKLhgxIeOIAb3P3fvrTyOkeq8tgxcLn2hELKFqNFICqTWNr7auzxlcn4F6BngBcQHzGaUumlOp4lwkP8TTuWCpFX+UM0plPC+iIHuuGYXlfDTijihhyhnTNONweMDpeMLD6QEPx0ecjo+YJkKeCHmSvA+UsvTx6V+odQFPD6j5CJrEI3NKhDmReGhOs7udy0WgZARlBbh28+JxQHUmlFVos53U7b/CGRhXurqygABu8Xxrtbwt5n25tNwQLLlKuCySs4TVG1NzSbi1HhhMprgI/WF4nw1AyLkPk4Ap05H0vp8fep8sC4wyOdQqd1I7HqSA94FDBM4AcsPN9hsle1fpg1HbH0kBGnddqCgID23PRJwE9LkWxvCiMtYMEzIQ+m60/Rff4/WxJYQFKls4x/1zbdsjp42rsxi8qdjzaf3LZh2299v7I5VxpanV99t6alAUP9vb+8NVPLXzm8NQqBGmXB26OoKlBZi7vYS183auvPFi4es1gcoGrfsC5cHL+vKWdV+fw768vPFtYfP6DL2n3buMVej+0d5XdjboC2rZ47g6HoJoF+bukXd8H2Xb4/3Vtao8hlVRUBMBSfcqGExFZR8HweGcgZrFioiUjiVGsVj5nJ2bJq5y7hjvR4YtGQSRjUhugB7n03CE2bFYxE4bSel2k23klFAqAM7C69biwu3AwcJDBVGjZ11ATSLjKSxyqZYfTj4Xz4WlcfbrYqyDLUYTnhrVyEK7UalIpSLVgqT8ADYuXQGIN3QBeJF5hvK1vOhztT0H6G862lFWoauRQZgYWIhRqIIpC2FkvAEXOZFUBoBpRpqP+O3T/8bHD7/g8/wJRMD/8/X/AwCYjydM+YCH4wcABVyfUOgZpTyjLgWsMq2yVJyfzjg/fwWzeLlzXUCVsdQFpQBEBQBhmiRszFIK6HwGkJDSBMoJVBbgDwmpPqcZlKH5UguKRUBQYJHPFp6VbKHKAtbQrQwhjk0RRpSQMylsVA/NrAQgSIWd0ZvG4bPbS72nq4DGwPNcKCJX1b6nI4gYhyQ84dPTAiCB8hFAQcEz0nTC/PABp4+/4NPn/8L8+AU0ZVAV+ElgJAIyVSSwZvFIMFUGFVVQWa4FV2CUJhVjBpe2H5polEWmYmOtLYy7fLVoHI137XmEQK8kQs4TQBW8SEhb84hI2qL1p+qqSl7AquQUoyCBHDeIF7zgzASgSB+6MDiNv+JSgCp7FLWCzCPC/TdEptuT+mpNafP02tOzJ7XvKyw4AlS0KpJR6/pgJtCU8eX33/DLl0/4X7/9A799+YDP6YCZ30MRoSVanbVDd+fZVxzKzcrkFkaBtD/W1sBA2V83dqMTknt9kYHQzeXYVhlKZ1CaK1aTfK46PfSfG9Mb+Gj5+bILFg3PmrLELF9FeDMkexw8IGJIBHFfUkGVe00ExMAhYXdAjvGyCBXNEtSQ5s6cvzOp+p7FCbluCHpYXSXy1qhmkKVtttXXc0EA4O/1jYjAUBKZphBX3J7dY7pa3xT576x/E8CG5xxTj4QNd2OlvqPKdreNMcJK3BtbHhOt3fhD+KM70O277ZUNl8FYCVv/G5xbLojxsmpGpua9yl+PKbq3tHWtLF4QS2EspcqVGJkqOCkMEYGpIlcgPS9ATahUgJxAuaKw1UhoPuKxLfiGukYEuiWR/94TkNtXY1QwhL8TmqvBpeHzyKjYewj3DZ63fmtX7Dh7e/6d90ViVqi7gmdVmLNYQxREdvvXP8PUmcCtwz393+M9I3Tjb7HudobrFFHLp2NJypUO9T4yjEY2qyz23CSlMpbwKXBov6mnDpN6CjbQcOVNysh5kkTq8wHTdMCUD6KIyE0RYQnwUpmEj0xZLg8jpbMfBL/tMwg/R7gdljdgav2+v/6rHdCh24b/Gyw26zYYc71zlsTKeky+se8aEdQm18m3cKh2v3OYq/1zz494p824m7M1GlhXNHYpzlC/N4b39hvZaXNrEI0AiPTK3lzuetF0X20y1k3GPXe1yw00X1X2rQJ3zu5As18qjC24uKfDDoTde6upHavcmcO2ZtStn9nwtR7STt/v7X/oA+lZ8Kr1Gl/eW7dvX/Zg6H7hbVz7l9Fjr5mXFU65sQukB/iLacg/dS3vb2sVueGOdy8pwLZ49Xvp8fd8/rXKh71xN/wTcQTBlKRB2mi/+M4gr6FRHXbgr1rbOHPau4YHuR/XMERu1a+f6WhWMtLF35PP1kZHKxksWQNjez3B3dFarP+MtHtH6zO63/3F4WpmGxsDj3O8ovb6Z8h7uS6EtrTtJmE9qbqIKSPlGYf5AYf5Qc6oWvB8/goQIR8OSACmNIFBKPysMoAWqjOG9zShsnk1OBRp/8OxFXKgyhymRIB7Qmie15qEf2FgDWBrJNpFFtHcg90bHSkavJNH2dDWftrYk6zrvbdfbzsjjLZjuDes8g2se5USIc0HTPMR8+EBeTq4t3UCgvJPL6WdDebJicu2aZgrKBoOdTxp7UByLUtqXXfegQzOQ5Xe3nq8/XdeffOVMV6JzJS4Eam2bg3m9e2+ymHtDHn0+6y9Tg1QQt9fRy2sy+2QEdvcwB+hJM1neHo44uHhAafTEcfDARMlSch+Y7lLEXHPofuWhXzF3r6M/d4UcoCbxaQJqKDzQebFQZ7wZmTitpg5SVS/gYz4dfO5ek+/jzGYa7F44mYhe0Yt1T0jytJyQ1iccXatO4tNL3OLlx3r3rg2+/Y3LS9jGJpAMGq9X9yHkaIafjV4naYJOYfQTBSR7tjD1r/Yz7USqsDi/oFbPG+uvTWz/d0Pdb0f10JK6n7vnoMKFDlg80AwjgeEnXFdcvWNscW2YleNMJLPqvHia/BEinHPB6Hvz3J/MZokytxYBL5g4I+nMxIYj4cZpTLORWDbiMF0BtK04In+CUwL+JyQDgWHNOFQxOLJPBcaXcSb22gLTjjA2d4+MSVvKeLdUOrSfa+OZxvRRgy11IqwGAS4tbR8EGXwUGJWPN9yFbR8FRvKtoCHXlo6y2fzjBjPuziXq33e0+ZstN6wF/f25lbfV7gD/bJu/S7nW0JFQqkkVwFKYfxxZpyXiq9PC5ZS8XyuKBV4ehYX8OeloDDj+SzKh6UkFF0LQMiIRIQ8zZgPR5wePoo3xMMHHOcHHOYT8kyYMpBnVUToXIqb+YI8HyQ3VZzvtKY/5Hrp2UTh2i9b+LLBGINq2xfi8VDc2yzmOom4ONItI0Pu8Erb6/nasku//SnlZXvPPCm2PRBaiLm3KK70eoOyd75fa/+e53+Wv2d56/X/CVN/lfLnr9HfHS7ejkc3T3r5RkxC72j19snEAFUQVSDVXuDMUg+5t2orTSxoFs2NHuiE9VYPk/SpoymVDotyQhXv2Pvx03lIBFLZ52ugQ71dtYB2D0/tfzAGEI96OJ1jOdwABnFvcGRJdxnmwWyRBroI+VaxXNUuDtEI4jxwm4Q7179C8kU20eoorLcVAkCE6fSIw8MnPDx8xOn4gOfnrzgvT/i//p//W/g0JDycgPwxgxmoNYEBzUsgdPVSFpyXM4orIeJlAt3qa1fqAhBjWSaACOfzM4iAnB+QSBJj11pAeRKaVGUAfWyfqNEweQJJ6F9NGlAruwfy6HdoAnxouJo8TPPmvjMZ9yDv2FJwbr2/rWxkMC8AAQsAQsI0ZZj3s61/ng94/PwLHj7/iscvv4AePyDNM6gWUCnqtV+RkxizZkrqdGz1qMzPaH6LjhGiuXR0fWkyQpn7tUGShZSy/HHOp9ba9X21Zjo6WRfdGwrr5kEt3hNJ7leGGaJF2LUQuuAEUFWeVBBG2z7s+3yTXzHFy6UyKjXeqryg3va4zL3JfIEEJMLDh0ecHk/4t99/we+//oJPnz/i4cNJk5u/gyIiAvX4d2QiukG8JdfzwrKlxLisfOjeFoFQOFDtwDKml8J/0h6pMk1/7ZhZChrSvk+OQF0xZu+tD7utsqVAsTdWArGQtMXcxVpOiJAzwnNFcPtkSzgc6ox1h8ute4fnt8rfjcC7ZnGyKSgbiZkXt9nIgv53hVtqAgoL20Gm/Q1Cq4hIbM2VHhuItLX2uhfGNiFtv8F6oq71mf3ffSVEJA7Dc7Cjhg340RqxX6IWPR7skSBDu9CPw+rlMK44Psbe3LS1/TPg/XvAv+9ZnObUta+QkHnnUvFcKtJShHgIuFVIxAScFxBn8LRIXH5jHKjh+ga/8D3RweDW/Bq8eBUj4Rj2w4UL43vccg+s4BXmdRM81+pWvUOSeMfJAS5tCDevwRqOV2db+2HnHTlN+32+xgutn2vl4Io438C3I0HvPEX4Pe5Va1mUEeQeDYXFw8E8H86lfYryS0MUFlXWuzdEwBM+bI3FmibkaULKs14TKGcNpwQJyaRWW/JOFibcY+gpExjojHVpCgUf69ZjYY3uxlPdejQcDR5woM/F9hmy2g8Ia93/0wC26+rq9PN7cl6sn2NGMNzU8fcaT/906/M/A8Xejcc3aMvw98vOhR4zrIxoQhn32kvLJcOnt6hXjnLe/O1qn3jnfnfv5X18j9J5wvi55r9eeVthny8/en1tLofwuqVcg4s9WjvC/t6z1+j213T9tfTY2Pf3pCE3+dONPrwHjXlr3deGf8v8XKPH936/pe7Xeh38GeXePt00p8QhDBK1hdKmWmQ3oRHayTL2peXo6mUtev7oORxDLnU1OC0dcoCF8Tptsmp161vjXde8oF2Brub2ucX79TIdHjjTwCtHvnKgoZjR0ZQdXcVhfNa/9kffz50JuILq27TYk0p7xjwRjaYigBJyPiBPB0waNrSUM87LM56eviIlQlkW1FpVKaHGM4HvaTPUn917e02WXJIqNwPB4sZAjf7OKgcROrsFpdV/IwiTwBRCv2oVZZqFygQ1g6rYRwu/bmzmyB92Z5T2L46pW2v0dW99XxttWsNh55HsocpVw6Ul5DxjPj1iPp6Q54MqULiNAWF9iDQ5NalnuS2QASE7rMV+r3ndXqbT1rvBLWu9K55a62l8n0mSTKUQ5sZqM3xkc2JzpWvEzjK4bynck0US3cS0Ces/2ia0CQld3voeO9k4j0s4+vZzeBNDrsqFlvqvSfbN4TDj4XTE48MRj6cjpsOElDMYY1jky+Xu0Exd1wKwR0b+peV9DurLopW1IKNnTAF0G9+jJuvGIg1rk1ISy3JFaki5zU9QKshni8FrFxt33CEu+HN+8N3K+YZxGaLsPCEWiYVfPDdE6XJF2IHQLLtLQBbBIyLWbWEoCmsuiqqabKvjtq7/3csWnHcCqnco7UASgiGRwOs0TZjnCVNOkgyVCJkGgs/hOPSVTbC5MS6uXYy/asmmzDNi571kSDX0Oe5POeRNc25j0kPRhVQ9HqrWVm1WJDHk0ugpxDFGuR5srJYkTbirdTrd2YS/bS+oBUdplunfIyPyly3EHYNTFQa+nsW74DhNeJ4LjsfaFBEA0gRQrjjgK2iuSDzhUAnHj1DCKsMssASaKoDe3bbB1iAwDdZckXGwd3omQuEuKoQ9DF4JsCJ7pgZrcgDuZWSwVsuCUhYs6sFWRq8IVSqbR0RP+IxnoE5xdy5dJoaicrPd0ytd94gYizNR4bsR7kA/r1t9jyPbfIbsPG9rOwpQdYrVEwI4a+il58JYFuCPM+P5ueJfzwXLUvF0VkXEWc7C5SzrXapYjgkaYTdKE94sY5pPmI8POB4fMR8fkedHpOkAygdQBpBJQjLlJMmpiZCmBVwTKM+gNKHShIossWpVMdGtgV0aGdU7cKFcp+eicL8pFqKHpOct4R4P+t7ZCA0p75YOT9ueEm3c6Fm33af2956QKdJY8Qdj1oZPp+TEsqoPhXMfbo/08m174nL9I+MpdGmgW0nCD9Qq7QnjbOt7mUbujWu42+c9vdzaujqam8f91yzf/9DW/M4t7wSRyZv25vZyGVb/nsXG/N0D1c/yo5d45LKJ7pJnn2o/ywOJjcZWoZ7SL5RYLqqdAiI1ztQ4P5j9uQlHmeA5qwAViHWiEyUmb8AjTj/6Mc/xY3yyeT0oneo5ATZlN8YziLi0+vNo9A5YeNcaDES5qnELo6CiOI0U88SpF4TR+kY3hfCsrd87Y7k6M+Hsj9L6+BQDzATQDEoZD6dPeHj8gsPpEXk+4J///f/Dv/74b/xf//f/FzlNeDx+xGE+YM5JxrcIgVaKeBdXAJXY01DUjr4hp1WscQZLPlQqICTNifAVDOBB5XeH6QhiwmE+gZhwzl9lPWrL1bc9L+RyL5FBQOWAaQVfxmfkJP3Lyq/aWt1iLKKjcZp47/lriuqkgndGAoM1YkAFljOQEvLhiOOHT/j8j//Eh1//gePHz1jyjKVKvo+cCakmcIGGa4KH+WbqDYxgUTAM5krzXjC5qvHBxvOtx95/Ny8L3x8GA/ZpsxX2HvnV+BN/jxSbuEdEVaxSoIODuUmRjlfGqS+zKHJETjR4HykuEHlS6ff1uAffgaxxMHwh6ZAsYbPylKYYosOEPGX89stn/PblE/7z91/w6y+fcXo8Is8Tzsv5LnnXixURWxo4Z65eMLGXGZNe4RHfGeu41sbW9/X97fYBHRK3+x4zzJl/NIFLJ/vVw3PQknpNyhE7e9DJfvbG1SPGXijWDrPufifw4uD10HtEtIMttsOrlnlVf6+ciPfHufw7lv6Y6kBF8Y+t8bCmo5pWb663BO/8TRt/rwUDJtBTuaBaAbSQYg639sDYuq2jE3dbAtfxvgpg0eBxqHRzRLE0jwe3v7iIXlo/rd3WVi/M7A+GeDhGAVgcy7qxNh16wndtbQl437P8OAqPfi8wxEo9lYqnpQiQWJJebjQFQZJGUWHkwuImawwQESiFEGWRuOn2LzpY6uCo3fHnEO62LTTAVvjuv/s74289bq2DoqzViVAvvP01Xt4ue0TuxpM2S5vPCJ9y+Xzvi/Y9HIQjoXpJGdFjwI269an4bu8RoXNWTcGoigTN91A45ITwvCTsnhKmlGcWDwrDQ/E8MHwr1lhZQyxlwBUKBDY8TMkT4snLGUTV4RaAPIuAv/cK9bPTjp3tdy5Zv8vcxb/j6dbj2ktXhP3NdQ04tZvE0Frsw76F67bygRlDXOD+01QQIjKArE038N3p2ejDRrjB7qzfquw+AWw0YtlsL3y2eL4X6vN6afM+YBN6/ZOtnmGJ9pQz294G+/B4s7LzhmdeflYbLrz9jXsUOePkdXIP2oPifer7tSTJrfO09di9724dWX+2Umtcq5d4CNzX57cd31t5NFwbw1b9t6/3LSFHLuOG13glfCs6+rWwvPX+rWN5/T6Sg5Rc5tErLxuVCJiC35/q+M6maBB5iiox/DE1fkFTbth7cn6MveIOP45IpJHKO/N0iZyy6kY6NNCrNgtb02u/Ntqp0eqxTv+Px9yD3BlFobu8cwMNFX6/cBJehhv2ZOT9BDFs/dzqPmVQmiTnwHQUY10ClnLG+fyM5fwM5IpSFnBtyqe+L41M9dzAEQ+Pez3wZAwx2KKSxLhWDQRTyuIRkTOmeQbXipxnhSHxjJDE52Poq8CXaD9MKZGSCr036GZKyQXfpOs1Go1szXP8fMkZ0/NwCDxCpOBkr02T5IU4PHxAPpzAmq+jqhEbhYpsp0bSlbS9uPsb9drzsR0sXhob2auxvvYeecORTmjz1vHPzO5lo4gDniuDg3yOrT7yv53+9/Fy1w/fzT6m8Bn7NH5ulHtOn2vnXFyzS89h67koP1SYydOE6TDh8XTEh4cTHk4zjocJKZki+OLQVuVVHhFjiUwV3zKNCgy3bKze+2KjqlcRDZcOXzsO2TeZFBMImHX5JMgVTaC76xGBHshW31cEGGMNllv3wq92QA0Wh6Wol0NZ3IrWLGq7+OJ6IMRE1aGDejBKkYSdLZO6ub79sJbghggDQ2jHIcLn6jXTsnp5+byNEO2ISqtMiZATIeeMPIk7ooVoSpTcykQEFRRfbYIh/wz3/UlGS5CuV233un7q9+YM2e8B+bt6zYlbEkYjYJm9tkHxojE6PUl72xftN90nHJVyUbDLQBeHc1wXo4wsVqDkGWgKOfY8KX9nK9A/o/jMjzhFkejXwniuDPr6hMOScSoax1IFffOckCZCmQsyCqbKmCqBkoTEmSbB48boAPAk0eO6OwHKCjvgDt5HZoCD5dLaMpwbzYJ4LspVa1MQx9+j50MJrscx7wN5n3qr81bXy9bCYDkpcZ3S+uzz567A/WpfKK3ffUc/P+NnxCudz1UQvDvu5bWwYhSA1lrB5axnpHgRLqXgvFSczxXP54Lnc8HX54LzueDpXEVBUSDKiyL9dk9AQnNdlgkTBmiaME0z8nRESjMYGYyMioyEBI1wKnQVTaKQSAepMM1A0nuyGMpAref3skLhNXhprUCI8GsJAt2zUi+33CvVvc6ccexglF1Y7kzCRt+NjurAZiTId4Q09wsF//40ze1zEghjAiQWdyB2tz77llpNfF0J8aOXXnyw8btugvHz7wqye0ZxP8tfv3yrtXxpm/efJX+zshp6E0cDQJMgi5CX1NjCSEROCZwkJGVNEvJFxSwwm9wYBjuR+Hhmq14RXlGBpNOLCHz3pvxIjEs6Gt5GQMLb9XRiozW2IYWV5gciHW+eG5VaW1HA2tH9G7QuAygwT4iCUk1eI7R/S5occ0NIPi6LVND4EvOQwMuZAJ9QApC8z5oHGRLXPwP5CJqPeHz8jA8fPiPnWfi1r//E16//jfMf/wOeZyzLM0opHv4nUQuJ69SfKyLWfa4U6E+PwCCW7Us5g8E4Pz+BACzLgpyBNM2YUsLD4wdM04TzsiCdMyqbjGzIcUoq+EaIvFAW5a8yaiVMKYTxQaO/cxY6PpkMjQHjVoxH28Y9l+V9txTvwwSR4VGWNktFBaEwY5pmnD79gofP/8Djr/+F+cOvqGlCKRVLeVZuBB6SyGgLrgyiBluWs8UMrE160/ZDlCPZ0PbkYhZcSZ63fW1yZvvV9qTPl/aFLQ+uRrqgwvpeVQPFBPOsYmZUFPXgLqt9YbIA0rWrrLnuQih71CJeFbYHLam6R9KIzOw6Z0RUdYxhpf7swtB9bDeIgJxw+vCAhw8n/OP3L/j3X7/gl8+P+PjhCMpARcXCq2FdLG8Smsk7zdfDM8Xf9p66zzLocokIbK8IYK+lHlFDbe748j0KSfUfE1wN1hq9xUz0iAh9CidmPDxjXy6McJjvppGzg6sTBqMdgBwOI/eMqH1YnajN35g0R6ZR8THGJ29z+Tcn0Gj99zh31xR0t4L8peeaDGDNoJG5wVI7mOywt2dC9/fb6L6NGu5G6/QnDXf318JHmZ21EiJ6QujhMyjDWlu9wqXThEPg3f5eKfvifon7ZBxfmIRtHBWJyvbdD9AfmVF5q7JFuOj8VgDnwgBV5FJRWVxhSWnlTFW8IBiYWBmhDc+gqIQzuG68jAFyhG2OXQn0VYOh0UssKi3ipxGlbbABF3MLKRaVG/5OqAu83d6mwgQG+3Yr/L5TGizviccGfLKy0BnPyO61rmwpH7zPwz1XPVDPKm7uVn3fz+busrmPysmmRDJlY/FLFBAGLt6iMdSAKCOiYiDgYpCGF9CrAg0OlYmPZCpgjDwBJExOzBmxp3xYkxjaQSXw6cp67pWRvnO0iS34HuG+oi1Aw90jD9ahYOrvmwXltT5G75d4llwVJIWzNb4b69t8bRCud4Yq9tveNnNgvjisu8pIp++Nee++j9mh3PbZSEfTzqe3cLGP71leIptv+OW++dqr5553Vm1d2oubU95oqr9CuURbXXr+Fj70vcpbeRpcqnss13HOPqTfCwv3ehi8Baxdq+PS77euw63PfYu9c2+b98DeW4+nOwHI7oSv3TMq/lPapXl8ykVqfCH9hHpDhDCgygcSy9OsGgtiQiIRNZJJTSM/2PW23W983sb5RPIPEVSIrLQatf6ta0UkgIz5a085bcOwPBYrZQn3u9deqWyCUAv3GaJZdObIHdMSmZKBf0H4Hp4Zx+HT0sZhuqU4AU496j8pT8jTAfN8wmE+yhzWimV5xrI8azLjDFM6UUpIDOQ8iZFvzqjGvwO9HIUGWtWUFyoYZzRZldDqosApi6ZrTgmJEqZpAtcqnhFcJA8bM7icQ91oAu/A3zNHeViFKatI+2MhbiQHRevtSAs2McO4h3t6YaQ1r9Fp4wXnExiFJd04p4Q0HXB4+IT54QPS8RGYDlhYAoh5fTZuAVv5DoFFivxiANzICyDIT53u3ux9mHO07TN+Am2Lk/6htYf1CKG20UT9ykGpYiXuoZYwXgYnCgZRROj6+h4WuHRZavxuigbjcaw+nUAK89D2JNoAx79vLNfo+XvOCMvZzswSZjknHI8HPD6e8Pj4gMeHE+ZJlMeCQ21/3H62vI9HhE7ca4lB28zXmN+Xl4bApMs7fXXAJkeCdmhIAkkJ5wFyfeG6GQTcvUcXOoYLDd/JKvkGDIdLryRomkGPL14LWD0g4HHy18qEVVv2++h10cV83n//Z3nr0iNYYH3QQQ9z84BIKXVCWHvnJUXAeljrgKgbLETCZ2MUnTCokR1kGDHgFQ7vWC84COxYDwOL3d9ibK5D2zSPCAZzAXPpujnCMQ3td6RfIAS7s9mk4QAGu+2f5d7Slry7xQx8XQrOVdxqp5QwkVhXLZyQOSEVBiaAleFJKSOnDKKsHkGRDRobtK9m8dALwi2vyChstfwM5n1TubT8IzxeSjxZU7pvjMgtGr+0hBw+tS4eSkiszIc8EaWCywj/vWdQU54ROsDdKFsE7ugVYUzjnnDYCclN3HNdwLClhGgrtXV+bpzP/m4g0uPeDEyeWJ5J7hdPjL4UnJdFc0MEDwjk1lxQOrjiNygfJCxYhodZgnmIKQwygTmBq7xTOaFyozco5XZ1HhH9eJniHA/zYOseIi5vz10jZm3eujYMp3LIgVLDvRDD2PGtfR8Jc5gSeqRF9oVr7f3Q8w0h5XjvVmLfWh6VEC8pbyUI6vcP3zSU1u/Lc7lXript3rHc1/bLxvc9l7+KMuF7KT/n6+9Yfq7pd1toh3Z0KZWtXQZjAmMCMIHVwxNKx2RK/mhSQwsnmQhIYMlriOazLjnhCNWkl9a0/2f3Wx+NBjH6N57nKSWRKSZ9ngBOag3tyoiBWlKe13iBXuAoHRWvAalT+E/hO8G91bn0XeeMSR0bWHImMJSeWsDVZDjm/TDGq+cw7q7isaGbS09h0/CLibQI0+EBh9NHfPzwBR8+fEFKGUtZ8PTH/+Dpj/8G1zPAGSkBKSfkaZIVo0cslXE4/gs4L1jqM4CkbJfSqk3YEdpvphG2xqUsYGYsyzOICF+fnjBXxjzPSCnhdHxAThLfPiXC0/MTzngCzs9ruQZ6OGEWBVgtBYXQvOpTbnIWIo+agqoW+UFJIbkiWh7M1uTLaBc3miDzxshofFmS3HJV+OTKAPIB+eEjPvz+Xzj9+h+YPv4Knk/4WsJeHqI7dHwvIDAP81oiMIoqKdZjaCISdnZznGPAJbS98oFF6cA8ZnBs8lnxTGBUFm8VUuUABbyQFIeYXIxrEQ+KsqDWxeVIVBcgeEhQFZkSTHbql+YXVe8kk6eiLusBcg+fW8vcJHrvQ79e5V1IFbyKtyln5MMBX758wq+/fcbvv/2C3375hNPxgCknPBks3aGEAN5IEbHH5F1i0lZrcjNDd9+C9OLK2wQb8dMPTT8/7Xe5b1uFNKZzKxT+agKOqKQRWURgIHmN7rbnZN3XqIndzM1gBIALxvrERVGpwN37JqSCWyDEGY1KDomL/VP5EA+A8d749xaDJLq3DVjdgA97nofvDlcwKA3wOAoKo5VJEFK5GNZ+uySUBJq2N1A57P/GcbRnfGdS37845vjiHt3UwRt7ZMq2R4Igqwl1++9Gl66Em/bdCY9Ifm30lVvb4/NNufr25UfYcy4o5t6yAej3gITGIsFJkLidIE0ZxujwMblCzu2vVu1WtsR6kYJvcCRtxrMh9sssIXrlxFiPf9tghkzxHfF7C7NUPbl6l+tHmaAY0qm1gdZ3a2vYa9t/x3UY761uYe/M7fDMoIQQS+v2at/6MCd757a+zsEa7pI1J1FzK3dljOGphh4Qz3y7enzKSMnwpnkmwPErwGBqTKslJ69V3IHBBQQLo1iE+S3kcFFZCPBlkedLzeod0/rWY/swGQTH6UJX9PPSlDDjaXJvCXvD/mK+6cKgGLOFGHHb6oz1wdzQu0Brdn9jhImts5laDuuRZrVzZ9guUo2rjDp1zo5K6E3LJSGsWZbeSlZv0TbvVfbaulcBIo9uPE/747il/reagXGct87xS9fgWyqQtso43rFv987L+N57lpv7tIUTbtxzprTea/s9y55Cd+/7S/r01srYe57dO1de06/vbX/9ucUAexw/O90kT2h0CM1xxSnLpWEpgShPCWcmWcgbgKg6D5v8uSTCd6XFzPhDRDjUnfFG6zceMdAp1rKRciRGNqLpSKi1WZonIhStwOhpp1t26eieprGk1UYwRdogcjmjzCfmhoj0Elb0vNXb87OvL2G9TfhIADSnAlsekDwh5Rl5kvC3lSuWsuD5+QnnZ/GIILCEis4ZOU/Cj03AwgWH0wlMz5qHTUM3idZCyXSDuehpvLHHXVZVsCxnECWUsgA5I+mVpxl5KsjTLOF5KIFQV9O5LgxGRWWCJA0X5RmMx9JukvZD/k6Aw/G2LKiDWVN6BV6le34Hr9lvth8YDMTwqJSQjw+YTh9x+Pgr5ofPoFnyQ9SqyoWwT3zVGUHugwZzzqa3PWx7gXeutkQRB+s8+T60hsn3iX9GftyvJuNMTuNX75HR5GBuPLTxyxq2TMbJzcKMRWEo/LWFmm18NzRpvD0Hy7Xb4R3t78C3bskzDO/Fcu85e5GmMr7U+cHWEzes14me54zDccaHhyM+PZ5wOh4wzzPM+I2NF125SV0ub+oRMZZbLcUicr12gN9P53C3oKF3Ye/w5qdLQ3yfsR82DBIlsx6k4t4V2cpekAvqw984AHATmo5lXwnRtm7rs1rZqqVsjLHsigmzTCwVrAl7uNTBo2EJ3gzB1cjICO13nLvmCVFQgjLih80RoWWE58sKmh4Rbe4CVV6t6iBqsEo9Y5Si4K69gJxS0JCjwSrg91wBcY3l7g6hJkS1T98zhtwvlH7/b89VfygPQtthPzXCUvaEwfWuR8TGvukSgdkwh8/xHYR32ly0Pv2wfMqriyp91eVxnEdb9wrxjFmqEIeJAFRxBRfaOCGREp5Z9kJOGVvQ7vDjwlXu1rzDsb4HIswIUV6HMEnNaKwnlONIVozHgFtbjgjF52zxLaPHm4bbs1w/YZ8C8YR84YoMRPSo6Lz8bnun/xx2f9h7mwLsMFf+CrhPPLPRb2bNadURYaHNwEAwE4yENThM5kGTEqbEMHsgEIHS1LVlRfKJqEUNVyzLGUt5xnl5xgRCShOWqn5cRKhIoFrVcqoATDgvz2BecFqyetrYsipDGNfEBFnKhEQl0Fb/wgyh5b25BUaMeJU953jQPICip2TcL0OidWEAjICvboE1rrctkdDIivV31noUMMWz2f8e4WeLHqXAhA30mbuHrxqX38y4swlV8OL4/ZdpiV6518bRxBsvosl4f37HvlnbP8vP8rNIibuBNhHF3vNNzPLitm/kxX+Wn+X1xYTShC6vnvOo8lmJJBFumsHpAE4H1DTrlcGUXXAqJh0EIDldmRKQqHlEJIjxkZlIJwYqqQV0CNnSKGxVwqsyoiqdX4ezNSWlD2vSSisSJTCRhoRC814IvJ94eGKgK9Y0a5TXkNKc7bROYKormYvW1Pe3u1QAW+OgW/gYUxS8WWGRg1ljTsvpYqTpgHw44XCU0EzL+Yzn8x/41z//G1//9T9gXkBgzNOE+XDAfDxhmjKQT6Ap47mckaavWCqJEuP8hJIZyOweIlHuJnAjfjJExdeBIV7kwIKnp6+oteJ4nME8i2fENONwfAQz4XD4A8yMlL+iFgawhAGv+RWAVXHBKCUp3SUQYrDssjSnkdTvXmG2lKKkuhKFb7REokiTvVMhMsJaZC7KsiAfTjh++gUPv/wbPvzj/8Th829Ix0/OQxJEPcg6w26MA7gywnmocBncOt9EDRzlUrj2ca73ShiFDUZ5/0azUwiDRL4fQngkVKS2Y1o/meS+8ikoRT0piiseCPDIB65gq5pTdzmjlrPm1C2Ael+ANceux+kdF7Llhrh+Lr/vue2101ZrQRGRCI+nAz5+POH3Lx/xb79+xuePj3h4OIFSElRTVHHk+/G2crMi4iVMxVsSPvfU1WuaESY4TA63Ayi+s1ZGtOelrl7waQxlE04oYgqIqgm3aJPhdQEzycF4baijEGYUcMUEuU2IaslUx5jhtbtMGNvFO9tqXz+bx1+vld9br0sa279jeck4tyyEY32bTIXLYXqFl5yPhvaDF0QXjqkJrkaPCAdt70D72mA8PhLyT8AYIHi7jOhZ0Q7jfrzb7Y2lExBv4XoM+7m74HDaknsNAk4YMVXD90Zo+dR2o5G/GFb/OIHWL6zH+sLyo+wlKY2SUdpvY3o3JlWfM8smv0iSs2dVJK8E6Lo9oqLrGoHYwDsS5SMcjt0zAinAX21s06iEWAnjQ+ibHg+jB1IEuminLzZ07u6MdWwZDewIs8c73Xtrjwi/jwG2x3m88Om9VgZ0FD5rdTDvC0+6FttQxrZC4xenJJZd0wGZEg4Lg/KEwsC0FMxTEbdU9Y6klJzVtREZvrHQXBI3d8I0JaQM9dypEGs+OCMulkGsZzKhmNIpWKB0bQWlw3i1dQhTqxNGPTK/UJpQu82n4buB0Q5r1+iPthc65izg5Qi3u/REW+muP5fO0LHPWx4RW3RKE+YDewjgLnRuXV5VNbTxSvS+aWn3HQgm13O7/j32c88q7LpXw9441/CyX8deDbvUifbxtnpeUm4f/+117ZXG12zP5q3KJ8G5t/XlLXmF94b3sc9j39fY8k5csVHnrc8Zf/oWc/D9KRlf1o+XzoPhpGtrsU0f3de3bzHH1/j264WGT6An2AGxkhcaiSkDNIFpBtOsf0uIVKasMpGhjwh4KMgmOwF+Z3RR/T0bIzNU1hLp355+Geei8QTkIS5FINvDgvOI1j1lWaB5BKyPfjYAzYhVPxMs/wWLcmWcAyeZIl+CQNzHVRjoq9Vs3lA2aX3qBkhMQm9bvVxh1hcpT0jzjJQlR8KyPOP5/IRyfkJZznowAJSTeiVMSPOElBnTcsY0HzAvBYfpgDqdUeYDzhVABgrX1h/tq0Qo4XCfXZ7BlcFUsZQziAjns3zWKn2f8oQyzTjMR9RaME2zJAevZ62TXcjer4nS9gUoqvxIqSicikBajIlkXaN8pD8h2hli/boVW23hjpHuNxq7FulTnibMxxMev/yGhy+/Yf74K9LpkygIIQZBxmsTiTLOFC/yv20+hqjm4L8LD1tFa1j1k1XoDxL5SmTklT4YFRDxq3M5vglizobGV5gyjjhm3WNVWhk8WF2qfDCvdA0xZfuJawHVpe1t94TQEExchH/n9k7bd00Za/5gW+UyhTU8u0ML7zx9qaLLzxhvOSWkTHh4OOLThwd8fjzh08MJ0zyBcnIv/6Trz5fa3Cgv8oh4swOSr01gePDGga3r49VX9rZr9874rnwVxt/ACsz+HgBdSHMVtFsD86s7c5dhCCO8toDtvOkVCVvKCNYNP1rHbl3uXqTPmOvR9py2vjADo3vgyl3wZ7l7HrYER3Z/ZNCZ7WBEUwKQJqHuOlH98DMrcMkVQS6EbW0D4USBVi+WKTuCk62+Ci3QYlFTO2n0GXTvxi1zW9GDwTdov+N7pUIT2DaBmBwkFpJszG0irpZ9uDHeaQcO8/IQ+1ONGFq/+bPcVXjjNLDpJMBcurmD3Ub8u+vvlOTS3BCT54iwfSCbaWulHIa2cjuEnBFdiKTw26XBOck5MBQclBCbFzdLc4/J71pioMfH/WYhh9W+vITZXhPAF4aL9f7fLd08rxUxu/00+nbjGUFDRo6u360AJFASoVIC5RkJhPmYkbgC+YBSCvJ8lJwRZ1bmIylTpV2oCk9VVrhq/NClakK8acLxMGGeRBFBVJDMNT03oh5gTYbNWM5n8XwpVQ13FDuztGGKECRyxqzPHRHmPeL6yK/swmqkeQaCGEEpFmmQiGvDGta6XsMVDXNhz7gQYOu3G5URb1bCubZV2AjP1Wu39OtlNFVPL7zz+IfyEoHaFoO1p6S4t+6/U3mNoPNVc/YXnO64/3/yIz9Gee1a/6h45W3KOHfc/0RCkUs0iRlMByAdwemImmbJE0GTEFCeI6JXJlSGWjijycNb9fp347kaTSEXlCd0DsHCp7gywu6HjhM5PelW9+NIlfdzpQi1/npVSn4bLy68uvpWJKEhkglBiZA0113taJ21h8TAkIbLDEtb37qO7JYbhKIqeCDXtsg77HXLOZXnGfPhKDKHRHh6+oqvf/wT56//Qnn6qkJsksTU04Q8HzAdZqQJmDU0U62M83EBuIDLGVRJ5Me1aEx+GSZBaV3SLGvUAmKKIbDIws7nJzBXPD8fAQCnU0VKGfN8BEAoD88gYpyfv+KcAPCiuTjK7jlYixgRLSCl5RNSYjAnUGKUovOhfclZYCAhdzOdUupgBB1M3obXHLZSy//ZZCEVdTkDIMzzAQ8fPuDX//hfePj9f+Hh9/8DdTqipCMYz0i8tCTUKZo7eYfgYY46mZPITyyRt/yQdZMofjYZMEEES0wup/Jhdvy9gZV5/Kj3tClrjL8NsJ98xzRjbPnOsOTWsDwOdQEpn0L2bK2A5WCx+VMviFoXj0TQFBkt7D25EqLfvVvD2lq/t6FXLp9ll3e5vJunjPk04cunR/zbr5/w+5dP+P3zRxyPB1DOwoMyI+vzBdjkqffKm4Rmemvi7qVMRuyH/01D/xRZjoKJfWWEpUokF4JJuILhcG3cfPe+IUH/hcxSPCAZ6j0ijMlf92XdV7bPQUjl3+23UWAWpwOtnjWOCYKxKBh3xNLqaXWMwgV//Ycvl2Cahme2lBGjEmK/Hb1YvsT9QCqYEgVEA9+VxWy8XHPPQztrJZxd3I03eETszEn71P1v/n/Y35/6a/htFDqFgwk9cuwEO352rYXLUZAbCbwbyDR0m+TGN24tPy5TTeFfKX6oKzBmzfmQM5AJSKl6IuUeYAMBtaW8i/ViZ84NFTo/0Ihwe2d9bYUHGzweWtZjT/I7KhTGemv4LbrFb8N1wNXo4f3WZFO9YPTKO5sC4fV5GabS27ilH5vPhr6thZyNbdrEy5SANCFNwJQyUp4wcUUlWeHjsqDUguPxQRQRS1NEEAEp9+efZk/0dVy4KCwmTPMJx9MDQBOIJlA+gNIBOWtsYl0WOgOFGLQQqELzm5CHGBMYTx0eHpVDbfyRffcHEOmju8tAQkTFmh0fAjNwj5+OIcEdjNbWvasguH5gtHCNwvu9hs27xZ/Vn14ya1ZPf2Y10N04dr3ft9ADUcm/ib746s79U8qewmhci16ZeGWtXtmX9ypvUf+49vco3F7e/uX33kL5dLmufRrqFrxxSXG+dW/ck39m2ToLrz07FqOJ3xqc31IR+Nq69tb0Un17sPKW+35vX34PdPu9fbh1jVyCQSQW8naP1PLZeDQiwDxNKalnhF5IcpF+glv6ATYxqCkMTLgwyjSiXISVftZPvU9KJwvt3ozIOloYRifZ+LXJKPsIc0MUf2vynESWn4Kc1xa6wfgOqFVxlXAxmggbLOE5I94lH9v2eb4qTTjjxMTaG2S1kP1k7hYZjy5BExgArlihlJDnSS41flzKgmVpFuYmFHPZAWkYVA55tkEgiPHYPM1YUoGHNvK+SgeIDH6gigBZtCa/giaWTliWBSllTxY9zRnME6bDAVM5Y54O4LqgpAzW+P8qVvEyJnCmVD2RuPRHeTlVKrCzoJH2HmbWeFFq+cz25ZQ9TeTvDzwAQ2X3KjhOOeH0cMTjx4/49OtvOHz+Ffn4AUwZiy1LAhInCW+MIPfgZjg3tmn7Ul6pIFYjKW45MyRklXpXcILDJSRht7WzD4o6FwYgzmu0sLA2567kq0ar6/Msz0MNtT3Bu/LflrwatYBqcZzjRoU2maZ4UFiOoatg/OXeZqXuw/+6B0dv0cz9990X40f/DgDDxfNhxul0wMePD/j86QM+PJ7wcDwgpdTSQXCQy5hHyY3lXXNE/KnlJmEF/MCR79c3tZRgMRmUEH4Awfh3w8IGWSb4QhOA2QuGyZi7DceuhNgmXFZ9Dt9HodYYk7mzMOw++/lbWbxrHy0/hAzNA/fAnZ68S9zFdf4WRPxfszSG4ZogaTyYxmIknB1iXr/WkTRBrwiu9glMYvg67/OgStAN9TTlhUL2jpA3jssOZ0Po10Enkp9tnL5PoFr5QeDFG/sGOwLbziPCr1v61hOQ7d7P8vqyrzCglCXUTSJMWeiPDCCnXtngsKpJ7dR4fKPevTULMFFbfFdTNKyedpiq6783lBBxb6/wOZvn2uAdYMnHLPkdYjuDIiOcA74/urHZnN7I8MQ12MMnNzL6BIC7/b+9N1fKla5ETk2TaXUEu+CHPaxEKYEyCfPEFZPBRzYLI5nP8/OCWipKUdLNFRFqF2LdKOGMBKPURfJAVCDlGWk6AsiSEyIdAZqRtS1jqMWKR/JFMAsOz6kl+Gs4fftaF2UAdp55mdBkQ4krlXWKCSH2G562d2PbW+2Tf47nYs8UvbRcU0Y08u3PtbDeE8BvMaERZ7Xn9kKK/HXps5cqIcxQ4qXleznF30MJ83cq76Vw+Z7Kj7v+P+q4v+PicgETSsV48qyhexiejFoTVUtcygniCTGJggJRxoBQp7FfSluRCH25am44NcA0L+HCFUU/PTmv8XAIso0onNRigsdxjO2BrUkIvQ3CZJP5RMVFUs1FStTeYpYAJ4E+d/ps1WaUN4Xmu2cizxp410Hu86IShOkcGjYLeSRCmhKmecZ0mJFzRkoJy/KM8/m5cxURobd4MzAlMAiFGUXYK52njJwmzHnGOS+icFDZk8mgJDxQU2KR5a4gl4CIVKAsYADn8zNSSpIEW8NCAcDheEKtBYfDEcwLlvMkEUPizA40qqwVPK9CUU8NQkVimQ/JLZK6qY+ykSYDiTupb/OmpaHmDRHpxBJ4v5wSPnx4xMcvn/HLv/8X8sd/Bz18QVkKlqc/kAmYUpLZrBHuWXknViGRhjlO8RF2eE0AmJPzncQSlsnyM0g1DFAF1arrX1sy7NCuAQwzr3M3RN42zIPlloErBLVjrPIhDbNULaeDKiRYczBSWYDAP1uEGeaWrBpcurUSA7dvTVu/8oxUY7z5eMTjxwd8/vwRv/3yCZ8/POLDwwnPKaGg7c/JwCHyejeUF+WI2LW+8Afky2gt5orLDrn3WJM5bLSOWWhA3bUZBIo1CHZMAOB40p+TGytlRFd1O/yYWx+s30yEqkmWoG6EAuqMhKYJakdx251tjpqywg6r2t0DsJZlxUlq4WSKxSqzjbH432B1ZWOLKb2gsiZa4YJSS0u8YkKwuKHDWDpBcpf018KDMAqzd3sLYf6ZjPu1Mq731i+x+Dm/IxCI9zbbuzB2AYNGoJjeyl3e5BRthFmjU/oDTf+JoZagxFl7mJETeVz8RKKltnbMxoDQQLGRhKGlUfEW+iDabpsfux8opYEg25w322/X4Kg7wWkgJJuANgpk4X83nMNhT6GYSx57MlXvi1sXtMPP2m+CnlWX4TiJqPv+rcv3tCfXZYCJsMZmM2FwmkgT2KWKKQlRJDAOZXhIQt7kSULiUBLCV5Vyht/a8sRAeRF2/a/2Uwe73P3uSoUAf71yIBBTzFgn+GsMib9TWy4fsiR0aJYZLeSNEESVi+f/McWanyMwtKAKdx5HggDzbcjs4+Ru63F4hbGFIYBeYEorHBBnkNB1CXZ+bysiAsVARhT17tkIZ3rgo+SdsBeSetX4d7XmEvfy5u5cHgSP1NKsnggMyjHJMjQ0E3yeLW9TZYAog1KWsUGIP6IZFlJJQjBVfM1nnM8LKh9RS8bxcMJ8OIIoC6GvDBjtKiMsoWBbrzjBbEQTNQWFJ57cQRM9jq0tKbpCg51ltqSrvFRKyBv9YXVG5skZGKmxMUA9WPizkQG7TSGDhrRN87Z1tuu/Qp5ZTwZBQKvQt68dl1v9WPdppE+52wmjEsLOW6MJDV+YzIeg+2DoXSKSeLmUFH+0frcpsXYiybo+r+M8Xfp9S3C+qWxarVGkA6z+1WsXhLKRPhvvoKH1QGN1ba2r0XAAkWazs9+w3u1KgnuEyRdheKfOcY73zvyr9TID6fa+7lRirW2u4aXnbylvI5iP/OI2rN3Xl8CWG3hsvhB7MDK726/s0298wzN/3dLWJI4t8hXyfXfibirju0r5cA8f6z6t996KxrmyJtt4Mdb98nG9mxLd8j8Y76ZQ7FIRI4RoErkIHQA6oNCMShMSq8lISuAksccBCXHCEW8AEnmHgUoJZyTjxrAwUKuEwSm1gosmjY3WzlFgqWds8nCR7Zle+KP3KnsI62o0dqTlEejKyCRE2NBxsTIuEpHJ+MtA2rDx8mHVyS4KlvURFrndCONzvqJL4stYAbH1kfcgjdoYtG6jx8TzJdAsKid7mB/wYXpEgtAalRdUnGFBXKDhuVI+ilEOSTCqUhYsz0/419d/4vnpCV+f/oWkycKnnHGYZ3BdAFQsy9zkYATUwhIWtZ51nHBohArCmeBysGWpSIlRKwGUMU1HzHPF8fgI5oLz07/AtaAsz8oz9fu6zXmY7iSyg5oWcE0agUKZ1YHOk6W3gGMNRutqfQiuZNHVcRgIy9PR9wSHsVzUE2WakU8f8PDv/2+c/vG/kD79B/j0BQtXVFRMFEIuAWbZimYhFmn8QJOQzAMRgZN4QyTj2bLm4qyBznJCVWnYpHNgYZp0Ts2DAqweM5TAyQzp4HvPNl8mUQRQARii3Gi6lLDBKgc5ajPc5oBzPCLOCndEHpJcsSZDso0KtBBz6/3GkUnwXoVnKF084zd3r/PR1Nq1CAtO02j4L0roEInypuCKNDPyxPj08YTfvnzC589f8OHjF+T5CEYGVQkjZ/iKrd1E2OzYTnnzZNV28PTPt8kflgBR2i4WW+HXCDTBF07c4lttTQlhQBmsSZk6pI6wsXuhYjwz7NAEii2aj84OgAmcD+B8EKGBsqRREQGokNeEC3au6SGEDWJAkDd54p/9WWe4IkC1eQhKCPACYAFQwBrbrikhxs/S8kcMMZx97Ctky57c14ReldX2PKxFc1nbHcibl/uIrK2OddyA3tqub2TAX2tR6goIQx5E4TAI3gsKQ5aYXH+V3xOtcACB3IVNBDWQsB+kSXqVmPCEvT4L1OpuGEwEZDCN70h0G3Fiz2LcYIYlwrh7Ij3SUpcwGjtusb2mOGglpFSlneY+aUqEQK+ZEiISraqIcMLUp0T6WWu52L+ur39DZvAtylqA47+sn9VkX1yjgguYSDwepszICZiyWI3nDAlto67eaZIQOymJMiJRS9ouSgltyM8PZ3sagcdtxQWWyOkNF/5zg5lOwcXGCASGICoj/PwwoavBnSVNN8Gt4XxjKiw+JauSeARfiXvp8O8MCrTj5PO/CafjUth3UqqLZE8TtXkSOuDi0jtjvRZeKizofHa4IzCFfR4BI2j1bSZxCR6Iikj30WDBE0tWWBG8mpCnA1KekPOMnLIKuyUPQ1v7QGxQE1SuBRfbwoiGY0wxkQBOKKWilIqU/sBzJgAHlDrheDzhMD8AmCSptjKIaSM8UzufqCfaeaTXukOowcdGf63PAuPc5U1xipzaAroCZlRGGHy6R0+r2xUUzvj5rw3mYt/jtxsUECuG0uhCbjTaWhkBYa6EsnO6rjEA4QC7sAf2hPZxXsPDXmenjACaRae7iCttArgSopsley8lmd9VJ1u7Pn7a7u8944q02RadNtZLa+JhpRDZK1uCgn4d16M25njXSyrcrxvnfoOz8SzbqGtzrLc9f6+w/V7B46X6V/wAbqdt4mttHffrWfGRb1yuz2Pj5W59f3MM3cD7mm8qzMPcrY3ptvo2Nn1veQmcfdsS8ZZ83+rTeGs9hXurc8146Pbx78/VBX7nwphe0t7t+/a29ogJYBU2o7g8yCMmeJ5CQEIzHQA6SrJqTHpOqTAy5Sb2qUV+SYzEhBTkQQUJhTIqVfcwLYWxKM1k9LLzdFu0I7MIw5hVmN3Ob2PFm7GFWLp7LjY2xcfSmMlwZglt4DMEo1Gh0mEGOQ0h9m7sT3bnbrhMCQGLaIAmezE5l8f1ZxMsCn1g9wmNPu2A2mifQQrgYzH6EKEdYiA3PsXHnjI4z3iYH/Fx/oCMBFTxBi4s8ikQA0kUEZSPSOmAnARW6nLG8/kJ//z6T5y/fsXT079woAmnNKsiYgLzDKBing/qAaOKCAx8kcoaSWlfS1pssq+iXs3ipJsxTQ+oM3A8PaHWM85zC9FUWGCNVrSzLaRME1cGJWlDPJmlbuPxRlqPzCjE5Wq1C9HbYMjgqHagJXcVRnQpjc8hAqiaIoJQDwfkhw94/Pf/jdPv/wvpy3+hpiPOEPnIRA0OQRB5JEdPk8ZvmexJHo10sz4rLhGaWFzmRCyw7Hlps5pxR4bCKoE8NleRfUj6KpF4TiSbK+lAAoFIjG0TMwoJlV6Hw7Df1wwuMeJAM+qzJbWt6UoK3UMy42FNlGc1ZYTQ2ZYbY8+6fKT/w743fiSC2IqfHKsLfIjLNGKOSlK+L8kcI8HCxslPMo6cGYcT8OnjCb//8gVfPn/Bx8+/YJqPqMiguiB7fh0FfQJAlpnjtvI2OSIQ2cxwf1zEzZfXE+wMhDNxNqm+1Fc61NBmXCjTnHV900q7foe/LcFj0taF+Uggyi7AatQeYSsh5KXSITHb2GyA0M61KFA14fMYmmPMDRE3VUsO2XsycFAisB+sdQPArzNWhljXwpe3ZyAu9uJW4gojxA5MzwgUG8O/1TrtWmE/NfaLtSVhOXSPUEJKgfYZ61ClAgcEZMqMUUDjMrD+9V4exQaXPDwTBA/axxg3ESag3BlX/PROsBx2W8vZrEFVALqh1NDRwgknCq6+PaJCH8pmPc6GyxpcNG35z/Ka0u/XcFBubDquVQ85I5KE6EgaHz/nhJySugCTh7YBWMPWZLd0XxOQ2ytpeFfiWN6y18O553i7wU+vIMPwPVhkRS+eIT9Ep2AzQiq+U5uCI557CH1SDqrvH79HvPX+j9fUf5UAi88ao7Xa69YdwwW9wNdwbE4T8jQjpQkpZUzzAVOeMU0H5Dwh58k9akRnYjhDcckocNroc7S0afQKa+xkcphbzgWlCDM+TROQCKUUnE4nHE9HzPOMaZJ+klrfXBPAO5NJtJrPJsS6JMBfn7XdCRrhMsKgj3VQiF0pDDR7gGAY8BKYfSsYX1vCv6yslB2R7rWz3p4d3hvnr1NShHr3aOfY1v44Al069Pc9hI99/2Nf728r9vUt8dufIXR9zXjHcX/vZU/J+e2F27eX9xzD3nreq2T60cq3gaFb+OVX1P6CMf1587CW+Chp1GZEeTtSGpW4gLCAeAF4AvOitLAIMhO3qmPt4tEnUt+qyo+iAsWihpU1KAt62lc+hbZXwXWgqaGCZrZ2jZZWb3lJVitW+83LuM3CNgezj9OJJRoBIALUJvkUY1qJXiBXViFsNYm3JWdOJsgWZQX2LpCGv2KAS1u2UQayu75dz9vCjJK+PIHmA+bDEcfjEfM8ybwaHgu8AZEa0KhyxXih5+dn/M9//w+ev/6Br//8Jz6dPuDh8YB5PiBPk/NypRbxYCZGygRPLO1CNBF6l7rAZQKAeCzUilKKXtUNMlOSRNvTfECej0jLAqIn6XMtOuQNL08IHFEtKp/IgR5XXtTyI6B5eK/hROnLTkzFYb4H+pDI5ZIJWWEqIzFJuBwWHxTKGQ9ffsfjr/+Oxy//jsOHXwCalB8pIFRRFsCMuZRXGWUoBF1PaF9VJjOeRyoXlMgerLAZ5o0EGDp+g4HEoqAQ+b2GszJ41fGCzICQZC3axMi+Mb6YUmhT8lAAhBJzxwS5QvMFGeQTV4TQ/dMmu75kVL5XTLp14Ylbzv4mHLT/0fa54gLoXjTjOVIYOZ3w6fMjfvn8Cb98+YwPj484Hg/IGvq65W8xftvGjbtG/EY5InqB3DgxA37erkGRWGdBFSptCthrw/MH/RCIOD32zw+0MTFnWKPkTJwKs2SLgpA8PMNKGXHrAqi2qwemcaZ6pn0lgBoFXfbd44kHbwdXQpj1IffPB0GWtWkTMfCql0sQUHzvBPJ4fPTftg7cnXpuIPBuYxhG4Wh/q2f+Cclczmp/GG2VXhkRL/SbDVHAEsQfvm/C54ZgzxB1G6/tkWGkQz9760nAqMC9eSPqlRDtgBz7FPZnH3gepjhjRJgfxjnAcrzfEZ+jwG2n/NWY629THHv3d9Vd0wqReDy4EiLnQRHRW9uPMfRbvZdWTfHtHQdrFBB2OHpFn61xO6DEMTOg+Lpys9aormToFdAGe6zEW2SoDCeP54QR6VuEcJtk+FjanDVry+uwHN12Lz877g1mrOdmdT7ps/ElbJNxXOtKAeH4RZtNpLkXsiTFS3lGnmYc5iOmacY8HzHlGWmakTTmrcGq1FmcnN0a7wrPMa3HKLfNgA/naUFZCipLiCgGNFH2EcfDAdM8YZoE5imtaZA9hcKWEiL8unm39XODcRrXzuYEDdaUd+n2SKxqa0/Ys22N+6l9rWA8vnuz9ecN5/mtdEEr7Yy2v/3nnbbi3S0lhH8G2vQSfbY3roEU8Wdeaoxh/br2rnWloZD95y+N59J7r4GZ175ziQ7ae+cS3I1rP75zL4xfa2+vj7eWa3Xv/f4tFUGvVfBcW7+9Nrbw3E968nrZFvLdX76neY77OZYo3Nx7563a2ngyXPo9Hmn+J8M8eSlc9l3CSJthufmesURhIKmyAqhsSghChYSbdjqZTRnBK1lH/DS6pKI4LRxp9zAJcA9m9bCwuPKtLvT5JoaiIp8ON8dgC6R+lt074UopIdeErEoIM7SzpN9ucR1Z96EW7mocn4mnfBQtjiXKG2x64rj1vZSBacY8H3A4HDBNM5hLTxYTnD+PMglmyY13Pj/jf/75P3j++hVP//wnjmkGHoFpnkE5C2/EjEMtAAGFC5CA56c/UEzIyuK5CpYoBgwAeRY4YuHvmqysACm5UmSaJ+R5Rp4PSOdnUJpApbbpWs0M2yKjcgFpgmSihFKKhn+SPlJNq0rI+QZdC52TXkYo7XeKMgRlDiVYrowkfij+WoV4ez98+RWPX37Dw6ffMT1+gSSKJ4igv0jueAbAWWn5IAeM9LcrTEwGs8eX2btWTy8TMv684ZoEYvPurcr7I/C4WjeZPBaN9wtzJV7rAKopaWSfMJPiEAsp3xOahIRmCBulRMO4Ln0n2oSRS6XhWJ2wHZoWuPHsr9ZrjWxiINcxDnEMsrgpJZxOR3z59BGf9Xp4PIkiQpVoVBuW8JD8Kwx2vbxZsmpfnKsHXQNU7r96MZFPGjmf0BaHOhiQmGFBQNFkPtwBr/RxvQ6mi+gZePNwIA+LasvJsGS/YzxmKO4YmcsK2Q37hK2BvwiabPNxp0Dok5Y2xFm5qrtgUzzYuzF8k4UIYUvGYnkm6iDQUuEBRYS4WocmkPA5fyGh81cstzCM9xTBdwyom5QjG0DwEQRpZuqwt1pLhP20KcCNDD2BKCNRDoJ6r84PFjtc/MDohqfWI1vCKI03FwUNHquOjea4JMSxWHYbxOBO2fOIENBtg+uFV/qAwTBae+0aLMZvQbHc74cfaU+8bdmaN7UAUtyUsoRkmqcJOSVMU0LOSYWyqUueJd5DCvdoe6tbW6f9NqzJLVb+Zr/ac022GgSorMoBjLDVvB5aiDvzVgvhaoIiQpgoZZ5KyxmBcDbw8HeE7Ziwj0vx+91oVnsI/lyP596GMY/1RqXA1nM8Mpar/dn+pkCcCwpiv8+ogqdQ4XmcCMIgZNIwXrNaXh1wOJyUoTohTzOm+SheE9kS7Gm7tSpcBSLUx9MrCRoKigJ7sc4za75agZTOWNKCUlkVEeyKCGHwJk8EaAyU0ycBjjsG+NVrdhk3s/efe8+IYQ2raVtualQ/dzp/zxk87vHVu28srL3eP2PAjI91Tg9w5Ra6tlq+oy1l3dA2sFPHdj9uLW8pnIsCr9sErNfb/l4Eta9RlL2k7MHj9zIfP1JZnW8/y8/yzuWaovx94FB5KYv3bn0xfhLKSrLIRKgsYDwD5av8kp8BSkA5S3z9IAQEkccel60kCWKNbqq1oPAoI6nBuLLrYmOK/Qq5IYCgINCxaMQIl8OU4nHlW6iWTflea9p4g3Hum8Cq62f0tJAQKhZOWeVPlSSMVVXhtSkkCCIlTBABMwGg0u575zhcxluN4WMuwcn2OSIkvCSXTjmroczkkRJMfuVCC+135IWM51nOC/741x94+uMPfP3nv/Dx9AGgBMoZeRIFwVQqpnJG5YLpPKGWIiF484JUMiqzhmTyBVAr+YK6nFEoYTk/g4hwfn5CnjJoPoABpDxhmg+Yjycsy4Kn+RmJgHquztOB4/neaGMxYIOHEhPlio1Rd0SQO7v4xpRGvBU+sk07EQGVgtCb1E5PvEISCFnlPFwLGAn5eML88BEf//H/wuOv/4nD5/8AHT+gsHoJlDOINPdgVFpZ0j1U15PEMe/Bgc83BjqVWdqIMsQIa7pHe5lkCDdsyivjsStgeSZApAJ4qCyK9D1u86R8dClFc/DpSG0wYY82rrJ9b38Eg7crOJW8P7fj3lsMnvbbawFI20oafyzyaJHPqVKXGaCCaZowH2d8/PSAX3/9iF++fMSnT484HSYNm6YwzNxk5wz1surlcbeUVykiVtaGFwWHYbd1dfRr1y/22oKrf44cQFh3ccTnTfjaM1z2jLPjprXyj8AweKxlCNBD4DvBmNgU4jFbr/XZsDv3xFfrOeoFKk0ZEQVXw4X2tysoPH8Et8M4aO49nrMLCdZKCJ/3K0xLW5oNZPIdll7juI871sNW6Ijr+mYMnQIlkeNRVpi0UsGe9McPAFAz8g9nhrjHWZ+1BTv0oRpkCsK3NiJFxhbSZgulcPjcELSHQ2ol9HItOHfrsCcM2cIp/rdV5QfHqqNRqhMm1C5Lb2YHoxEP8IMyYoreIoF8jPtlo88/yyuLrIcps2I4piln9YogF8oaTgYQcHVqIBDhq4FVXygSJ1t9UiINEZ4b/HC4Z7H514qI+AyrIqHAFQfclBDuERGVEo7L9RkX9lq8S6DD79pGZLxWoxrw5Oa4byQ4rAbSsTehjPy6EjzyNn3RhK17wtfh/PHq7F6FeUq0yLwAO9EtPFHKJEnMNSfEbFZd8xGzKiIO80lDNKlXBBk9U5Wv7eemzWfTjsW+x7EUXiSJXhFFBDQJ9TyL8mSpC3ItmOcZ8zxrH7bDjo0C0FH5fHPhcc4v4TQO79T1Wg1nB2/B5y7OvELsv+JM3lRAvlPp12OgfP3Yal6FK9p5C96BYT+0MRk9vZ7Xfq79/MP+XN5rhHGvN4LhAvlc/xbfuw1PdTXoe/ePY1Xzncqqe+bhe1AWjHP9UirmklfHW43zvbwXtspL6rr3nWvP/6QpX17Wc/d+e+299/F6H11v771gh8O/sTROkjRnEUMUCRaO6RngDNQFTAuYFxUsJuPQJF0Wq7jc6Q/h4WqV+POli/4g9C9t0SsmA3GhUOD5ohDJH+dGy7hcxgyFSjMeBasCI5ynwwxtyrIYq/dcJsBBJqX/ZUooSsEWFeSLYFFC1ypzCldOgNEUEslZWPnDfofzQ75oHPqy6rT9bYJwbn22tVaDmJwzpkkNHwkuq2pDtlyqgRbU9SnLguevT3h6esLT0zOWRYwyKCXQNCFNM/JckM8zUlk0lOoiYUo1VGkii19Nre9cJddgKahpQSlnpJJQyjOAWUKvAkhJeIBpPiLPZ+T5gFoXMT7q4Iobv+Hkrwjb2RURFGCAxWMirK0JyW0ByITtRsON8hSgyRqDsgMQ5YeE8hJZTlFj6DQfkU+PePjyDzx8+Qemx1/A0xGLCueJFzSAtJwQzjC7INvQzfi5uXf0/igfND4giFnC720vurJRf22+QG0y2OW45uEeuc4GW9ZF4ZOboZ+923jGvv/dd+5xR1f5xbKm419S7sPf5KDpOV1X3Wi4FCxKrPk44eHxiE8fH/HhwwmPDyfM8yRKOJMtxNU0eeELzrtXe0QM6P2+YvMRJ4UN+Pukdl2bA6NqFnXV8vFwD3Berd8gB+jAritQm3DWmHWJ1RxTP0hCmSRuZ6lHFBFx2M5sG9WQ8DANW0KuIEyya9T0b3tHxBjh4V3/3H7fBWGexDfMPXPAMlvF2olz/NchlKMj0TWmJd59awu3agSahg/pL5aYbHqYEIYQJgGuVmy3IXKuIMryTCJJdGUxxX1MaMh43HfQTApGtO3t/LuXvSe+IqLfF0gxhg28WWRPxxXuidK+rZg8mBuyFamiiC+ZFW816xcXaMR9b/jDCDJ6uVb7Z4lF5lDCMQGHSQjceZowZfGISLnlhiClVDwBrgsZnYzR29T91hQdfdLfdQnu0K02mJWBrHnLPwK0vePEqHk+BGUyD8yUWUZJzFN1H45h9thwvzJI0RNu8KZrygz2RGgm+HsZLuvnM54dI8h3yoYLpSNGQ51RcD3eF2K1t35L6hLTC1r7sCXynrQVBbUpZWVADpiPooCY5iPmSRQR83xCnibM00EVADIFrOdpHZVT3VyxozCwKUPtb/h5vpSCslS1ckooarZT6oJSF8kNofkhpilLaDLzjNiAXRN6Cxq7tg588Vs7V7jNofEU4XgguxHXkOO8Xy/kOJwxhtez38dx3iv8fkmJCrR7cPw27bAekzCyW0fq7ZT3a86dtleukIC7773O+r7N094YbB7uaeN9BYM/y8/ynuW1e+pnuaW8jcDo25R78eFbtx3PJuuHRpbQZzw0UzUPiCd5ZnoGsSRBJSIgFa/GrJojRWUhU6vJNkzWgZ5vlLNIQq2QesISmWGpUmZOU/YjIqPV1OCnlhZJgpUOj2Pm8J7RREb/NGv4GO2i0UGk1uywvBbKOyywRNy9URKUjpOwPElDNFmuCA1Jk4Tnh4YuQpLxo2hbK03/1ppuF6NP2hpve7eyjn1ZnrEszzifzyjlLM8mAmXxcBB5hOR7qKXI85qDg4g8FKoY/siVphkTM6bzGaVWUP4KkNLukyS8roAbdkEF1pY/YlmeAGI8n7+CwZimA6apAImQ1dANKWE6nDCXimORBNuVF2A5o5azy0w0NbHTK+TKHuX5IMmla61NTAD12O7mOvCIgxzExYVGUkdpvP2ACsoTUmKYp0upBcgZH37/T5w+/46H3/4L86d/YJkewCkLb8EseaK1C+NO7rnmILencH/krYSh8bF4bpbKQInGcKxe5W3sZMZ1Hm4t7usgUCcSvlfboDCNi+6zZTEZqSou7ZPZ63Bd0CA33d0B/XJtb5XuKPnzzxTyf6vyfX1hMjirsqVywsPjEV9+/YTffvmC33/9gk8fHvFwnJEJYC6eH8fr6BtznHpruUsRsVX1Lc1tChMJLb4ZemAf/xrrWn0PzK/BufzWmG7ADhhFQgrE0evCt1lU8VnSyNAlUqTfNM52qAUmODVhVhRM3ULgNKZ+bSF46eoTUTeN8pZgd7xgCAPrQ9wQiwl1L/QcXsMgONorW0qmdy/Whh4SfRd6ZD/+0ja1VrEzH/eOIz6+jfYItSoDkmoHtWP/urpM4MPDTgvCc5egOfyjm4DYGztOTRPq/w6H5bWyVvj08DLWsok/lIgy3TiPzzaKtR8A2rz4mOx7UER0iEMPSqMr+nXvocJnsqGHn2UohmusjIK5UXAsv7W5TAQnEqec3RvCklanYBXeMST6L0VY735bofuAx5twsCfJ+gU23W2D7DWF0p9JcTcpoxKYFP90ZYTAaFM8tPBO0b18PAP6cyJadPR7bzVvNI5wLCN5atUOuNWYgP6p7t3+3Bn2affZnzFNGN7joK1zyNbQ50AJT1NCuCKCEnLKyNOkl+SKyHlGTvqpbtvijSBEjYXCqkNy80hAb4+pfbqVHRaQJmBkBnKeUGtFzhmU4CGZcmoeER4jdhDGR4tJM4poSrn12q3PjjjXtnZbJcy1I1evQJ9YYfj+4NoojmUHofS2suVCPZtzcl+Je2RLAdH6erl9+77GUdvneSt7XM9LCjnz1ZQOPYy2Lq/7bs/EsewpIV4y38asb7/qs7TqW//MZs1392VV84Azby2vFSS/dm5X8LpDh6/PgvV631NGPPySuu4d90vm6i0F/fG8eau6t8a01e5L6n2ruv6KZc8Q7VY+9S3n6V7eub0H7OG8vTrX4121Zk9e6hHiudTCn/Z0UPJOSpJqrguIzwBP6h0hxjZAVpoR8DyekodZ47mz/s8oSveZjW7jTeEEuRvG2HdsnBpsYoHxPNc6XVYyWL06Ld3myP8Mz6xlL1XlVdS9YzU0n310ChYPybglJjbpsHkBRD6fGM3YNhhQUevDlqFHm5/1fR/tBdCw8ZZSsJQFpSxC0wLeP6Hh1AhZQzNJuPHqdac85GaFKCcmTEjThHSeQClDQjdNSLXIdw+XGsZZK5gYtS4oJWFZziAiLMszAEYuE4AssryUNBzrAfPhhLI8YTlPYhBW0jjasH/YaW3zGDEeT+alY5CG+QqkM4f6dAQtZbPNhcGh1J2IkRJAJFBSIEmyTx9/wcOn3zA9fkE+fUTNkqSaUWTcJM3VQfWQKHwLPHITl/a4M47BYF+/dPtizbsZboCGHGZXQjThd+DHQ1u1VqWZm6ymWjJqM8aLvHA8l1MM2Kz4Y+CRY/Fd0uGAgY9RpVe3wlfwuvfHerHBz95anA/pYKv9oi00GQURUk6YDzMeHx/w4cMDPjw+4uF4wGESbwge5QeD1N6h/I6+3u0R8VasD6CbsGEHP8JsWzcmWfXoVbTfrLvTcnBUjrCgUaD3YIhtK8d+wBGgHDnqwg5J9QJI+Ju2ASW0TWP4kxwYhLZb4dX1G9U5y3ZgM5pGvQlZoqCpoI8l3nI62OZsMbNjXMQmpPLNtxJMBaCqa+FD9Ih4y7X/NmUbmQANicblk5WIG7b/49b5uGdDMgNswgCwJOvRgzqFw7cXcG8RpL2gzmKNC21i5JcIbJMSAJLgSMM2AbLm4cAxIaZZnQhhtJ4HI47WygPaJmS6g8sOLLi1drNmjwgaSkS+lPDXflR2N98I+5VbfH7oPmrDoO4zjm+0rP+phdgqFwjdofSHMCDGKYRZPSEO84Q5T5jmjJwIk3pCJCOK9HClsH9IqSdTKEfrcTjdoLs/YUPQaQnlmlVVrHdjEB2BJbBU0XB9UxA0r4WmfKhm6eEeDuzWWTC8PYZkKuYVUZQBGJTU8YDcmPNLDPW+QKURrav6sDM3O232xHePI3RKL96P1hqx/pVCKdHq91L+/+z9W5fkOpIuiH0GkHSPiMzcl6rqntM6I2ktvej//ys9SGtmTnftDCcB04NdYABJd4/M3LuqugqZHnQnQVwNBrvAzApKKWAwSN18TdOCeZrltNR8kd/zpVNEiBWO+drc0xmtffs+xD237eOMnDdsW/E2F95AiVEwoxTy4OzJP80l2bPWAedpgI9H+5gzE5pXs9saYdsvwrOuqnoOk54IaMTYPnDr2OdzZcwdPH7YtcfBjntG7BjHPS0Q7eC7nTI8pSWo3wvHfHG9HykLorB0fC7vw/HYUZt/tKDyR8zJR8r68en5Pe4fKjGLC4R/sPRRBv5HpX8WAf4/fjKc/a90nJ4ZnybXsKM+vuqMbwUrajQ3IAWoG1BXEE0gVP2IaJSS8qnEftfojCbyUmEkhbrCHuziMnau11kzkRZpnLRRCaW0mgnVGu3cH/Y5H4uw73aHioJFhNHr6i7JTumzxc1SS+lin9q+q41E6KH31DrnQn4QKa1LcDeyJry2AJNxigcB6uN594lGo0RI6WKLRcnYtg3btqHyBuYCk+9ldX+0LAvmeUZKCaUA6+2Gsm1gMOZ5xjLPeLm+YJ4Wt/QQq+cJy3IBQFi3mxwK4oo1ZXAtKCnLyfhUULabwp20spYCYMV6+w1cC3KeUOosBjrTBOAKIkLOEy6XF6GxUYEqzrFuLKfxoW67xlUiYFRdvpCIUakgkeZOGvsEPR1m8jun23yECQk5eHUJEhFiTFktOSYgJcbGRWSZLxfML5/w5X/7f+H6058xffoZuLxgc9lGRSJCTovAZa3eJqglEWl72qHrPe1LpO7X9ANm1CCXhfXNeGCTswA7iwhzcxP5Y68v1FmruGUrtbR1bnXXilqqWkA0a6ZqfAi5TZHDcnN7H9dWVVmtKSGh4xEsogx1uJsybUzlQ9iQMTy2pD7L/5HE0FjLAEptLq2l4KSwabwBY5rEHdNPP33Gv/3lT/j1l5/x85fPeLleMOUU5BPG3JkbAO+MYPl6Dzfu09OKiK5IHZ1RGBC/jyfeujyhvHZbseAo2+sqJwcADvNs17gNehuiQGA3LtR9N11jA0sJSt1lp5ZHBj34e/Z8hoZNOAXX3Hk5I6OINnFN6370GWoLQi7uvseTsqE87MvrBSE9w8vMIpDmDywKfp7w/9EMwkfKa3uuueWivSJCN+S4R/ew3Y/KoQDgg+3SIXdaysa+OuOdAn0xMrx7YUSbZ3RWSAKm5ILa7nSsC3INXCNKZv99BKP35t/4srNx8t82yk50AlDzzH7zvZPuDLkLy6wOIzrZ5rfVe2/qDoUy/uxfrM15OhbUHO0l/obCewqWEFkFwDlRs4awOSE449IIl0Yo98o8BOBsaw9op1u69YEw917I0WzzwfeI68dsvYIY4fsujg9zM3Md8Dw6/H+ghPhocqQRbvGRIPBbIF4Guy9vpCBGfDbsl34dFbCCMzoCFsF0+sA1lRNbECKSgpA/p6xB8Cb1RZs9IF+esuDSQQnS9zTQL3f6VGtF8mCNhG2bME0FuWRUlpgo4mrAlMiDKz9nFD4+H0cw8gzMsP3h/dy1zbM98X1X749jcFS+bVn2/r3rt6RnhdsxjYyE7FEj7rpfpmHDjt41eL5DS9u7JlL5aJvjeuvbOjJH7HTJ2JbvFbZaPY+UNPv94MfUG8s6a8uzZTUYBB7hwkd1PDsuj/I/W98zZRpNtgOED9XlVGV8w+/fL/pg/30yfS9e+FFl/agyzmnsXij0r/R8Ot17Pkwz7fmwZ+fi2ap2a/POfP8YPrvJH85xjG9bwwoP/GVsC5tgz1wcjfwTufyEuMdBro6Ip/yVCNnvwdoabr97Txhy3e2h3V5sNxjY7bUxYK3VFunxY3mO0UrGT1ej3VHbATkwTOFQA11fjam38vaz4XKNpjym+Hj4TYqChzl6kMj6zv14C68mdHOjKSQwsMmiwMaLJY8lIe6XpF1uEQFROMzThGkWS2TWA8DyPikNPmFeFjBXzPM7uFZMeQaYUbcNAKHWTQ5yaT/dte22ohChbDcQQa4A6lSczs95AlHCNl8wTwu2vCLlDbUE2ccRHcbsspxq8jmdd7Hy4TDsgf/Tdzs21Sm+Yer03ZwkTmJSpy2mHknLjHy94vL5V1w+/YK0XMF5VnffYkFBgLjHqgGXEFQiWrt1sDugp2vV8RJMdmSv6KowBBH5VV/NIbZpgG97r3JFQurwj60lc1lGAIjN8gqudHB80a29eEguxndhIBwQ9zkM79LwuzF1oYxuAPo04u0djg6w9M34O6Itp+G1XhN31NbHnAjzPOHluuDT6wteX664Xi+YpknpsnEPaMGw9W5f75Pp2xQRZ3mMqR6W4oFIoc9vV5I/Dohd/v3Gx/oO2wk5Hsb9MA3MDXq3NIQM3zTjp5lpoDVWTow/GptOKED3X4iLkrkESwfbhMzPWRHk6dYSFtshjM0grGHmYBFhlhb2aad09wuC5ZQ++rLjph77+Y8gfTUhcVJzrKQBbLP6FG9IQmeDZWwresHDPfzwI4g/QxzWDgJES0xN4Hp84tNgoQXDNXzT8GZzH+YbisY8OWuMCzd9s6zf1U8RFraNZhSyWj1x0XyEuTKM1Ii1uPFZn6Cnzdvz6MvTSjmrdRzDTqkz3PsxDME/ejJXIC1YcExHY2Soc5oSlilhnjOmKWGeJS7ElDMykQQZRpt3UsLaBLbiQ78JkOUkjv4ms5LYtSi0cxSg3Es9wyJrLv62E03tdEinOOgs4QyxV4VVhU2znqgVXKr7r3WLOX1uFhEjE9QTs3t80vps/Rl6qGX179h+Oposn6Xz9XykdIifqFxpe2Qk4nVfD2vUgCkl89gqXZPbCUQFiTas64atrjIPqFpUWM85S7C8PAnDpSe/OOleGa2oZGD1e4udcdYXQALh5RyvE/KWUVldMHGIg2L4xsY9MgjfKIx6hKoMnkfCXgkEb9eowDss6+5YRFqx559jH2no87gvjnnOBDffKsAbhdkffBuHNqdD/wHzry1D4Hv6N9T40fYd1fKjBZ3n5R3jnr1C5V/p7zr5NPHx/d3WM9z4F/n0ofSvtfGPmr4N0GWf+NvPt8r1wq7GGt2w7WNOP5CpBSywbkbSeAc5i3yGyPg0o++NvnRRdBN8aoDrlFgPK9thIvNskUDG48H4kFYOtM3mqYKUX27no9XFUaqiHDk4d+I85iCsHGkat4hIso8V3kYXH0K/ewzQTayc6wqqckJdLAvMnZUqdFgFxyKJlYDdYPhx8QheLtOyP8dxHp5LxlckJBIrhcv1istywTzPWNet43WcJlb6OecJU5rEEwk3RQQRYV4WfHp9xcvrC+bLglXHRNw8Fckzz3h5ecM8X8ClIucJAKNsN+SUUcoK/g1AWQHzelAqWONRMFfccoYEo2a9EqZpxrxckVLGlGeUyxVlfUVRXmtliTnAsKDHOrQ+rhBeROVotRQwVeU7mszJcLVbdAdaUp4luAWBBeEmq05keKZiK7WCE8DLG9J8wS//4/8uSohf/yem1y+g6QLkDMKqa8/4I4l3lzjrGhCXTQSZB1MeWf+i9K+zTjpQFrDyocbDusWDEbQhf7cODLYsXxCKF3P1tQms5EiHs8F/lbFKuu7VXMP4QlnnWn6ot9HkZp3S1hQ0PowoaOyjkiW3aPrbEywM6HglZQ/J50mGVA/pTROuL1f8/NMX/PLTF/z68xd8envBMs9IRGixhIEuaHLooqklptQg45n0vGumJ8uMwx6Zx04AAyBqp1pe2tXjbx1NqOw6D2VD/pjinfCdmgVE3IzM6sEXlC0uFW6dEs9N/Nn6HZni86bKe8ZcRsEvd6O2+8Q8VkjUqDqjb3njv67ssS26WcR5GuZChoV0KP/2RJCvld2dIZHYs4jmXnKnYCIH2By07ZkQiHsF2ShU8hp3AoSTtsbnFIzsHGzGgK/s7WgWEq2sUdCCMN8tXzcId9tndaIrg7uyI/w97O/J3SNhI7zs4xPGLtg/XNeh9CCoCUsi9In9d8s8vMRHq+N+vRFFxDb/K0k6Oo17Twlh6zTn5B+xgkhIZHEhtFxdtyAjkRBckEWhZNrdO25ra/PzzD0Pf8e+jbh0VMbtLSB2e4Ldq/1vr/WkrDDgp63v+8jt8rDrkQh5PE7GJB6ncyXE4cfiMzghL8ouIzbFjJuFGOMECn5yZf7VjLcY8xcChdseqXSAwY/sFxY8TxmLwGS13pmSK7llGikzilrFDUGVnThsuSCCxzzx2CeHip898fetJ7vj72cF6xz/WNvRX0/rHOYxtiVej8p59sT4UR4r+9G6/vDpa/s7vHZafvg77jT9OEQa7z7pezRv3Vg+oTg5wtHPpm/d68b3WvN49/xbBK1Hcx7vxTxnbfpo+pH7/tjWP6LO722LpXNUz761OP1uAoIoKLu7V3x/+lFj9i046dkyP6rojPn/HmDm7zdF4ubj+O68LL1zsla+TXH9belH47V9BbHXkQPv6dzdS1CShsxFanN7bduoi1+4lW3eK8Yd1GU6kaGm1j4vwrfSSKkM89O1eDjQYN/RYox5jyKPfECXW7tcJhPzaEyDZtncf0zwSWwHE8yyJLqO0bK4tWXPc5zNyXOPdp4JgtyCyNyaTsiTuGhatyOakjSmqlhQRF/90Q1MTgnLsmCaZjn0wy1WXrR4ztMMUMI0L6i1YppnAIypbgJLSd5NKUksCm10raLMKNsKImDbJhARtryCKGFSYbZYbkyYphmTxokrKaPS5uIDOuOTfNpFilNZjkKlA7pbv/h4Gkshsnt22HNtByHMOcHsi2hakJYXXD//guuXX5FfPoOWV0AtVcgE0ZSDDHTgyxhtpXV8DdlyQ8gNt5IZOt/JdoxHDxs/UXDhpLBKPMKswLzd8gN35kbbD8A1mCelI46tScjXiNVl64pjXT62dz7O+7TfzscNw/Et8sJvSobnjH4Ic9ryyFqd5xkv1wuu1wterhcs04ycckMh8f2OWpNJtCfJxvTJ9OEYEc+kA/anu+/zpsKToshYkOt4Ys1e7AN+2YZB1Jfva9GSEbP+jt1Pmr8XJNjpPXKBtCxWV/AQ1F2PbJaH/ef+C1v9po32ZFYMR0Lcdq/zKxhOuvaxIU5m3RAZ0C3Eg4xel7wWiCZmt4joN2UbS7S8ONic/tD0HCGZSAPe6ilW87Gd1b+2lcB6aqJWPVVQA8I4kQJ8M1KJa9f3lVHZIA9d6WA3GbJ2EsPcjjTFU0AiDlNaBuQEClOLB3GaGB2sGgzu3cM0uB4GRouJMNYsIgz2StEwTGYpcTKXUYCA0L949RPSIWaKryfuT423IEatTz007TfWk4b5Wnsk4P5Xup+IgJyhJ84T5nnCskh8iClnzDlhCgGqLR0xXGa6OwWLCAt8llIjhinEjDg6zd3BnVTm1/av+bbs3SQ1fD6uoz42xLDGrJzgp5ZR9HRUQVHLtmK/i56Uqs2qwsuy8eFesPtYqHf+7AjnncH9eFL9frkIYzbinjKMHaPULYwtALb9XdpP6nvP2rZte/dGhi/n96+Yvv4V07yo1cwFhAkpbWBk5KkAypgwgDSZYuJk7MIziwcYr4LGdb9h1vgewToGzRKyWTG2mSH784245tF+dfa0Yy6MICWdt9GiBw32MMSripWcKSOeTU6L0DkOfiiUezLfmEfaekIcPJkUCrq9L5C63bgcfbqyTp4/GtMezzWG9xlh5pGw7WNK3DE9HsuPlv39berTP8Me/31Q/Tj9qLn4V/pX+lukf3b4dcHkAU0nO1oFkUR7UEJM+KWUQWlCohkpLUhpBicNPAwgkZzGFQGv8LvEZkVBqEhwCwASiwdKWfY7jZPWGqniVjuUwi1wsJAlKvNQdxdNRap0TSIQEhJn6VSGEHBVLZvDYXar1twoRev/anEDAD8ZTirjgQlVq8Z6K6tbQFOtSGYNXYTGl48qIvQ31yJuQi34dzVriRho2068h/s+Yda4Tmx7MOv7HYEgMpVlXnC5XDz2w29fOVgxbDLHlLBcXjBfxOKAoHHaNJ6EyQNynnC9vGBZrpimBVstIDDqtuL2/o6UJ+fdcs64vrwiJ7FuyHkSGKAMmt7FoCVLnIWUxOqYy4bCFSsxapnAtWBbF5RSsS0rmCuW+QJaXpDThOvlDWUrErdD+wPentggTSbDYN46WjVRvscNhY+WgwZkbuxSJXg7pgVpuuDTn/93XD79jF//5/8b89svqK8/oeQZhIpUGXNSOZAKORmkhVUkjQthlh7UtQVgrkrrJ6elTulRhvKragkR4nMmGYAW/s3kn7XIytO6c8ruPr2qx5haNpRt81iKbsXAYcyI1YMIoQYFouAChXv3fqHKPAQrCYsPwWE9+bqqYW01BQZcaQFAY2QcWT3/rkoIG4aoVBpbkRKWy4LPnz/hT7/+hP/t3/6CP//yMz6/veFyuQgeVWufFlx9T98DjFpqqOr5ffCbFBGHmhwM145R0t/kYBEWYkPMTWAQ6xq/aCLVuoWN35QQfRm2iQD9MopCJnIlRLuX+ueh4ntj/JiBHpjEY9H+LmdbyzzcO1dCuDLhGSbu4D3/3o4h7ObBFTcBmf4tk+MeYDdH43bqyhlTRFA4cQrFTUmQiQn9Y/fuaTTP5v9DjDKaMqK932C8F4a6JKtrEx+0s605GYkPz5ivXTSh0m7TGcahNUB/R7jdC1CsjeBjRcTRacb7QpqGc3pCoF0R8sa+xjLjzXbL1hm669HAfg88/DMmIoiCIJESmDEwrzAh9hkVBC4QDILnRKZwsMDsbU274kh+wPAahfd3SohQV6N7Iswfw+++iLYP2prqcEjganq4bgG/uit4yLfHAXvcMioIojDSnoW1tturn2fCz4TCR/vlPaGrB/0zZaIGmW4WEegaSpw6eBBcav5U5V4pFSlVbFvBtq0omxC6pWzYyoapFqR4GECJ2Ihbpb0NthyX9z1TuAl9Oulnm+umjArUVMNAvw8te0pjdHmgfda2NBS+XwO+Lxne9ft7Qfm3EugfUT6cwe6zJ4jHdTT29+G62El4zxXwx3vSkOVozWA/phFeve3c769dpR/cr0YFzUcE//u98seV/ajOj5ZxRv8eFTPCzLN1jfmfpSXOcevz8B1ufCz/LkPcU74tnb37t+BBPlLXt+CSmJ6Fl3vz/C/6U9LxGDf5w0jbe46n8VZD6EdK2Qcl3Cl335Z7cPE96+xeOq2TG0fpI8CshzdZfOHH/ikB3g6DJEgwaftOLQ+Hg6l2G2b5QLCTdEK6m8yixRQUQaAUEOVpbQdsc9a3kvSOlkUSc0EOrzIoVVANlqoEsB6o3dMzkcbXAQt0kH3YXNaE4LqmaCC1hACH0+JK+7drfxAqEGOIdGP/CZPY/Q7j6vNvj+Jc2hyQ7xN2uNP4NQDtACCLi2lKCXkyF7niVlTy9BYRQqdnL48MpqrR/XKsOKfsVgt1rsjTLDHX8oRUK4iyKLhG+pCrer4VxQdtq8x6EouIbZqR0wRWC4KcZ/1MasmRQKXBzbga433jDeQwUWrXUwJ+oNsi7a/39MiVT3FKE1JesLx8xuXTz1jefsH0+hPeLdA33wAwEhvYBlfzDJD6JOvWKwNO3Sqxz5r3Earxdzo4hM+teq5q5Qx8a5TBEUEPMulh7OgRYBxwx8PwODNGhxge4dgnXY8WL6Ljvx99hjgaIy5vY2Bd/LH4ebfPO/8ZaOX9S8jThOvlgpfrFW+vL3i5XLHME3LOEMgqYKbG4w1CrmYBo9iWsV8Ad9J3WUTERaFLor/fTYjvCzuArTVokMJ7VTeeXlSq24/BUxCUEMQvYK3VTxraoJAKltRIR7VjCezlybW55tFIL3ZCPh8IYtBuObB2tw/y3k0KyGFRCANZg7ACg2CiH+PjMsPoUXPzcMh4C25BOShFgHBfT5wL+XLWv78PoleQWTAFJHLLiJxTt5ipVj0cHzB0KKdXDI1w/8F0sHjHW1Y0s7nvUAa8CvJMIHEj6Guzf68vJ/jI40bIPdNMa0MkdLrf3bjUkA8wiwiLvxCFifF+53MvpI8pIZqrlmgN4aemY2yIMC6tzHNF39Ga883tn5TB+1HJiA0PSj2Jie88kcaEsMBmJB5xBqGUC6rlhqxzwJUYPf7rT01TSmqCe4YnG8PSJcfXbT8QsB9P9I+wGJR6ugeMcNwxFlpXPFHuMU0C82KEmjM1cY1q2feg9BiG6RBPPZVOx/JxGsdDTlUVbNuGWqv4kuUqPmAdlxDaaTdWpqcJqyL+b8qt5OXlZUaaM+bpgpQyGDO2AjDP2DYGkDDNFaVW2T8SaxkGvzn2wBkc67MT0caYBRipeiKsFOvninVdsW43ua4rStkwzxuIMspWUbK4lMqpfoDm+EAaYXKshDsqEIY7I8wBSuDb/WBR1xd1vwOR5jj69Hnv/35UySjgvPf+R4WszwjOCQj7W3tv3DNHxVXMZ3jH7sVnIy2dUh/D5KjN8bswK9+Xfs/98nuVEz8y/Yh2nPXnRylj/oj0vcqIf6V/pd8/fQ98fiuR9Pule+strscfgTq8CBf61I69ZM9k7pcyEmUkmkA0gSAKCafXIq+qri8JeqUEOVM94D1VXgBJLDEA9Q2v1urV+msufklF2WZpqkJ1843vWqqEREAlO02fTVQkRvwkAvbISzYlRL//Gr0O9bhAxRQQReO+iWUDb3LiOlWhc4krSC0fyP3Wq/zI3TMV5ROC1US0iKjhu70b+O7zmaUm+2AVGAWFUXxXglCL1QPQLB3WbcW2baKEmCe8vr7i9fUF8zwj5ySHfrYV2/sN2211Ot8E/sk9V1TNu4l1CCXgSpgxY5oXpJyxrSuIMm7rDcSimGAw+CZzmlIS65TKAArqxqi0odSCvK5i9bBtACegEhLEhc3lushBpVqw3r6KhYdaZJt1jsGjkGkcF4bDApHAsIC2Wle7xq2HIeEvpRxX5iic5SwWFTK3hMvlE5bXn/Cnv/w/cP35L1je/h24vIGXq8zNbQWBMZmMNWVUIhQV8qMUECTuiKgEJ5WTGD+JMP/Nqqhra0ePNrmKy3RJFHwpkYugfJmNkKeyS1tXXBl1K2IRUTdd6wg8nypNAs8oc6Pr3qWaYf34OlB8wQy3Prf+stUR1tpAoJO2oXovknF93p+/B/pHvEwseHt9xZ9+/RV/+fMv+Le//AVfPr/i7SoWSoDNa1M22dUPaiaZPFeKpY/tfs8Hqx4ZRWc3ZWLOlBBNyIKmhAh8J7cCj1vediy0hR0E3gyFXNN2V1nUumQ8N0U9vWxmhFiWad/1nKy5aXKfzAjvq8C+27FHTRzBFRShgx0w7uCQR9yD/Q3uf3EbY18Eumn2J1zh/SVvRxvZqNjerQ+WDLEFowKkEwwMiqKuqLtrLz78mIDqfrKzDPs9E7qIjM44EjoQtz4S9QvS2j3Cc3veCy0f9v9AGXC6NFj3/Th3AYZam/aVmmIutvm8VS3fiAXsZhOYciNQQjvjxtXjigC7HIS4oYxOiAVltHHAyNoGFdrjijz/jf65v9Y2y9bPMM+6BqwVnknXeiNUj1bXcfpbCQv+HjbAXbKNDe1KRG6llPVkTU6EnJoFhLnU8YUdcGtcgmQLnuL82K0WW4WQ+hmMeO10vgYc7XB9JLDtAAftcVTkxeccXjk+ndHDdqca7fFSGON4P/ZqJ7TVQejXIHAE2x+H5/P8HGiKdq9XvFQOHxXkW1DuytxPh9U4BK8WRiD1+6imbduwqdB/XVfkaQWlFVNZQWnCVjY5qJCE2ti2jJzZGQlhUuH0SStb5q25Vaw7RZLHp/AghQWVN9RS+ntqgt8YSsQY2Sdr/QQHD2M1zlG/799LAc9amYd7VKBluMF6VwUfQpr8/QC4fRQ2z/bcOzXADgYcPfP+9yTjcSWKxvzEn23yAU90beXje/HZEV1+ry+PqYKPp3OFzjg4H6vblli8dvV6vr6ee/Pb4Ts6OPjgz6wkmcxRmBcZtn277ZRta9cxnXdvPOKz1o72bLTOsXtDbopljLlDh4CeWfBWa86xrXT35++SnqVvfqQ1w++fdHzJvj+T39LZeh7v036C/g5JxTHt1+TBWnsSJu4K64EPjgfvGbTvSHG2urbspm3kT2O/zvGF8bYfa9H43bANodu2bM8nw48EdvfWGUzxk5w/p6Ea48eZ3BYCgLjO5pPmH/X8qCd8tB7ib5ehQHnvICMw3i/wge2z3/zDdr6vqaPpg/JiR//Dv5sLmY53ZiUGx4+5enUB6jGN2H8/I1SMWIlDRsNzPQw80HsASbDkEG8hpdzo8dosJ4w29LGmIJMw+h8EEPvp+Jyz8I7TJFbMOYNKVsuIgkIJZkfQz5W4iOdSUJhAtCKlSRQjqniYMSHlJAfktP05T9jSBEpF+7ePbWnrtuPSbH41IDKZEovimA3yN4QybPhZLHXkKyHPF0zXFywvn7C8fAbNV/C0KF1ZocN1khgeyM5aTur+zKttcN0fTkEHhx4a2eG09asNil24u91RRkTdg+6AjTI9bsUAaIB2bRBae6yRXeyJMQ/r+ydrrcm44lrTuTpnpk7TEV3eY9du9exQChnhyy2/ZbTVG6fSc6WEeZpwuSx4e7niRT/LIrEhoGvxcXcOkO8HSKanFRF1rASAdfK+EsIEjamZz3hKDUiHZGY4UpD5eVZgtA0AYfOxRctiFUEMJEN2USDvLW/bmC8yAswSwoPn0AQQ3C9ZSknrqM0ki5oJXq2MwqJPq15XAFgHmAbUxKwaSNGEYyvN1UM3jgdC1oHRbFsAwU8boIIgwrspJRROqBoTo4B0FqyJ0taov2Mwim/5Ya6YkfSjtYkYz+J2JjSkupuBnrfpBXbfQ/SzBoenbn9M2iONfSWWDwnIWYVSuSARac8jYWYtEojJAKoSPW3MYt+M8Yub0JHfcN7V8Tzasrr630ZHujBypBMNIxEhZQkgVSGWR5xk83I4YtJ2i4Ze9OJs3iQ9T2KoVn5Fj+zb1RG3a82bJQS4vxpRIRX0G7mb11aAqYLUlNHmIXaXq2iqawmnz7VNUge6+CoW7MjXV3R/YhMTD8okQJyDkq50g/6Aq6wtvq4QntmEfGzW/9GTjEMB0GI6NL+DAqAEIBNhyhnTlHCZJ7WGmDDPhFl98YvVgpyksuGtxXCh4iuP+wCkpH4iCahlRUpATivmVHHJhDlNSHxB4llmkhigFUQLZKsk74MTQNBYDLwBqACp//5SUOsGrlX2IggeNTc+ML//LL5iW8CtHh7aHih7RKosp66q/K5FzJJr0RNUbsFd1R+tLkM9dZ601HE/d8XOWKfdO1DE2A6RYO/qP7YlokxiOoub0PVQftl+YXtpifGQarMQ0M+qJ6X8qr50Pc4MZ6/H2Q3d56MlhFjCJeRcQZv0h4nEioEzSgG2QliuGwoIc1mxpYq5LFiKxJAovCKnhHnKGtNkglnYGNyARTEKRov3geZyqailRymMrZhv4A239Te1ivgN6+2Gsn6VcbgBCSuo/oTEGblWZAZKFXcBMvUV1XfwZmXW4NfoCtvY+jlpdLYKD8KuOibJp2tC8ZuhO1OslFpQIc9ZgYVJYp644q3CcfUORXbMrkJ02sPnDtJ2hyJaEHMlIDv6Mgqfj64tJRW6iBWOFKnzfNaW8PENLOQ3IU7S05+1s4oNe2Toi+9j/txgC4jK+B+Z+pO05+N/eMDDx57DmHYYyN4+LacDx3DtaAGcU5bPUJrn886NpGeE/oQTkMDuXSLy6B9NJbDvxpj6usP8k/whaGMCV0ZHg0LW+v56OhbDmKeO69MSuM9vPep79pjaubuGSXDTucLv29LfXslwnhzOP0Irtg1cURujm12yP2N5Z+Xf27//O6WBJnryrUi97os8oOe+A94O3/SFzE9mjL+P4ODDLfBkou1EhIQkQhil+QlV5AVEABYQTdjSG2p+wbZ8wja94X/lTyj5ijRn1VFU4VGr7MuzMfEQ/pM4t32RCEgZmwqvq/KdhmudL65GfzVeQWKGVuHySV3kcDkY2mE+yeREGeaOCZRQSKQuYjmhipIg46ioEovCoEzd4FRtY2GAIf7smQhFFTfFeNOifAPYrUrJLByKWkGXVSwm9Mrbps/14IrNVgm4pRMccI9LEIShjkNMkC8SAlJ6rSChcsJGcsKeuCDXgkwie5nnF8xzQUVCXha8vHzG9fqGJc2YaAJTQgHwXgtW5W/A1fkUEe8kVCRsFVhL42i2ckPOwNvrK6acUbcV7ynh/XYD0YxtBXK64H29oaw31PJXMBfh91BBJLRp1bHczDqFGYSKec5YFkLKM5brDMqfUAHQdEGlCXz7DaX8FVxXd6NFYZplBG3MjXYssFPnwpdI/JHd3kQJFSJjzKiYUEE0gTihcEapCXVhpCXj8pc/49PP/4bll3/D9PlP2F5egJRxqV8BrioLSygm6+QNADBzWCtqyaJBHIzF7VZBtzO5tc0KcMXEm8gy9WAV86ZlKySRWeSSj0/iIGdT63JDU8IWCO9iFvHmDcToaHZXZEZ/yO+k64KL8t8q80lGMxtvrlZGrJZHqFVglwtKlcNgVFUa5t4/Gh3bTZf9PaBXxoMt5zRNWI+8vx/1M8dvK7Rl5W3Y1uyM5bLg158/4y9/+oL/+R8/4ZdfPuGXL1fkaQEwyzgFzzu9zBboGkQtwznnc5yed810MEgc7w8YuxOQcwsAeTAdRkLDmJDIkATxgSsJ+hEPTMpOYogAxX3e3XdzyZQGpUcyCwlrofoHDGVEBrGTwR6RKEe0wLDJ8fh898Lwe7jlvaV+PP2Kxmy3EaaTenWDR/CR6OU3tjHWSaDu+oN537upn9U2S+Rtg8saGmP4HG3o78YF6J2LDCXvp+0utbpv+/MpICPu750BBqMRUOeN6M6N70rj4Ud/kjt8H64G4X4SF+3deGqHh0raqbvWflfUwfzdx46EOgKO4jhv3NreTkOH9cSBeAx4zbXP2g5QxFkBrsYhhcFZGNkg9PrnSm29WNcdIxE0JoRYQiQSS4iUTXCslhD2T/f5cQgdsxFCbIgI9yKYJ+LmhskxYmhntITxtuu3JqVt98NeKMRr7HOfxyE47gFdmehgtQ3YsG6MeHQ4RXe18lyZdzAj/diF71EhO9LFbda6fWBXziGCHdYLmX/6kCX0K37Mf2ytjNIpKoRwKqpUjOuUALdkNCuYOGamLzEY2bYN623F7XbDNL9jmt+BlDEtN7luN0BhtbKYRnNSM/1akZWeMIHGGM9DlE5G6FUnruVTUYoEYqtV3DCVugoh3FlJqMKLG1G8G6+IOztSZFgwA43GIyj6eB7gqgPioVMisNXY8GnYDVr+gH/3+0LD+xHfHuHTR9e+rdTISurv74XP91LchI/wyMErNp4UnhvRf5y5/RqYmHEPYR7H9qDFPeHQ3R9PuSGQ3s+MyVmejwp+H2a3raRtKWMJH6jre/ZjPvweYcjLjbTYR6s5fMEQZ6CRHNePcxxpfYO14cSd3aVAbw1Vn7abY1v28LXbp4cJPlcYtuI+DkPHrqDO6r6/Xr4vfVRhKvc+UL5eOU7YuG9/BKWh7fO/B516Nh736vqjlEf0EdzxbEYX6ny0D8/lj0KgR/N1rkT+IID0pYa/h5XqewlME5gm1JRR04RCGRUZ2ZlybvKKQBt2vD2zHgy0GA6t8ohv2WjohyB8vCee9ZtUKBBxbrdZWn7i4f2GexFq7FW86kCGmv9+29fZaOORz+YYOyK4X0K81xF0p308OiQcu89GtlB81JzeMNsZKG2X8
Download .txt
gitextract_o4om8lod/

├── .flake8
├── .gitignore
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── LICENSE
├── README.md
├── demo/
│   ├── README.md
│   ├── configs/
│   │   └── webpack/
│   │       ├── common.js
│   │       ├── dev.js
│   │       └── prod.js
│   ├── package.json
│   ├── postcss.config.js
│   ├── src/
│   │   ├── App.tsx
│   │   ├── assets/
│   │   │   ├── index.html
│   │   │   └── scss/
│   │   │       └── App.scss
│   │   ├── components/
│   │   │   ├── Stage.tsx
│   │   │   ├── Tool.tsx
│   │   │   ├── helpers/
│   │   │   │   ├── Interfaces.tsx
│   │   │   │   ├── maskUtils.tsx
│   │   │   │   ├── onnxModelAPI.tsx
│   │   │   │   └── scaleHelper.tsx
│   │   │   └── hooks/
│   │   │       ├── context.tsx
│   │   │       └── createContext.tsx
│   │   └── index.tsx
│   ├── tailwind.config.js
│   └── tsconfig.json
├── linter.sh
├── notebooks/
│   ├── automatic_mask_generator_example.ipynb
│   ├── onnx_model_example.ipynb
│   └── predictor_example.ipynb
├── scripts/
│   ├── amg.py
│   └── export_onnx_model.py
├── segment_anything/
│   ├── __init__.py
│   ├── automatic_mask_generator.py
│   ├── build_sam.py
│   ├── modeling/
│   │   ├── __init__.py
│   │   ├── common.py
│   │   ├── image_encoder.py
│   │   ├── mask_decoder.py
│   │   ├── prompt_encoder.py
│   │   ├── sam.py
│   │   └── transformer.py
│   ├── predictor.py
│   └── utils/
│       ├── __init__.py
│       ├── amg.py
│       ├── onnx.py
│       └── transforms.py
├── setup.cfg
└── setup.py
Download .txt
SYMBOL INDEX (139 symbols across 18 files)

FILE: demo/src/App.tsx
  constant IMAGE_PATH (line 21) | const IMAGE_PATH = "/assets/data/dogs.jpg";
  constant IMAGE_EMBEDDING (line 22) | const IMAGE_EMBEDDING = "/assets/data/dogs_embedding.npy";
  constant MODEL_DIR (line 23) | const MODEL_DIR = "/model/sam_onnx_quantized_example.onnx";

FILE: demo/src/components/helpers/Interfaces.tsx
  type modelScaleProps (line 9) | interface modelScaleProps {
  type modelInputProps (line 15) | interface modelInputProps {
  type modeDataProps (line 21) | interface modeDataProps {
  type ToolProps (line 27) | interface ToolProps {

FILE: demo/src/components/helpers/maskUtils.tsx
  function arrayToImageData (line 8) | function arrayToImageData(input: any, width: number, height: number) {
  function imageDataToImage (line 27) | function imageDataToImage(imageData: ImageData) {
  function imageDataToCanvas (line 35) | function imageDataToCanvas(imageData: ImageData) {
  function onnxMaskToImage (line 45) | function onnxMaskToImage(input: any, width: number, height: number) {

FILE: demo/src/components/hooks/createContext.tsx
  type contextProps (line 10) | interface contextProps {

FILE: scripts/amg.py
  function write_masks_to_folder (line 152) | def write_masks_to_folder(masks: List[Dict[str, Any]], path: str) -> None:
  function get_amg_kwargs (line 177) | def get_amg_kwargs(args):
  function main (line 195) | def main(args: argparse.Namespace) -> None:

FILE: scripts/export_onnx_model.py
  function run_export (line 97) | def run_export(
  function to_numpy (line 170) | def to_numpy(tensor):

FILE: segment_anything/automatic_mask_generator.py
  class SamAutomaticMaskGenerator (line 35) | class SamAutomaticMaskGenerator:
    method __init__ (line 36) | def __init__(
    method generate (line 137) | def generate(self, image: np.ndarray) -> List[Dict[str, Any]]:
    method _generate_masks (line 197) | def _generate_masks(self, image: np.ndarray) -> MaskData:
    method _process_crop (line 225) | def _process_crop(
    method _process_batch (line 266) | def _process_batch(
    method postprocess_small_regions (line 324) | def postprocess_small_regions(

FILE: segment_anything/build_sam.py
  function build_sam_vit_h (line 14) | def build_sam_vit_h(checkpoint=None):
  function build_sam_vit_l (line 27) | def build_sam_vit_l(checkpoint=None):
  function build_sam_vit_b (line 37) | def build_sam_vit_b(checkpoint=None):
  function _build_sam (line 55) | def _build_sam(

FILE: segment_anything/modeling/common.py
  class MLPBlock (line 13) | class MLPBlock(nn.Module):
    method __init__ (line 14) | def __init__(
    method forward (line 25) | def forward(self, x: torch.Tensor) -> torch.Tensor:
  class LayerNorm2d (line 31) | class LayerNorm2d(nn.Module):
    method __init__ (line 32) | def __init__(self, num_channels: int, eps: float = 1e-6) -> None:
    method forward (line 38) | def forward(self, x: torch.Tensor) -> torch.Tensor:

FILE: segment_anything/modeling/image_encoder.py
  class ImageEncoderViT (line 17) | class ImageEncoderViT(nn.Module):
    method __init__ (line 18) | def __init__(
    method forward (line 106) | def forward(self, x: torch.Tensor) -> torch.Tensor:
  class Block (line 119) | class Block(nn.Module):
    method __init__ (line 122) | def __init__(
    method forward (line 166) | def forward(self, x: torch.Tensor) -> torch.Tensor:
  class Attention (line 185) | class Attention(nn.Module):
    method __init__ (line 188) | def __init__(
    method forward (line 224) | def forward(self, x: torch.Tensor) -> torch.Tensor:
  function window_partition (line 243) | def window_partition(x: torch.Tensor, window_size: int) -> Tuple[torch.T...
  function window_unpartition (line 267) | def window_unpartition(
  function get_rel_pos (line 292) | def get_rel_pos(q_size: int, k_size: int, rel_pos: torch.Tensor) -> torc...
  function add_decomposed_rel_pos (line 325) | def add_decomposed_rel_pos(
  class PatchEmbed (line 364) | class PatchEmbed(nn.Module):
    method __init__ (line 369) | def __init__(
    method forward (line 391) | def forward(self, x: torch.Tensor) -> torch.Tensor:

FILE: segment_anything/modeling/mask_decoder.py
  class MaskDecoder (line 16) | class MaskDecoder(nn.Module):
    method __init__ (line 17) | def __init__(
    method forward (line 71) | def forward(
    method predict_masks (line 112) | def predict_masks(
  class MLP (line 154) | class MLP(nn.Module):
    method __init__ (line 155) | def __init__(
    method forward (line 171) | def forward(self, x):

FILE: segment_anything/modeling/prompt_encoder.py
  class PromptEncoder (line 16) | class PromptEncoder(nn.Module):
    method __init__ (line 17) | def __init__(
    method get_dense_pe (line 62) | def get_dense_pe(self) -> torch.Tensor:
    method _embed_points (line 73) | def _embed_points(
    method _embed_boxes (line 93) | def _embed_boxes(self, boxes: torch.Tensor) -> torch.Tensor:
    method _embed_masks (line 102) | def _embed_masks(self, masks: torch.Tensor) -> torch.Tensor:
    method _get_batch_size (line 107) | def _get_batch_size(
    method _get_device (line 125) | def _get_device(self) -> torch.device:
    method forward (line 128) | def forward(
  class PositionEmbeddingRandom (line 171) | class PositionEmbeddingRandom(nn.Module):
    method __init__ (line 176) | def __init__(self, num_pos_feats: int = 64, scale: Optional[float] = N...
    method _pe_encoding (line 185) | def _pe_encoding(self, coords: torch.Tensor) -> torch.Tensor:
    method forward (line 194) | def forward(self, size: Tuple[int, int]) -> torch.Tensor:
    method forward_with_coords (line 207) | def forward_with_coords(

FILE: segment_anything/modeling/sam.py
  class Sam (line 18) | class Sam(nn.Module):
    method __init__ (line 22) | def __init__(
    method device (line 50) | def device(self) -> Any:
    method forward (line 54) | def forward(
    method postprocess_masks (line 133) | def postprocess_masks(
    method preprocess (line 164) | def preprocess(self, x: torch.Tensor) -> torch.Tensor:

FILE: segment_anything/modeling/transformer.py
  class TwoWayTransformer (line 16) | class TwoWayTransformer(nn.Module):
    method __init__ (line 17) | def __init__(
    method forward (line 62) | def forward(
  class TwoWayAttentionBlock (line 109) | class TwoWayAttentionBlock(nn.Module):
    method __init__ (line 110) | def __init__(
    method forward (line 151) | def forward(
  class Attention (line 185) | class Attention(nn.Module):
    method __init__ (line 191) | def __init__(
    method _separate_heads (line 208) | def _separate_heads(self, x: Tensor, num_heads: int) -> Tensor:
    method _recombine_heads (line 213) | def _recombine_heads(self, x: Tensor) -> Tensor:
    method forward (line 218) | def forward(self, q: Tensor, k: Tensor, v: Tensor) -> Tensor:

FILE: segment_anything/predictor.py
  class SamPredictor (line 17) | class SamPredictor:
    method __init__ (line 18) | def __init__(
    method set_image (line 34) | def set_image(
    method set_torch_image (line 63) | def set_torch_image(
    method predict (line 92) | def predict(
    method predict_torch (line 169) | def predict_torch(
    method get_image_embedding (line 245) | def get_image_embedding(self) -> torch.Tensor:
    method device (line 259) | def device(self) -> torch.device:
    method reset_image (line 262) | def reset_image(self) -> None:

FILE: segment_anything/utils/amg.py
  class MaskData (line 16) | class MaskData:
    method __init__ (line 22) | def __init__(self, **kwargs) -> None:
    method __setitem__ (line 29) | def __setitem__(self, key: str, item: Any) -> None:
    method __delitem__ (line 35) | def __delitem__(self, key: str) -> None:
    method __getitem__ (line 38) | def __getitem__(self, key: str) -> Any:
    method items (line 41) | def items(self) -> ItemsView[str, Any]:
    method filter (line 44) | def filter(self, keep: torch.Tensor) -> None:
    method cat (line 59) | def cat(self, new_stats: "MaskData") -> None:
    method to_numpy (line 72) | def to_numpy(self) -> None:
  function is_box_near_crop_edge (line 78) | def is_box_near_crop_edge(
  function box_xyxy_to_xywh (line 91) | def box_xyxy_to_xywh(box_xyxy: torch.Tensor) -> torch.Tensor:
  function batch_iterator (line 98) | def batch_iterator(batch_size: int, *args) -> Generator[List[Any], None,...
  function mask_to_rle_pytorch (line 107) | def mask_to_rle_pytorch(tensor: torch.Tensor) -> List[Dict[str, Any]]:
  function rle_to_mask (line 138) | def rle_to_mask(rle: Dict[str, Any]) -> np.ndarray:
  function area_from_rle (line 152) | def area_from_rle(rle: Dict[str, Any]) -> int:
  function calculate_stability_score (line 156) | def calculate_stability_score(
  function build_point_grid (line 179) | def build_point_grid(n_per_side: int) -> np.ndarray:
  function build_all_layer_point_grids (line 189) | def build_all_layer_point_grids(
  function generate_crop_boxes (line 200) | def generate_crop_boxes(
  function uncrop_boxes_xyxy (line 237) | def uncrop_boxes_xyxy(boxes: torch.Tensor, crop_box: List[int]) -> torch...
  function uncrop_points (line 246) | def uncrop_points(points: torch.Tensor, crop_box: List[int]) -> torch.Te...
  function uncrop_masks (line 255) | def uncrop_masks(
  function remove_small_regions (line 267) | def remove_small_regions(
  function coco_encode_rle (line 294) | def coco_encode_rle(uncompressed_rle: Dict[str, Any]) -> Dict[str, Any]:
  function batched_mask_to_box (line 303) | def batched_mask_to_box(masks: torch.Tensor) -> torch.Tensor:

FILE: segment_anything/utils/onnx.py
  class SamOnnxModel (line 17) | class SamOnnxModel(nn.Module):
    method __init__ (line 25) | def __init__(
    method resize_longest_image_size (line 42) | def resize_longest_image_size(
    method _embed_points (line 51) | def _embed_points(self, point_coords: torch.Tensor, point_labels: torc...
    method _embed_masks (line 69) | def _embed_masks(self, input_mask: torch.Tensor, has_mask_input: torch...
    method mask_postprocessing (line 76) | def mask_postprocessing(self, masks: torch.Tensor, orig_im_size: torch...
    method select_masks (line 92) | def select_masks(
    method forward (line 108) | def forward(

FILE: segment_anything/utils/transforms.py
  class ResizeLongestSide (line 16) | class ResizeLongestSide:
    method __init__ (line 23) | def __init__(self, target_length: int) -> None:
    method apply_image (line 26) | def apply_image(self, image: np.ndarray) -> np.ndarray:
    method apply_coords (line 33) | def apply_coords(self, coords: np.ndarray, original_size: Tuple[int, ....
    method apply_boxes (line 47) | def apply_boxes(self, boxes: np.ndarray, original_size: Tuple[int, ......
    method apply_image_torch (line 55) | def apply_image_torch(self, image: torch.Tensor) -> torch.Tensor:
    method apply_coords_torch (line 67) | def apply_coords_torch(
    method apply_boxes_torch (line 83) | def apply_boxes_torch(
    method get_preprocess_shape (line 94) | def get_preprocess_shape(oldh: int, oldw: int, long_side_length: int) ...
Copy disabled (too large) Download .json
Condensed preview — 49 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (12,968K chars).
[
  {
    "path": ".flake8",
    "chars": 211,
    "preview": "[flake8]\nignore = W503, E203, E221, C901, C408, E741, C407, B017, F811, C101, EXE001, EXE002\nmax-line-length = 100\nmax-c"
  },
  {
    "path": ".gitignore",
    "chars": 389,
    "preview": ".nfs*\n\n# compilation and distribution\n__pycache__\n_ext\n*.pyc\n*.pyd\n*.so\n*.dll\n*.egg-info/\nbuild/\ndist/\nwheels/\n\n# pytorc"
  },
  {
    "path": "CODE_OF_CONDUCT.md",
    "chars": 3541,
    "preview": "# Code of Conduct\n\n## Our Pledge\n\nIn the interest of fostering an open and welcoming environment, we as\ncontributors and"
  },
  {
    "path": "CONTRIBUTING.md",
    "chars": 1400,
    "preview": "# Contributing to segment-anything\nWe want to make contributing to this project as easy and transparent as\npossible.\n\n##"
  },
  {
    "path": "LICENSE",
    "chars": 11357,
    "preview": "                                 Apache License\n                           Version 2.0, January 2004\n                   "
  },
  {
    "path": "README.md",
    "chars": 9621,
    "preview": "## Latest updates -- SAM 2: Segment Anything in Images and Videos\n\nPlease check out our new release on [**Segment Anythi"
  },
  {
    "path": "demo/README.md",
    "chars": 3681,
    "preview": "## Segment Anything Simple Web demo\n\nThis **front-end only** React based web demo shows how to load a fixed image and co"
  },
  {
    "path": "demo/configs/webpack/common.js",
    "chars": 2051,
    "preview": "// Copyright (c) Meta Platforms, Inc. and affiliates.\n// All rights reserved.\n\n// This source code is licensed under the"
  },
  {
    "path": "demo/configs/webpack/dev.js",
    "chars": 767,
    "preview": "// Copyright (c) Meta Platforms, Inc. and affiliates.\n// All rights reserved.\n\n// This source code is licensed under the"
  },
  {
    "path": "demo/configs/webpack/prod.js",
    "chars": 636,
    "preview": "// Copyright (c) Meta Platforms, Inc. and affiliates.\n// All rights reserved.\n\n// This source code is licensed under the"
  },
  {
    "path": "demo/package.json",
    "chars": 2002,
    "preview": "{\n  \"name\": \"segment-anything-mini-demo\",\n  \"version\": \"0.1.0\",\n  \"license\": \"MIT\",\n  \"scripts\": {\n    \"build\": \"yarn ru"
  },
  {
    "path": "demo/postcss.config.js",
    "chars": 339,
    "preview": "// Copyright (c) Meta Platforms, Inc. and affiliates.\n// All rights reserved.\n\n// This source code is licensed under the"
  },
  {
    "path": "demo/src/App.tsx",
    "chars": 4245,
    "preview": "// Copyright (c) Meta Platforms, Inc. and affiliates.\n// All rights reserved.\n\n// This source code is licensed under the"
  },
  {
    "path": "demo/src/assets/index.html",
    "chars": 532,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\" dir=\"ltr\" prefix=\"og: https://ogp.me/ns#\" class=\"w-full h-full\">\n  <head>\n    <meta char"
  },
  {
    "path": "demo/src/assets/scss/App.scss",
    "chars": 59,
    "preview": "@tailwind base;\n@tailwind components;\n@tailwind utilities;\n"
  },
  {
    "path": "demo/src/components/Stage.tsx",
    "chars": 1580,
    "preview": "// Copyright (c) Meta Platforms, Inc. and affiliates.\n// All rights reserved.\n\n// This source code is licensed under the"
  },
  {
    "path": "demo/src/components/Tool.tsx",
    "chars": 2136,
    "preview": "// Copyright (c) Meta Platforms, Inc. and affiliates.\n// All rights reserved.\n\n// This source code is licensed under the"
  },
  {
    "path": "demo/src/components/helpers/Interfaces.tsx",
    "chars": 611,
    "preview": "// Copyright (c) Meta Platforms, Inc. and affiliates.\n// All rights reserved.\n\n// This source code is licensed under the"
  },
  {
    "path": "demo/src/components/helpers/maskUtils.tsx",
    "chars": 1616,
    "preview": "// Copyright (c) Meta Platforms, Inc. and affiliates.\n// All rights reserved.\n\n// This source code is licensed under the"
  },
  {
    "path": "demo/src/components/helpers/onnxModelAPI.tsx",
    "chars": 2198,
    "preview": "// Copyright (c) Meta Platforms, Inc. and affiliates.\n// All rights reserved.\n\n// This source code is licensed under the"
  },
  {
    "path": "demo/src/components/helpers/scaleHelper.tsx",
    "chars": 614,
    "preview": "// Copyright (c) Meta Platforms, Inc. and affiliates.\n// All rights reserved.\n\n// This source code is licensed under the"
  },
  {
    "path": "demo/src/components/hooks/context.tsx",
    "chars": 959,
    "preview": "// Copyright (c) Meta Platforms, Inc. and affiliates.\n// All rights reserved.\n\n// This source code is licensed under the"
  },
  {
    "path": "demo/src/components/hooks/createContext.tsx",
    "chars": 736,
    "preview": "// Copyright (c) Meta Platforms, Inc. and affiliates.\n// All rights reserved.\n\n// This source code is licensed under the"
  },
  {
    "path": "demo/src/index.tsx",
    "chars": 529,
    "preview": "// Copyright (c) Meta Platforms, Inc. and affiliates.\n// All rights reserved.\n\n// This source code is licensed under the"
  },
  {
    "path": "demo/tailwind.config.js",
    "chars": 337,
    "preview": "// Copyright (c) Meta Platforms, Inc. and affiliates.\n// All rights reserved.\n\n// This source code is licensed under the"
  },
  {
    "path": "demo/tsconfig.json",
    "chars": 644,
    "preview": "{\n  \"compilerOptions\": {\n    \"lib\": [\"dom\", \"dom.iterable\", \"esnext\"],\n    \"allowJs\": true,\n    \"skipLibCheck\": true,\n  "
  },
  {
    "path": "linter.sh",
    "chars": 564,
    "preview": "#!/bin/bash -e\n# Copyright (c) Facebook, Inc. and its affiliates.\n\n{\n  black --version | grep -E \"23\\.\" > /dev/null\n} ||"
  },
  {
    "path": "notebooks/automatic_mask_generator_example.ipynb",
    "chars": 4380984,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 1,\n   \"id\": \"5fa21d44\",\n   \"metadata\": {},\n   \"outputs\":"
  },
  {
    "path": "notebooks/onnx_model_example.ipynb",
    "chars": 22502,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"id\": \"901c8ef3\",\n   \"metadata\": {},\n   \"output"
  },
  {
    "path": "notebooks/predictor_example.ipynb",
    "chars": 8380947,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 1,\n   \"id\": \"f400486b\",\n   \"metadata\": {},\n   \"outputs\":"
  },
  {
    "path": "scripts/amg.py",
    "chars": 7043,
    "preview": "# Copyright (c) Meta Platforms, Inc. and affiliates.\n# All rights reserved.\n\n# This source code is licensed under the li"
  },
  {
    "path": "scripts/export_onnx_model.py",
    "chars": 6250,
    "preview": "# Copyright (c) Meta Platforms, Inc. and affiliates.\n# All rights reserved.\n\n# This source code is licensed under the li"
  },
  {
    "path": "segment_anything/__init__.py",
    "chars": 427,
    "preview": "# Copyright (c) Meta Platforms, Inc. and affiliates.\n# All rights reserved.\n\n# This source code is licensed under the li"
  },
  {
    "path": "segment_anything/automatic_mask_generator.py",
    "chars": 15148,
    "preview": "# Copyright (c) Meta Platforms, Inc. and affiliates.\n# All rights reserved.\n\n# This source code is licensed under the li"
  },
  {
    "path": "segment_anything/build_sam.py",
    "chars": 2941,
    "preview": "# Copyright (c) Meta Platforms, Inc. and affiliates.\n# All rights reserved.\n\n# This source code is licensed under the li"
  },
  {
    "path": "segment_anything/modeling/__init__.py",
    "chars": 385,
    "preview": "# Copyright (c) Meta Platforms, Inc. and affiliates.\n# All rights reserved.\n\n# This source code is licensed under the li"
  },
  {
    "path": "segment_anything/modeling/common.py",
    "chars": 1479,
    "preview": "# Copyright (c) Meta Platforms, Inc. and affiliates.\n# All rights reserved.\n\n# This source code is licensed under the li"
  },
  {
    "path": "segment_anything/modeling/image_encoder.py",
    "chars": 14420,
    "preview": "# Copyright (c) Meta Platforms, Inc. and affiliates.\n# All rights reserved.\n\n# This source code is licensed under the li"
  },
  {
    "path": "segment_anything/modeling/mask_decoder.py",
    "chars": 6615,
    "preview": "# Copyright (c) Meta Platforms, Inc. and affiliates.\n# All rights reserved.\n\n# This source code is licensed under the li"
  },
  {
    "path": "segment_anything/modeling/prompt_encoder.py",
    "chars": 8594,
    "preview": "# Copyright (c) Meta Platforms, Inc. and affiliates.\n# All rights reserved.\n\n# This source code is licensed under the li"
  },
  {
    "path": "segment_anything/modeling/sam.py",
    "chars": 7226,
    "preview": "# Copyright (c) Meta Platforms, Inc. and affiliates.\n# All rights reserved.\n\n# This source code is licensed under the li"
  },
  {
    "path": "segment_anything/modeling/transformer.py",
    "chars": 8397,
    "preview": "# Copyright (c) Meta Platforms, Inc. and affiliates.\n# All rights reserved.\n\n# This source code is licensed under the li"
  },
  {
    "path": "segment_anything/predictor.py",
    "chars": 11649,
    "preview": "# Copyright (c) Meta Platforms, Inc. and affiliates.\n# All rights reserved.\n\n# This source code is licensed under the li"
  },
  {
    "path": "segment_anything/utils/__init__.py",
    "chars": 197,
    "preview": "# Copyright (c) Meta Platforms, Inc. and affiliates.\n# All rights reserved.\n\n# This source code is licensed under the li"
  },
  {
    "path": "segment_anything/utils/amg.py",
    "chars": 12712,
    "preview": "# Copyright (c) Meta Platforms, Inc. and affiliates.\n# All rights reserved.\n\n# This source code is licensed under the li"
  },
  {
    "path": "segment_anything/utils/onnx.py",
    "chars": 5812,
    "preview": "# Copyright (c) Meta Platforms, Inc. and affiliates.\n# All rights reserved.\n\n# This source code is licensed under the li"
  },
  {
    "path": "segment_anything/utils/transforms.py",
    "chars": 3972,
    "preview": "# Copyright (c) Meta Platforms, Inc. and affiliates.\n# All rights reserved.\n\n# This source code is licensed under the li"
  },
  {
    "path": "setup.cfg",
    "chars": 371,
    "preview": "[isort]\nline_length=100\nmulti_line_output=3\ninclude_trailing_comma=True\nknown_standard_library=numpy,setuptools\nskip_glo"
  },
  {
    "path": "setup.py",
    "chars": 541,
    "preview": "# Copyright (c) Meta Platforms, Inc. and affiliates.\n# All rights reserved.\n\n# This source code is licensed under the li"
  }
]

About this extraction

This page contains the full source code of the facebookresearch/segment-anything GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 49 files (12.4 MB), approximately 3.2M tokens, and a symbol index with 139 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!