Full Code of Ledger-Donjon/rainbow for AI

master f72101acef34 cached
47 files
12.4 MB
701.9k tokens
143 symbols
1 requests
Download .txt
Showing preview only (1,419K chars total). Download the full file or copy to clipboard to get everything.
Repository: Ledger-Donjon/rainbow
Branch: master
Commit: f72101acef34
Files: 47
Total size: 12.4 MB

Directory structure:
gitextract_gvywdpmy/

├── .github/
│   └── workflows/
│       └── python_package.yml
├── .gitignore
├── LICENSE
├── README.md
├── examples/
│   ├── CortexM_AES/
│   │   └── cortexm_aes.py
│   ├── HW_analysis/
│   │   ├── pin_compare.py
│   │   ├── pin_fault.py
│   │   ├── trezor.elf
│   │   └── trezor.hex
│   ├── OAES/
│   │   └── OAES_x86.py
│   ├── SecAESSTM32/
│   │   ├── firmware.elf
│   │   └── go.py
│   ├── hacklu2009/
│   │   └── go.py
│   └── pimp_my_xor/
│       ├── pimp_my_xor
│       └── x64_pimpmyxor.py
├── pyproject.toml
├── rainbow/
│   ├── __init__.py
│   ├── devices/
│   │   ├── __init__.py
│   │   ├── stm32.py
│   │   ├── stm32f215.pickle
│   │   └── stm32l4x1.pickle
│   ├── fault_models.py
│   ├── generics/
│   │   ├── __init__.py
│   │   ├── aarch64.py
│   │   ├── arm.py
│   │   ├── cortexm.py
│   │   ├── m68k.py
│   │   ├── x64.py
│   │   └── x86.py
│   ├── leakage_models.py
│   ├── loaders/
│   │   ├── __init__.py
│   │   ├── cleloader.py
│   │   └── hexloader.py
│   ├── rainbow.py
│   └── utils/
│       ├── __init__.py
│       ├── color_functions.py
│       ├── parse_svd.py
│       └── plot/
│           ├── __init__.py
│           └── interface.py
└── tests/
    ├── ledger_ctf2/
    │   └── ctf2
    ├── test_devices.py
    ├── test_fault_models.py
    ├── test_generics.py
    ├── test_hook.py
    ├── test_leakage_models.py
    ├── test_loaders.py
    └── test_mapping.py

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

================================================
FILE: .github/workflows/python_package.yml
================================================
name: Python package

on:
  push:
    branches: [ master ]
  pull_request:
    branches: [ master ]

jobs:
  build:
    # TODO: add windows-latest
    runs-on: ubuntu-latest
    strategy:
      matrix:
        python-version: ["3.8", "3.9", "3.10", "3.11"]

    steps:
      - uses: actions/checkout@v3
      - name: Set up Python ${{ matrix.python-version }}
        uses: actions/setup-python@v3
        with:
          python-version: ${{ matrix.python-version }}
      - name: Install dependencies
        run: |
          python -m pip install --upgrade pip
          pip install .
          pip install pytest
      - name: Test with pytest
        run: |
          pytest


================================================
FILE: .gitignore
================================================
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class

# C extensions
*.so

# Distribution / packaging
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
share/python-wheels/
*.egg-info/
.installed.cfg
*.egg
MANIFEST

# PyInstaller
#  Usually these files are written by a python script from a template
#  before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec

# Installer logs
pip-log.txt
pip-delete-this-directory.txt

# Unit test / coverage reports
htmlcov/
.tox/
.nox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*.cover
*.py,cover
.hypothesis/
.pytest_cache/
cover/

# Translations
*.mo
*.pot

# Django stuff:
*.log
local_settings.py
db.sqlite3
db.sqlite3-journal

# Flask stuff:
instance/
.webassets-cache

# Scrapy stuff:
.scrapy

# Sphinx documentation
docs/_build/

# PyBuilder
.pybuilder/
target/

# Jupyter Notebook
.ipynb_checkpoints

# IPython
profile_default/
ipython_config.py

# pyenv
#   For a library or package, you might want to ignore these files since the code is
#   intended to run in multiple environments; otherwise, check them in:
# .python-version

# pipenv
#   According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
#   However, in case of collaboration, if having platform-specific dependencies or dependencies
#   having no cross-platform support, pipenv may install dependencies that don't work, or not
#   install all needed dependencies.
#Pipfile.lock

# poetry
#   Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
#   This is especially recommended for binary packages to ensure reproducibility, and is more
#   commonly ignored for libraries.
#   https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
#poetry.lock

# pdm
#   Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
#pdm.lock
#   pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
#   in version control.
#   https://pdm.fming.dev/#use-with-ide
.pdm.toml

# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
__pypackages__/

# Celery stuff
celerybeat-schedule
celerybeat.pid

# SageMath parsed files
*.sage.py

# Environments
.env
.venv
env/
venv/
ENV/
env.bak/
venv.bak/

# Spyder project settings
.spyderproject
.spyproject

# Rope project settings
.ropeproject

# mkdocs documentation
/site

# mypy
.mypy_cache/
.dmypy.json
dmypy.json

# Pyre type checker
.pyre/

# pytype static type analyzer
.pytype/

# Cython debug symbols
cython_debug/

# PyCharm
#  JetBrains specific template is maintained in a separate JetBrains.gitignore that can
#  be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
#  and can be added to the global gitignore or merged into this file.  For a more nuclear
#  option (not recommended) you can uncomment the following to ignore the entire idea folder.
#.idea/

================================================
FILE: LICENSE
================================================
                   GNU LESSER GENERAL PUBLIC LICENSE
                       Version 3, 29 June 2007

 Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
 Everyone is permitted to copy and distribute verbatim copies
 of this license document, but changing it is not allowed.


  This version of the GNU Lesser General Public License incorporates
the terms and conditions of version 3 of the GNU General Public
License, supplemented by the additional permissions listed below.

  0. Additional Definitions.

  As used herein, "this License" refers to version 3 of the GNU Lesser
General Public License, and the "GNU GPL" refers to version 3 of the GNU
General Public License.

  "The Library" refers to a covered work governed by this License,
other than an Application or a Combined Work as defined below.

  An "Application" is any work that makes use of an interface provided
by the Library, but which is not otherwise based on the Library.
Defining a subclass of a class defined by the Library is deemed a mode
of using an interface provided by the Library.

  A "Combined Work" is a work produced by combining or linking an
Application with the Library.  The particular version of the Library
with which the Combined Work was made is also called the "Linked
Version".

  The "Minimal Corresponding Source" for a Combined Work means the
Corresponding Source for the Combined Work, excluding any source code
for portions of the Combined Work that, considered in isolation, are
based on the Application, and not on the Linked Version.

  The "Corresponding Application Code" for a Combined Work means the
object code and/or source code for the Application, including any data
and utility programs needed for reproducing the Combined Work from the
Application, but excluding the System Libraries of the Combined Work.

  1. Exception to Section 3 of the GNU GPL.

  You may convey a covered work under sections 3 and 4 of this License
without being bound by section 3 of the GNU GPL.

  2. Conveying Modified Versions.

  If you modify a copy of the Library, and, in your modifications, a
facility refers to a function or data to be supplied by an Application
that uses the facility (other than as an argument passed when the
facility is invoked), then you may convey a copy of the modified
version:

   a) under this License, provided that you make a good faith effort to
   ensure that, in the event an Application does not supply the
   function or data, the facility still operates, and performs
   whatever part of its purpose remains meaningful, or

   b) under the GNU GPL, with none of the additional permissions of
   this License applicable to that copy.

  3. Object Code Incorporating Material from Library Header Files.

  The object code form of an Application may incorporate material from
a header file that is part of the Library.  You may convey such object
code under terms of your choice, provided that, if the incorporated
material is not limited to numerical parameters, data structure
layouts and accessors, or small macros, inline functions and templates
(ten or fewer lines in length), you do both of the following:

   a) Give prominent notice with each copy of the object code that the
   Library is used in it and that the Library and its use are
   covered by this License.

   b) Accompany the object code with a copy of the GNU GPL and this license
   document.

  4. Combined Works.

  You may convey a Combined Work under terms of your choice that,
taken together, effectively do not restrict modification of the
portions of the Library contained in the Combined Work and reverse
engineering for debugging such modifications, if you also do each of
the following:

   a) Give prominent notice with each copy of the Combined Work that
   the Library is used in it and that the Library and its use are
   covered by this License.

   b) Accompany the Combined Work with a copy of the GNU GPL and this license
   document.

   c) For a Combined Work that displays copyright notices during
   execution, include the copyright notice for the Library among
   these notices, as well as a reference directing the user to the
   copies of the GNU GPL and this license document.

   d) Do one of the following:

       0) Convey the Minimal Corresponding Source under the terms of this
       License, and the Corresponding Application Code in a form
       suitable for, and under terms that permit, the user to
       recombine or relink the Application with a modified version of
       the Linked Version to produce a modified Combined Work, in the
       manner specified by section 6 of the GNU GPL for conveying
       Corresponding Source.

       1) Use a suitable shared library mechanism for linking with the
       Library.  A suitable mechanism is one that (a) uses at run time
       a copy of the Library already present on the user's computer
       system, and (b) will operate properly with a modified version
       of the Library that is interface-compatible with the Linked
       Version.

   e) Provide Installation Information, but only if you would otherwise
   be required to provide such information under section 6 of the
   GNU GPL, and only to the extent that such information is
   necessary to install and execute a modified version of the
   Combined Work produced by recombining or relinking the
   Application with a modified version of the Linked Version. (If
   you use option 4d0, the Installation Information must accompany
   the Minimal Corresponding Source and Corresponding Application
   Code. If you use option 4d1, you must provide the Installation
   Information in the manner specified by section 6 of the GNU GPL
   for conveying Corresponding Source.)

  5. Combined Libraries.

  You may place library facilities that are a work based on the
Library side by side in a single library together with other library
facilities that are not Applications and are not covered by this
License, and convey such a combined library under terms of your
choice, if you do both of the following:

   a) Accompany the combined library with a copy of the same work based
   on the Library, uncombined with any other library facilities,
   conveyed under the terms of this License.

   b) Give prominent notice with the combined library that part of it
   is a work based on the Library, and explaining where to find the
   accompanying uncombined form of the same work.

  6. Revised Versions of the GNU Lesser General Public License.

  The Free Software Foundation may publish revised and/or new versions
of the GNU Lesser General Public License from time to time. Such new
versions will be similar in spirit to the present version, but may
differ in detail to address new problems or concerns.

  Each version is given a distinguishing version number. If the
Library as you received it specifies that a certain numbered version
of the GNU Lesser General Public License "or any later version"
applies to it, you have the option of following the terms and
conditions either of that published version or of any later version
published by the Free Software Foundation. If the Library as you
received it does not specify a version number of the GNU Lesser
General Public License, you may choose any version of the GNU Lesser
General Public License ever published by the Free Software Foundation.

  If the Library as you received it specifies that a proxy can decide
whether future versions of the GNU Lesser General Public License shall
apply, that proxy's public statement of acceptance of any version is
permanent authorization for you to choose that version for the
Library.


================================================
FILE: README.md
================================================
[![Join the chat at https://gitter.im/Ledger-Donjon/rainbow](https://badges.gitter.im/Ledger-Donjon/rainbow.svg)](https://gitter.im/Ledger-Donjon/rainbow?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)

# Rainbow

It makes unicorn traces.

Using [Unicorn](http://www.unicorn-engine.org/) as a basis, Rainbow aims to provide an easy scripting interface to loosely emulate embedded binaries, trace them to perform side-channels, and simulate fault injections.

This is to allow quick and easy testing of physical attack resistance of code snippets, in order to help developers have a first evaluation of the resistance of their code.

An introduction is available [here](https://medium.com/ledger-on-security-and-blockchain/introducing-rainbow-donjons-side-channel-analysis-simulation-tool-2f23fa1f11b3).

A blogpost demonstrating how to turn this tool into an automatic fault injection test pipeline is [here](https://blog.ledger.com/fault-injection-simulation/), with the corresponding Rust code [here](https://github.com/Ledger-Donjon/fault_injection_checks_demo/).

## Installation

You will need Python 3.7 at least.

- `pip install .`

If Unicorn or Capstone fails to install somehow:
- Unicorn: http://www.unicorn-engine.org/download/
- Capstone: https://www.capstone-engine.org/

For the side-channel examples, you need to the latest [Lascar](https://github.com/Ledger-Donjon/lascar),
the following command installs the necessary packages.

- `pip install .[examples]`

If you wish to use another version of Python, you can drop an issue and we will look into it.

## Running the examples

Some examples will use Lascar's side-channel attacks and try to display traces using a custom plotter ([visplot](https://github.com/Ledger-Donjon/visplot)) built on top of [Vispy](https://github.com/vispy/vispy). If you want to run those, you will need Vispy and `pyqt5` for the instruction trace + execution trace viewer.

In the `./examples/` folder, you will find:
- [x64_pimpmyxor.py](https://github.com/Ledger-Donjon/rainbow/blob/master/examples/pimp_my_xor/x64_pimpmyxor.py): basic emulation of [this challenge](https://github.com/GreHack/CTF-challs/tree/master/2018/Reverse/100%20-%20pimp_my_xor)
- [CortexM_AES](https://github.com/Ledger-Donjon/rainbow/blob/master/examples/CortexM_AES/cortexm_aes.py): a simple ARM Thumb AES
- [Hacklu2009](https://github.com/Ledger-Donjon/rainbow/blob/master/examples/hacklu2009/go.py): a side-channel solution of a whitebox challenge
- HW_analysis: a side-channel simulation of a [pin comparison](https://github.com/Ledger-Donjon/rainbow/blob/master/examples/HW_analysis/pin_compare.py), and a [fault injection](https://github.com/Ledger-Donjon/rainbow/blob/master/examples/HW_analysis/pin_fault.py) simulation
- [ledger_ctf2](https://github.com/Ledger-Donjon/rainbow/blob/master/examples/ledger_ctf2/ledger_ctf2.py): side-channel solution of a whitebox challenge
- [OAES](https://github.com/Ledger-Donjon/rainbow/blob/master/examples/OAES/OAES_x86.py): an x86 whitebox tracing example that discards useless instructions
- [SecAESSTM32](https://github.com/Ledger-Donjon/rainbow/blob/master/examples/SecAESSTM32/go.py): a starting point to test ANSSI's STM32 [secure AES implementation](https://github.com/ANSSI-FR/SecAESSTM32)

## Example output

See the `x64_pimp_my_xor` example for a debug trace.

In the comment part of each line (after the semicolon), the memory access that was performed is written in a simplified way: `[address] <- value` for a load or `value -> [address]` for a store. Right after, if any register was modified during this instruction, its new value is shown.

At a branch instruction, if the destination is a known function, its name is shown together with the return address and the function's address.

## Basic usage

Grab a device or generic emulator like so:

```python
from rainbow.devices import rainbow_stm32f215

e = rainbow_stm32f215()
```

Load a binary:

```python
e.load('file', typ='.elf')
```

File type is guessed on the extension when possible (.elf, .hex).

Starting the emulation is done like so:

```python
e.start(start_address, stop_address, count=number_of_instructions)
```

Just like with unicorn. The underlying Unicorn instance is always available as `e.emu`.

To enable printing as code gets executed, simply use the `Print` flag.

```python
from rainbow import Print
import colorama

colorama.init()  # Only do this once to enable colors

e = rainbow_stm32f215(print=Print.Code | Print.Functions)  # see other values of the flag
```

## Side-Channel simulation

Rainbow only produces an execution trace, without applying any processing (such as adding noise) on the values.
This is left as some post-processing, so that the user can apply its own leakage model and simulate various conditions from the same traces.
Also, not introducing any noise allows testing in a worst-case scenario, which can yield important results.

To perform the analysis, one can use [Lascar](https://github.com/Ledger-Donjon/lascar).
You can find some scripts in the `examples` folder here which already use it.

To setup tracing (to produce an execution trace) use the `trace_config` option
to the emulator. The following piece of code sets up tracing of register
using the Hamming weight leakage model.
```python
from rainbow import TraceConfig, HammingWeight

e = rainbow_stm32f215(trace_config=TraceConfig(register=HammingWeight()))
e.load('file', typ='.elf')

e.start(start_address)

print(e.trace)
# [{"type": "code", "register": 7}, {"type": "code": "register": 5}]
```

If you setup tracing for `mem_address`, then the `e.trace` list will have dictionaries
like `{"type": "mem_read", "address": 1234}` or `{"type": "mem_write", "address": 1234}`
with the value of the `address` entry passed through the leakage model. Tracing for 
`mem_value` does the same, but traces memory values read or written and produces entries
like  `{"type": "mem_read", "value": 1234}`. Note that these approaches can be combined,
resulting in the dictionary having both an `address` and `value` entries.

If you setup tracing for `code`, dissasembled instructions will be available in the
trace with dictionaries like `{"type": "code", "instruction": "     404 ldm.w   r0, {r4, r5, r6, r7}"}`.
Note that this tracing option combined with register tracing produces a dictionary with
both `instruction` and `register` entries.

## Application examples

In the case of hardware wallets for example, one could check that:
- The PIN verification procedure does not allow to use a bad password even with a controlled instruction skip
- The scalar multiplication procedure does not leak any information on the used scalar
- a purely software AES is protected against basic DPA attacks
without using lab testing equipment (oscilloscope, current/EM probes, ...)

Rainbow and Lascar allow testing implemented countermeasures were correctly coded and the compiler did not interfere. It cannot, however, verify against hardware-related leaks such as some sequence of operations that somehow cancels out random masks on a bus or hidden register.

## Bonus applications

Whiteboxed encryption primitives could also be broken using this tool, instead of e.g. Intel Pin or Valgrind to trace execution. Unicorn has several advantages in this regard:

- Can be used on a different platform than that of the target binary
- Allows easy manipulation of the state (for example redefining an external call to `rand()` in Python)

Disadvantages:

- Some reverse engineering necessary !

As a whitebox example (available in `examples/OAES`, below is the result of the variance of [SECCON 2016's OAES](https://github.com/SECCON/SECCON2016_online_CTF/tree/master/Binary/500_Obfuscated%20AES) encryption function, which has a heavy control flow obfuscation.
One can clearly see the 10 rounds of the AES despite this obfuscation:

![OAES Variance](./OAES_variance.jpg)


## Supported archs

Embedded devices:
- STM32F215
- STM32l431

Generic emulators:
- ARM
- ARM Cortex M
- x86
- x86_64
- M68K

File formats:
- ELF
- Intel Hex file
- PE


================================================
FILE: examples/CortexM_AES/cortexm_aes.py
================================================
#!/usr/bin/env python3
# aes128 from https://github.com/Ko-/aes-armcortexm

from binascii import hexlify

import lascar
import numpy as np
from lascar.tools.aes import sbox
from rainbow.generics import rainbow_arm
from rainbow import TraceConfig, HammingWeight
from visplot import plot

e = rainbow_arm(trace_config=TraceConfig(register=HammingWeight()))
e.load("aes.bin", typ=".elf")


def aes_encrypt(key, plaintext):
    e.reset()
    key_addr = 0xDEAD0000
    e[key_addr] = key
    rk_addr = 0xDEAD1000
    e[rk_addr] = key

    # AES_128_keyschedule(key, rk+16)
    e["r0"] = key_addr
    e["r1"] = rk_addr + 16
    e.start(e.functions["AES_128_keyschedule"][0], 0)

    buf_in = 0xDEAD2000
    buf_out = 0xDEAD3000
    e[buf_in] = plaintext
    e[buf_out] = b"\x00" * 16  # Need to do this so this buffer is mapped into unicorn

    # AES_128_encrypt(rk, buf_in, buf_out)
    e["r0"] = rk_addr
    e["r1"] = buf_in
    e["r2"] = buf_out
    # e.trace_reset()
    e.start(e.functions["AES_128_encrypt"][0], 0)

    # Hamming weight + noise to pretend we're on a real target
    trace = np.array([event["register"] for event in e.trace]) + np.random.normal(
        0, 1.0, (len(e.trace))
    )
    return trace


class CortexMAesContainer(lascar.AbstractContainer):

    def generate_trace(self, idx):
        plaintext = np.random.randint(0, 256, (16,), np.uint8)
        leakage = aes_encrypt(KEY, plaintext.tobytes())
        return lascar.Trace(leakage, plaintext)


N = 100
KEY = bytes(range(16))

container = CortexMAesContainer(N)

cpa_engines = [
    lascar.CpaEngine(lambda plaintext, key_byte, index=i: sbox[plaintext[index] ^ key_byte], range(256)) for
    i in range(16)]
s = lascar.Session(CortexMAesContainer(N), engines=cpa_engines, name="lascar CPA").run()

key = bytes([engine.finalize().max(1).argmax() for engine in cpa_engines])
print("Key is :", hexlify(key).upper())

# Let's draw one result
v = plot(cpa_engines[1].finalize(), dontrun=True)
v.multiple_select(KEY[1])
v.run()


================================================
FILE: examples/HW_analysis/pin_compare.py
================================================
#!/usr/bin/env python3
import random
from rainbow.devices.stm32 import rainbow_stm32f215 as rainbow_stm32
from rainbow import TraceConfig, HammingWeight
import numpy as np
from lascar import TraceBatchContainer, Session, NicvEngine
from rainbow.utils.plot import viewer


def containsPin(e, pin_attempt, stored_pin):
    """ Handle calling the pin comparison function using the emulator """
    e.reset()

    stor_pin = 0x08008110 + 0x189  # address of the storagePin->rom
    e[stor_pin] = bytes(stored_pin + "\x00", "ascii")

    input_pin_addr = 0xcafecafe
    e[input_pin_addr] = bytes(pin_attempt + "\x00", "ascii")

    e['r0'] = input_pin_addr
    e['lr'] = 0xaaaaaaaa

    e.start(e.functions['storage_containsPin'][0], 0xaaaaaaaa)


def show_nicv(values, traces, nr_digits):
    """ Compute the Normalized Inter-Class Variance as in the article """
    values = np.array(values, dtype=np.uint8)
    traces = np.array(traces)

    # Use the Hamming weight of leaked values and add some noise
    # through the 'leakage_processing' parameter
    t = TraceBatchContainer(
        traces,
        values,
    )

    s = Session(t)

    # Input value leakage
    # s.add_engines([NicvEngine(lambda v,z=i:v[z], range(9)) for i in range(nr_digits)])

    # Difference leakage
    s.add_engines(
        [NicvEngine(lambda v, z=i: 9 + np.int8(v[z]) - np.int8(ord(STORED_PIN[z])), range(17)) for i in
         range(nr_digits)])

    # below is a variant on the carry bit
    # s.add_engines([NicvEngine(lambda v,z=i:int(v[z]>ord(STORED_PIN[z])), range(2)) for i in range(nr_digits)])

    s.run()

    return np.array([s[eng]._finalize() for eng in s.engines if eng not in ['mean', 'var']])


if __name__ == "__main__":
    STORED_PIN = "1874"
    N = 500

    print("Setting up emulator")
    e = rainbow_stm32(trace_config=TraceConfig(register=HammingWeight(), instruction=True))
    e.load("trezor.elf")

    print("Generating", N, "traces")

    values = []
    traces = []
    for i in range(N):
        input_pin = "".join(random.choice("123456789") for _ in range(len(STORED_PIN)))
        containsPin(e, input_pin, STORED_PIN)
        values.append(np.array([ord(x) for x in input_pin + STORED_PIN], dtype=np.uint8))
        traces.append(np.array([event["register"] for event in e.trace if "register" in event]))

    print("Using Lascar to get an NICV")

    res = show_nicv(values, traces, nr_digits=len(STORED_PIN))

    viewer([event["instruction"] for event in e.trace], res)


================================================
FILE: examples/HW_analysis/pin_fault.py
================================================
#!/usr/bin/env python3

import numpy as np

from rainbow import HammingWeight, TraceConfig
from rainbow.devices.stm32 import rainbow_stm32f215 as rainbow_stm32
from rainbow.fault_models import fault_skip
from rainbow.utils.plot import viewer
from rainbow.utils.color_functions import highlight_asmline 

# Pick any reference pin (STORED_PIN) and a different input pin
# Goal is to make 'storage_containsPin' function return a non-null
# value, which would mean the code executes as if the user PIN
# was correct although it was not

STORED_PIN = "1874"
INPUT_PIN = "0000"

def setup_emulator(trace_config=TraceConfig()) -> rainbow_stm32:
    print("Setting up emulator")
    e = rainbow_stm32(trace_config=trace_config)
    e.load("trezor.elf")

    # as in the side-channel example, this is the location of the reference
    # pin in Flash
    e[0x08008110 + 0x189] = bytes(STORED_PIN + "\x00", "ascii")

    # Pick any address for the input pin...
    e[0xcafecafe] = bytes(INPUT_PIN + "\x00", "ascii")

    return e

def result(u):
    """ Test whether execution was faulted """
    return u['r0'] != 0 and u['pc'] == 0xaaaaaaaa


N = 57

total_faults = 0
total_crashes = 0
fault_trace = [0] * N
crash_trace = [0] * N

e = setup_emulator()
print("Loop on all possible skips")
print("r0 should be 0 at the end of the function if no fault occurred")
for i in range(1, N):
    e.reset()

    # The first fault might not actually work depending
    # on the value of r5 when calling. Remove comment to observe
    # e['r5'] = 0x60000000

    e['r0'] = 0xcafecafe
    e['lr'] = 0xaaaaaaaa

    pc = 0
    try:
        # Run i instruction, then inject skip, then run
        pc = e.start_and_fault(fault_skip, i, e.functions['storage_containsPin'][0], 0xaaaaaaaa, count=100)
    except RuntimeError:
        # Fault crashed the emulation
        total_crashes += 1
        crash_trace[i] = 1
        d = e.disassemble_single(pc, 4)
        highlight_asmline(pc, d[2], d[3])
        pc += d[1]
        print("crashed")
        continue
    except IndexError:
        pass

    # Print current instruction
    d = e.disassemble_single(pc, 4)
    highlight_asmline(pc, d[2], d[3])
    pc += d[1]

    if result(e):
        # Successful fault
        total_faults += 1
        fault_trace[i] = 1
        print(" <-- r0 =", hex(e['r0']), end="")

print(f"\n=== {total_faults} faults found ===")
print(f"=== {total_crashes} crashes ===")

# get an 'original' side channel trace
e = setup_emulator(trace_config=TraceConfig(register=HammingWeight(), instruction=True))

e['r0'] = 0xcafecafe
e['lr'] = 0xaaaaaaaa

e.start(e.functions['storage_containsPin'], 0xaaaaaaaa)

trace = np.array([event["register"] for event in e.trace if "register" in event], dtype=np.uint8)
fault_trace = trace.max() - np.array(fault_trace, dtype=np.uint8)[:trace.shape[0]] * trace.max()

viewer([event["instruction"] for event in e.trace], np.array([trace, fault_trace]))


================================================
FILE: examples/HW_analysis/trezor.hex
================================================
:020000040801F1
:10000000F8FF0120EB9C030859AF030891AF0308E8
:10001000A9AF030855BF030855BF0308000000003F
:10002000000000000000000000000000499D0308DF
:1000300057BF03080000000057BF030841B2030880
:1000400055BF030855BF030855BF030855BF030834
:1000500055BF030855BF030855BF030855BF030824
:1000600055BF030855BF030855BF030855BF030814
:1000700055BF030855BF030855BF030855BF030804
:1000800055BF030855BF030855BF030855BF0308F4
:1000900055BF030855BF030855BF030855BF0308E4
:1000A00055BF030855BF030855BF030855BF0308D4
:1000B00055BF030855BF030855BF030855BF0308C4
:1000C00055BF030855BF030855BF030855BF0308B4
:1000D00055BF030855BF030855BF030855BF0308A4
:1000E00055BF030855BF030855BF030855BF030894
:1000F00055BF030855BF030855BF030855BF030884
:1001000055BF030855BF030855BF030855BF030873
:1001100055BF030855BF030855BF030855BF030863
:1001200055BF030855BF030855BF030855BF030853
:1001300055BF030855BF030855BF030855BF030843
:1001400055BF030855BF030855BF030855BF030833
:1001500055BF030855BF030855BF030855BF030823
:1001600055BF030855BF030855BF030855BF030813
:1001700055BF030855BF030855BF030855BF030803
:1001800055BF03087FB500260446174D03222B6890
:1001900081210393009640232BF026FA134B032270
:1001A00000930121402320462BF01EFA4023032216
:1001B0008321204600962BF017FA03220C4B1146A0
:1001C0000093204640232BF00FFA039A2B689A42A3
:1001D00001D02AF0B5FE7F2201212046054B04B054
:1001E000BDE870402BF08DBDF8FF01209D02010895
:1001F00051020108F901010837B512480468019459
:100200000C78812C044618D14878062815D14888E6
:10021000B0F5085F11D188882221012817BF0A484C
:100220000A4D106001200ABF156019801980019ADB
:1002300023689A4203D02AF083FE0020F7E703B038
:1002400030BD00BFF8FF0120AF220408D12204080E
:1002500013B50F4C0F4A23680321019340232BF061
:10026000EAF940280ED10C4B1878019A2368C0B2E5
:100270009A4201D02AF064FE064902B0BDE810405F
:1002800000F0FCBF019A23689A42F3D102B010BD7E
:10029000F8FF0120000000203C8C002013B5154C15
:1002A000154A23680121019340232BF0C4F940280B
:1002B000024619D1114B1B7801995BB92368994209
:1002C00001D02AF03DFE6E200B4902B0BDE810407F
:1002D00001F098B923689942F3D10146064802B06B
:1002E000BDE8104001F05EBA019A23689A42E8D155
:1002F00002B010BDF8FF0120400000203C8C00201F
:1003000010B50F4C86B023680E4A059380230293E4
:100310000D4B0E49019306230D4800930D4B2BF016
:1003200037F90D4B059A186023689A4201D02AF0DC
:1003300007FE0A4906B0BDE810402BF0A6BB00BF7F
:10034000F8FF0120182204083D8C00202522040813
:1003500000FC0708C0810020C08C00208501010836
:1003600073B5144E144D3368286801932BF038F997
:1003700001F0F0F9114C206038B14023226881214E
:1003800028682BF051F94028F7D100F047FA206097
:1003900038B140232268832128682BF045F9402892
:1003A000F7D1019A33689A4201D02AF0C9FD02B010
:1003B00070BD00BFF8FF0120C08C0020388C0020E9
:1003C00007B5084B1A680192074A11781070019A14
:1003D0001B6808469A4201D02AF0B2FD03B05DF8CE
:1003E00004FB00BFF8FF01203C8C0020F7B50B4C4C
:1003F00005462268019204DF0646094F04DF801B90
:10040000A84205D3019A23689A4205D02AF098FDA4
:1004100038682BF0E5F8F1E703B0F0BDF8FF0120F4
:10042000C08C002073B5294E2028326805460C4642
:10043000019245D10246264920462CF031F9002888
:1004400040D02A46234920462CF02AF9002839D0EA
:100450002A46214920462CF023F998B32A461F4901
:1004600020462CF01DF968B32A461D4920462CF081
:1004700017F938B32A461B4920462CF011F908B366
:100480002A46194920462CF00BF9D8B12A461749BB
:1004900020462CF005F9A8B12A46154920462CF033
:1004A000FFF878B12022134920462CF0F9F8B0FA71
:1004B00080F04009019A33689A4205D02AF040FD45
:1004C0000020F7E70120F5E702B070BDF8FF01203A
:1004D00059A404087AA404089BA40408BCA4040832
:1004E000DDA404085B230408FEA404081FA5040877
:1004F00040A5040861A50408F0B5424C91B02368FA
:1005000007A80F932AF0F6FD07A90546FFF78AFF13
:10051000034668B93C4A059004923C4ACDE9020280
:100520003B4A01923B4A00921A4619463A484EE02D
:10053000EFF31483DB075CD4202D06D12A4637491C
:1005400007A82CF0ADF8002853D00023344A0593B7
:100550000492344A0193CDE90232334A194600929B
:1005600032481A4629F0C2FC0A242AF0A9FD304E6E
:10057000304F2AF01FFF022100202AF0BBFF02218A
:1005800001202AF0B7FF4FF00065A959284604352D
:100590002AF098FFBD42F8D12AF01EFF07A82AF0E2
:1005A000A9FD2028024616D11C4907A82CF078F88E
:1005B000034680B9204A05900492204A0146CDE9BD
:1005C00002021F4A01921F4A009202461E4829F069
:1005D0008DFC29F099FB013CCBD10B4B0594049386
:1005E0000A4BCDE90243194B0193194B0093234663
:1005F0009AE70F9A23689A4201D02AF0A1FC11B021
:10060000F0BD00BFF8FF01209CA30408B1A30408BB
:10061000C4A30408CEA30408D4E907087CA30408F3
:10062000E1A30408EEA30408FCA3040874EA070885
:100630007C23040000800008A3C6040810A404085A
:1006400021A404082FA40408FCE907083FA4040817
:1006500047A404081D4B2DE9F74F054688460024A2
:1006600099464FF0280A17461A68DFF868B00192D9
:100670000AFB04B62022314628462CF011F858B95E
:10068000336AC8F80030736A3B60019AD9F80030C9
:100690009A4218D02AF054FC01340B2CE8D10C4CAF
:1006A0000421224628462AF0E1FC2E2304F10A0206
:1006B000042105F11C00637223722AF0D7FCC8F8EC
:1006C00000400023E0E703B0BDE8F08FF8FF012011
:1006D000C48C0020A0A704082DE9F3410F4DDFF8DA
:1006E00040802A68071F019200F11C0657F8041F7A
:1006F000404616F071FF044640B906F011FE204650
:10070000019A2B689A4205D02AF01AFCB742EDD123
:100710000348F5E702B0BDE8F08100BFF8FF012013
:100720008000002037B5094C094D226801922AF05B
:10073000BDFB431E03332860F9D8019A23689A420F
:1007400001D02AF0FDFB03B030BD00BFF8FF01204F
:10075000D88C002073B541F688510025174C184AF3
:100760002368019313685D5403F5EC5145790B60E0
:10077000817901EB052141F68455595141F68951A2
:1007800005795D54C11D00F13F0551F8046BA94284
:1007900043F8046BF9D109781970136803F5EC5329
:1007A0001A6839321A600268064B1A60019A236887
:1007B0009A4201D02AF0C4FB02B070BDF8FF0120BC
:1007C000E48D0020D88C002073B5104B104C1A68B3
:1007D000246801920F4A1568691C01F07F018C4260
:1007E0000BD00D4C04EB851400F1400550F8046B60
:1007F000A84244F8046BF9D11160019A1B689A422F
:1008000001D02AF09DFB02B070BD00BFF8FF0120AF
:10081000ECAD0020E88D0020EC8D002007B50D4BDD
:100820000D481A680D490192096802688A421FBF83
:10083000511C01F07F01016009480CBF002000EB52
:100840008210019A1B689A4201D02AF079FB03B00A
:100850005DF804FBF8FF0120ECAD0020E88D0020DE
:10086000EC8D00202DE9F04114460746254E92B04C
:1008700033680D463A2200210DF10A0011932CF045
:1008800019F8392C8DF80870274628BF39271E4BD8
:100890003A461B68294601930DF10B00230A8DF897
:1008A00009308DF80A402BF02DFF01A8E41B3D44D0
:1008B000FFF78AFF00275FFA87F801372CB9119AF2
:1008C00033689A421BD02AF03BFB3B2200210DF1FA
:1008D00009002BF0EFFF3B2C8DF80880A04628BFC5
:1008E0004FF03B08294642460DF109002BF00AFF64
:1008F00001A8FFF769FFA4EB08044544DBE712B049
:10090000BDE8F081F8FF0120D88C002007B5084B26
:100910000A461968019101991B68994201D02AF091
:100920000FFB0146812003B05DF804EBFFF79ABF8F
:10093000F8FF012070B50F4C92B023683C220646A8
:100940000D4602A8002111932BF0B4FFBF238DF8B0
:100950000830012301A88DF80A3001968DF80B505C
:10096000FFF732FF119A23689A4201D02AF0E8FA81
:1009700012B070BDF8FF012030B5124C93B0226860
:100980001192114A156849B103212846FFF7D2FF99
:10099000119A23689A4213D02AF0D2FA0B4B1A68A4
:1009A0000AB10B4A1A603C22002102A82BF082FFF8
:1009B000882301A801958DF80830FFF705FFE7E7C8
:1009C00013B030BDF8FF0120D88C0020DC8C002053
:1009D000801A060070B5214E0468326896B005464C
:1009E00015924CB90B212046FFF7A4FF159A3368E6
:1009F0009A4231D02AF0A4FA3C22002106A82BF01A
:100A000059FF86238DF8183011238DF81A302B46A4
:100A10006A4653F8070F05945968631C03C202D154
:100A2000FFF780FE04460E4B0294039301236C46AD
:100A30008DF8103004AD0DF11B03224603CAAA4203
:100A400018605960144603F10803F6D11068186065
:100A500005A8FFF7B9FEC9E716B070BDF8FF012081
:100A60000201060207B5084B0A461968019101996F
:100A70001B68994201D02AF063FA0146832003B033
:100A80005DF804EBFFF7EEBEF8FF012013B50A4C4A
:100A90008DF80100236802210193030A68468DF84E
:100AA0000030FFF7DFFF019A23689A4201D02AF055
:100AB00047FA02B010BD00BFF8FF012007B5104A89
:100AC00001791368019343791B0203EB0143817998
:100AD000CB42019913680AD0994201D02AF030FA2A
:100AE0004FF4CE4003B05DF804EBFFF7CFBF99425F
:100AF000F4D10821034803B05DF804EBFFF7B2BF5F
:100B0000F8FF012058A904082DE9F04F894B8A4DC0
:100B10001A68ADF2446DCDF83C262A780446079356
:100B2000D2B904F1270629F019F920228349304669
:100B30002BF0B6FD0346D0B9814ACDE904000292FC
:100B4000804A03900192804A014600927F48804A81
:100B500029F0CCF914232B702B78142B12D146F6E4
:100B60008510FFF793FF7B4B7B4A1A603FE009AA91
:100B700008A93046FFF76EFDDDE90812774807F057
:100B80006FFBE7E7152B40F0CD8040F20D520021BE
:100B90004BA82BF08FFE05238DF82C314023002627
:100BA0008DF86E3104F127080AAF2AF07FF940F082
:100BB000004047F826000136082EF6D10DF26F16D8
:100BC000BC4632460DF1480E634603CB73451060B8
:100BD00051609C4602F10802F6D1614801F0B0FA7A
:100BE00070B906F09DFB4FF4D540FFF74FFF079B10
:100BF000DDF83C261B689A4200F097802AF0A0F9A5
:100C00003846FFF769FD82460028ECD043460DF1D7
:100C1000EC0C08F1200E624618685968083303C2CC
:100C200073459446F7D133460DF5867C0DF28F1E41
:100C3000624618685968083303C273459446F7D171
:100C40000AF1280B0DF28F130DF1EC0900934A46BF
:100C500040232021584616F091F8DAF86C300DF256
:100C60002D125868594611F00DFD9DF86E014FF494
:100C70008E723C4930442BF045FD00233B704346C7
:100C80000DF1290204F1470153F8040B8B4242F89D
:100C9000040BF9D107340DF1490354F8042B4445F2
:100CA00043F8042BF9D133460DF169020DF2AF116F
:100CB00053F8040B8B4242F8040BF9D141220DF298
:100CC0002D110DF1A9002BF01DFD0021C223CDE94E
:100CD00002110093CDF804903B46234A234811F0BB
:100CE00075FC044600287FF47EAF9DF86E114846DF
:100CF00001F58E71314412F0A1F99DF86E311C4A54
:100D0000C1B2128803F58E730B44F2529DF86E3116
:100D1000104A03F2611319444BA82C701460FFF7BA
:100D2000A1FE64E70B4B00221FE70DF2446DBDE806
:100D3000F08F00BFF8FF0120E18D002037A70408E5
:100D400058A704086DA7040882A7040874EA0708D6
:100D5000D6FC0408DC8C0020801A060095A7040845
:100D60008000002085A50408A1A6040864010608E7
:100D700082A5040873B5214D04462B682E460193C5
:100D800001F058FD60B9019A2B689A4201D02AF00F
:100D9000D7F846F6851002B0BDE87040FFF776BE82
:100DA00062792379120202EB0342A3791A44402AA2
:100DB00006D0019A2B689A42E9D14FF4CE40EAE777
:100DC000E51D29460E482BF06BFC60B129460C4B03
:100DD00004F1470251F8040B914243F8040BF9D196
:100DE0000022084B1A70019A33689A42CFD12046EC
:100DF00002B0BDE87040FFF787BE00BFF8FF0120DA
:100E0000E08C0020E18D00202DE9F04F7F4DC1B036
:100E10002B6804463F9301F00DFD059520B946F679
:100E20008510FFF733FE97E0637922791B0203EB0D
:100E30000243A27913443F2B02DC4FF4CE40F0E78B
:100E400094F84730402B02D04FF4D540E9E704F145
:100E5000480709AE3B46B44604F168056246186887
:100E60005968083303C2AB429446F7D1002356F8C1
:100E70002320002AE8DA0133082BF8D1644801F076
:100E80005FF910B906F04CFADEE73046FFF724FCB4
:100E900083460028D8D004F127090DF1AC0A4B464F
:100EA000D64604F14708724618685968083303C2E9
:100EB00043459646F7D13B4633AF03F1200E3A4601
:100EC00018685968083303C273451746F7D11BAF3A
:100ED0000BF1280B4023524620215846009715F06D
:100EE0004DFF2022394628462BF0DAFB04900028DB
:100EF000AAD1A378072B92D0032BA5D1E51DC1223F
:100F0000294644482BF0CCFBDFF8208138B1C122C0
:100F1000294640482BF0F6FB049B88F8003098F8EF
:100F2000003073B928F01AFF08AA07A94846FFF74E
:100F300091FBDDE90712384807F092F90A2388F897
:100F4000003098F800300A2B0DD146F68510FFF7D7
:100F50009DFD324B324A1A60059B3F9A1B689A42AC
:100F600050D029F0EDFF0B2BF6D101F067FD0123E6
:100F70008DF8AC30030E8DF8AD30030C8DF8AE302B
:100F8000030A8DF8AF30B4464B468DF8B0004734B5
:100F9000624618685968083303C2A3429446F7D1E1
:100FA00001238DF84430DDF8AD30CDF845300DF13A
:100FB000490355F8042B4D4543F8042BF9D1002182
:100FC0004523CDE902110093019733465A4615484F
:100FD00011F0FCFA044600287FF436AF0DF1B101A0
:100FE000384612F02BF8104AC1B212884B1D2AF86D
:100FF00003200A4B0731504688F800401C60FFF779
:1010000031FDA9E741B0BDE8F08F00BFF8FF012036
:1010100080000020208D00202AA70408DC8C0020FE
:10102000801A06006401060882A50408E18D0020EC
:1010300037B5234A05791368019343791B0203EB03
:10104000054385792B4407338B4233D8037863B14A
:1010500001991368994201D029F072FF4FF4DC40E6
:1010600003B0BDE83040FFF711BD43780199022B72
:101070000BD0032B11D0012B136816D19942EBD161
:1010800003B0BDE83040FFF775BE13689942E3D165
:1010900003B0BDE83040FFF7B7BE13689942DBD11B
:1010A00003B0BDE83040FFF709BD9942D4D14FF4F9
:1010B000DA40D5E7019913689942CDD103B030BD2C
:1010C000F8FF01202DE9F04F494EADF5EC5D85B0FC
:1010D00033680DF5EC52474C0C321360C4F800D065
:1010E000FFF738FB0120FFF76BF9434F41F68453BC
:1010F0002068C15841F6895300F5EC52126810F887
:101100000390121A8A420CDBB9F1810F3CD032D81D
:10111000B9F1000F3AD0394B01211868FFF70AFCEA
:1011200034E041F688529A46934610F80280344DD6
:10113000236813F80A2013F80B304345D6D19145A4
:10114000D4D1013D14D12D4F05213868FFF7F2FBB2
:1011500028463D602560FFF733F906F0E1F80DF50C
:10116000EC530C331A6833689A423CD029F0E8FEFD
:10117000FFF7F6F8DCE7B9F1830F1AD0B9F1880F61
:10118000C9D1FFF7F9FB01E0FFF7C0FB41F6885337
:10119000FF212268D15241F6895221683B68885C60
:1011A00053B90028A2D1174B20601870134B186058
:1011B000D1E7FFF73DFFE9E7002897D1013B3B600E
:1011C000FFF7CEF828F0CAFD0F4B1B78002BE2D0BA
:1011D0000C4A13780A2B01D0142BDCD10133137085
:1011E0000A4B3B60D7E70DF5EC5D05B0BDE8F08F2D
:1011F000F8FF0120E48D0020DC8C0020D88C00203A
:10120000811A0600E18D00205C57012000093D0095
:1012100013B5194B1968019190F90410002925DACA
:101220000468611E03310CD9019A1B689A4201D0EF
:1012300029F086FE0B21204602B0BDE81040FFF7E2
:1012400079BB4179827902EB012241F67E518A42D3
:10125000019A1B6803DD9A42EAD10321EBE79A4227
:10126000E6D102B0BDE81040FFF72CBF019A1B6821
:101270009A42DDD102B010BDF8FF0120F7B5424B14
:101280000C4609791A688629054601921E4619D12D
:101290002046FFF79FFB7DB13C4B1B6863B13C4A86
:1012A00021681268914207D141F684520021995079
:1012B00041F68852FF219952019A33689A420FD120
:1012C00003B0F0BD002854D0304D27682A681AB109
:1012D0002F480068B8420CD0019A33689A4201D076
:1012E00029F02EFE0621384603B0BDE8F040FFF796
:1012F00021BB41F6885711F0800FD75D0BD0FF2F2F
:1013000009D1019A1B689A42EAD1204603B0BDE890
:10131000F040FFF71FBAB94204D00421FFF70AFBDF
:101320002B68C1E741F6845002F5EC531B68105856
:101330009F1A8742C0DA41F67E5703F13B00801ABC
:10134000B842B9DC41F6885001311154621D3D3478
:1013500052F8041BA24243F8041BF9D111881980EA
:1013600092789A702B6803F5EC531A683B321A6036
:10137000A2E7019A1B689A42B2D1204603B0BDE8A9
:10138000F040FFF745BF00BFF8FF0120E48D0020CB
:10139000D88C0020F7B5154C154F23683A68019397
:1013A000144B9601D3F800C0134DBCF1000F03D1CC
:1013B0003F21A9550121196019680D4401314029C7
:1013C00001BF00211960C021531C05BFB3FBF1F21E
:1013D00001FB123319603B60019A2368A8559A42B9
:1013E00001D029F0ADFD03B0F0BD00BFF8FF012032
:1013F000F8DD0020F4DD0020F4AD002073B50D46CB
:10140000094C8E1820680190B54206D1019A2368D4
:1014100001209A4206D029F093FD15F8010BFFF741
:10142000B9FFF1E702B070BDF8FF012037B50D4DEF
:101430002C6801940C4C23780BB9184608E08342C1
:101440000CD163788B4209D16388934206D16068DE
:10145000019A2B689A4203D029F072FD0C34EAE716
:1014600003B030BDF8FF012060A9040873B5114D29
:101470002C680194104C26782EB9019A2B689A4258
:101480000DD102B070BD864211D166788E420ED168
:10149000668896420BD101992A68914201D029F0C1
:1014A0004FFD1846A26802B0BDE8704010470C34EA
:1014B000E1E700BFF8FF012060A904082DE9F04131
:1014C000304D88B02B680C4617460A466F2180467F
:1014D0000793FFF7ABFF064630B90020079A2B6849
:1014E0009A424CD029F02CFD01463A4601A828F03A
:1014F000CDFA0028F1D0B8F16E0FEED12320FFF71E
:1015000049FF2320FFF746FF200AFFF743FFE0B221
:10151000FFF740FF9DF80700FFF73CFF9DF806002E
:10152000FFF738FF9DF80500FFF734FF9DF8040032
:10153000FFF730FF144B002402934FF0FF33314686
:10154000124E3A4602A8CDE90343CDE9054428F0FE
:101550005DFA3268002AC1D00D490E4F0B6807EBC7
:1015600083173F2A08D93460C0240133B3FBF4F257
:1015700004FB12330B60B1E7BC540132F1E708B051
:10158000BDE8F081F8FF0120FD130108F4DD002023
:10159000F8DD0020F4AD00202DE9F0439846174611
:1015A000164C87B02368DDF838904FF4405205465A
:1015B0000E461348002105932BF07CF94A4641461C
:1015C00001A827F051F90E4A394601A827F0B8FDC5
:1015D00058B10B4B324669212846FFF747FF059A61
:1015E00023689A4206D029F0ABFC0499032001F04D
:1015F000F5FCF4E707B0BDE8F08300BFF8FF012079
:10160000703100202DE9FF47DFF84491402AD9F8D6
:10161000003080460C4603934F466CD1444B1A78F9
:101620001E46002A60D10B783F2B64D14B78232BC8
:1016300061D18B78232B5ED1CB780A790D7A02EBBE
:1016400003223C4B92B21A804B7905EB03658B79F0
:1016500005EB0345CB79692105EB0325364B1D606E
:10166000FFF7E4FE354B186068B9039AD9F80030EB
:101670009A4201D029F064FC0120314904B0BDE850
:10168000F04701F0ABBCB5F5405F07D9039AD9F834
:1016900000309A42EED12B490320EFE701232A4A7A
:1016A000337004F109033D3453F8041BA34242F89C
:1016B000041BF9D1198811809B7893703722234B32
:1016C0001A601D4B214C1B6822689A4213D3194A99
:1016D00040461188194A009312681B4BFFF75CFFC4
:1016E00000232360337006E0012AEAD10A783F2AFA
:1016F00008D000221A70039A3B689A42BAD104B00B
:10170000BDE8F087DFF844A00F48DAF80050013157
:10171000C5F54059B9F13F0F28BF4FF03F092844A4
:101720004A464D442AF0EEFFCAF80050C9E700BF10
:1017300008DE0020D881002004DE0020F0AD00206B
:1017400020AD040830AD04087001002000DE002048
:10175000F8FF012037B50F4A0F4C13680F4901936A
:10176000096823688B421BBFC0250D48002000EB91
:1017700083101EBF0133B3FBF5F105FB1133019953
:1017800018BF23601368994201D029F0D9FB03B038
:1017900030BD00BFF8FF0120FCDD0020F8DD002097
:1017A000F4AD002070B52B4D86B02B684029059311
:1017B00039D103783F2B36D14378232B33D183782B
:1017C000232B30D14379027A02EB0362837902EB57
:1017D0000342C37902EB0322402A24D8C2F140031A
:1017E000082B20D9C378047900F1090104EB032404
:1017F000A4B201A827F038F8142C174E19D005D838
:10180000CCB1132C19D0154901201AE01B2C03D0A0
:101810002A2CF8D1124900E01249134A01A827F0F6
:101820008FFC60B13480059A2B689A420FD029F062
:1018300087FB0E49F1E70E49EFE70E49EDE703207C
:10184000049901F0CBFB4FF6FF733380EBE706B052
:1018500070BD00BFF8FF0120DA81002020AD040830
:101860004DCF07087BCE0708F00000203CD50708C5
:1018700085D70708B6CF070807B50A4B1A68019243
:10188000019A1B689A4201D029F05AFB4FF47A73EF
:101890005843B0FBF1F1044803B05DF804EB28F0C5
:1018A00033BC00BFF8FF01204AAD040873B50C4CEF
:1018B00006462368012001930D46FEF797FD019A25
:1018C00023689A4201D029F03BFB4FF47A707043B1
:1018D000B0FBF5F1034802B0BDE8704028F014BC3D
:1018E000F8FF012040AD040800B50B4B89B01B6820
:1018F0000A4A079300230492094A0593CDE902326C
:10190000084A19460192084A084800921A4628F0E7
:10191000EDFA28F0F9F900BFF8FF0120A3C604088A
:1019200068AD0408C4A3040876AD0408D4E9070828
:1019300007B5084B10F0F00F1A68019201D0FFF7BD
:10194000D3FF019A1B689A4201D029F0F9FA03B03B
:101950005DF804FBF8FF012013B50A4C0C21236845
:101960000948019311F0E8FB019A23689A4201D0DB
:1019700029F0E6FA0C21054A034802B0BDE8104000
:1019800029F074BBF8FF012014DE002020DE0020C7
:1019900073B5002506460D4C402123680C48019381
:1019A0000C4B1D7011F026FC0B4B33210B481D70A6
:1019B00011F020FC0EB10A4B1D70019A23689A4267
:1019C00001D029F0BDFA02B070BD00BFF8FF0120C0
:1019D000706100200BDE002009DE0020B0610020D5
:1019E0000ADE002007B5084B1A680192019A1B68AD
:1019F0009A4201D029F0A4FA4FF4CE61034803B013
:101A00005DF804EB11F0F6BBF8FF0120E461002063
:101A10002DE9F043AB4BC3B01A688146419298461A
:101A2000002800F0AD80A84C94F8F23123B10023D7
:101A3000A64A1370A64A137094F8FC3113B1002221
:101A4000A44B1A70092394F87820636794F8003146
:101A5000002A40F0D280002B40F0D2809E4D84229C
:101A60002B799E499E4884F878302AF04BFE95F8F1
:101A70008C30F1229B499C4884F800312BF0A2FF66
:101A800095F8E03584229949994884F854362AF02B
:101A900039FE94F8F23143B98F4B93F87E2184F8E4
:101AA000F22193F87F3184F8F33194F8FC31002B64
:101AB00040F0ED80884B0A2293F888318D498E489A
:101AC00084F8FC312BF07EFF94F807324BB9824B3F
:101AD000112293F893318949894884F807322BF011
:101AE00071FF94F81932002B40F0D9807A4B2122F3
:101AF00093F8A5318349844884F819322BF062FFAA
:101B000094F83B3243B9744B93F8C72184F83B22D5
:101B100093F8C83184F83C3294F83D32002B40F001
:101B2000C6806D4B40F2044293F8C931774978483A
:101B300084F83D322AF0E6FD94F8443643B9664B0A
:101B400093F8D025D3F8D43584F84426C4F8483621
:101B500094F84C3643B9604B93F8D82584F84C265A
:101B600093F8D93584F84D3694F84E3643B95A4B2C
:101B700093F8DA25D3F8DC3584F84E26C4F85036CD
:101B800001AC4FF48072634920462AF0BBFD02206D
:101B900001DF02DF5F4B604903F17842A2F50042AA
:101BA000A25843F8042B8B42F6D15C4A4A4C1A6087
:101BB0005B4B5C4A19681160596851609A685A4BCE
:101BC0001A60B9F1000F09D05849594803F27463FB
:101BD00022188A5844F8042B9C42F9D1FFF702FFDF
:101BE0000022544B44F8042B9C42FBD9419AD8F86C
:101BF00000309A4263D029F0A3F9002B3FF449AF9B
:101C00000127384684F85476FEF7DAFB05462E4A5B
:101C1000494B02F20110494917F048F92846FEF7EE
:101C2000CFFB474B474D484AA3F2E460402115F0F3
:101C3000C5FB2946424815F0CFFC4FF0200CC4F8F4
:101C40006056424DD4F8E43605F18406C4F858369F
:101C50000FCE0FC596E80F0005F1180685E80F00B6
:101C600084F8887605F194070FCF0FC6C4F864C6D0
:101C7000C4F88CC697E80F0086E80F0005F16C00E9
:101C8000702111F0B7FA0020FFF782FE01E794F807
:101C9000FD31002B7FF418AF84F8FC3114E794F881
:101CA0001A32002B7FF42CAF84F8193228E7D4F8CD
:101CB0004032002B7FF440AF84F83D323CE743B024
:101CC000BDE8F083F8FF0120706100200BDE0020EA
:101CD00009DE00200ADE00201081000818810008BB
:101CE000EC6100209D81000871620020F4860008EC
:101CF000C8670020998200086D630020A482000854
:101D000078630020B68200088A630020DC82000825
:101D1000B0630020008000080081000873746F72B7
:101D200014DE0020048100080C810008E46100201A
:101D3000F07EFFF7FFBF000879180108D6120508EA
:101D4000546800204632558010700508D86700207E
:101D500073B5154903460A680220019202DF00208C
:101D6000124A106015680DB1FFF7BEFD032001DFB8
:101D70000F4A136012689A42F6D101200D4B0E4CA7
:101D8000D3F84826266883F844063244C3F8482628
:101D9000019A0B6825609A4201D029F0D1F802B06F
:101DA000BDE87040FFF734BEF8FF01200081000855
:101DB00000C000087061002010DE002013B5094C3F
:101DC0002368019300DF0120FFF722FE03DF019A61
:101DD00023689A4201D029F0B3F802B0BDE8104060
:101DE000FFF7A6BDF8FF0120F7B5434D2B6801931F
:101DF000FFF7F8FD0422414941482AF051FC002830
:101E000071D1404E3468092C6ED83F4B3F4A07CA07
:101E100083E807003E4A0C21184629F027F97CB3D5
:101E2000022C2FD9052C30D9072C31D9082C25D1DB
:101E30004FF4BC6300DF022002DF00229A5104331A
:101E4000B3F5CE6FFAD303DFFFF772FD052C15D87B
:101E500096F8803123B1D6F884311F2B28BF1F2379
:101E600000DF032001DF022002DF4FF0FF3202FA21
:101E700003F3284A136003DFFFF75AFD264B0BE0FC
:101E80002346D7E74FF4E673D4E74FF4BA63D1E7BC
:101E90004FF4BB63CEE7043319680029FBD0002060
:101EA00003F17843A3F550431C4ADB00136011F0A3
:101EB000010F03F1010712D000B11360092C0CD0FF
:101EC00096F88C301648F12280F80031154900F25E
:101ED00001102BF077FDFFF771FF012004E04908A6
:101EE00001203B46E3E70020019A2B689A4201D08B
:101EF00029F026F803B0F0BDF8FF01205CAD04081E
:101F0000008100081081000814DE00200481000810
:101F100020DE002000C0000800D0000810DE0020F5
:101F2000706100209D81000813B50D4B0D4C1A689F
:101F300001460192012284F81922019A1B6858B1C6
:101F40009A4201D028F0FCFF212204F21A2002B0AC
:101F5000BDE810402BF036BD9A42F3D102B010BD5F
:101F6000F8FF01207061002073B5114C064623680C
:101F700025460193B0B10F492AF05AFD90B90123CB
:101F80000D48019A80F8073223689A4201D028F060
:101F9000D7FF1122314600F5027002B0BDE8704053
:101FA0002BF010BD019A2B689A42F0D102B070BD9F
:101FB000F8FF012060AD04087061002007B50B4BED
:101FC0000B491A68019200220A700A490A7001211D
:101FD000094A82F8F21182F8F301019A1B689A42C9
:101FE00001D028F0ADFF03B05DF804FBF8FF01203D
:101FF0000BDE002009DE00207061002007B50A4BCF
:102000001A680192094A92F87E0108B192F87F019C
:10201000019A1B6800F001009A4201D028F090FF5D
:1020200003B05DF804FB00BFF8FF01201081000839
:10203000F7B5134C0E462268014601920122114D5C
:1020400085F83D222F4605F5117069B1B6F5806F10
:102050000AD132462AF056FBC5F84062019A23683D
:102060009A420AD028F06CFF4FF4806200212AF0D7
:1020700021FC0023C7F84032F0E703B0F0BD00BFF9
:10208000F8FF0120706100202DE9F341234D244F1A
:1020900029783B6881420646019303D1214B1B7886
:1020A000002B36D1204C94F88C3033B90020019AA3
:1020B0003B689A422FD028F043FF46B994F8C731C5
:1020C00053B91A4816F0E8FC50B9FFF70DFC05F0BB
:1020D00039F80028F2D1E9E794F8C831002BF0D0A4
:1020E0000120FEF76DF98046114C1249124BA4F104
:1020F0004002002E18BF21460C4816F0D7FE40467D
:10210000FEF75EF90122074B2E701A70A4F1400011
:10211000CDE70A48CBE702B0BDE8F0810CDE002035
:10212000F8FF01200BDE0020108100089D810008CF
:10213000B0610020D6120508AD18010870610020BA
:1021400030B50F4C85B0236803930E4B93F8E03500
:1021500093B10D4B0D4D009301900D4B0D4AA968A5
:10216000286815F06BF8003018BF0120039A236827
:102170009A4203D028F0E4FE1846F7E705B030BDD8
:10218000F8FF01201081000810700508F48600088F
:102190002C870008048700082DE9F0434B4EDFF838
:1021A0004C813368ADF5257DA39398F8043005463E
:1021B0000F461446002B73D0454938462AF038FCA8
:1021C000814600286CD104F0BDFF044638B90024D4
:1021D000A39A336820469A4274D028F0B1FECDE924
:1021E00000753C483C4B81683C4A006815F026F875
:1021F0000028ECD098F87E21002AE9D098F87F31A9
:10220000002B5BD0364A1478002C59D0354F97F804
:102210004030002BDCD00120FEF7D2F8804607F1D9
:1022200040002BF0F7FB0823024607F14001009322
:1022300040A82D4B16F060FF4FF400614846FFF7B1
:1022400035FB4FF480774FF480710DEB010016F0F1
:10225000CFFF38464FF4006107F58077FFF726FB84
:10226000B7F5106FEFD193A940A816F0FBFF03AFAD
:102270004046FEF7A5F8394693A823F045FA05F144
:1022800008019BAB00972022084623F0EBFF05F1E5
:10229000280100979BAB2022084623F0E3FF97E735
:1022A0002046FFF7F1FE002891D02B463A46402108
:1022B00015F084F8041C18BF012489E7144687E749
:1022C0001C4685E70DF5257DBDE8F083F8FF01206C
:1022D0003D70050818810008508100082881000819
:1022E00009DE00207061002053AD04081081000851
:1022F00007B5094B09481A680192094A92F8A521C5
:10230000002A019A1B6808BF00209A4201D028F0D9
:1023100017FE03B05DF804FBF8FF0120B682000849
:102320001081000807B5094B09481A680192094A4B
:1023300092F89321002A019A1B6808BF00209A4254
:1023400001D028F0FDFD03B05DF804FBF8FF01208B
:10235000A48200081081000807B50B4B1A6801928F
:102360000A4A92F8C90130B1D2F8CC210848B2F536
:10237000806F18BF0020019A1B689A4201D028F094
:10238000DFFD03B05DF804FBF8FF012010810008B9
:10239000E082000807B5014601200A4A136801934C
:1023A000094B83F8000101981268904201D028F08F
:1023B000C7FDF12203F2011003B05DF804EB2BF02E
:1023C00001BB00BFF8FF01207061002007B50D4B75
:1023D0000D481A68019290F8002162B90B4A0C4826
:1023E00092F88C20002A08BF0020019A1B689A42AC
:1023F00004D028F0A5FD00F20110F6E703B05DF867
:1024000004FB00BFF8FF012070610020108100086C
:102410009D810008F7B50E4A054613680D4F0193DC
:1024200000232C1A15F8016B3C4494F88D104EB91A
:102430000B43019913680CBF01200020994205D07D
:1024400028F07EFD891B0B43DBB2EAE703B0F0BD49
:10245000F8FF012010810008F7B50E4A0546136801
:102460000D4F019300232C1A15F8016B3C4494F88E
:1024700089114EB90B43019913680CBF012000204C
:10248000994205D028F05CFD891B0B43DBB2EAE7DB
:1024900003B0F0BDF8FF01201081000807B50A4B1A
:1024A0001A680192094A92F8880120B192F88901CC
:1024B000003018BF0120019A1B689A4201D028F011
:1024C0003FFD03B05DF804FBF8FF01201081000818
:1024D000012213B50B4C0146236801930A4B83F884
:1024E000FC2103F2FD100A222BF06CFA0022074BAC
:1024F0001A70019A23689A4201D028F021FD02B097
:1025000010BD00BFF8FF0120706100200ADE00202E
:10251000F7B5504E0446336801200193FFF738FAAF
:1025200001234D4D85F83B3285F83C3294F86C31EF
:10253000002B74D004F26D10FFF7CAFF94F87701F6
:1025400008B194F8780100F00100FFF737FD94F826
:10255000F270002F65D0012385F87830002385F8CC
:102560000031D4F8F4303D4FEB67D4F8F83004F57F
:10257000917CC5F88030D4F8FC30C5F88430202335
:10258000C5F8883004F581733A46186859680833ED
:1025900003C263451746F7D194F8223193B1012362
:1025A00085F8AC3020232E4FC5F8B03004F5A37C5D
:1025B00004F593733A4618685968083303C26345B3
:1025C0001746F7D100214022264B197022482AF0E5
:1025D00071F994F8793143B10123112204F5BD71E9
:1025E000214885F807322BF0EDF994F88B3153B37D
:1025F00004F5C670FFF798FC94F8AF314BB1012396
:102600001A4A85F844361268D4F8B0319B1AC5F8D6
:102610004836019A33689A4217D028F091FC144842
:102620008AE72378002BD4D00123F122E118114846
:1026300085F8003185F878702BF0C4F9094B4022F9
:102640001F703946C2E70A48D4E703B0BDE8F0403E
:10265000FFF7B4BBF8FF012070610020FC6100208F
:10266000246200200BDE00207863002010DE0020B2
:10267000D61205087162002013B5094C3322236875
:102680000146084801932BF09DF90122064B1A7070
:10269000019A23689A4201D028F052FC02B010BD82
:1026A000F8FF0120B061002009DE002007B5074BCC
:1026B0001A680192064A1078019A1B689A4201D062
:1026C00028F03EFC03B05DF804FB00BFF8FF0120DA
:1026D00009DE002030B51E4C0D462168ADB02B91AF
:1026E00012B91C4B1B7803B330BB2021284610F0D5
:1026F00023FD19482BF08EF917490246684614F05D
:10270000BBFA20222946684614F0FAFA0C22134933
:10271000684614F0F5FA05F12001684614F002FB52
:10272000A821684610F066FD01232B9A18462368FD
:102730009A420BD028F004FC2B4600F1200250F8FE
:10274000041B904243F8041BF9D1D2E72DB030BDF1
:10275000F8FF012009DE0020B061002014DE002017
:1027600007B50121064B1A680192064A1170019AB9
:102770001B689A4201D028F0E3FB03B05DF804FB2C
:10278000F8FF01200ADE002007B5074B1A68019206
:10279000064A1078019A1B689A4201D028F0D0FBB3
:1027A00003B05DF804FB00BFF8FF01200ADE002043
:1027B00013B50A4C2368019300DF032001DF03DF18
:1027C000FFF7B6F80022064B1A60019A23689A4276
:1027D00001D028F0B5FB02B010BD00BFF8FF01200A
:1027E00010DE002007B5074B00681A68C04301924D
:1027F000019A1B689A4201D028F0A2FB03B05DF851
:1028000004FB00BFF8FF012007B5084B08481A6811
:10281000019202682AB1019A1B689A4203D028F0FB
:102820008FFB0430F5E703B05DF804FBF8FF0120EF
:1028300000C0000807B50A4B1A680192094A1179CD
:1028400049B992F88C00019A1B6800F001009A4285
:1028500003D028F075FB0120F5E703B05DF804FB19
:10286000F8FF01201081000807B50A4B1A68019291
:10287000094A92F8C70108B192F8C801019A1B6889
:1028800000F001009A4201D028F05AFB03B05DF835
:1028900004FB00BFF8FF01201081000807B50121EB
:1028A000084B1A680192084A82F83B1282F83C02EF
:1028B000019A1B689A4201D028F042FB03B05DF8F0
:1028C00004FB00BFF8FF01207061002007B50D4B2D
:1028D0001A6801920C4A92F84C1639B192F84D06DA
:1028E000019A1B689A420AD028F02AFB074A92F8FC
:1028F000D80508B192F8D90500F00100F0E703B05F
:102900005DF804FBF8FF01207061002010810008D1
:1029100007B50121084B1A680192084A82F84C1643
:1029200082F84D06019A1B689A4201D028F008FBF4
:1029300003B05DF804FB00BFF8FF012070610020C8
:1029400007B50D4B1A6801920C4A92F8DC1639B1A2
:1029500092F8DD06019A1B689A420AD028F0F0FA34
:10296000074A92F8680608B192F8690600F001007B
:10297000F0E703B05DF804FBF8FF01207061002070
:102980001081000807B50121084B1A680192084A16
:1029900082F8DC1682F8DD06019A1B689A4201D0A3
:1029A00028F0CEFA03B05DF804FB00BFF8FF012069
:1029B0007061002007B5124B1A680192114AD2F8D3
:1029C000DC2542EA00018A4213D001210E4A82F836
:1029D0004E16D2F850160143C2F85016019A1B68E1
:1029E0009A4201D028F0ACFA03B05DF804EBFFF78F
:1029F000E5B9019A1B689A42F4D103B05DF804FB73
:102A0000F8FF0120108100087061002007B5094B14
:102A10001A680192084A92F8DA0508B1D2F8DC0582
:102A2000019A1B689A4201D028F08AFA03B05DF837
:102A300004FB00BFF8FF01201081000837B56FF0DC
:102A40000104174D174A2B6810680193430903F1DD
:102A5000007300F01F0003F550539B00844000DF1B
:102A6000022002DF1C60136814460133B3F5006FC7
:102A7000136004D3FFF7C8FE0068FFF769F903DFAE
:102A8000FEF756FF084B019AD3F8D4052368184483
:102A90002B689A4201D028F053FA03B030BD00BF32
:102AA000F8FF012010DE00201081000807B50A4A57
:102AB0000A4913680193012381F84436084B1B68C7
:102AC000C01AC1F8480601991368994201D028F04C
:102AD00037FA03B05DF804FBF8FF012070610020B5
:102AE00010DE002007B50A4B1A680192094A92F8D5
:102AF0006A1639B1D2F86C06019A1B689A4203D063
:102B000028F01EFA0448F7E703B05DF804FB00BFA5
:102B1000F8FF012010810008C027090007B5012136
:102B20000B4B1A6801920B4A82F8DE1642F21071C2
:102B300088422CBFC2F8E006C2F8E016019A1B6872
:102B40009A4201D028F0FCF903B05DF804FB00BF05
:102B5000F8FF01207061002013B50D4C012023689F
:102B60000193FEF715FFFEF7F7FE00DF0020FEF7EA
:102B70004FFF03DFFEF7DCFE019A23689A4201D083
:102B800028F0DEF902B0BDE81040FFF711BE00BF2B
:102B9000F8FF012013B50A4C23680193FFF724F9CD
:102BA000019A236840B99A4201D028F0C9F902B0CD
:102BB000BDE81040FFF7D0BF9A42F6D102B010BD79
:102BC000F8FF0120F0B5384D384F2B6889B00793D6
:102BD00027F0C4F83A68364B9A420FD1354B197A30
:102BE00009B91B7853B1079A2B689A4201D028F093
:102BF000A7F909B0BDE8F04004F092BB2E4EB242F6
:102C000031D12C4C2D4BE2689A422CDD00232C4A0A
:102C10002C4801922C4ACDE904330092CDE90233CD
:102C20002A4A2B4927F062F90120FDF7C9FB05204C
:102C3000FDF7DCFB27F092F8237A002BF7D0052074
:102C4000FDF7D4FB27F08AF8237813B9237A002BF9
:102C5000F5D00020FDF7B4FB2378DBB10120FEF7AF
:102C600097FE04F043FB3B68B34216D104DF194BD7
:102C70001C68041BFFF736FF84420ED30120FEF7C9
:102C800087FE079A2B689A42B1D109B0BDE8F0409F
:102C900004F02CBB04F044FBE5E7079A2B689A424A
:102CA000A5D109B0F0BD00BFF8FF0120F0810020E0
:102CB000ED7201085C570120217301088FB20800F2
:102CC00099AD04084CEA0708ABAD040886AD0408CA
:102CD00092AD04083CDE002007B5114C2368019337
:102CE000FDF70AFC28F06CF928F0E0F82060EFF31B
:102CF0001483DB0701D428F07FFA0A4A0021282038
:102D000027F096FD27F0A6FBFFF744FF04F008FB31
:102D1000FDF7F6FAFDF724FBFFF754FFFAE700BFD3
:102D2000F8FF012094EB070813B500210D4B0E4C62
:102D30001A680E48019201F13102D2B20A550A54C2
:102D400001310929F7D1002262724272019A1B688F
:102D50009A4201D028F0F4F8044802B0BDE81040CF
:102D600010F02ABAF8FF0120E6810020DC81002063
:102D700037B50F4958240A680E4D0192024608B132
:102D800013785BB94FF058320A4B1A605A601A72C6
:102D9000019A0B689A4209D028F0D2F8313B082BEF
:102DA00096BFEB5C147013700132E8E703B030BDDE
:102DB000F8FF0120E681002037B50546104C40F2AF
:102DC00001122368002101930E4B184629F072FD71
:102DD0003DB101234FF4807200F8013B29462AF0EF
:102DE000F1FD019A23689A4201D028F0A9F8022146
:102DF0006E20044A03B0BDE83040FEF75FBB00BF61
:102E0000F8FF012040DE002073B5514E514C33686D
:102E10004FF40B72002120460125019329F04AFD51
:102E2000204621224C4900F8015B2AF0CBFD062305
:102E3000E36202231922494904F13B00636384F8E9
:102E40002250656284F8285084F8305084F83A5053
:102E50002AF0B8FD84F85450FFF720FB84F8565050
:102E600084F85500FFF7CAF83D4B84F8570084F802
:102E70008E5004F1920203F1140153F8040B8B42BB
:102E800042F8040BF9D1142301253648A4F89030F8
:102E900084F8A65028F02EF9A4F8A800FFF742FA0B
:102EA00040B184F85850FFF73DFA112201462E48F0
:102EB0002AF088FDFFF71CFA48B1012384F86A3034
:102EC000FFF716FA2122014628482AF07BFD01254A
:102ED00084F88C50FFF7AEFC84F8CA5084F88D005B
:102EE000FFF7C2FC84F8CC5084F8CB00FFF74CFC11
:102EF00084F8CE5084F8CD00FFF7D8FB84F8D25088
:102F000084F8CF00FFF7E2FC84F8295284F8D3005C
:102F1000FFF716FD84F8D45084F82902FFF776FDF8
:102F20001122C4F8D8001249124884F8DC502AF063
:102F300049FD019A33689A4201D028F001F8112125
:102F40006E20044A02B0BDE87040FEF7B7BA00BF79
:102F5000F8FF012040DE002006B2040820DE002039
:102F600018B20408EADE002099DE0020ABDE002063
:102F700004D704081DDF002070B50446164D92B03A
:102F80002B68119306F01CFA07F0D2F85CB1237895
:102F90004BB16688402E06D10434002201A9204698
:102FA000FFF798FB18B90020FEF7F2FC06E0324666
:102FB00001A9204629F074FB0028F4D104F0B0F9EF
:102FC0000020FFF721FF119A2B689A4201D027F0C9
:102FD000B7FF12B070BD00BFF8FF0120F7B5204D5C
:102FE00004462B680E4601931E4B1A780AB1002244
:102FF0001A701D4F397851B10020FFF7BDFF002333
:10300000019A3B702B689A4228D027F099FF174B02
:1030100040F20312184629F04DFC012203460270CB
:1030200044703EB9013CE4B2622C0BD8104A52F80D
:1030300024603EB1012231469A700E484FF48072EE
:103040002AF0C0FC019A2B689A42DED103216E203F
:10305000064A03B0BDE8F040FEF730BA03B0F0BD59
:10306000F8FF0120400E0120410E012040DE00202B
:10307000C4AD040843DE002037B50D4C2268019230
:1030800088B1084602F06EFD054628B909490320BB
:10309000FFF7A4FF04F044F9019A236828469A42F6
:1030A00003D027F04DFF0448ECE703B030BD00BF6C
:1030B000F8FF012058AF040850AF04082DE9F34190
:1030C0001746194A0E4611681D46019190460BB1EC
:1030D00000232B60014601221448FFF75DF80446E7
:1030E00038B90B201249FFF779FF04F019F920468F
:1030F00001E03EB90D48019AD8F800309A420FD04D
:1031000027F01EFF002FF5D02B463A4631460748E0
:1031100014F0C6FB04460028ECD106490920E2E77A
:1031200002B0BDE8F08100BFF8FF0120C4680020B4
:103130006AAF0408B6AF04082DE9F04F87B01E4609
:10314000109B05460293119B0F4603931C4B0024D2
:10315000994690461A68DFF86CA0DFF86CB00592CB
:1031600036B32CBBA819039B22460193029B394618
:103170000093434604F086FB00210A2003F0F2FD91
:10318000034668B99AF8002012B99BF800208AB16A
:10319000002104200293FFF721FF04F0C1F8029BF5
:1031A000059A1846D9F800309A4206D027F0C8FE92
:1031B0002846D8E784F00104D2E707B0BDE8F08FD5
:1031C000F8FF0120400E0120410E0120F0B5044619
:1031D000324F89B03B6840F201120021304807931A
:1031E00029F068FB94F801313E461BB394F8023194
:1031F00003B300252B4B2C4A01932C4B2C490093F5
:103200002C482B46CDE90455CDE9025504F014F8BD
:103210002946072003F0A6FD014658B90420FFF710
:10322000DDFE079A3B689A421FD109B0BDE8F04025
:1032300004F076B894F803314BB194F8043133B10B
:10324000012003F04FFE10B9079A3368EBE794F8BA
:10325000053193B194F806317BB103F073FF014659
:1032600058B9079A33689A4201D027F069FE0420C2
:1032700009B0BDE8F040FFF7B1BE237843B10123A8
:1032800007484FF4807200F8013BE11829F03AFA40
:10329000034A02216E20FEF711F9D5E7F8FF01205D
:1032A00040DE00203FB4040837B40408ABAD040886
:1032B00092AD04084CEA070837B5144D04782A6823
:1032C000019204B14478002003F00CFE50B9019A39
:1032D0002B689A4201D027F033FE03B0BDE830409E
:1032E00004F01EB844B10A48FFF7F2F8FEF766FD95
:1032F0000848FFF761FDEAE703F0ECFE08B1064875
:10330000F7E721460C20FFF769FEE0E7F8FF012010
:10331000D612050889B0040895B0040830B5002419
:10332000164D89B02B68164A0793164B1649CDE9FE
:103330000243164B16480193164BCDE90444009303
:10334000234603F079FF2146062003F00BFD0146DA
:1033500040B90420FFF742FE079A2B689A4207D033
:1033600027F0EEFDFFF7F8FB0B48FFF725FDF3E72D
:1033700009B0BDE8304003F0D3BF00BFF8FF012023
:1033800037B404080EB6040892AD040825B6040844
:103390004CEA0708ABAD040836B60408F0B50024C3
:1033A0001F4D89B02B681F4A07931F4B1F4901937C
:1033B0001F4B074600931F482346CDE90444CDE93F
:1033C000024403F039FF2146072003F0CBFC0146FD
:1033D00040B90420FFF702FE079A2B689A4219D0E1
:1033E00027F0AEFD144E40F202422146304629F04D
:1033F00061FA39683046B1F5806F28BF4FF48061BB
:1034000020F8021B0FF098FE32460A216E20FEF7CC
:1034100055F8E1E709B0BDE8F04003F081BF00BF17
:10342000F8FF012037B40408F8B1040892AD04088D
:10343000ABAD04084CEA070840DE0020F0B52A4D89
:1034400089B02B6804460793FFF7F4F92F46064628
:1034500060B1079A2B689A4201D027F071FD0120D4
:10346000224909B0BDE8F040FFF7B8BD204B0590F8
:103470000493204B204A0393204B21490293214B74
:103480000193214B00930346204803F0D5FE3146BB
:10349000072003F067FC014658B90420FFF79EFDA2
:1034A000079A2B689A42D8D109B0BDE8F04003F0E2
:1034B00037BF237883B194F8AD3113B194F8AE31AE
:1034C00053B9601C15F0E8FA30B911490320FFF731
:1034D00085FD079A3B68E5E72046FFF719F80D4898
:1034E000FFF76AFCF5E700BFF8FF01202DB20408E2
:1034F0006CB2040873B204085CB2040885B2040814
:1035000092AD04089AB20408AEB204084CEA070867
:10351000C3B20408E9B20408F0B5314D87B02B6896
:1035200004460593FFF786F92E4660B1059A2B688D
:103530009A4201D027F004FD01202A4907B0BDE8D6
:10354000F040FFF74BBDA378A3B1626822F04001C1
:1035500080290FD0B2F5807F0CD023490320FFF7DC
:103560003DFD059A2B689A42E4D107B0BDE8F040D2
:1035700003F0D6BE207800B1607800F0010063B39C
:103580006168227A02B1627AA37A02F0010203B181
:10359000E37A257B03F001030DB104F10D05A77F4C
:1035A0000FB104F11F0794F840C0BCF1000F01D027
:1035B000D4F844C094F848E0BEF1000F01D094F86C
:1035C00049E0CDE902CECDE9005705F011FF059A9B
:1035D00033689A42AED107B0F0BD8021D1E700BF79
:1035E000F8FF01202DB2040876B4040807B50B4B90
:1035F00001781A680192019A1B6851B19A4201D070
:1036000027F09EFC4188043003B05DF804EB06F01F
:1036100011B89A42F4D10846F6E700BFF8FF01203E
:1036200013B5144C23680193FFF704F9014658B908
:10363000019A23689A4201D027F082FC0B2002B045
:10364000BDE81040FFF7CABC002003F04BFC019A14
:10365000236830B99A42EFD102B0BDE8104003F0C0
:103660005FBE9A42E8D1012002B0BDE8104005F0EB
:103670005BBF00BFF8FF012013B50B4C236801931B
:1036800005F09EFE06F054FD08F010FD019A236837
:103690009A4201D027F054FC0021042002B0BDE87A
:1036A0001040FFF79BBC00BFF8FF012013B50A4C88
:1036B000012023680193FEF76BF903F017FE019ACE
:1036C00023689A4201D027F03BFC044802B0BDE8D1
:1036D0001040FFF771BB00BFF8FF0120F5B00408F0
:1036E00070B56C4D88B02B6804460793837C2E46DA
:1036F000ABB903789BB990F8343083B990F8363081
:103700006BB990F83C3453B963490320FFF766FC6A
:10371000079A2B689A4200F0B88027F011FC01202C
:1037200003F0E0FB10B9079A3368F3E7A37CDBB141
:1037300000255A4B5A49039304F113030293594B42
:1037400059480193594BCDE904550093584A2B46EB
:1037500003F072FD2946072003F004FB20B9002185
:103760000420FFF73BFCDEE72378B3B100254B4B89
:103770004B490393631C02934E4B4B4801934B4BB5
:10378000CDE9045500934A4A2B4603F055FD2946DE
:10379000072003F0E7FA0028E1D094F83430DBB1D9
:1037A00094F83510444A454B0025002908BF1346BC
:1037B000434A3B49CDE901323C4B3B480093CDE9BC
:1037C000045503952B463A4A03F036FD2946072057
:1037D00003F0C8FA0028C2D094F83630ABB1002507
:1037E000384B2F490293384B2F4801932F4BCDE98B
:1037F0000455009303952B462D4A03F01DFD2946E1
:10380000072003F0AFFA0028A9D094F83C34ABB1FC
:1038100000252E4B224902932D4B23480193234B25
:10382000CDE90455009303952B46214A03F004FD8E
:103830002946072003F096FA002890D0A37C1BB1FC
:1038400004F11300FEF770FB237813B1601CFEF740
:103850008BFB94F834301BB194F83500FEF7AEFBC7
:1038600094F8363023B1218F04F13A00FEF7E0FBE3
:1038700094F83C341BB1D4F84004FFF74FF9FEF73D
:103880009DFA1448FFF798FA4DE708B0BDE870407C
:1038900003F046BDF8FF012006B00408640A0508DD
:1038A00092AD04081AB004084CEA0708ABAD04084E
:1038B00037B4040829B00408F3AF0408E1AF0408E2
:1038C0003CB0040848B0040850B0040860B00408D4
:1038D00067B0040878B0040813B50A4C2268019256
:1038E000027812B14068FFF765F8019A23689A429E
:1038F00001D027F025FB044802B0BDE81040FFF7D7
:103900005BBA00BFF8FF0120D3AF04082DE9F041F6
:103910004B4D88B02B680446079390F84C302F46E7
:103920007BB190F84D3063B1012003F0DBFA50BB5E
:10393000079A2B689A421DD108B0BDE8F04103F008
:10394000EFBCFEF777FF88B905462378002B5CD0E3
:103950006268182A03D83B4BD340DB0752D40320BC
:103960003949FFF73BFB079A3B68E3E7079A3B6857
:103970009A4201D027F0E4FA0120344908B0BDE8AA
:10398000F041FFF72BBB0125DFE72378002B3AD16D
:103990000C20217A01B1617AA27A01F0010102B111
:1039A000E27A237B02F001020BB104F10D03A67F42
:1039B00026B304F11F0C94F840600EB194F84160F6
:1039C00094F842E006F00106BEF1000F01D094F831
:1039D00043E094F84480B8F1000F11D0A46CCDE915
:1039E0000345CDE9016ECDF800C005F043FB079A11
:1039F0003B689A42BED108B0BDE8F081B446DAE730
:103A00004446ECE71DB16068C3E7002DC0D1002635
:103A10000F4B104A0193104B104900931048334646
:103A2000CDE90466CDE9026603F006FC31460720C5
:103A300003F098F901460028A7D1042091E700BFC0
:103A4000F8FF0120001004014FB404082DB204084F
:103A500062B4040837B40408ABAD040892AD04089E
:103A60004CEA070807B5074B1A680192019A1B68D0
:103A70009A4201D027F064FA03B05DF804EB05F038
:103A800087BB00BFF8FF012070B50024174D88B038
:103A90002B68174A0793174B17490193174B064694
:103AA000009317482346CDE90444CDE9024403F0CE
:103AB000C3FB2146072003F055F9014640B9042015
:103AC000FFF78CFA079A2B689A420AD027F038FA47
:103AD0007068FEF7EBFFFEF771F90A48FFF76CF923
:103AE000F0E708B0BDE8704003F01ABCF8FF012011
:103AF00037B404088CB4040892AD04089DB40408DB
:103B00004CEA0708B0B404082DE9FF41474F0021F3
:103B10003B68EC2206464648039328F0CBFEFEF7AE
:103B200089FE014640B90B20FFF758FA039A3B681B
:103B30009A4278D027F004FA012003F0D3F910B9A3
:103B400003F0EEFBF2E706F1480196F84700FFF7B5
:103B500093FA80460028E9D096F82430006C0BB127
:103B600006F12500314602AB31F8042BFFF7A6FA27
:103B700005460028DAD014F07FF996F8453005F1B3
:103B800048047BB196F8463063B1204604F0B8F99A
:103B900001210B2003F0E6F8014618B90420FFF7D5
:103BA0001DFACDE7224B2A6802991A606A685960AB
:103BB0009A60202203F10E009A8105F1280605F192
:103BC000080252F804CBB24240F804CBF9D10022EB
:103BD00083F82E20012283F852202122A3F85420BA
:103BE000144A2046203450F8046BA04242F8046B7B
:103BF000F9D10078107095F848202846012A04BFB2
:103C0000002283F85620012283F878207123009344
:103C1000D8F82420084B14F03BFC054A0C216E20F8
:103C2000FDF74CFC8CE704B0BDE8F081F8FF012003
:103C300040DE002096DE0020B9DE0020F7B5284CDB
:103C40000546236827460193FEF7F4FD014658B95F
:103C5000019A23689A4201D027F072F90B2003B031
:103C6000BDE8F040FFF7BAB96B6863B91D4903209E
:103C7000FFF7B4F9019A23689A42EDD103B0BDE889
:103C8000F04003F04DBB2A680AB91749EFE7D34269
:103C900001D31649EBE7012003F024F90028E9D00D
:103CA00005F10901287AFFF7E7F9064690B10023EC
:103CB000006C1A461946FFF701FA024650B1019905
:103CC00023689942C8D13146284603B0BDE8F04088
:103CD00006F0ECB8019A3B689A42BDD103B0F0BD42
:103CE000F8FF012026B504084FB5040879B504088B
:103CF00013B50F4C23680193037873B90D49032062
:103D0000FFF76CF9019A23689A4201D027F018F95D
:103D100002B0BDE8104003F003BB019A23689A4249
:103D2000F4D1083002B0BDE8104006F0E5BA00BF9B
:103D3000F8FF0120A1B504082DE9F0439F4EAFB074
:103D400033680021822204469D482D9328F0B2FD5D
:103D5000FEF770FD014648B90B20FFF73FF92D9A99
:103D600033689A4200F0748127F0EAF8012003F0EA
:103D7000B9F810B903F0D4FAF1E704F1250194F889
:103D80002400FFF779F905460028E8D004F104087B
:103D9000002322884146006CFFF790F981460028F5
:103DA000DDD014F069F894F83C301BB1002185484F
:103DB00026F0AAF904F140020CAF009294F83C30CE
:103DC00094F8E51D01974A46284602F085F820B987
:103DD00003207D49FFF702F9CCE794F83A30002B35
:103DE00000F0278194F83B30002B00F0228194F8FA
:103DF0003C301422002B72D0744907A829F0E2FD50
:103E0000D4F8E00DB4F84020092885BF0A23B0FBA0
:103E1000F3F32023303388BFDBB28DF825300A233B
:103E2000B0FBF3F103FB1101092A88BFB2FBF3F3E6
:103E300001F1300198BF20238DF826104FF00A01C0
:103E400084BF3033DBB28DF82B30B2FBF1F301FBD2
:103E5000132330338DF82C302288002A00F0D280D2
:103E600061685B4894F8E53D81423DD1053A18BF51
:103E70000122002B0CBF13460123E268E96B002AE4
:103E8000A8BF43F00103226943EAD273626943EA9F
:103E9000D272A3688B420CBF134642F00103002B81
:103EA00000F0B0804FF000094A4B4B4A04934B4B53
:103EB0004B49CDE902934B4B4B4801934B4BCDF80B
:103EC000149000934B4603F0B7F94946012002F0E5
:103ED00049FF0146002840F0958004207AE74449D4
:103EE00007A829F06FFDB7E7424881420FD1042AA5
:103EF00008BF012B14BF01230023A26843EAD27339
:103F0000E26843EAD273226943EAD273C7E73A48C8
:103F1000814217D1052A08BF012B14BF01230023BA
:103F2000E268002AA8BF43F00103226943EAD27382
:103F3000626943EAD273A168EA6B914218BF43F009
:103F40000103ACE72D48814219D1052A08BF042B93
:103F500014BF01230023E268002AA8BF43F0010335
:103F6000226943EAD273626943EAD273AA7D82F07E
:103F7000010213436A7D82F001021343DBE720480C
:103F800081423FD1052A08BF032B14BF0123002320
:103F9000E268002AA8BF43F00103226943EAD27312
:103FA000626943EAD273AA7D82F0010213436A6B0D
:103FB000002A08BF43F00103BDE700BFF8FF01205E
:103FC00040DE002046B1040858B104086DB1040871
:103FD0002C00008098B1040889B10408A2B104083B
:103FE00092B10408B3B1040874EA0708C6B1040822
:103FF00080B104082D000080300000803100008076
:1040000054000080A86B94F8E52DE8B9D31E5A42FD
:104010005A411546D0B129F0FDFC431C228807A95E
:10402000CDE9008238462A46FFF786F800283FF49B
:1040300096AE39468222084829F0C4FC064A1E2161
:104040006E20FDF73BFA95E60122E2E70346E5E73D
:104050002FB0BDE8F08300BF40DE00202DE9F04F17
:10406000484E494D336887B00021C822044628468F
:10407000059328F01FFCFEF7DDFBB246014658B958
:10408000059A33689A4201D026F05AFF0B2007B0F8
:10409000BDE8F04FFEF7A2BF04F12609A18C484607
:1040A00003F06CFE0021072002F05CFE014628B9F7
:1040B0000420FEF793FF059A336806E0012002F022
:1040C00011FF48B9059ADAF800309A42DCD107B0FE
:1040D000BDE8F04F03F024B904F2274194F8260418
:1040E000FEF7CAFF0746002843D02146002331F8D7
:1040F000042B006CFEF7E2FF8046002839D0002137
:10410000224803F0CFF805F186030193A38C94F8BD
:104110003D24009341464B46384607F02BFA814632
:1041200010BB2B464FF0010B404603F801BBCDE915
:10413000023313F0A1FE029B94F83D14CDE90093E5
:1041400042464B46384601F0C7FE10B910490920D7
:10415000AFE741232A4628216E2085F883B0A5F8D1
:104160008430FDF7ABF9ADE70A490920FEF736FFC9
:10417000A8E7059ADAF800309A4285D107B0BDE881
:10418000F08F00BFF8FF012040DE0020F0B40408EB
:10419000F8B4040810B504082DE9F043324D85B099
:1041A0002B680446039303782E464BB92F4903200E
:1041B000FEF714FF039A2B689A4248D026F0C0FEFF
:1041C00090F8C8300BB92A49F1E700F2CD4190F8D8
:1041D000CC04FEF751FF814600283DD00021254840
:1041E00003F060F8B4F88430412B2DD104F186033C
:1041F00004F1CC0704F101080093B4F8CA20434647
:104200003946484607F0E4F90546E8B9404603F068
:10421000E1FD2946012002F0A5FD20B9002104207E
:10422000FEF7DCFE0DE0B4F8CA10384603F004FED9
:104230002946012002F096FD0028EFD00E48FEF737
:10424000BBFD039A3368B7E70C490320E8E705B0E4
:10425000BDE8F04303F064B8039A2B689A42ADD1ED
:1042600005B0BDE8F08300BFF8FF0120B9B5040830
:10427000CDB50408E1B50408EBB50408FCB50408A5
:1042800037B51C4C054623680193FEF7D3FA014667
:1042900058B9019A23689A4201D026F051FE0B20AA
:1042A00003B0BDE83040FEF799BE012002F01AFECF
:1042B00040B9019A23689A42EFD103B0BDE830407B
:1042C00003F02EB82946002331F8042B0A48FEF7E4
:1042D000F5FE019A0146236838B19A42DDD128469D
:1042E00003B0BDE8304007F07FBF9A42D5D103B09C
:1042F00030BD00BFF8FF01203D70050807B5074B32
:104300001A680192019A1B689A4201D026F018FEA1
:1043100003B05DF804EB08F0F3B900BFF8FF01202B
:104320002DE9F043394D3A4E2B6893B00021162207
:1043300004463046119328F0BDFAFEF77BFA014699
:1043400040B90B20FEF74AFE119A2B689A4259D0C9
:1043500026F0F6FD012002F0C5FD10B902F0E0FFE5
:10436000F2E704F104090023228849462948FEF7B0
:10437000A5FE0028E8D03146142321F8023B13F0B3
:10438000E9FD0028E0D094F824309BB394F8258010
:10439000B8F1000F2ED010221F4902A829F012FBFD
:1043A000A36823F00043892B06D049F2BE12934242
:1043B00026D00026B04600E01E26292200210DF15D
:1043C0001A0028F077FA47F6300312AF27F8303D8D
:1043D000424633460DF11A0110480BF0DFFC2388EA
:1043E00002A9CDE90093002338461A46FEF7A4FE41
:1043F0000028A9D0064A39216E20FDF75FF8ADE705
:104400001F26DAE713B0BDE8F08300BFF8FF0120F4
:1044100040DE00203D70050880B1040842DE002027
:1044200037B5244C002123685E22054622480193BB
:1044300028F040FAFEF7FEF9014658B9019A2368C0
:104440009A4201D026F07CFD0B2003B0BDE830403D
:10445000FEF7C4BDA98C05F1260003F08FFC0021F6
:10446000072002F07FFC014658B90420FEF7B6FD94
:10447000019A23689A42E5D103B0BDE8304002F0CA
:104480004FBF012002F02EFD0028F1D02946002365
:1044900031F8042B0948FEF711FE014620B1064A07
:1044A000284608F087F9E3E7019A23689A42C9D1C0
:1044B00003B030BDF8FF012040DE00203D7005084C
:1044C000F0B5284E8DB0326805460B92027832B9AD
:1044D00025490320FEF782FD02F022FF0CE090F850
:1044E0005E300BB92149F4E708F0B0F9044648B151
:1044F0001F490320FEF772FD0B9A33689A422ED0B3
:1045000026F01EFD014629220DF1020028F0D2F905
:1045100047F630030CAF27F8303D0DF1020123467A
:104520002246281D0BF03AFC384603F053FC214686
:10453000012002F017FC10B900210420CAE7B5F8E9
:10454000601005F1620003F077FC2146012002F0C3
:1045500009FC0028F0D00748FEF72EFCBCE70DB0A0
:10456000F0BD00BFF8FF0120B9B50408CDB50408BF
:10457000FCB50408EBB504082DE9F04F664DADF528
:10458000037D2B6804468193FEF754F9A846014643
:1045900050B90B20FEF722FD819AD8F800309A42DC
:1045A00000F0B58026F0CCFC94F8243023B95B49A8
:1045B0000320FEF713FD0FE094F825310BB958499D
:1045C000F6E7B4F8263113F00F0501D05549EFE7AF
:1045D000012002F087FC10B902F0A2FEDCE72146C0
:1045E0002B4631F8042B5048FEF768FD8146002821
:1045F000D2D094F828550DB194F8295594F82A751D
:104600000FB194F82B7594F82C3504F1250A1BB1E1
:1046100094F82D35002B75D1002D5FD1AB4640AEFF
:104620004FF482725146304629F0CCF93F4B404955
:104630004FF48272002F18BF1946304629F098F9BE
:104640003C4B3D494FF48272BBF1000F18BF194635
:10465000304629F08DF9304629F0DCF93246034620
:10466000202109F12800009612F02EFC03AF002152
:1046700040F20442314828F01DF904F59479394696
:10468000304675B320F0EAFDB4F83035B4F8262191
:10469000102B0CBF04F2325348AB00972849484610
:1046A00021F020FD0123254A30211370B4F8263172
:1046B0006E205380FCF702FF8EE7AB46002FAED092
:1046C000514605F0010003F0E3FB0021012002F058
:1046D00049FB01460028A2D104206AE74FF0000BF5
:1046E000ECE721F011F8B4F83035B4F82621102B9E
:1046F0000CBF04F2325348AB00971149484621F0F1
:10470000B1FDCFE7002DD8D14FF0010BD8E70DF563
:10471000037DBDE8F08F00BFF8FF0120ADB00408B5
:10472000BDB00408CFB004083D700508A1B004086E
:10473000A4B00408A7B00408AAB0040840DE002012
:1047400044DE00202DE9F043904EA1B033680021F3
:10475000EE2204468E481F9328F0ACF8FEF76AF864
:10476000014648B90B20FEF739FC1F9A33689A427C
:1047700000F0098126F0E4FB94F8A412251D09B18C
:1047800004F2A521284603F0F9FB0021072002F0DE
:10479000E9FA014618B90420FEF720FC03E00120E5
:1047A00002F0A0FB10B902F0BBFDDEE7237813B9DD
:1047B00078490320F0E707A9284607F0C5F8002844
:1047C000F6D0754B9DF81F2002939DF81C3043F0E6
:1047D000004343EA02639DF81D2043EA02239DF84B
:1047E0001E2043EA024303939DF820309DF82320C6
:1047F00043F0004343EA02639DF8212043EA022389
:104800009DF8222043EA024304939DF824309DF84A
:10481000272043F0004343EA02639DF8252043EA42
:1048200002239DF8262043EA024305939DF8283091
:104830009DF82B2043F0004343EA02639DF82920B2
:1048400043EA02239DF82A2043EA0243069394F8A0
:10485000A533002B62D004F2A6380023052202A95A
:104860004046FEF72BFC054600283FF47EAF277933
:1048700077B104F105094949484628F0D9F8B0FA5A
:1048800080F7474948467F0928F0D2F8002848D0E9
:104890004FF000090021434802F004FD04F5D270F6
:1048A000B4F8A211002F3FD00A463F4B01462846DC
:1048B00006F010FE0746002862D1284613F0DCFA05
:1048C0003A49404628F0B4F8314C00284ED02770C1
:1048D000012384F883302123354AA4F8843005F17C
:1048E000680105F1480353F8040B8B4242F8040BAE
:1048F000F9D11B783621137095F84830244A012BE2
:1049000004BF002384F88630012384F8A8304123B3
:104910006E20A4F8AA30FCF7D1FD44E7DFF88C80C4
:104920009BE74FF00109B5E7B9F1000F06D00A4641
:104930001D4B0146284606F0E5FDBBE70FAA04F231
:10494000A52417F035FA204629F064F817AA014685
:10495000204617F02DFA144B4A460193402329466E
:10496000009314480FAB06F005FEA3E7224601238F
:10497000394602F8013B2846822313F019FAA7E7CB
:104980000D49092008E721B0BDE8F083F8FF0120B8
:1049900040DE0020C0B404080D000080D1B404083B
:1049A000D5B40408F0B40408ECDE00203D7005081E
:1049B000C6DE002008B70408D9B4040870B5534D0A
:1049C00090B02B6800214622044651480F9327F0EF
:1049D00071FFFDF72FFF014648B90B20FEF7FEFAE5
:1049E0000F9A2B689A4200F08F8026F0A9FA261DB4
:1049F000304603F097FB0021072002F0B3F901468F
:104A000018B90420FEF7EAFA03E0012002F06AFA7E
:104A100010B902F085FCE3E7237813B93D49032080
:104A2000F0E707A9304606F08FFF0028F6D03A4B92
:104A30009DF81F2002939DF81C3043F0004343EA89
:104A400002639DF81D2043EA02239DF81E2043EADD
:104A5000024303939DF820309DF8232043F0004348
:104A600043EA02639DF8212043EA02239DF82220B5
:104A700043EA024304939DF824309DF8272043F035
:104A8000004343EA02639DF8252043EA02239DF890
:104A9000262043EA024305939DF828309DF82B20F9
:104AA00043F0004343EA02639DF8292043EA0223CE
:104AB0009DF82A2043EA0243069394F8E631F3B1C5
:104AC00004F2E7100023052202A9FEF7F7FA0028F6
:104AD00086D00022114E10AB43F83C2D04F5D27164
:104AE000324613F097FC60B9012306F8043C019BA1
:104AF000321F53803E216E20FCF7E0FC89E7084816
:104B0000E0E7084909207DE710B070BDF8FF0120FB
:104B100040DE0020C0B404081100008044DE002004
:104B20003D700508D9B104082DE9F043354F364CE6
:104B30003B689DB000214822054620461B9327F084
:104B4000B9FEFDF777FE014640B90B20FEF746FAA5
:104B50001B9A3B689A4252D026F0F2F995F824301D
:104B600033B903202949FEF739FA02F0D9FBEFE700
:104B7000002605F1040905F12808EB8C2988424636
:104B80004846009603F050FE3146072002F0EAF84E
:104B9000014608B90420E6E7012002F0A3F9002845
:104BA000E3D033462A8849461948FEF787FA064675
:104BB0000028CDD013AAE98C4046283617F0F8F823
:104BC00003AA13A930460DF0FBFA03A913A80DF0B0
:104BD0009BFB0123237084F824302023211D13A87C
:104BE0006380E38411F03EFC04F12801304611F0AB
:104BF00039FC224648216E20FCF760FCB5E71DB069
:104C0000BDE8F083F8FF012040DE002005B1040874
:104C1000FB6F05082DE9F047404F414D3B689EB0C2
:104C200000212422044628461D9327F043FEFDF769
:104C300001FE014640B90B20FEF7D0F91D9A3B68F2
:104C40009A4267D026F07CF994F8243033B935497C
:104C50000320FEF7C3F902F063FBEFE794F8483056
:104C60001BB1B4F84A30202B01D02F49F0E794F85B
:104C70006C3023B1B4F86EA0BAF1200F01D02B49EB
:104C8000E6E74FF00109261D04F12808E38C21888E
:104C900042463046CDF8009003F0C6FD00210720C3
:104CA00002F060F8014608B90420D2E7484602F055
:104CB00019F90028CFD03146002322881C48FEF77E
:104CC000FDF906460028B9D0E18C15AA40462836E1
:104CD00017F06EF805AA15A930460DF071FA05A96E
:104CE00015A80DF011FB2B1DE18C029304F170034C
:104CF0004C34019332464046009415AB85F8009041
:104D0000A5F802A011F0D6FB2A464A216E20FCF736
:104D1000D5FBA0E71EB0BDE8F08700BFF8FF01207B
:104D200040DE002005B1040816B1040830B10408C3
:104D3000FB6F0508F0B5304F89B03A68044607921A
:104D400090F824200AB96823836294F8280021F09F
:104D50002DFC064630B929490320FEF73FF902F041
:104D6000DFFA06E0FDF766FD014640B90B20FEF7CD
:104D700035F9079A3B689A423CD026F0E1F80120C9
:104D800002F0B0F80028EAD0292200211C48251D95
:104D900027F090FD0023228829461A48FEF78EF955
:104DA0000028E6D0164A94F8281013F001F90028DC
:104DB000DFD094F82C30BBB194F82D30A3B1102281
:104DC000314603A828F0FEFD10220F4903A828F061
:104DD000CFFD23880122CDE9005303A90023084811
:104DE000FEF7AAF90028C4D0054A44216E20FCF73A
:104DF00065FBB4E709B0F0BDF8FF01208AB30408F1
:104E000040DE0020EC6F05087AC204082DE9F04F5F
:104E10006B4DADF6940D2B680446CDF88C380378B5
:104E200023B968490320FEF7D9F8A8E041F26212DD
:104E300090F8F030825C00F5B457134441F2302210
:104E4000825C13443A78134441F24872825C134402
:104E500041F6B412825C9B1801D15B49E2E7012B59
:104E600001D05A49DEE700F108060021304607F07C
:104E7000F5FD01460028D5D194F8F03043B194F8FF
:104E8000301004F1F80007F045FE01460028C9D1B2
:104E900041F26213E35C4BB104F58B5094F830108F
:104EA000083007F085FE01460028BBD141F23023CF
:104EB000E35C4BB104F5915094F83010183007F0D2
:104EC000A3FE01460028ADD13B783BB104F5B450B8
:104ED000083007F063FF01460028A3D141F2487370
:104EE000E35C5BB194F8781004F5BA5081F00101ED
:104EF0000C3007F07FFF0146002893D141F6B41330
:104F0000E35C3BB104F5CD50163007F0ABFF014632
:104F1000002887D104F58B531B78B3B141F261139C
:104F200014F803B094F878308BB1012104F18000BB
:104F300007F094FD014600287FF474AF226BD4F88B
:104F4000A8309A4208D022496CE79B46EAE7BBF1B9
:104F5000000F01D01F4965E7FDF76CFC014650B911
:104F60000B20FEF73BF8DDF88C282B689A4200F006
:104F70008B8125F0E5FF012001F0B4FF10B902F0AC
:104F8000CFF9F0E794F8300021F010FB94F8783076
:104F90000BF0010B81460BB323AA94F8A81004F17F
:104FA000CC0021F04DFBD4E910234946CDE9002384
:104FB00023A85A4608F0D6FB80B90749042032E7F7
:104FC000F8FF01209EB30408A1B50408B1B304089A
:104FD000D4B30408FBB304081DB4040840F6480227
:104FE0000021AB4827F066FC0023228904F10C0164
:104FF000A848FEF763F882460028B4D012F03CFFC0
:1050000094F87830002B00F0ED8004F1800818AAA5
:1050100098F82810504612F0CBFF94F8F0303BB1CE
:10502000B4F8581504F5AC6008F058FDA4F858051C
:1050300094F8F0303BB14A4604F1F801404608F0DC
:105040004FFC0028B9D041F26213E35C43B104F590
:105050008B514A460831404607F0B4FF0028ACD0D7
:1050600041F23023E35C4BB104F5915118AB4A4651
:105070001831404608F02CF800289ED03B7843B108
:1050800004F5B4514A460831404608F047F9002873
:1050900093D041F24873E35C63B194F8783004F53F
:1050A000BA5183F001034A460C31404608F0DAF960
:1050B000002882D041F6B413E35C4BB104F5CD5126
:1050C0004A461631404608F0DBFA00283FF475AF37
:1050D0004FF40063704A0AF1490102A821F032FB43
:1050E00094F87830002B7FD04FF4006323AA04F1AA
:1050F000CC010DA821F026FB94F8F03053B104F157
:10510000F80304F1800200210DA807F0CDFE00286D
:105110003FF435AF41F26213E35C53B104F58B52B7
:10512000083204F180010DA807F0A4FF00283FF425
:1051300026AF41F23023E35C53B104F591521832AB
:1051400004F180010DA808F09DF800283FF417AF86
:105150003B7853B104F5B452083204F180010DA834
:1051600008F058F900283FF40AAF41F24873E35CB5
:1051700053B104F5BA520C3204F180010DA808F0C5
:1051800031FA00283FF4FBAE41F6B413E35C53B1AF
:1051900004F5CD52163204F180010DA808F0C2FAD0
:1051A00000283FF4ECAE5B460DAA314602A808F099
:1051B00025FB00283FF4E3AE0126354C0AF1280117
:1051C00004F60802267002A821F0D8FA4023608075
:1051D00084F80468A4F80638224646216E20FCF7BD
:1051E0006DF9CCE6B04612E794F8F0304BB104F11B
:1051F000F8033246514602A807F056FE00283FF455
:10520000BEAE41F26213E35C4BB104F58B5208323F
:10521000314602A807F02EFF00283FF4B0AE41F25D
:105220003023E35C4BB104F591521832314602A8A9
:1052300008F028F800283FF4A2AE3B784BB104F503
:10524000B4520832314602A808F0E4F800283FF4CE
:1052500096AE41F24873E35C4BB104F5BA520C329E
:10526000314602A808F0BEF900283FF488AE41F6A6
:10527000B413E35C002B9FD004F5CD5216323146B7
:1052800002A808F04FFA94E70DF6940DBDE8F08FF0
:1052900040DE0020EC6F050844DE00202DE9F043DD
:1052A0004A4E91B03368002140F204420446484817
:1052B0000F9327F0FFFAFDF7BDFA454F014640B9BD
:1052C0000B20FDF78BFE0F9A33689A427AD025F0B7
:1052D00037FE94F8280021F069F920B93D490320F0
:1052E000FDF77CFE32E094F850300BB93A49F6E70E
:1052F000B4F852303F2B01D83849F0E794F82C30FD
:105300000BB93749EBE7E38D202B01D03549E6E7B0
:1053100004AD04F130092A4694F82810484621F0DB
:105320008FF9314B3149009331480195314B324A65
:1053300002F0BAFF0021012001F014FD10B9002194
:105340000420CDE7012001F0CDFD10B901F0E8FF08
:10535000B9E72146002331F8042B2848FDF7AEFEBB
:105360000028B0D0B4F852803B1DA8F13005CDE93B
:10537000015304F18403009304F1740204F1540313
:10538000494612F0CFFE10B91D490920A8E70124B3
:10539000B84418F82D1C1B48A94294BF6D1A6D1B08
:1053A000A9B279803C70224603F0FCF80021204627
:1053B00001F0D8FC0028C2D0054A4C216E20FCF731
:1053C0007DF8C3E711B0BDE8F08300BFF8FF01200E
:1053D00040DE00208AB30408F7B204080BB30408C7
:1053E00025B304083CB304085FB3040892AD040875
:1053F0004CEA07084FB3040837B40408EC6F0508FB
:1054000070B3040844DE0020F0B5354C89B0236841
:1054100000213A2206463348079327F04BFAFDF75E
:1054200009FA2746014658B9079A23689A4201D0DB
:1054300025F086FD0B2009B0BDE8F040FDF7CEBD9C
:10544000012001F04FFD40B9079A23689A42EFD13D
:1054500009B0BDE8F04001F063BF304630F8041BEE
:1054600008F0C4FE30B9079A23689A42E0D11E4979
:105470000920E0E796F82C3000F14905FBB196F8D9
:105480002D30E3B10026284608F08CFDCDE90466F6
:1054900003968368154A029343681549019303688C
:1054A00014480093144B01F0C7FE3146072001F069
:1054B00059FC014618B90420FDF790FDC4E7094CDA
:1054C00001232146392201F8013B284608F036FD28
:1054D0002246D0216E20FBF7F1FF079A3B68B5E723
:1054E000F8FF012040DE0020B6AF040837B40408FE
:1054F00092AD04084CEA070888B5040870B5364D2B
:1055000098B02B680021242206463448179327F0D0
:10551000D1F9FDF78FF9014640B90B20FDF75EFD8B
:10552000179A2B689A4255D025F00AFD012001F008
:10553000D9FC10B901F0F4FEF2E7304630F8041B54
:1055400008F054FE10B926490920E7E796F82C30F8
:1055500000F149043BB396F82D3023B3002606AA88
:105560002021204625F082FD1022402106A802F0CD
:1055700037F9CDE90466C3681A4A039383681A4968
:10558000029343680193036818480093184B01F095
:1055900053FE3146072001F0E5FB014618B904200F
:1055A000FDF71CFDC6E701230C4A04F12006137029
:1055B0002023538023460432144618685968083360
:1055C00003C4B3422246F7D1044AC9216E20FBF737
:1055D00075FFAFE718B070BDF8FF012040DE002076
:1055E000B6AF040837B4040892AD04084CEA0708C3
:1055F00088B5040837B51A4C054623680193FDF7B2
:1056000019F9014658B9019A23689A4201D025F048
:1056100097FC0B2003B0BDE83040FDF7DFBC012054
:1056200001F060FC40B9019A23689A42EFD103B0BF
:10563000BDE8304001F074BE284608F01FFF284640
:105640000AF0DAF90023074A019913702368994296
:10565000DDD1CB216E2003B0BDE83040FBF72EBF7B
:10566000F8FF012040DE002013B51A4C2368019397
:1056700009F094F938B308F061FBB8B16822002151
:10568000154827F017F9144808F040FE124AE621A1
:105690006E20FBF713FF019A23689A4201D025F090
:1056A0004FFC02B0BDE8104001F03ABE01992368FA
:1056B000094A99421070F2D1CB216E2002B0BDE8A8
:1056C0001040FBF7FBBE019A23689A42E7D102B073
:1056D00010BD00BFF8FF012040DE002013B51A4CBA
:1056E0002368019309F0CAF938B308F027FBB8B171
:1056F00068220021154827F0DDF8144808F006FE5E
:10570000124AE6216E20FBF7D9FE019A23689A42DD
:1057100001D025F015FC02B0BDE8104001F000BE3C
:1057200001992368094A99421070F2D1CB216E2069
:1057300002B0BDE81040FBF7C1BE019A23689A424F
:10574000E7D102B010BD00BFF8FF012040DE00200D
:1057500013B51A4C2368019309F012FA38B308F014
:10576000EDFAB8B168220021154827F0A3F81448D3
:1057700008F0CCFD124AE6216E20FBF79FFE019A4D
:1057800023689A4201D025F0DBFB02B0BDE810404F
:1057900001F0C6BD01992368094A99421070F2D1FF
:1057A000CB216E2002B0BDE81040FBF787BE019A06
:1057B00023689A42E7D102B010BD00BFF8FF012074
:1057C00040DE002013B51A4C2368019309F0A4FAB7
:1057D00038B308F0B3FAB8B168220021154827F0B1
:1057E00069F8144808F092FD124AE6216E20FBF792
:1057F00065FE019A23689A4201D025F0A1FB02B010
:10580000BDE8104001F08CBD01992368094A994216
:105810001070F2D1CB216E2002B0BDE81040FBF732
:105820004DBE019A23689A42E7D102B010BD00BF75
:10583000F8FF012040DE002013B51A4C23680193C5
:1058400009F024FB38B308F079FAB8B168220021D6
:10585000154827F02FF8144808F058FD124AE621A1
:105860006E20FBF72BFE019A23689A4201D025F0A7
:1058700067FB02B0BDE8104001F052BD01992368FA
:10588000094A99421070F2D1CB216E2002B0BDE8D6
:105890001040FBF713BE019A23689A42E7D102B089
:1058A00010BD00BFF8FF012040DE002013B51A4CE8
:1058B0002368019309F086FB38B308F03FFAB8B1CA
:1058C00068220021154826F0F5FF144808F01EFD57
:1058D000124AE6216E20FBF7F1FD019A23689A42F5
:1058E00001D025F02DFB02B0BDE8104001F018BD3D
:1058F00001992368094A99421070F2D1CB216E2098
:1059000002B0BDE81040FBF7D9BD019A23689A4266
:10591000E7D102B010BD00BFF8FF012040DE00203B
:1059200013B51A4C2368019309F0F8FD38B308F059
:1059300005FAB8B168220021154826F0BBFF1448CB
:1059400008F0E4FC124AE6216E20FBF7B7FD019A4D
:1059500023689A4201D025F0F3FA02B0BDE8104066
:1059600001F0DEBC01992368094A99421070F2D116
:10597000CB216E2002B0BDE81040FBF79FBD019A1D
:1059800023689A42E7D102B010BD00BFF8FF0120A2
:1059900040DE002013B51A4C2368019309F04EFE37
:1059A00038B308F0CBF9B8B168220021154826F0C9
:1059B00081FF144808F0AAFC124AE6216E20FBF78A
:1059C0007DFD019A23689A4201D025F0B9FA02B010
:1059D000BDE8104001F0A4BC01992368094A99422E
:1059E0001070F2D1CB216E2002B0BDE81040FBF761
:1059F00065BD019A23689A42E7D102B010BD00BF8D
:105A0000F8FF012040DE002013B51A4C23680193F3
:105A100009F0B2FE38B308F091F9B8B1682200215C
:105A2000154826F047FF144808F070FC124AE6219A
:105A30006E20FBF743FD019A23689A4201D025F0BE
:105A40007FFA02B0BDE8104001F06ABC01992368FA
:105A5000094A99421070F2D1CB216E2002B0BDE804
:105A60001040FBF72BBD019A23689A42E7D102B0A0
:105A700010BD00BFF8FF012040DE002013B51A4C16
:105A80002368019309F0CCFE38B308F057F9B8B198
:105A900068220021154826F00DFF144808F036FC56
:105AA000124AE6216E20FBF709FD019A23689A420B
:105AB00001D025F045FA02B0BDE8104001F030BC3D
:105AC00001992368094A99421070F2D1CB216E20C6
:105AD00002B0BDE81040FBF7F1BC019A23689A427E
:105AE000E7D102B010BD00BFF8FF012040DE00206A
:105AF00013B51A4C2368019309F030FF38B308F04E
:105B00001DF9B8B168220021154826F0D3FE1448CB
:105B100008F0FCFB124AE6216E20FBF7CFFC019A4D
:105B200023689A4201D025F00BFA02B0BDE810407C
:105B300001F0F6BB01992368094A99421070F2D12D
:105B4000CB216E2002B0BDE81040FBF7B7BC019A34
:105B500023689A42E7D102B010BD00BFF8FF0120D0
:105B600040DE00202DE9F743104D04462A680192DB
:105B700068B100264FF048080D4F08FB06F3204699
:105B8000D95903EB070926F053FF30B94846019A6B
:105B90002B689A4206D025F0D3F90136192EECD1A4
:105BA0000020F4E703B0BDE8F08300BFF8FF012058
:105BB00008B7040873B50C4B48241A680B4D0192C2
:105BC000002204FB0251CE69864203D00132192A19
:105BD000F7D10021019A1B6808469A4201D025F0AE
:105BE000AFF902B070BD00BFF8FF012008B704088C
:105BF00073B50C4B48241A680B4D0192002204FB2C
:105C00000251CE6B864203D00132192AF7D100210E
:105C1000019A1B6808469A4201D025F091F902B01A
:105C200070BD00BFF8FF012008B704082DE9F04F50
:105C30002A4FD1F8A05D3B68C9B047936B1E0E2B6D
:105C400081460C46904606D90020479A3B689A4206
:105C500041D025F075F90E88731E0E2BF4D8436CD5
:105C60005035D97A68460DF5907A1DF01FFC0AF878
:105C7000085D9C250122514668461DF08BFC4FF0C3
:105C8000210B043405FB06450122514668468DF878
:105C900018B11DF07FFC2146484605F04DFD014638
:105CA0000028D1D0212268469C341DF073FCAC4200
:105CB000EAD106F150038DF81831AE230222514685
:105CC00068468DF819311DF065FC684641461DF0A7
:105CD000C1FC0120B9E749B0BDE8F08FF8FF012011
:105CE00007B51349B0F8CC260B6801932223534320
:105CF00041F26C428058492203334B2B02FB00F2E5
:105D00000FDDFF2B0FDDB3F5803F34BF03200520EF
:105D1000013213441844019A0B689A4205D025F0C9
:105D20000FF90120F4E70220F2E703B05DF804FB6D
:105D3000F8FF012037B5164B4B281A680192C2B202
:105D400007D801200A70019A1B689A421DD025F0DD
:105D5000F7F8FF2804D84C204A7008700220F2E7B8
:105D6000B0F5803FC0F3072405D24D204A7008707B
:105D70008C700320E7E74E254A70020C000E087174
:105D80000D708C70CA700520DDE703B030BD00BF18
:105D9000F8FF012073B5124E0D4633681446019387
:105DA000FFF708FFA0B176232370A92363701423A3
:105DB0002946A37005F11402E31C51F8040B91422B
:105DC00043F8040BF9D18823E375AC23192023761B
:105DD000019A33689A4201D025F0B2F802B070BD42
:105DE000F8FF01202DE9F04F2C4B17461A6885B0BB
:105DF000039291F89E2D834699463AB90020039A62
:105E0000D9F800309A4245D025F09AF8D1F8A03D53
:105E10005A1E0E2AF2D80E88721E0E2AEED8AFB382
:105E2000BA464FF0220850330AF8023B01242123DE
:105E300008FB06F80D1D08F101080AF8013C294687
:105E40005846019305F078FC0028D7D05246019BB4
:105E500000F1200150F804CB884242F804CBF9D17C
:105E600001789C35117004F1220242450AF1220AA0
:105E70000AD1AE2306F1500007F80800274487F83E
:105E8000233004F12400BAE71446D6E722207043F9
:105E90000330B4E705B0BDE8F08F00BFF8FF012084
:105EA00013B50C4B1C68019491F89E4D54B1019CA4
:105EB0001B689C4201D025F043F802B0BDE81040B9
:105EC000FFF7B4BE019A1B6820469A42F3D102B094
:105ED00010BD00BFF8FF01202DE9F04717466F4ABB
:105EE0000D4611689CB00446DDE924A61B91994635
:105EF0009046002B00F08D8007F14802514605F0D6
:105F000061FC002809DA00251B9AD8F800302846E1
:105F10009A4200F0BF8025F013F802AA51462046AD
:105F2000FFF7BEFF0028EED0032D0DD1A37D002B7F
:105F3000E9D0616B0029E6D020230022009302AB58
:105F4000304613F025FF36E0042D38D1A37D002B19
:105F5000D9D0637D002BD6D04FF4005302AFADF8FB
:105F600028300DF12A020AAD3B4603CBAB4210604C
:105F700051601F4602F10802F6D1606C02AB22228A
:105F80002946C07A1DF046FB206A09F09DFE0746AF
:105F90002946206A09F0B6FEEA19202102A815F068
:105FA0003FFB636C28465A7A82230093334607F1FD
:105FB000140113F00BFD051C18BF0125A4E7A36B0A
:105FC00083B108230DF1290220210DEB03008DF888
:105FD000283015F025FB15230AAAA16B304614F0D2
:105FE00029F9E8E7206A09F06FFE05460AA9206A48
:105FF00009F088FE0AAB5A19202102A815F010FBFF
:10600000636C05F114015A7A82230AA8009333467F
:10601000CFE7032D14D1837D002B3FF474AF436B86
:10602000002B3FF470AF436C02AAD97A07F1480005
:106030000CF056FB14234A460093616B02AB7FE7DA
:10604000042D13D1837D002B3FF45DAF457D002DE2
:106050003FF459AF8221426C537AD27ACDE9006184
:10606000016A07F148000CF049FC4DE7636CA16B35
:1060700007F14800DA7A21B10AAB49460CF060FB1F
:10608000A9E782215B7ACDE90061E1690CF094FB1C
:10609000012539E71CB0BDE8F08700BFF8FF0120FB
:1060A0002DE9F04F1C461546AC4F97B03B684FF4B6
:1060B000067206468B462046002115939DF8808087
:1060C00026F0F8FBD5E92A2395F8B090D5F8B01E54
:1060D000B9F1030FC4E90023C4F8141233D11343F8
:1060E00001D000201AE005F65C66B8F1000F1CD163
:1060F0006A23A37204F10B01B5F85A0EFFF71AFEDA
:1061000000F1010804F10A00B5F85A2E3146404466
:1061100026F0F8FAB5F85A0E40442081159A3B68EB
:106120009A4200F0178124F00BFFB5F85A1E304652
:1061300001F066FD0021484600F014FE0028D7D18A
:106140004FF0FF30EAE7B5F884A0BAF1000F76D03F
:10615000B9F1050FC5D801A353F829F075610108FD
:10616000E360010839620108E36001082D6201085B
:10617000336201084FF0000970225946784826F032
:10618000C1FA0023524605F18801754811F088FBD9
:106190000028A6D0724811F06FFE6A1C019205F12A
:1061A000B402009295F8B1306D4A49463046FFF787
:1061B00093FE002895D0716C05F1010A412304AAD1
:1061C000497A504613F044FC337D0290002B3AD0BC
:1061D000F06909F079FD029B00F114029A428146B0
:1061E00031D1F16904A809F0AFFD60B34AF6761326
:1061F00063811423237304AB03EB090000F1140241
:1062000004F10D0350F8041B904243F8041BF9D12C
:10621000882384F82130AC2384F822301923238189
:10622000B8F1000F40F08A80208977E74FF003092A
:10623000A2E74FF004099FE74FF001099CE72B7894
:10624000002BB8D14DE7737D13B3306A09F03CFDE4
:10625000029B00F114029A42814619D1316A04A8C6
:1062600009F072FDA0B141F2A943638104AB03EBD5
:10627000090000F1140204F10C0350F8041B9042D1
:1062800043F8041BF9D1872384F820301723C6E78D
:10629000B26B8AB3534602A904A814F007F858B3A6
:1062A000029B152B7FF41DAF9DF810308BB94AF679
:1062B00076136381142304F10D0223730DF125017C
:1062C0000DF1110353F8040B8B4242F8040BF9D182
:1062D0009EE7082B7FF405AF41F2A94304F10C02BD
:1062E00063810DF125010DF1110353F8040B8B426D
:1062F00042F8040BF9D1C6E7736B002B3FF4F1AE03
:10630000CDF800A002AA04A903A813F08BFD002871
:106310003FF404AF039B0BB15033DBB2DDF80890C0
:10632000A37284F80B904A4604A904F10C0009F109
:10633000020926F0E7F9A4F8089071E729463046EB
:1063400001F0B0FB0021032000F00CFD00287FF4D9
:106350006BAFF5E617B0BDE8F08F00BFF8FF012086
:10636000346900202DE9F74F0C46154F0D9D1E4650
:106370003B6883462946601C019390469DF830A0F7
:10638000FFF7D8FC8146224659464C44281826F08F
:10639000B9F905F804A0013429193046FFF7CAFC01
:1063A000044432464146281926F0ACF9019A3B686C
:1063B00030199A4201D024F0C3FD03B0BDE8F08F3C
:1063C000F8FF01202DE9F74F234F1D463B6881461A
:1063D0000193437E884692460BBB01242B704FF0FD
:1063E000000B08F62C16B8F828395B4519D800229E
:1063F00041464846FFF7F6FC034648B12919FFF726
:1064000099FC04442A1941464846FFF7EBFC23183F
:10641000019A18463B689A421BD024F091FD002453
:10642000DDE736F8020C80B129190130FFF782FC54
:106430000444281936F8022C314626F063F936F860
:10644000023C1C4405F804A001340BF1010B4C364E
:10645000C9E703B0BDE8F08FF8FF01202DE9F34153
:1064600007460E460F4C01F14505226801F125084B
:106470000192294601223846013D1DF08BF8454521
:10648000F7D10422384606F148011DF083F8019A3D
:10649000236824209A4201D024F052FD02B0BDE8C6
:1064A000F08100BFF8FF01202DE9F3410B4C0D46B0
:1064B000236890460193074604F0D2FF06462A4619
:1064C000384641461DF066F8019A236870199A42D1
:1064D00001D024F035FD02B0BDE8F081F8FF0120C5
:1064E00013B5084C0422236801F2C46101931DF026
:1064F00051F8019A236804209A4201D024F020FD2B
:1065000002B010BDF8FF0120F7B51646114C082265
:10651000236807460D4601931DF03CF8B6B1D5F847
:10652000143202A921F8063D022238461DF032F845
:106530000A2605F10A0229893846FFF7B5FF019AB4
:10654000236830449A4203D024F0FAFC0826F0E78E
:1065500003B0F0BDF8FF01202DE9F3410C4C884653
:106560002368114605461746019304F01BFF0646B3
:106570002A464146381826F0C5F8019A2368701952
:106580009A4201D024F0DCFC02B0BDE8F08100BFEB
:10659000F8FF012037B5124D90F820402B68019389
:1065A000836884B1082443F000430B600D4B4B60BB
:1065B0002144006804F0F6FE019A2B6820449A42B8
:1065C0000BD024F0BDFC0B60037D23B1064B0624E9
:1065D0001B888B80ECE70424EAE703B030BD00BFE2
:1065E000F8FF01207082C40380C10408F0B51D4F7C
:1065F00085B03A680446039290F8202000F13005F7
:10660000EAB1836804A943F0004341F80C3D042239
:1066100028461CF0BFFF144B04A941F8083D042292
:1066200028461CF0B7FF08262168284604F018FF0A
:10663000039A3B6830449A4212D024F081FC00F166
:106640000801042228461CF0A5FF237D33B1022255
:10665000064928461CF09EFF0626E5E70426E3E7E8
:1066600005B0F0BDF8FF01207082C40380C10408AA
:106670002DE9F341234F16463B6802680193836975
:10668000044693420D4637D263BB3146FFF782FF83
:106690003218114605F1450305F1250C13F801E9FF
:1066A000634502F801EBF9D1AB6C00F124080B62F1
:1066B000637D06EB0802BBB141F28443EB58253001
:1066C00006F80830D5F8C4363350A36904300133D6
:1066D000A361E36A0344E362019A3B689A420DD0E6
:1066E00024F02EFC0020D3E705F15001B5F84E0050
:1066F000FFF732FF4044E5E70020EDE702B0BDE8D8
:10670000F08100BFF8FF01202DE9F341214E02681E
:1067100033680546019383690F46934235D24BBBDC
:10672000FFF764FF044605F1300839464046FFF79D
:1067300095FE6B7D0444FBB141F28443FB5802A9F2
:1067400001F8053D012240461CF024FF013440467B
:10675000042207F2C4611CF01DFFAB69201D013348
:10676000AB61EB6A0344EB62019A33689A420ED044
:1067700024F0E6FB0024D6E707F15002B7F84E10EC
:106780004046FFF791FE0444E1E70020ECE702B049
:10679000BDE8F081F8FF01202DE9F3411A4E0546CE
:1067A000336888460193836900681746834226D27E
:1067B0001BBB114604F0F6FD0346144AFC1803CA3D
:1067C0000022F850A2604FF0FF326160E26003F1F6
:1067D00010043A1908F15001B8F84E00FFF7BCFE5A
:1067E000AB6920440133AB61EB6A0344EB62019A6D
:1067F00033689A4205D024F0A3FB0023DDE7002094
:10680000F5E702B0BDE8F081F8FF012078C1040887
:10681000F7B5164E026833680546019383690F4643
:1068200093421FD2ABB9FFF7E1FE044605F13000F9
:106830008FB9394604F014FEAB6920440133AB61D3
:10684000EB6A0344EB62019A33689A420CD024F05D
:1068500077FB0024EAE707F15002B7F84E10FFF784
:1068600023FEE9E70020EEE703B0F0BDF8FF0120CA
:1068700007B5074B1A680192019A1B689A4201D02A
:1068800024F05EFB406803B05DF804EB04F08ABDC1
:10689000F8FF012007B5084B1A680192019A1B689E
:1068A0009A4201D024F04CFB4168303003B05DF8CF
:1068B00004EB04F0D5BD00BFF8FF012007B50F4B76
:1068C0001A680192C2680A6090F8202052B10269E9
:1068D00009204A6000220A72019A1B689A4209D074
:1068E00024F02EFB427D1AB1026908204A60F3E7CA
:1068F0000420F1E703B05DF804FB00BFF8FF0120BE
:1069000073B50446164D00F130062B6800F10C01FA
:106910000422304601931CF03DFE94F820308BB1E8
:10692000042204F1100130461CF034FE30460122EE
:106930000C491CF02FFE0920019A2B689A420DD0B9
:1069400024F0FEFA637D3BB13046042204F11001CD
:106950001CF020FE0820EFE70420EDE702B070BD38
:10696000F8FF012073C104082DE9F341234B1646BB
:106970001A680F460192816902680546914298465D
:1069800036D3C3694268934232D27BBB3146FFF7AC
:106990006FFF3A68331832507A6800F108045A6081
:1069A0006B7D23B1D7F81432335300F10A04321946
:1069B00007F10A013889FFF7CFFDEB696A680133F7
:1069C00093420444EB6106D12B7D23B9311928464B
:1069D000FFF774FF0444EB6A2344EB62019AD8F892
:1069E000003020469A4205D024F0AAFA0020D0E7D1
:1069F0000024F3E702B0BDE8F08100BFF8FF0120FA
:106A0000F7B51A4E826933680446019303680F464E
:106A10009A4226D3C3694268934222D2FBB9FFF758
:106A200039FF0546627D394604F13000FFF76CFD01
:106A3000E3696268013393420544E36105D1237D34
:106A40001BB92046FFF75CFF0544E36A2B44E36271
:106A5000019A336828469A4205D024F071FA00253D
:106A6000E0E70025F4E703B0F0BD00BFF8FF012028
:106A700073B50446124EA36930681546019020682C
:106A8000834219D3E0696368984215D3A36A606AA8
:106A90001344834210D804F130001CF07BFDA36A3C
:106AA0002B44A362E36A2B44E362019A33682846CD
:106AB0009A4203D024F044FA0025F6E702B070BDF4
:106AC000F8FF0120F7B58360089B124CC360099B57
:106AD000276803610023C0E900120A9A0197C0E900
:106AE0000923C0E90633019AC3620375437523681D
:106AF0009DF830609A429DF82C5080F8206001D0BB
:106B000024F01EFA2946303003B0BDE8F0401CF0F6
:106B1000CDBC00BFF8FF012073B516460D4D3030D7
:106B20002B680C4601931CF095FD5EB104F1200327
:106B3000621E103413F8011D12F8010FA3421870E1
:106B40001170F7D1019A2B689A4201D024F0F8F91C
:106B500002B070BDF8FF012073B51C4E0C463268C0
:106B60000192427E62BB91F8CA56B5B10846FFF762
:106B7000B7F894F8C936012B13D8FC280FD9B0F513
:106B8000803F34BF0323052318448000A030019ABE
:106B900033689A4218D024F0D3F96B20E9E7012337
:106BA000F2E7DA1E012A0DD8042B07D1002D14BFFD
:106BB0004FF498734FF480731844E8E7A423FBE77D
:106BC000A420E4E7A020E2E702B070BDF8FF0120B6
:106BD00070B53F4D96B02B680446159391F8B030D0
:106BE000032B20D1B1F85A0E4B281AD9FF288CBF9D
:106BF0000323022301301844FC281FD9B0F5803F3D
:106C00002CBF052303231844637E159A002B14BF61
:106C10000A23082318442B6880009A4256D024F097
:106C20008FF90123E6E7B1F8842092B1042B07D154
:106C300091F8B130002B0CBF162022200123E2E78F
:106C4000052B3AD091F8B130002B0CBF192017203A
:106C5000F4E7826B4E1C8AB1334603A904A813F0F3
:106C600025FB58B1039B152B06D19DF810300BB9AD
:106C70001920E3E7082B20D00020DFE7636B4BB13E
:106C8000009603AA04A902A813F0CCF810B1039847
:106C90000230B1E7616C412304AA497A304612F010
:106CA000D7FE237D039053B9637D002BE4D0216A86
:106CB00004A809F049F80028DED01720BEE7E169F2
:106CC00004A809F041F80028D2D1EDE716B070BD54
:106CD000F8FF012013B50E4C2268019290F8CA26E5
:106CE00082B1FEF7FDFFFC280DD9B0F5803F34BF1F
:106CF000132315231844019A236880009A4204D074
:106D000024F01EF96B201123F4E702B010BD00BF80
:106D1000F8FF012000B50C4B89B01B680793FBF707
:106D20001BFF0A4B0A4A05930A4B02920493002365
:106D3000094A03930192094A1946009208481A46E3
:106D400023F0D4F8FEE700BFF8FF0120A3C6040833
:106D5000B1C1040868AD0408BDC10408D3C104086A
:106D6000D4E907082DE9F0432F4CC3B0236840F263
:106D700003120546884668460021419325F09AFD96
:106D800001202A4E8DF801508DF80000F9F718FB0C
:106D900022F0E4FF6A461A216E20FAF78FFB0025E5
:106DA0003746DFF89490F9F7DBFA33881B2B14D1C0
:106DB0004FF6FF7333800520F9F718FB22F0CEFF62
:106DC00099F8003003F0FF05F3B9B8F1000F25D1B1
:106DD00099F80830C3B9012501E0002DEBD13B88BB
:106DE000A3F1140251425141114A142B1170B3FA0C
:106DF00083F210494FEA52120A7001D0002BD2D10F
:106E00004FF6FF7300253B800020F9F7D9FA419A2D
:106E1000236828469A4203D024F092F84546DEE7DC
:106E200043B0BDE8F08300BFF8FF0120DA81002005
:106E3000400E0120410E01205C570120F7B5244C83
:106E40000D4623688DF801000193012318468DF843
:106E50000030F9F7B5FA6A4612216E20FAF72EFBD8
:106E6000284625461B4CFBF75FFF26461A4FF9F7CD
:106E700077FA2388132B0FD14FF6FF73174823801F
:106E8000FBF776FF0020F9F79BFA1448019A2B686C
:106E90009A421AD024F054F8A3F114014A424A410C
:106EA0003A70B3FA83F20E495209142B0A7001D0DA
:106EB000002BDCD10020FBF75BFF4FF6FF730020B7
:106EC0003380F9F77DFA0020E0E703B0F0BD00BFA2
:106ED000F8FF0120DA810020400E0120F0000020A0
:106EE000410E01202DE9F0476E4EE8B033680446AC
:106EF0006793FBF7D3FA40B90125679A33682846B0
:106F00009A4200F0CB8024F01BF854B9FBF77CFCCC
:106F10000746FBF767FCB0F5004F044606D3FFF7C2
:106F2000F9FEFBF731FC0028F0D0E5E70120F9F786
:106F300047FA5D4DDFF89481DFF894917CB92046E3
:106F4000F9F73EFA59490120FFF778FF80460028FB
:106F50004BD121460620FCF741F82546CDE70DF53B
:106F6000AE7A14222946504626F02CFD23460A21EB
:106F70000DF26512B3FBF1F001FB1033303302F870
:106F8000013D034608B15245F4D20023012C08BF4D
:106F90008DF86C31CDE904830193454BCDE9029224
:106FA0000093002343481A46194622F09FFF4FF4EE
:106FB0007A70F9F71BFA404BB3F800A0BAF1000F52
:106FC00011D101213D4A504682F800A03C4A554665
:106FD00011704FF6FF721A80F9F7F2F95146062048
:106FE000FBF7FCFF89E7013CA8E7FBF735FA05460C
:106FF000002847D0FBF7B4FB22A815F019F80DF5CF
:10700000AE790822414622A815F0F6FA494622A890
:1070100015F0A2FC2B4811F0A3FA07AFD0F80480BA
:10702000384608F0DBFF3A5919F8043009EB04013F
:1070300013444A7803EB02238A7803EB0243CA78AD
:1070400003EB026323F040433B510434242CEAD188
:1070500040F2036024F08EFA0423002201211A4832
:1070600024F040F90421184824F034F93946404608
:1070700010AB08F124020AF087FB0421124824F027
:107080002BF93AE73846FBF7ADFBB0F5004FBFF4FC
:1070900046AF21460720FBF7A1FF2EE768B0BDE809
:1070A000F08700BFF8FF012022C2040862C2040872
:1070B00050C20408FCE90708DA810020400E0120D4
:1070C000410E01207CC20408000C024034C20408B6
:1070D00044C2040837B5174D17492B6802200193A5
:1070E000FFF7ACFE10B301461122144826F06AFCEB
:1070F00013490320FFF7A2FEB0B1014611220F4849
:1071000026F0B6FC80B90D48FBF7E2F90124FAF746
:1071100055FE112109480CF06DF8019A2B682046A4
:107120009A4205D023F00CFF0024F2E70446F4E76E
:1071300003B030BDF8FF012082C10408A46900201B
:1071400098C104082DE9F041304D88B02B680793B1
:10715000FAF754FF064638B90126079A2B683046DD
:107160009A4250D023F0ECFEFBF7A0FA0446002828
:10717000F2D1ADF818000120F9F722F906AA292169
:107180006E20FAF79BF9224BCDE904440393214B7F
:1071900022460293204B21460193204B2048009326
:1071A0002346204C00F048F82746DFF88880F9F79E
:1071B000D7F823882A2B12D14FF6FF7323801A4B5E
:1071C0001A4A13F8010B002814BF18461046FBF7A3
:1071D00053FA0020F9F7F4F800F0A2F8BDE7A3F1A4
:1071E00014014A424A4188F80020B3FA83F2104958
:1071F0005209142B0A7001D0002BD8D14FF6FF731F
:1072000000263B80E5E708B0BDE8F081F8FF0120EB
:10721000E6C10408F0C10408FFC1040810C2040854
:10722000FCE90708DA810020F0000020D6120508EA
:10723000410E0120400E01202DE9F04F164C05466D
:10724000206887B005900E46DDE9109A159913481D
:1072500017469846DDE912B3149A0193104B039236
:107260000360029123F0FCFDDDE90212059B20681A
:10727000834201D023F064FE019BCDE91421CDE9C6
:1072800012B33A46434631462846CDE9109A07B034
:10729000BDE8F04F22F02ABEF8FF0120F081002067
:1072A0003972010873B50E4C054622680E460192EC
:1072B0000C4A0D491068884207D123F0B3F8019AAF
:1072C00023689A4205D023F03BFE116023F0C8FDED
:1072D000F5E73146284602B0BDE8704022F014BF01
:1072E000F8FF0120F0810020A572010813B5094CB8
:1072F000094A23680193094B1A6023F093F8019A15
:1073000023689A4201D023F01BFE02B0BDE8104072
:1073100023F0A0B8F8FF0120ED720108F0810020F1
:1073200070B5334C334D2168334E2B6886B0B14273
:10733000059302D0314B994217D123F073F82660A0
:10734000FBF778FAA0B1FAF7D3FF0446FBF704F88D
:10735000064678B100214FF4814304900846ADF809
:107360000C3003AA23F064FA11E023F079FDE6E77C
:10737000234CEBE73CB323782BB3224A04212C2087
:1073800023F056FA32462146382023F061F9FBF704
:10739000D7FA0446D8B100247F222146009408235E
:1073A000204623F009FB22461749104623F050F9E6
:1073B00023F050F804DF154B059A18602B689A42A9
:1073C00013D023F0BDFD124A00212820CAE7FBF7A5
:1073D0007DFA0028ECD07F22214600940823204625
:1073E00023F0EAFA22460B49DFE706B070BD00BF82
:1073F000F0810020F8FF012021730108ED720108DF
:107400000EC404089CEA070824C404083CDE0020DB
:1074100094EB070833C404082DE9F0471D46464F96
:1074200086B03B6814460593444A454B82460E4657
:107430001A6023F015FD002D64D0424A424B4349A7
:10744000012E434D12BF904698460D4601AEB146FF
:10745000404B03F1080C324618685968083303C2E0
:1074600063451646F7D118689B88092C9380C4BFE2
:107470000A2394FBF3F31060D8BF20234FF00A02D5
:10748000C8BF30338DF8043094FBF2F302FB134392
:10749000012C03F130038DF8053001D0152C39D1C2
:1074A00047F27343ADF8063022F0BCFF00212A4EAC
:1074B0000846324623F0BCF9002336782A460436C3
:1074C0001946304623F070F8092CCCBF4A460DF11E
:1074D000050200231221304623F066F8802352462D
:1074E0001B21304623F060F8332023F0C5FA4046D4
:1074F00022F0C2FC22F0AEFF059A3B689A4217D0F8
:1075000023F01EFD114D1249DFF85080012E18BFE7
:107510000D469BE7022C01D0162C02D146F26E4399
:10752000C0E7032C01D0172CBED146F27243B9E755
:1075300006B0BDE8F08700BFF8FF0120197401080C
:10754000F081002084C504087DC5040853C50408E3
:1075500069C504088AC50408FCE907084EC5040883
:107560002DE9F3477D4E0529336807468946019387
:1075700040F0B180D0F80080794B984506D00533B3
:10758000984503D02333984540F0A58078680028BB
:1075900080F2A180BB68002B80F29D80FB68012BEC
:1075A00000F299803A696F4B9A4200F29480FEF79C
:1075B0001FFB6D4B984509D100287BD0857D7DB19F
:1075C000446B0CB144680134002512E0674B9845C8
:1075D00008D100286ED0857D15B1457D002DF1D1F3
:1075E0002C4606E0002843D0857D05B1457D4468E2
:1075F0000134BB6823F0004303F1010A002C6AD078
:10760000BAF1630F67D864220021594825F052F976
:1076100064222146564826F0D5F925B16422554901
:10762000534826F0A5F9504B984504D1642252499D
:107630004F4826F09DF9642250494D4826F098F9AC
:107640000023BAF1090FADF800308DF8023035D8BB
:107650000AF130038DF8003064226946444826F070
:1076600087F94348019A33689A4274D023F068FC42
:107670007B68002B1EDA23F000433D2B14D007D883
:107680002B2B19D03C2B0DD0282B13D13C4C9BE736
:10769000892B0BD049F2BE12934209D06C2B09D131
:1076A000384C91E7384C8FE7384C8DE7384C8BE7F6
:1076B000384C89E7002487E7374C85E70A22BAFB74
:1076C000F2F303F1300102FB13A330338DF8001005
:1076D0008DF80130C0E700224FF0270C0A244FF04C
:1076E0002F0E2E4B09F1FF3183F85F205E33002906
:1076F00015DA6D221A70202203F8012C3A2203F8C1
:10770000022C682203F8032C742203F8042C612253
:1077100003F8052C5022981F03F8062CA2E757F80F
:107720002120002AB8BF83F800C022F00042B8BF71
:1077300003F1FF33B2FBF4F5184604FB1522303297
:1077400000F801292A4625B980F800E0023B0139FA
:10775000CDE70346EEE702B0BDE8F087F8FF012071
:107760002C00008040420F00540000803100008057
:10777000101001208AC2040892C204089AC20408A8
:10778000DED00408EFD00408D9D0040810D10408D2
:1077900000D1040805D1040886C20408420E012065
:1077A000F0B50E4C8FB01E462368154604AA149FF0
:1077B0000D9308F0F3FB20230021CDE902732A4644
:1077C0003346CDE9001104A809F00AFA0D9A23689E
:1077D0009A4201D023F0B4FB0FB0F0BDF8FF0120B6
:1077E000202A28BF20222DE9F347144681468846E7
:1077F0001F4F84223B6800211E4804F1010A0193B7
:1078000025F058F8524649461A4826F0DBF8A045BC
:10781000184D06D9524609EB040105F1210026F066
:10782000D1F86600464505D2524609EB06011248DA
:1078300026F0C8F83119414504D2524649440F4850
:1078400026F0C0F8B8EB840F07D92E232C4484F817
:10785000623084F8613084F86030019A3B680848EF
:107860009A4201D023F06CFB02B0BDE8F08700BF64
:10787000F8FF012082100120C4100120E510012032
:10788000F48100202DE9F04F8BB09A467D4B02AF7A
:107890007A617D4D1A687D4EFA612A680446D7E9FF
:1078A00012B8B24289467B607BD023F0D9FA2046D9
:1078B0002E6026F0AFF87B69002B00F0A08000F16D
:1078C000080323F00703C7F80CD0ADEB030D02AAA1
:1078D000BAF1000F68D0611E0DF10705261811F8E6
:1078E000013FA3F1610CBCF1190F9CBF203BDBB23F
:1078F0008E4205F8013FF2D13C260023644D9A45A3
:1079000008BF22468642194634BF00200120009558
:107910001FF0D8FF3F23002104461A46084623F0F3
:1079200003F8631E1C2B3D6140D8C4F1210BDA46DD
:107930000025C4F120037B61A9466FEA05080026F3
:107940007B6903EB4503BB603A694FEAE903D35C0B
:1079500008F007021341DA070AD50023009378697B
:1079600071000BEB010352460144B86823F024F880
:107970000136B442A144A8EB0408E5D10135A54283
:107980000AF1020AD8D1D7F80CD0424822F074FA92
:1079900022F060FD7B68FA691B689A426ED023F082
:1079A000CFFA22F03FFD82E72826A6E73B2BEAD854
:1079B000022594FBF5F5C5F120050026AB46B2463D
:1079C0006FEA06094FF000083A694FEAEA03D35C10
:1079D00009F007021341DB0704D50BEB0801284629
:1079E00022F0FAFC08F101084445A244A9EB04097D
:1079F000EAD10136A64205F10105E0D1C3E72A2804
:107A000000F1FF3234D93F288CBF04230323B2FB9B
:107A1000F3F2014601322046FFF7E2FE0546B9F1D6
:107A2000000F05D000234A461946184622F0BCFD37
:107A30000D24043D2146012355F8042F002009346C
:107A400022F0B2FD312CF5D1B8F1080F12D8B8F1FF
:107A5000000F11D041465846FFF782FD0246002331
:107A60002A21184622F0A0FD0B4822F0D1F98CE71C
:107A70000223CCE7094AF2E7094AF0E72437BD467A
:107A8000BDE8F08FF8FF0120F08100208578010823
:107A9000A20E012089B10408BFC20408A5C20408CF
:107AA000B7C204082DE9F04305460F464B4E8DB092
:107AB00033680DF10808CDF8008042680B93D1E9D6
:107AC0002A010823FFF76CFE23224549404625F092
:107AD0004FFFD5F838907C1CB9F1000F0ED0484606
:107AE00025F098FF494605460246204625F0C0FF8E
:107AF00020B9635D3A2B04BF01356419204625F097
:107B000089FF2B2834BF02230323451E95FBF3F581
:107B10006A1C152AA8BF152201462046FFF760FE01
:107B2000304B314A04461A6023F09AF922F07AFC6D
:107B300000212E4A084622F07BFE00232C4A1946DB
:107B4000142022F031FD002342460921142022F0A6
:107B50002BFD112DCCBF00251425012322681221F5
:107B6000284622F021FD012362681B21284622F0CD
:107B70001BFD0123A2682421284622F015FD0123C4
:107B8000E2682D21284622F00FFDE3681B7873B9C7
:107B9000B7F88410D9B1082917D807F18800FFF782
:107BA000DFFC024600232D21184622F0FDFC11487F
:107BB00022F02EF9104822F05FF922F04BFC0B9ACC
:107BC00033689A4207D023F0BBF90C4AEAE7332026
:107BD00022F052FFEBE70DB0BDE8F083F8FF012083
:107BE000334B0508F0810020397201084CEA070880
:107BF00010C3040892AD040837B40408A5C20408F1
:107C000070B51F4E98B033680446179303460D466F
:107C10004118994203D114222946204614E013F852
:107C2000012B203A5E2AF4D94122002106A824F033
:107C300041FE202D294606AA28BF2021204623F0F8
:107C400015FA1022690006A8FFF7CAFD0023059364
:107C5000C2680C49049282680392426802920268E8
:107C600009480192094A0092094AFFF7E5FA179A72
:107C700033689A4201D023F063F918B070BD00BF99
:107C8000F8FF012092AD04084CEA0708FDC2040881
:107C900037B404082DE9F0430746174C99B019464C
:107CA000DDE92089236807AD0095104617937A68AF
:107CB00008230FAEFFF774FD009608237A68494643
:107CC0004046FFF76DFD00230C4ACDE904630392A3
:107CD0000B4A0C49CDE901520B4A0C4800920C4A60
:107CE000FFF7AAFA179A23689A4201D023F028F9DD
:107CF00019B0BDE8F08300BFF8FF012020C30408DD
:107D00002EC3040892AD040840C304084CEA0708D7
:107D100037B40408F0B516461F46114C91B02368DD
:107D200007AD009542680F93394608233046FFF7A8
:107D300037FD00230B4A0593CDE903320A4A0B496C
:107D4000CDE901520A4A0B4800920B4AFFF774FA38
:107D50000F9A23689A4201D023F0F2F811B0F0BDD7
:107D6000F8FF0120E7C30408F4C3040892AD040837
:107D70000AC404084CEA070837B4040810B5104CCC
:107D800088B0236810220793FFF72AFD0023CDE96E
:107D90000433C3680B4A039383680B490293436817
:107DA0000193036809480093094BFFF745FA079AC6
:107DB00023689A4201D023F0C3F808B010BD00BF79
:107DC000F8FF012037B4040892AD04084CEA070814
:107DD000F0C5040830B5124C89B0236805460793F6
:107DE00025F018FE112201462846FFF7F9FC002372
:107DF000CDE9043383680B4A039343680A4902932D
:107E000003680A4801930A4B00930A4BFFF714FAE0
:107E1000079A23689A4201D023F092F809B030BD46
:107E2000F8FF012037B4040892AD0408FCE9070804
:107E300010C604085FB3040810B5104C88B023685E
:107E400010220793FFF7CCFC0023CDE90433C3686D
:107E50000B4A039383680B490293436801930368B9
:107E600009480093094BFFF7E7F9079A23689A42FC
:107E700001D023F065F808B010BD00BFF8FF012065
:107E800037B4040892AD0408FCE9070823C60408C7
:107E900070B5154C88B02368064608460D46079312
:107EA00025F0B8FD102201462846FFF799FC002274
:107EB000CDE90422C3680D4A039383680C490293F9
:107EC0004368019303680B4800930B4B002E08BFD7
:107ED00013460A4AFFF7B0F9079A23689A4201D07D
:107EE00023F02EF808B070BDF8FF0120E2C20408AC
:107EF00092AD04084CEA0708C7C2040837B4040866
:107F000070B50446194D9CB02B6806AE1022184976
:107F100030461B9325F056FD2378012B04D009AA87
:107F20000121204623F0A2F80AAA2021601C23F098
:107F30009DF8102240210AA8FFF752FC0023059368
:107F4000C2681946049282680392426802920268EB
:107F50000848CDE90062084AFFF76EF91B9A2B68C2
:107F60009A4201D022F0ECFF1CB070BDF8FF012056
:107F70003FC504084CEA070889B104082DE9F04719
:107F80005B4F04463B68461CB2B0884630465949B0
:107F9000319324F04DFD2378814607AD002B00F08E
:107FA00096806378002B00F092805349304624F08D
:107FB0003FFD142220B95149284625F003FD13E066
:107FC000B9F1000F01D14E49F6E73146284625F0B8
:107FD000F9FC0DF11B0A1AF8016F002E6BD1142267
:107FE0004849284625F0C4FC94F84B30002B71D04A
:107FF00094F84C30002B6DD0472204F14C010CA8B2
:1080000025F0E0FC94F88C306BB194F88D3053B1CE
:1080100047223D490CA825F0ABFC472204F18D0115
:108020000CA825F0A5FCA37A002B57D0E37A002BEF
:1080300054D0492235491EA825F0C4FC492204F138
:108040000B011EA825F094FCB9F1000F13D13C21BF
:108050000CA824F079FC044668B1411C49221EA8F2
:1080600025F0B0FC84F800903E211EA824F06CFCA2
:1080700008B180F800909DF81C30002B9DF830303E
:1080800008BF002503B10CAB9DF87810002249BB56
:108090001146CDE90422CDE90218CDE900531C4A6E
:1080A0001C4B1D491D48FFF7C7F8319A3B689A429F
:1080B0001AD022F045FF24F0CFFA3044437803F081
:1080C0000303022B08BF203E8AF8006083E71422D6
:1080D000134971E700238DF83030A4E700238DF8B1
:1080E0007830B1E71EA9D4E732B0BDE8F08700BF11
:1080F000F8FF0120D5B4040898C504089EC50408FB
:10810000AEC50408BCC504087AC20408D1C5040879
:1081100037B40408D8C5040892AD04084CEA07082F
:10812000C7C504082DE9F041444FB2B03B6804468E
:108130003193037807AE1422002B6DD04378002BC7
:108140006AD0411C304625F03DFC0DF11B0818F8A3
:10815000015F002D54D114223949304625F008FC26
:1081600094F84B30002B5CD094F84C30002B58D056
:10817000472204F14C010CA825F024FC94F88C3023
:108180006BB194F88D3053B147222E490CA825F0DD
:10819000EFFB472204F18D010CA825F0E9FBA37A3F
:1081A000002B42D0E37A002B3FD0492226491EA85B
:1081B00025F008FC492204F10B011EA825F0D8FB8C
:1081C0009DF81C30002B9DF8303008BF002603B10D
:1081D0000CAB9DF87810002259BB1146CDE9021274
:1081E000CDE90422CDE90063184A194B19491A4810
:1081F000FFF722F8319A3B689A421CD022F0A0FE89
:1082000024F02AFA2844437803F00303022B08BF22
:10821000203D88F800509AE71049304625F0D2FBFF
:108220009EE700238DF83030B9E700238DF87830D1
:10823000C6E71EA9D2E732B0BDE8F081F8FF012001
:10824000B4C304087AC20408D1C5040837B40408CA
:10825000CFC3040892AD04084CEA0708C2C304085F
:1082600030B50E4C89B023680546079300230C48AF
:10827000CDE90231002A18BF10460A4ACDE904337D
:10828000CDE9005219462A4621F030FE079A2368AC
:108290009A4201D022F054FE09B030BDF8FF01200F
:1082A0004CEA0708FEC504082DE9F04F174D8BB0C6
:1082B000159C9246164E2A689B46164F149B804684
:1082C0008946099221460E223046079325F07AFB13
:1082D00004F10D010E22384625F074FB0022079BA5
:1082E0001A34CDE90422009352465B46CDE902746C
:1082F000019649464046FEF79FFF099A2B689A422D
:1083000001D022F01DFE0BB0BDE8F08FF8FF012078
:1083100002100120741001202DE9F04F20241A4F83
:1083200099B03968DFF878A01791229907AD0091CC
:108330008346DDE924890294DAF80000019505F00E
:1083400067FC029400240FAE42464B46DAF8000068
:108350000196009405F05CFC0C4B0D4ACDE90153ED
:108360000C4BCDE90444009303965B460A490B4845
:10837000FEF762FF179A3B689A4201D022F0E0FDB7
:1083800019B0BDE8F08F00BFF8FF012018C5040840
:108390004EC504082BC5040892AD04084CEA070832
:1083A0000C8200202DE9F04F0C4620250021244EA0
:1083B0009DB09346DDE92A23DFF89890CDE90623A6
:1083C0003368DDF8A0800BAF82461B9302950197BE
:1083D0000091DDE92623D9F80000099105F018FC89
:1083E000B8F1000F21D0DDE906230999029513ADFC
:1083F00001950091D9F8000005F00AFC114B124AD2
:10840000002C08BF1A460023CDE90285CDE90433CC
:10841000CDE900B753460D490D48FEF70DFF1B9AF5
:1084200033689A4208D022F08BFD074B054A454637
:10843000002C18BF1A46E6E71DB0BDE8F08F00BF5C
:10844000F8FF01204EC5040837B4040892AD0408B3
:108450004CEA07080C8200202DE9F04F4FF0200A6B
:10846000044699B01F4D229F296807AECDF808A099
:10847000CDE90076994690469DF88CB0179105F0AD
:10848000C7FB94F8EC3053B10FABCDE901B3CDF895
:108490000CA0009742464B46204605F0DDFB2378B2
:1084A000C3B1631C94F8EC100022A9B91146104620
:1084B000CDE904220C4ACDE90210009201960B4A44
:1084C0000B490C48FEF7B8FE179A2B689A4206D063
:1084D00022F036FD084BE5E708490FA8E8E719B098
:1084E000BDE8F08FF8FF01202BC504084EC5040835
:1084F00092AD04084CEA070811C50408AFC404088B
:108500002DE9F0430E461F4C99B007AD99462368FC
:1085100001469046284620221793209F25F052FAC4
:1085200020221949284625F023FA314620222846E0
:1085300025F01EFA20230FAE029342464B46002040
:10854000CDE9007605F064FB2E21304624F0FCF9DD
:10855000002300B10370CDE904330C4B0C4ACDE984
:1085600001630C4B039500930B490C4B0C48FEF731
:1085700063FE179A23689A4201D022F0E1FC19B0F9
:10858000BDE8F083F8FF012042C2040844C4040897
:108590005CB204082BC5040892AD040809C50408A0
:1085A0004CEA07082DE9F04389B02D4C06AF23684B
:1085B00015467B60002936D00378FE2B33D101F1BC
:1085C0000043013B4FEA430808F1080323F0070387
:1085D0006E46ADEB030D0DF118094A460139013025
:1085E00022F044FD102241464846FFF7F9F80023E7
:1085F000CDE90433C3681B4A039383681A49029385
:1086000043680193036819480093194B002D18BF64
:108610001346184AFEF710FEB5467A6823689A4258
:108620001AD022F08DFC1022FFF7DAF80023CDE9F2
:108630000433C368104A039383680B490293436869
:1086400001930368094800930C4B002D18BF134693
:10865000084AFEF7F1FDE0E70C37BD46BDE8F083C0
:10866000F8FF0120BBC4040892AD04084CEA0708D7
:10867000CEC404084EC50408E3C40408F5C40408C5
:1086800030B5124C89B023680546079325F0C2F92E
:10869000102201462846FFF7A3F80023CDE9043352
:1086A000C3680B4A039383680A49029343680193A2
:1086B000036809480093094BFEF7BEFD079A23683B
:1086C0009A4201D022F03CFC09B030BDF8FF0120F5
:1086D0004EC5040892AD04084CEA07089CC404087F
:1086E0002DE9F041434E00F22318336898B0074655
:1086F0000C4600F2B51500F133014046179324F003
:1087000097F968B907F1C501284624F091F938B9FD
:10871000B7F8E633002B46D007F57A7298423CD37F
:1087200022462946404605F099F8044670B92022B1
:10873000414607A825F046F920222F4907A825F031
:1087400017F92022294607A825F012F9D7E93C019C
:1087500097F8ED300DF13C08022B2AD10023CDF81B
:1087600000801A46FFF71CF8FCB1A7421FD0013465
:108770000023CDE90433214B0394CDE90183204B41
:108780000093204B204A21492148FEF755FD179AB6
:1087900033689A422BD022F0D3FB52F8041BA1423B
:1087A00001D00130BAE73C46D0E707ACE0E7194C0E
:1087B000DEE720230025CDE90183024600950B4624
:1087C000204605F025FA6CB1A7420ED02B460022B8
:1087D000CDE90235104BCDE904220093CDF8048099
:1087E0000E4BCFE70E4B07ADF1E70E4BEFE718B09E
:1087F000BDE8F081F8FF012042C2040887C50408E3
:1088000074C4040864C404084EC5040892AD040886
:108810004CEA070854C4040894C4040886C4040835
:1088200041C4040851C404082DE9F0473D4D984661
:108830002B68A0B016461F939DF8A0203A4C3B4BE6
:108840000746002A08BF1C46022916D10168384B8A
:10885000994212D14368002B0FDA23F00043092B11
:108860000BD8002A3CD02022324917A825F0AAF8BC
:108870007B6830338DF86C3017ACB8F1200F06AF41
:108880000DF129080DF13A090DF14B0A32D13A46A2
:108890000821304622F0EAFB08214246701822F0F7
:1088A000E5FB4A46082106F1100022F0DFFB5246A4
:1088B000082106F1180022F0D9FB00231E4ACDE959
:1088C0000433CDE9029A2346CDE900781B491C48C0
:1088D000FEF7B2FC1F9A2B689A4220D022F030FBA0
:1088E0002022184917A825F06DF87B6830338DF8E1
:1088F0006E30C1E711221449384625F063F8112281
:108900001249404625F05EF811221149484625F0EB
:1089100059F811220F49504625F054F8CDE720B000
:10892000BDE8F087F8FF01204CC304085FC30408CA
:108930002227008074C3040837B4040892AD0408E9
:108940004CEA070887C304089CC3040828C5040828
:10895000A1C30408ADC3040813B5114C22680192E9
:1089600001228DF800200F4A1268012A14D00E4B04
:108970001B6803F00303032B0CBF022301236A4689
:108980002E216E208DF80130F8F798FD019A2368AA
:108990009A4203D022F0D4FA0023F0E702B010BDCF
:1089A000F8FF012008110120201101202DE9F74FC7
:1089B00006468A469146384F1D463B6802F1FF3B0A
:1089C00001934418A64214D199F800202B789A42BA
:1089D0001ED02D2323702D7823F03EFE28444378AB
:1089E000023403F00303022B08BF203D04F8015CAE
:1089F00022E01BF8018F23F02FFE4044437803F060
:108A00000303022B08BFA8F1200806F8018BD9E761
:108A10000AF1FF3815F8082019F808309A420BD0EF
:108A2000BAF1020F1EDC741C2D23A046337005EB37
:108A30000A09A94508D1544400232370019A3B68D0
:108A40009A4226D022F07CFA15F8016B23F004FE3E
:108A50003044437803F00303022B08BF203E08F89C
:108A6000016BE6E7202304F8013C19F808605EB1C9
:108A700023F0F2FD30444378013403F00303022B6A
:108A800008BF203E04F8016C2D23237015F8085010
:108A9000A2E703B0BDE8F08FF8FF01202DE9F04117
:108AA000524DC4B02B68F122002106A8439323F055
:108AB00001FFF1224E4906A824F084FF01244D4E07
:108AC0004D4FDFF82C813368A34222D84B4E4C4FD8
:108AD000327862BB3B78002B3BD106A8F9F75AFCF1
:108AE000F12106A80AF086FB337813B90120F9F7C3
:108AF000D5FEF9F763F94348FAF75EF90022424BD5
:108B00001A60FEF70DFC439A2B689A426BD022F054
:108B100017FAF122394606A824F02AFF0C21F12287
:108B200001FB048106A824F023FF0134CBE706A84B
:108B30000FF0B2FF04460028CCD1F12106A80AF0BC
:108B400059FB3B78002B3BD10120F8F721FF2F493F
:108B500032E0F9F76FFE10B106A8F9F75BFC0446A6
:108B6000F12106A80AF046FB29492A4A94B10023BC
:108B7000CDE902132849CDE90433CDE90021274886
:108B80001946274A21F0B2F901210846FEF7EAF812
:108B90002448B1E7244BCDE90214CDE90023214656
:108BA00023461F4A2148CDE9044421F09FF90121C1
:108BB0000846FEF7D7F81E490320FAF70FFA9DE79B
:108BC0001C4B214601931C4BCDE904440093CDE995
:108BD00002442346124A154821F088F9012108462B
:108BE000FEF7C0F8B3E744B0BDE8F081F8FF01201C
:108BF0004C1101201C1101209E6E05080D11012051
:108C00000C11012087C604080811012064C704085C
:108C100098C60408BBC60408AFC6040824EA0708BF
:108C200037B40408CDC6040801C70408D4E907080E
:108C300014C704084FC7040858C704080929C8BF47
:108C40000A2313B5184CC8BF91FBF3F32268D8BFB1
:108C5000202301924FF00A02C8BF3033037091FB0A
:108C6000F2F302FB1313012903F13003437001D027
:108C7000152908D147F273434380019A23689A4229
:108C80000FD022F05DF9022901D0162902D146F257
:108C90006E43F1E7032901D01729EED146F2724362
:108CA000EAE702B010BD00BFF8FF01202DE9F04F48
:108CB000B34BA9B01B68B34F279310F009FAB24B1E
:108CC00005461A68984602F0030BBBF1020FAF4E3F
:108CD00000F0FA80BBF1030F00F0C680BBF1010F7A
:108CE00040F01B8100246FF0404A4FF00C09A84B64
:108CF0001B8803EBC30307EB4307398837F8023FB0
:108D0000C1F30B02C3F30B0336F8133036F812200D
:108D1000C3F30B035344C2F30B0209A809FB04007D
:108D200055F8233055F82220090B0134FFF73EFE99
:108D3000092CE2D14FF003090026964B09EB4902BA
:108D4000F6540136B242FBD1314692480AF034FA69
:108D5000D8F80050AB0740F007818F4A24AB106869
:108D60005168AD0803C312890135294624A81A8029
:108D7000FFF764FF0023092D884994BF0DF191028C
:108D800024AACDE90121864ACDE904330092039358
:108D90001A4619468348FEF74FFA3627DFF8F4A142
:108DA0004FF000087B1C0693BBF1030F1CBF2A2366
:108DB00003FB08F51AF8082006BF4FEA881520358E
:108DC0001635A242BDBF0C2309A903FB0212764A45
:108DD00000211046079221F0B1FBDDE906120223C3
:108DE00090FBF3F00023281A21F0DEFBBBF1030F08
:108DF00003BF05F11E023946A5F11F0005F112025D
:108E00001CBF3946A5F1150007F1090308F1010857
:108E100021F08AFDC145C7D10B3F152FCA44BFD1F0
:108E200021F018FB5B4B00201A4613F8011BA142EE
:108E30005849A8BF03F8010C591A8E42F5DCBBF162
:108E4000030F07D108235948195C515CD154013BE9
:108E5000012BF9D1FFF780FD494B279A1B689A42F5
:108E600000F08A8022F06CF80922494B1988B1FB86
:108E7000F2F237F8123002EBC2028A1A92B2C3F34E
:108E80000B03134436F81320013336F813400C2734
:108E90000026C2F30B02C4F30B04A41A00EB8205F4
:108EA000A64207D1BBF1030F14BF4FF003094FF0E7
:108EB000020941E709AB55F8261007FB06300C22E2
:108EC00024F080FD0136EBE7314B6FF040491A8802
:108ED0004FF00C0A37F81230013237F812400027F1
:108EE000C3F30B03C4F30B04E41A06EB4306A742D7
:108EF000D8D0318836F8023FC1F30B02C3F30B031D
:108F00004B4409A80AFB070055F8233055F82220E6
:108F1000090BFFF74BFD0137E9E700244FF0120A78
:108F20006FF040490C2309AA03FB04200AFB04F25A
:108F300002F11203FB5ABA5AC3F30B0336F813308B
:108F4000C2F30B0236F81220C3F30B034B44C2F3F7
:108F50000B02013455F8233055F822200121FFF788
:108F600025FD092CDED19DE700203F2300907F22C4
:108F70001B2121F021FD10E729B0BDE8F08F00BFD3
:108F8000F8FF0120DCC704082011012080C8040874
:108F9000461101202411012056C6040834C60408D5
:108FA00045C60408FCE9070878F80408D3C7040894
:108FB000F0B5254F8BB03A6824490992244A254ED2
:108FC00012688C5C244A146014BB10F081F80546CA
:108FD0004FF400600AF0D4F80C2255F82010304607
:108FE00024F0F0FC1D4BCDE90146CDE903431C4BB9
:108FF0000594009300231B481A461946FEF71CF9F6
:10900000FFF7AAFC099A3B689A421BD021F098FF0F
:109010000025154A06AB10685168128903C3214622
:1090200006A81A803570FFF709FE092C0F498CBF7E
:1090300006AA0DF119020595CDE90351CDE90152BA
:109040000B4BD6E70BB0F0BDF8FF01202D1101202E
:10905000201101200E1101204811012060C60408D2
:1090600071C60408FCE9070856C6040834C604089B
:1090700045C604082DE9F74F3C4F9A46DDE90E48F6
:109080003B6818288B46DDF830909DF834C09DF879
:10909000401001933E4661D8354BC340DB075DD598
:1090A000344B354D83F800C0344B2860197001BB38
:1090B0008AB1FEF70FF8014668B90C20F9F78EFF68
:1090C000019A3B689A4201D021F03AFF03B0BDE813
:1090D000F04FFEF725B95846F8F770FF5046F8F7FD
:1090E00043FF4846F8F720FF4046F9F7DFFCF8F762
:1090F00065FE14F0010119D12A6821488A4226D15F
:1091000000221F4B182926D11D480AF055F80122CC
:109110001C4B1A6000221C4B1A60019A33689A4259
:10912000D2D103B0BDE8F04FFFF742BF0222154B8A
:109130001A600023144A1360144A1380019A33689A
:109140009A42C1D103B0BDE8F04FFFF7AFBD4B1C51
:109150000B541946D2E7CA540131D3E7019A336858
:109160009A42B1D103B0BDE8F08F00BFF8FF0120F3
:10917000001004010D1101201C1101200C1101200F
:109180002D1101200811012020110120461101207C
:109190002DE9F3417A4B06461A681C460192794A3A
:1091A0001568012D00F09380022D40F0DC800078DE
:1091B000082818D1744A136899070BD10BB1043BE6
:1091C0001360019A23689A4215D102B0BDE8F041BC
:1091D000FFF76CBD0921013B13606C4A1388B3FB98
:1091E000F1F31380EDE73138C2B2082A0AD9019AA7
:1091F0001B689A4201D021F0A3FE02B0BDE8F04105
:10920000FFF7AABB624B604D1E5C2B685F4F03F0FB
:109210000303032B52D16FF0020190FBF3F390FB99
:10922000F1F20B2103EB4303984214BF40200020CE
:10923000514300F13E0201F13F030130363121F08C
:1092400073FB21F007F90120F7F7BAF8FA20F7F7D6
:10925000CDF80020F7F7B4F809233A884D49B2FB5E
:10926000F3F331F8131003EBC303D31AC1F30B016B
:10927000494A9BB20B4432F81330C3F30B031E442C
:109280002B684FEA930800233B800FF021FF0C224C
:1092900050F82610414802FB080024F093FB404B95
:1092A00008F101081B6898450DD1019A23689A427C
:1092B000A1D102B0BDE8F041FFF7F0BB3B8803EB62
:1092C000C3031E443E802B6801332B6079E7354F82
:1092D0003A68C2B9344923F0ABFB002833D0334B92
:1092E0001B7813B92846F8F753FB09203049F9F7E2
:1092F00075FE019A23689A427FF47DAF02B0BDE803
:10930000F041FEF70DB82B4B1B789BB10FF0E0FE40
:10931000051F55F8041F41B9244B1B7813B90120D0
:10932000F8F736FB24490320E1E7304623F080FBC1
:109330000028EED10C223B681848013B314602FB65
:10934000030024F03FFB104A1368172BADD0013304
:109350001360019A23689A427FF44DAF02B0BDE8D2
:10936000F041FFF725BE019A1B689A427FF443AF94
:109370000120124902B0BDE8F041F9F72FBE00BF4D
:10938000F8FF0120081101202011012046110120C1
:1093900024110120DCC7040880C804084C110120F6
:1093A0001C110120481101200E1101200C11012077
:1093B0008EC704080D110120A1C70408BEC7040808
:1093C00037B5094C094D226801922A681AB1FDF798
:1093D000A7FF00232B60019A23689A4201D021F055
:1093E000AFFD03B030BD00BFF8FF01200811012020
:1093F0002DE9F04F9FB09B46289B04460793299B7D
:10940000924608932A9B9DF8AC2009933A4B186822
:1094100099461D9021F04000802802D0B1F5807F50
:109420003CD1364B36481960364B20210CAD1A70B2
:109430000DF1410609F080FE2A460821304821F04E
:1094400015FE0DF15207324608212F4821F00EFE7D
:109450000DF163083A4608212C4821F007FE4246E8
:1094600008212B4821F002FEFCB10024294B2A4A96
:1094700000932A4923462A48CDE90484CDE90267AE
:109480000195FDF7D9FE21460420FDF76BFC01464E
:1094900058B90420F9F7A2FDFDF742FF1D9AD9F84B
:1094A00000309A4224D021F04BFDBBF1000F05D0D3
:1094B000FDF710FE014608B90C20EBE75046F8F71F
:1094C0007DFD0798F8F750FD0898F8F72DFD0998ED
:1094D000F9F7ECFAF8F772FC00230BAA23216E20AF
:1094E0008DF82C30F7F7EAFF01220E4B1A70D5E702
:1094F0001FB0BDE8F08F00BFF8FF012098120120D7
:1095000077120120971201207F120120871201207B
:109510008F120120D3CD040889B1040892AD04084C
:10952000FCE907086C1201202DE9F74F3C4C064678
:109530002368A2460193F9F7C9F960B9019A236833
:109540009A4201D021F0FCFC0120364903B0BDE86D
:10955000F04FF9F743BD0120F9F714FA0020F9F7AD
:10956000D7F90EB1F8F72AFCF8F730FF002580464E
:10957000AB46DFF8BC900127002431E009F8030076
:109580000133944612F8010BCC1810F0DF0F01D014
:10959000092BF3D109F803B09CF8003003B1013472
:1095A00018F804302946B3FA83F348465B093A4673
:1095B000FDF732FF01210520FDF7D4FB78B926B96C
:1095C000F8F710FA0120F8F7E3F9FDF7A9FE019A80
:1095D000DAF800309A42B5D100210420B6E701370D
:1095E00018F80400214608EB040208B10023C8E77C
:1095F0000DB90125BFE7F9F7C5F966B10A48F9F7D2
:10960000DBFB019ADAF800309A429BD103B0BDE847
:10961000F04FFDF785BEF8F7D1FB0448EFE700BF38
:10962000F8FF01206ECD040885CD0408A1CD040803
:109630006D120120F0B5234D234C2A689DB01B927A
:10964000227806460F464AB920490120F9F7C6FCA0
:109650001B9A2B689A4232D021F072FC684611F0B6
:10966000FDFF20221A49684612F0E6F93A463146D3
:10967000684612F0E1F91649684612F0C9FA01206D
:10968000F9F746F9134B12481968C9080EF0D2FFD2
:10969000F8F780FE202200210D4823F00BF900236B
:1096A00023700D4B187838B1F8F788FB0B48F9F7A1
:1096B00083FBFDF735FECBE7FFF736FFC8E71DB0AC
:1096C000F0BD00BFF8FF01206C120120C1CD0408DD
:1096D000771201209812012097120120A1CD0408D1
:1096E00007B50B4B1A6801920A4A1268D17D49B13D
:1096F000D06A000240F04100019A1B689A4203D0F0
:1097000021F01EFC0120F7E703B05DF804FB00BF69
:10971000F8FF0120C8140120F7B5264E044633682F
:109720000F460193FFF7DCFF02AD45F8080D224814
:1097300019F01EFF042221491F4819F02BFF202297
:109740001F491D4819F026FF20221E491A4819F00A
:1097500021FF21461848FCF781FE04F15002B4F8BD
:109760004E101548FCF7A0FE04F5A351082218314D
:10977000114819F00FFF21460F48FCF7B1FE2022D7
:1097800011490D4819F006FF042210490A4819F042
:1097900001FF04222946084819F0FCFE3946064814
:1097A00019F058FF019A33689A4201D021F0C8FBA2
:1097B00003B0F0BDF8FF0120A017012004820020B3
:1097C0003015012050150120F0140120DC2F01205C
:1097D00007B500200D490E4A0B68507001930D4BE0
:1097E000187001231370937013710B4B01981B6851
:1097F00093600B68984201D021F0A2FB15216E20E6
:1098000003B05DF804EBF7F759BE00BFF8FF012085
:109810004030012029390120E81A012037B5114DC7
:10982000114A2B68114C0193012313700222104935
:1098300062708A8C04F1100026312370A3702373A8
:10984000E28122F05FFF019A2B689A4201D021F059
:1098500077FB224615216E2003B0BDE83040F7F7B4
:109860002DBE00BFF8FF0120293901204030012022
:10987000181B012037B50222134D144C2B681449D4
:109880000193144B26311A70002201236270124A90
:1098900004F1100012682370A26031F8022CA3704A
:1098A00023712373E28122F02DFF019A2B689A42E3
:1098B00001D021F045FB224615216E2003B0BDE802
:1098C0003040F7F7FBBD00BFF8FF0120403001201A
:1098D000181B012029390120EC1A012037B5032279
:1098E000124D134C2B6813490193134B26311A70F8
:1098F0000123124A04F1100012682370A26031F8AB
:10990000022C6370A37023712373E28122F0FAFEAC
:10991000019A2B689A4201D021F012FB22461521B0
:109920006E2003B0BDE83040F7F7C8BDF8FF012056
:1099300040300120181B012029390120EC1A012098
:1099400037B50422134D144C2B6861630193134BFC
:1099500013491A70012362708A8CE063263104F186
:1099600010002370A37084F8383084F830302373EB
:10997000E28122F0C7FE019A2B689A4201D021F0C1
:10998000DFFA224615216E2003B0BDE83040F7F71C
:1099900095BD00BFF8FF012040300120293901208A
:1099A000181B012007B505220D490B6801930D4BCB
:1099B00001981A7001230C4A13705370937013713D
:1099C0000A4B1B6893600B68984201D021F0B8FAEB
:1099D00015216E2003B05DF804EBF7F76FBD00BFF3
:1099E000F8FF01202939012040300120E81A012028
:1099F00007B506220D4900200B6801930C4B1A7025
:109A000001230C4A1370937013710B4B50701B6839
:109A1000019893600B68984201D021F091FA1521CA
:109A20006E2003B05DF804EBF7F748BDF8FF0120A6
:109A30002939012040300120EC1A012007B5072206
:109A40000D490B6801930D4B01981A7001230C4AC4
:109A500013705370937013710A4B1B6893600B68FB
:109A6000984201D021F06CFA15216E2003B05DF808
:109A700004EBF7F723BD00BFF8FF012029390120CF
:109A800040300120EC1A012007B508220D490020C2
:109A90000B6801930C4B1A7001230C4A13709370DE
:109AA00013710B4B50701B68019893600B689842C0
:109AB00001D021F045FA15216E2003B05DF804EBCA
:109AC000F7F7FCBCF8FF01202939012040300120C4
:109AD000E81A012007B50A220D4900200B680193FE
:109AE0000C4B1A7001230C4A1370937013710B4BBB
:109AF00050701B68019893600B68984201D021F068
:109B00001FFA15216E2003B05DF804EBF7F7D6BC01
:109B1000F8FF01202939012040300120E81A0120F6
:109B200007B50B220D4900200B6801930C4B1A70EE
:109B300001230C4A1370937013710B4B50701B6808
:109B4000019893600B68984201D021F0F9F9152132
:109B50006E2003B05DF804EBF7F7B0BCF8FF01200E
:109B60002939012040300120E81A012007B50922D7
:109B70000D490B6801930D4B01981A7001230C4A93
:109B800013705370937013710A4B1B6893600B68CA
:109B9000984201D021F0D4F915216E2003B05DF870
:109BA00004EBF7F78BBC00BFF8FF01202939012037
:109BB00040300120E81A012007B50121094B1A683D
:109BC0000192094A11700321517001991B68994251
:109BD00001D021F0B5F915216E2003B05DF804EB3A
:109BE000F7F76CBCF8FF01204030012037B5184C66
:109BF000184A2368184D126801932B68013A9A425B
:109C00000CD90133019A2B6023689A4201D021F0CC
:109C100097F903B0BDE83040FFF7DABD0F491048AF
:109C200019F018FD0F49104819F014FD0F4910489C
:109C300019F010FD0F4819F09BFC0023019A2B60CE
:109C400023689A42E3D103B0BDE83040FFF7AABED3
:109C5000F8FF0120D82F0120E81A0120301501203B
:109C6000B818012050150120D0190120D01401206E
:109C7000701501208816012007B5104B1A68019253
:109C80000F4A11680F4A126891420DD100210E4A05
:109C90001160019A1B689A4201D021F051F903B07A
:109CA0005DF804EBFFF7A4BE019A1B689A42F4D159
:109CB00003B05DF804EBFFF7E7BE00BFF8FF01203B
:109CC000E81A012004300120EC1A012073B51A496A
:109CD0001A4C0A682368012A019325460E4604D0CF
:109CE0000388012B07D801233360019A2B689A421D
:109CF0000CD102B070BD8AB90B6003F18043023B06
:109D00009A00011D01982368984201D021F018F9AA
:109D10000B4802B0BDE8704022F0F4BC9A42E2D198
:109D200002F18042023A011D9200054822F0B8FC7F
:109D30000028D8D1D9E700BF101B0120F8FF01206F
:109D4000F01A012073B5174E044633680193B0F83A
:109D50008430012B22D9144A15689D421ED105F189
:109D60008042023A00F188019200104822F098FCEB
:109D7000A0B904EB8504D4F88030012B06D8D4F8C0
:109D800084000B4B98428CBF00200120019A33685D
:109D900000F001009A4203D021F0D2F80020F5E74C
:109DA00002B070BDF8FF0120101B0120F01A012045
:109DB00040420F00F0B5344E8BB03368044609932F
:109DC000324B1D7875B990F8CA369BB101A900F2E3
:109DD000CC6001F021FD68B1202201A92C4822F0BD
:109DE0005FFC38B92B4B1A68012A16D02388012B47
:109DF00007D80025099A336828469A4241D021F0B5
:109E00009FF89A42F5D102F18042023A9200211D58
:109E1000214822F045FC0028EBD1204B7022196824
:109E20001F4822F06FFC2146002331F8042B1C4808
:109E30000DF036FD0028DCD019480EF01DF894F81E
:109E4000CA3604F15007174D6BB13A4604F2CC61A3
:109E50002868FBF7C7FFA4F84E00B4F84E50003551
:109E600018BF0125C6E72B6801AA5B6C0E48D97A9A
:109E700008F036FC2B683A4601A9D869FBF78AFF3F
:109E8000E9E70BB0F0BD00BFF8FF01200030012072
:109E9000E02F0120101B0120F01A0120E0380120E2
:109EA000B8690020C8140120006A00202DE9F04F95
:109EB0008946DFF874C28FB0DCF80030D0F820B0EB
:109EC0000D937A4B0768C3F80090794B794C1A6070
:109ED000794B7A49C3F800B0836A46680793079ABA
:109EE000774B90F834501A60036B764A26600F6007
:109EF0001360CDE908C40A910DB190F83550724A4B
:109F000005F00105FC2E157040F2AE80B6F5803FDD
:109F100034BF0B220D22FC2F40F2A880B7F5803F02
:109F200034BF032105210A4499F8191051B1FC2EC0
:109F300002F1040240F29C80B6F5803F34BF032159
:109F400005210A4400246149920000200A60002192
:109F50004FF001085E4A0B9314605E4ADFF8CCA113
:109F600014605D4AC2E900015C4AC2E900015C4A32
:109F7000C2E900015B4AC2E900014FF4A652214642
:109F8000594822F097FC4FF40A622146574822F0C4
:109F900091FC574A574982F80080574A0B9B14603E
:109FA0004FF0FA72B2FBF6F20A604FF0FF31534AFB
:109FB00050461460524A1470524A1470524A11604A
:109FC000D9F844200495927A0193079B374DCDE947
:109FD000024200933A465B463146FCF773FD2B681C
:109FE000394E5A7EEAB13278484F04925B6C0A9A35
:109FF0009B7A0999CDE90243324B38461B688AF8AF
:10A00000158001932E4B1B6800932B4B12681B6825
:10A010000968FCF757FDBB6887F8158043F4803367
:10A02000BB60337833B30521394819F03FFA062174
:10A03000384819F03BFA0721374819F037FA082158
:10A04000364819F033FA2B6835485B6C997A19F069
:10A050002DFA00213348FDF725F9089B0D9A1B685E
:10A060009A421DD020F06CFF092254E701215AE7E3
:10A07000012166E72B6826485B6C997A19F016FA7D
:10A080002B6824485B6C997A19F010FA2B682248E7
:10A090005B6C997A19F00AFA2B685B6C997ACFE7B6
:10A0A0000FB0BDE8F04FFFF793BB00BFC81401200D
:10A0B000E0380120D82F0120048200200830012040
:10A0C000DC2F0120CC1401200C300120183D012090
:10A0D00024390120E81A0120C83B01203039012031
:10A0E000C0140120A0120120181B012040300120C3
:10A0F000283901201830012010300120101B0120C8
:10A1000001300120003001200430012038390120C5
:10A11000B8180120D019012088160120A0170120AD
:10A120007015012023CE0408F8FF0120803A012099
:10A1300037B5094C094D226801922A781AB1FDF70A
:10A14000EFF800232B70019A23689A4201D020F087
:10A15000F7FE03B030BD00BFF8FF01202839012011
:10A1600010B5114C8AB02368012201A90F48099348
:10A17000FCF7D2FC20220E4901A822F091FA60B12E
:10A1800003200C49F8F72AFFFFF7D2FF0020099AB5
:10A1900023689A4205D020F0D3FEFFF727FD012067
:10A1A000F5E70AB010BD00BFF8FF0120D03B012049
:10A1B0003E1B012006CE04082DE9F04F01270024A4
:10A1C000DFF82CA191461A46DAF8003087B00593E3
:10A1D000414B424D1B68DFF81C81AB64D8F800305E
:10A1E00085F8447085F84C7085F89A700646586C6E
:10A1F000CDE900443A4B406808F0D0F8CDF808A00B
:10A20000834668B137490920F8F7E8FEFFF790FF69
:10A21000029B059A1B6820469A4259D020F090FE76
:10A2200005F150012E4808F009FFA5F84E000390F3
:10A23000FFF756FA96F8CA465FFA80FA0399C4B354
:10A2400006F2CC674A463946D8F8000001F0BAFA5F
:10A25000002807DA24490320F8F7C0FE5C46FFF720
:10A2600067FFD5E74FF04C0909FB00F909F6F870D4
:10A27000B5F84E2005F15001304422F043FAB5F80C
:10A280004E30B144A9F8F63F524606F15003394624
:10A29000D8F80000FCF796F885B2A6F84E50002DCD
:10A2A000B6D112490920F8F799FE2C46FFF740FF76
:10A2B000AEE706F15003CDE900A34A46212389B257
:10A2C00005F15000FCF74EF83C46A6F84E009FE71B
:10A2D00007B0BDE8F08F00BFE81A01204030012030
:10A2E000E438012037CE040846CE04086ACE0408BC
:10A2F000F8FF0120C81401202DE9F04FA24B9FB0B8
:10A300001A6804461D92A14A099312786AB9A049B5
:10A310000120F8F763FEFDF703F8099B1D9A1B68FF
:10A320009A4201F0118020F00BFE9A4B1A689B466E
:10A33000511C142A196007D1974B984819681FF0CF
:10A34000E3FE0023CBF800304FF40A62002194486A
:10A3500022F0B0FA934B1B780B2B00F2F287DFE868
:10A3600013F00C0053019B01BE0116022E0266037E
:10A370004D04DD0404063806270794F8DA3604F1A4
:10A380001005894F002B4AD03B78002B47D115A9E7
:10A3900004F2DC6001F040FA002837D1092083493B
:10A3A000F8F71CFEFFF7C4FE814E29463068FCF723
:10A3B000D3FB804B1A689846104432681860527E6E
:10A3C0003AB12846FCF786FCD8F800301844C8F8A3
:10A3D000000094F8D936012B00F296804FF4A65273
:10A3E0002946754822F08EF933681B7E1BB9734BE2
:10A3F0001B78002B7ED004F5A4531B78002B53D17F
:10A400006F490320F8F7EAFD00F0DFBD6D4E3278AA
:10A4100042B1202215A96C4822F042F988B10123EB
:10A420003B700EE0684F15AB0DF1740C1A4603CA71
:10A43000624538607960134607F10807F6D10123B9
:10A4400033702846FFF742FC29466048FCF706F8BF
:10A4500029465F48FCF744F8554B1B685B7EC3B147
:10A4600041F29C43E35813B15A49032098E7012372
:10A470004B4E294606F19E02574886F8403086F832
:10A480009A30FCF7F5F82946A6F89C005348FCF7EB
:10A490003BF929465248FBF7E1FF042204F2D96157
:10A4A0004F4819F077F87FE7DFF858C104F5A45456
:10A4B000D4E90289DCE9000118EB000659EB010739
:10A4C0004FF000044FF0000524BF0124002554EA9A
:10A4D000050301D0434994E7434CCCE90067D4E934
:10A4E000000118EB000249EB0103C4E90023FFF768
:10A4F0007DFB12E73D4B1A68013202BF3C4A1268ED
:10A500001A60FFF78BF908E7033B012B3AD8336851
:10A510005A7E0AB1374974E79B7D0BB9364970E71B
:10A5200004F5A4531B780BB934496AE7DFF8D4C0AB
:10A5300004F5A454D4E9029ADCE9000119EB000601
:10A540005AEB01074FF000044FF0000524BF01242F
:10A55000002554EA0503BDD11F4C217D31B9D8F83F
:10A560000000216801440231C8F800100121217562
:10A570001D4CCCE90067D4E9000119EB00024AEB5D
:10A580000103B2E71E493CE7F8FF0120283901200A
:10A590008ECE04081C3D01201030012023CE04087B
:10A5A000403001202939012000300120A2CE0408CA
:10A5B000C8140120183D0120181B01200C30012077
:10A5C000ECCE040801300120E02F0120B818012052
:10A5D000D0190120C7CE0408803A01203839012063
:10A5E0007015012079B50408A01201200430012063
:10A5F000E81A01200DCF04082CCF04084CCF040822
:10A6000068CF0408C83B012042F2EC53E258884B63
:10A610009B6C9A4201D88749F3E642F2E453E15831
:10A62000CA42BFF457AF844B844E1B78844D0493C9
:10A63000336828465B6C9B7A039342F6F813E35821
:10A64000029304F528531B68019341F2F463E35825
:10A6500000936368FCF736FA336828465B7E2BB1BB
:10A66000AB6843F48033AB6001236B75754BD0E965
:10A6700000121B680A44B3FBF2F3734A1360002212
:10A68000724B1A6011B1FFF7F5F846E66C48FBF71C
:10A69000ADFFFFF723F940E66A4A6C4D11686A4A3C
:10A6A000286812686A4B42431B68654E01FB03230E
:10A6B000684A1B0C04F1100130461360FCF724F8C3
:10A6C00010B9654909209DE632682B68013A9A4223
:10A6D00002D901332B60D6E700232B60D9E7584F0E
:10A6E0005A4D3B682A6804F5A6561344564A183654
:10A6F0001168574A1068534A1268424301FB03230A
:10A70000544A1B0C314638461360FCF779F9394638
:10A7100008B95249D6E7464B28689B6C834221D141
:10A72000C0CEDFF854C14FF00008DCE9002316EB7F
:10A73000020A57EB030B4FF0000924BF4FF001084A
:10A740004FF0000958EA09037FF4C4AE3B4B1B6885
:10A750005B7E2BB141F2EC63E3580BB1404950E60C
:10A76000CCE900AB4B68013B984202D20130286033
:10A770008FE7496A41B1B1F5806F28BF4FF480611E
:10A780000020FFF7DDF8C8E5FFF7EAFCC5E542F277
:10A79000F2532B4D04F51751E25A34312846FCF799
:10A7A00067F908B92F498DE7D5E909108842EBD23E
:10A7B000091AB1F5806F28BF4FF48061E1E704F515
:10A7C000B854B4F88430002B2ED10025D4E92A01E6
:10A7D000DFF8A8A00026DAE9002310EB020851EB0D
:10A7E00003094FF0000724BF0126002756EA07039C
:10A7F0007FF470AE85F00103DBB2104E1A49CAE94E
:10A80000008900932246194B09683068FBF748FC21
:10A81000074625B90F4B164819681FF075FC002F25
:10A8200062DA00210420EDE525784DB31149E8E511
:10A83000181B012080CF04080C300120C81401200F
:10A84000D03B01201830012014300120EC1A0120E7
:10A85000E81A012010300120ACCF0408C6CF04084C
:10A86000E1CF040816D00408E0380120A812012026
:10A8700023CE040835D00408C83B0120303901201C
:10A8800094F8B1308BB1A74B1B7893B1A64B1B78D2
:10A890007BB915A904F1B40000F0BEFF48B1202235
:10A8A00015A9A24821F0FCFE18B92046FFF74AFA84
:10A8B0000546D4E92A0194F8B030043B012B07D8AF
:10A8C0009B4BD3E900238B4208BF8242FFF47DAF4C
:10A8D000002D3FF47AAF974ED6E9002313437FF45F
:10A8E00074AFC6E9000171E701D19349EAE6336824
:10A8F0005B7E8BB10123914D914905F19E029148F8
:10A9000085F8403085F89A30FCF72EF88C49A5F888
:10A910009C008D48FCF774F8336889495A7E8B484F
:10A92000FBF7F2FD21463068FCF752F9884F894A5F
:10A930003B6893461844386087481368016880462E
:10A940000139994204D901331360FFF72BF8E4E48D
:10A9500033685B7E23B1002280497B48FCF7DCF83A
:10A960007F497A4818F076FEDAE900237D49D1E97B
:10A9700000459D4208BF9442894602D27A490A2086
:10A9800040E5A41A65EB0305D6F800A03B68DAE9B8
:10A990000202A0FB030103FB021100234FF47A62C1
:10A9A000CDE9064527F066FADDE90634A14208BF85
:10A9B00098420BD21A4650462346FDF7ABF90021C8
:10A9C0000220FCF7CFF900283FF42BAFD9E90001B2
:10A9D000584BD3E90045DDE90623CDE90023021BEE
:10A9E00061EB05033068FDF755F900210820FCF7FD
:10A9F000B9F900283FF415AF5C4BD8F800201B686C
:10AA00005B481A445B4B1B68B3FBF2F35A4A136072
:10AA10005A4B19681FF078FB0023CBF800303368DD
:10AA20005B7E002B00F06F81FFF77AF875E45149E7
:10AA3000534D086850492A680968524B51431B68B6
:10AA400000FB03134D491B0C03F5FA730B60D2B9DD
:10AA50004D4B46491B783C4804934C4B1B685B6C40
:10AA60009B7ACDE902234A4B3B4A1B680193494B31
:10AA70001B680093484B12681B680968FCF722F8B2
:10AA8000464818F075FD04F1100631464348FBF7BF
:10AA9000E5FC042204F2D961404818F07BFD2D4A00
:10AAA0002B681268934240F085803046FFF782F9A8
:10AAB00008B93B4906E64FF4A6523146394821F021
:10AAC00021FE394A02F1480402F12007134603CB64
:10AAD000BB42206061601A4604F10804F6D1334A93
:10AAE000334B02F12007144603CCBC421860596076
:10AAF000224603F10803F6D122781A703146124833
:10AB0000FBF702FE00283FF4DCAD184A2B68126800
:10AB1000013A9A425DD901332B60FEF769FFFFF7D6
:10AB2000FCBB00BF0130012000300120E02F0120DC
:10AB3000A0120120C01401204ED004084030012092
:10AB4000A8120120803A01203839012088160120FE
:10AB5000183D0120E81A01200830012010150120BD
:10AB6000F0140120C83B0120BFB60408D82F0120F3
:10AB700023CE0408183001201430012010300120A9
:10AB8000EC1A0120243901200C300120C8140120C6
:10AB9000CC140120DC2F012004820020701501203C
:10ABA00067D00408181B0120E0690020006A00201B
:10ABB0001C300120B4490868824206D1934204D96E
:10ABC00094F8D926012A98BF0B600023A4F85E30C0
:10ABD00094E715A9AD4818F03DFD2022AC4915A811
:10ABE00021F05EFD044608B1AA490AE4A74818F01E
:10ABF000BFFC2C60FEF722FFFFF78FBBA64FA74ECE
:10AC00003B683268A64D1344DFF8F892A54A2868DD
:10AC10001168D9F80020DFF8F082424301FB0323DA
:10AC20001B0C03F5FA73C8F800300023DFF8ACA260
:10AC30009D49009304F5B8529C4B0968DAF800006E
:10AC4000FBF72EFA00287FF750AEDAF8003097496C
:10AC50005A7E8E48FBF758FC94499548FBF7D0FE86
:10AC600000283FF456AD934A33681268013A9A427D
:10AC700002D901333360BDE715A9844818F0EAFC16
:10AC800020228D4915A821F00BFD04460028ABD1E8
:10AC9000FEF726FD1EA941F8480D0422874818F04A
:10ACA00079FC224615A98248FBF736FF0123844E22
:10ACB000844A86F84030844915AB8448FFF77CFA13
:10ACC00000283FF42AAB06F19E0280498048FBF73A
:10ACD000CFFC2968A6F89C004B1CD9F800107D48D1
:10ACE0005943090C01F5FA712B60C8F800101FF0E8
:10ACF0000BFA79493A680B68CBF80040013A9A425E
:10AD000005D901330B60FEF7B7FFFFF706BB002242
:10AD1000714B1A60FEF72AFFFFF7FFBA0123684D57
:10AD200085F8403085F89A3094F8D936012B00F236
:10AD3000F1806A4F3B681B7E23B9694B1B78002B5F
:10AD40003FF452AF04F110063046FFF733F8002805
:10AD50003FF4AFAEDFF8B8C104F5A458D8E902015A
:10AD6000DCE9009A8A4508BF814508F10808FFF42C
:10AD70003BAFB9EB00026AEB0103CCE90023584B6F
:10AD80001B78002B7AD0FEF7ABFC0B90554818F0DF
:10AD9000EFFB554B1EA91B68042243F0004341F80A
:10ADA000483D504818F0F6FB3968042230314D48D0
:10ADB00018F0F0FB20224D494A4818F0EBFB202206
:10ADC0004B49484818F0E6FB20223B49454818F01B
:10ADD000E1FB20224749434818F0DCFB04224649A6
:10ADE000404818F0D7FB042244493E4818F0D2FBF3
:10ADF00004220BA93B4818F0CDFB31463948FBF73C
:10AE00002DFB04F16002B4F85E103648FBF74CFBF2
:10AE100008224146334818F0BDFB31463148FBF764
:10AE20005FFB15A92F4818F015FC354A15ABA2F1A8
:10AE300020013046FFF7C0F900283FF46EAA184AF7
:10AE4000244811684B1C13602E4A116859432E4B3D
:10AE5000090C01F5FA7119601FF056F90023CBF8BF
:10AE600000302A4A04F110011948FBF701FC1A4985
:10AE7000094AA5F89C000B6812683FE715A93046FF
:10AE8000FEF74AFCD1E700BF043001207015012015
:10AE9000D01401207FD00408D82F0120EC1A012003
:10AEA0002439012014300120E0380120A8120120AB
:10AEB0003839012008300120F014012068390120C0
:10AEC000403001201C300120286A0020181B01207E
:10AED000803A012023CE0408E81A0120C81401207A
:10AEE0000C300120A0170120048200203015012021
:10AEF00050150120E5CD0408DC2F0120CC140120E1
:10AF0000006A00201830012010300120DE300120BE
:10AF1000A0120120042B24D194F8DA366BB904F185
:10AF20001000FEF747FF00283FF4C3AD1723A4F835
:10AF30005E301623A4F8603093E72323A4F85E3034
:10AF40002223A4F86030202384F86230894B04F176
:10AF5000630204F2DC611868FAF7A2FF002880D1CE
:10AF6000A7E50023A4F85E307BE7002582498148ED
:10AF70000095824B04F5B85209680068FBF790F819
:10AF8000A8427FF7B2AC01237D4C7E4E04F19E02B5
:10AF90007A49304684F8403084F89A30FBF7E4FC74
:10AFA00079497A4A0968136801399942A4F89C00E2
:10AFB00002D901331360ADE6337D23B11560FEF78E
:10AFC00089FDFFF7AAB9FEF7F7FDFFF7B1F8FFF724
:10AFD000A4B994F8D936033B012B00F2C28004F1E6
:10AFE00010094846FEF7E6FE00283FF462AD684DC2
:10AFF00004F5A453D3E90201D5E900678F4208BFE5
:10B000008642FFF4F1AD321A67EB0103484615A9F9
:10B01000C5E90023FEF780FB0123594D5D4A85F801
:10B020004030A2F1200115AB4846FFF7C5F80028D3
:10B030003FF473A9FEF754FBC3B21F4694F8DA3607
:10B04000002B72D000264FF0020885F89F6045461D
:10B0500004F5805A0AF1040ABAF800204E4B9642D1
:10B060002B4447D3434E04F2DC640022214630686F
:10B070000693FAF7B7FE069B194600F093F9464B84
:10B0800005445A1921463068FAF7ACFE3C4B05449A
:10B0900083F89E80A3F89C50404D3C4C2B6822685E
:10B0A000013B93420BD1364F3648B7F89C6007F10D
:10B0B0009E013144FBF702FC3044A7F89C00384A5B
:10B0C000384811684B1C1360374A11685943374B95
:10B0D000090C01F5FA7119601FF016F800232A68AF
:10B0E000CBF800302368013A9A427FF66CAF013307
:10B0F000236064E74C2202FB06FC0CF5805206320A
:10B10000A05A80B104EB0C01014441F208000F5435
:10B11000A05A09F6F8711A4661440130FBF71CFA8F
:10B1200008F101080544013696E705F19E0631460F
:10B13000022000F037F90446B5F84E0032192B18FA
:10B1400005F15001013083F85070FBF705FA044413
:10B15000321910492120FBF7FFF92044A5F89C0083
:10B160009AE70122064B83F8402083F89A20A3F83F
:10B170009C2091E7C8140120E0380120A81201208A
:10B1800040300120803A012008300120E81A0120D7
:10B19000A0120120006A0020DE300120D82F0120FB
:10B1A0002439012023CE040818300120103001205A
:10B1B000674A68491668684A684B12681B68724398
:10B1C0000868674D00FB0323664E1B0C03F5FA73FA
:10B1D0002B6033680695DFF8C4A1DFF8C481894687
:10B1E000D3B998F80020604D0492DAF800205F4946
:10B1F000526C2846927ACDE902325D4B5D4A1B685B
:10B2000001935D4B1B6800935C4B12681B680968D7
:10B21000FBF758FC01236B7598F80030584D0493E8
:10B22000DAF800304FF0000A5B6C504F9B7ACDF893
:10B2300008A003934E4B4F4A1B68284601934E4B80
:10B2400010341B6800934D4B12681B683968FBF77C
:10B2500039FCAB68204643F44033AB6001236B7587
:10B26000FEF7A8FD00283FF424AC394BC3F800A03A
:10B270009A46DAF800303A68934251D3002215A971
:10B280003F48FBF749FCFEF72BFA1EAD45F8480D89
:10B290003C4818F06DF9294604223A4818F07AF92A
:10B2A00020223949374818F075F9202215A9354868
:10B2B00018F070F90DA9334818F0CCF90123334D7B
:10B2C000334A85F84030A2F120010DAB2046FEF74D
:10B2D00073FF00283FF421A805F19E022146224871
:10B2E000FBF75AFA1D4AA5F89C00116829484B1C27
:10B2F000D9F8001013605943069B090C01F5FA7147
:10B3000019601EF001FF00233A68CBF80030336863
:10B31000013A9A427FF657AE01333360FFF784BBA0
:10B32000326828469A420CBF21460021FBF770FA8A
:10B3300000283FF4C6A9DAF800300133CAF800301B
:10B3400097E71549FFF7BEB91FB0BDE8F08F00BF02
:10B35000EC1A01201830012014300120243901207A
:10B3600010300120E81A0120803A0120D82F012056
:10B37000CC14012008300120DC2F012004820020A1
:10B3800038390120A017012010150120403001207C
:10B39000006A002023CE0408A6D00408C8140120A7
:10B3A0000C30012037B5124BFC281A680192C2B24A
:10B3B00007D801200A70019A1B689A4216D01FF024
:10B3C000BFFDB0F5803FC0F3072405D2FD204A70D1
:10B3D00008708C700320EEE7FE254A70020C000E08
:10B3E00008710D708C70CA700520E4E703B030BDA1
:10B3F000F8FF01202DE9F0410646184C1F4623684E
:10B40000CAB04993436C88466846997A154618F045
:10B410004DF83669304622F0FDFA3146024668465C
:10B4200018F0B8F847A92846FFF7BCFF47A902461D
:10B43000684618F0AFF82A464146684618F0AAF860
:10B440003946684618F006F9499A23689A4201D0AD
:10B450001FF076FD4AB0BDE8F08100BFF8FF012083
:10B4600030B51B4C85B02268FC290546019103923A
:10B470000AD8012201A918F08DF80120039A236847
:10B480009A4223D01FF05CFDB1F5803F0ED2FD2320
:10B4900001220DF10B018DF80B3018F07BF82846D6
:10B4A000022201A918F076F80320E7E7FE23012223
:10B4B0000DF10B018DF80B3018F06CF804222846C2
:10B4C0000DEB020118F066F80520D7E705B030BD96
:10B4D000F8FF012030B50A4D87B02C680594002490
:10B4E00003F8014B0093CDE9014423460CF07EFEA6
:10B4F000059A2B689A4201D01FF022FD07B030BD9B
:10B50000F8FF01202DE9F0431C460025174E87B0B7
:10B5100033680746257016488846914605930DF016
:10B520001FF890B1FB6E83420FD10134CDE9015574
:10B5300000942B464A46414638460CF057FE059A81
:10B5400033689A420ED01FF0FBFCB9F1200F07D1EF
:10B550000023621C0093414638460CF0D7FEEEE70C
:10B560000120ECE707B0BDE8F08300BFF8FF012041
:10B57000FB6F0508F0B5154C0F46194623688DB0D2
:10B580000B93164603AB129A139DFFF733FF00236C
:10B590006A1C009303A90DF10B0338460CF0B6FEAC
:10B5A00038B9032E9DF80B3009D0042E09D123336E
:10B5B0002B700B9A23689A4205D01FF0C1FC2733E9
:10B5C000F6E71F33F4E70DB0F0BD00BFF8FF012030
:10B5D0002DE9F041574EC0B01C46469F33680546E2
:10B5E0003F933B781B3B102B00F29B8004ABFFF793
:10B5F00001FF3A4612F8018B686CA8F11B0359420F
:10B6000001F0030103F0030358BF4B42DBB2009388
:10B610000CA904AB406807F047FC002840F0838089
:10B62000B8F11E0F81BF9DF8703003F0010343F0A5
:10B6300002038DF830303B78A3F11B02072A2ED885
:10B64000AA6B3AB1234603A91DA80EF02FFE48B9F4
:10B6500002241DE0696C41231DAA497A20460EF0A0
:10B66000F7F903906A6C2EABD27AE9690CA807F05F
:10B6700067F8039A1DA92EA821F012F804460028A5
:10B68000E6D1E86904F020FB039B14309842DFD137
:10B690003F9A336820469A4249D01FF051FCA3F1EB
:10B6A0002302032A1CD8696C41231DAA497A20462B
:10B6B0000EF0CEF907466A6C2EABD27A296A0CA836
:10B6C00007F0CCF83A461DA92EA820F0E9FF044661
:10B6D0000028BDD1286A04F0F7FA1430B842D6E742
:10B6E000273B032B21D86B6BFBB1009403AA2EA937
:10B6F00002A80EF097FBC0B16B6C1DAAD97A0CA8FA
:10B7000006F0EEFF039D1DA92A462EA820F0C8FFD3
:10B7100000289DD1029C002C9AD1142D18BF022420
:10B72000B6E70124B4E70324B2E70424B0E740B04D
:10B73000BDE8F081F8FF01202DE9FF411E4B0C46CA
:10B740001A689846039291F852203AB90020039A59
:10B75000D8F800309A422BD01FF0F2FBB1F85430E9
:10B76000212BF3D1154D01F10E020195036C2068D8
:10B77000009301F1560389680BF0B0FC0028E5D076
:10B7800001201EF077FC002604F17C07B4F8783025
:10B790009E4201D30A48DAE757F8041B28460CF00A
:10B7A00037F80028D2D001201EF064FC0136EDE706
:10B7B00004B0BDE8F08100BFF8FF0120203D01206A
:10B7C000683D01202DE9F74380460E460024114FC5
:10B7D00091463A680D1D01923388A34202D84FF07A
:10B7E000FF300AE029464046FFF7A6FF58B1212264
:10B7F000494620F055FF30B92046019A3B689A42ED
:10B8000004D01FF09DFB01349C35E5E703B0BDE893
:10B81000F08300BFF8FF01202DE9F04F474B8B4626
:10B8200001881A6801F1FF38A1B0B8F10E0F044683
:10B830001F920391009307D90020009B1F9A1B6859
:10B840009A4278D01FF07CFB90F89E3D002BF3D0FD
:10B85000D0F8A03D013B0E2BEED80022031D384846
:10B8600093F8525040F82230002DE5D0B3F85450F0
:10B87000212DE1D19D89202DDED10132914203F1AC
:10B880009C03EDD82E4D0027A946B8451BD804A827
:10B890000FF0E4FE04F55A61042204A810F0CCF87D
:10B8A0000025284C039B0422AB4225D803A904A8F9
:10B8B00010F0C2F8594604A810F0AAF901201EF0B1
:10B8C000D9FB0120B9E7464659F82630D5F800A043
:10B8D00003F1560121220AF15600019320F0E0FE07
:10B8E0000028C2BF019B2B6049F826A0013EB74249
:10B8F000EAD101370435C8E754F8041F04A810F052
:10B900009BF80422216804A8114410F095F82168DE
:10B910000422083104A810F08FF8216820220E318B
:10B9200004A810F089F821682122563104A810F0EB
:10B9300083F80135B6E721B0BDE8F08FF8FF0120AC
:10B94000903D01208C3D0120F0B50446394F9DB05B
:10B950003B6868461B930E460FF080FE042204F5F8
:10B96000CC71684610F068F823787BB163786BB1CE
:10B97000651C284622F04EF829460246684610F01B
:10B980005BF803222C49684610F056F8A37A83B17D
:10B99000E37A73B104F10B05284622F03BF82946FF
:10B9A0000246684610F048F801222449684610F023
:10B9B00043F894F84B3063B194F84C304BB104F138
:10B9C0004C05284622F026F829460246684610F023
:10B9D00033F894F88C308BB194F88D3073B1012228
:10B9E0001749684604F18D0510F026F8284622F024
:10B9F00011F829460246684610F01EF894F8933074
:10BA00005BB194F8943043B19434204622F002F8AC
:10BA100021460246684610F00FF86846314610F09D
:10BA2000F7F81B9A3B6801209A4201D01FF088FA70
:10BA30001DB0F0BDF8FF0120B4D0040841E50408B2
:10BA40007AC2040807B5084B80F002001A68C0F3F8
:10BA500040000192019A1B689A4201D01FF070FACF
:10BA600003B05DF804FB00BFF8FF012007B5084BE9
:10BA70000A461968019101991B68994201D01FF08B
:10BA80005FFA0146034803B05DF804EB11F024BDF2
:10BA9000F8FF0120E03D012037B5184C184D236810
:10BAA00028680193174B1A68174B9A424FF4487352
:10BAB0008BBFB2FBF3F103FB00F1B0FBF1F1B1FB83
:10BAC000F2F11248C1F57A711EF01EFB0123104AF3
:10BAD000019913702B68B3F5806F28BF4FF4806312
:10BAE00053602368994201D01FF02AFA3B216E204F
:10BAF00003B0BDE83040F5F7E1BC00BFF8FF01201E
:10BB0000D03D0120D43D012040420F00F0B4040894
:10BB1000703F0120F0B53C4DE9B02B68074602A804
:10BB20000C466793164611F0ABFC1A22374902A85F
:10BB300011F0D2FC42F210739C423ED9B4FBF3F3F5
:10BB4000012230330DF1070102A88DF8073011F002
:10BB5000C3FC4FF47A730A21B4FBF3F2B2FBF1F3A6
:10BB600001FB132302A8303301220DF107018DF8E8
:10BB7000073011F0B1FC64230A21B4FBF3F2B2FBED
:10BB8000F1F301FB132302A8303301220DF1070169
:10BB90008DF8073011F0A0FC0A22B4FBF2F1B1FBE2
:10BBA000F2F302FB131302A8303301220DF1070157
:10BBB0008DF8073011F090FC06E0B4F57A7FC8D814
:10BBC000642CD8D80A2CE7D80A22B4FBF2F302FB83
:10BBD00013430DF107013033012202A88DF807301D
:10BBE00011F07AFC2246394602A811F075FC314664
:10BBF00002A811F011FD679A2B689A4201D01FF03C
:10BC00009FF969B0F0BD00BFF8FF01203FD10408E3
:10BC100007B50E4B01281A68019208D10A0600D513
:10BC20000130019A1B689A420DD01FF089F937281C
:10BC3000F6DDFF2801DC0230F3E7B0F5803FB4BF4A
:10BC400003300430EDE703B05DF804FBF8FF01209A
:10BC500013B51F4C0128226801920FD10B0607D59E
:10BC60000121A0F1800302A800F8083DFFF7FEFEC5
:10BC7000019A23689A4228D01FF062F93728C3B28C
:10BC8000EED9FF2807D8B82202218DF800208DF8C0
:10BC900001306846EAE7B0F5803FC0F3072208D2DA
:10BCA000B9218DF801208DF800108DF802300321A4
:10BCB000EFE7BA21000C8DF800108DF801008DF827
:10BCC00002208DF803300421E3E702B010BD00BF6D
:10BCD000F8FF012073B50D460A4E0178336804461B
:10BCE00028460193FFF7B4FF019A33689A4201D0C6
:10BCF0001FF026F92946204602B0BDE87040FFF744
:10BD0000B5BE00BFF8FF012013B5104C8DF803003D
:10BD100022680192020E8DF80020020C8DF801209D
:10BD2000020A00208DF802201DF8003053B1C0F146
:10BD300004016844FFF7CEFF019A23689A4203D0BA
:10BD40001FF0FEF80130EFE702B010BDF8FF012050
:10BD5000F0B50C464B4D8FB02B68064604A94A48F7
:10BD60000D93174604F0FEF8484B1B68A3420AD116
:10BD700020224749384621F025FE0D9A2B689A4229
:10BD80007ED01FF0DDF85CB1D4E902232021CDE99B
:10BD9000027100213046CDE9001104F021FFECE7EB
:10BDA00004A9304604F064F9002860D1394B1B68BF
:10BDB000012B5FD0062B5DD0374B1B681F2B44D067
:10BDC00019D8042B08D8032B1ED2012B55D0022BD7
:10BDD00032D01223314AD9E7142B30D004D8082BA3
:10BDE000F7D112232E4AD1E71C2B2BD01E2BF0D1DA
:10BDF00012232C4ACAE7402B30D008D83D2B27D03D
:10BE00003E2B28D02A2BE4D11223274ABEE740F24A
:10BE1000C372934225D005D8B3F54D7FD9D11223F3
:10BE2000224AB3E747F67E1293421DD0204A93423E
:10BE3000CFD112231F4AA9E712231F4AA6E71223D4
:10BE40001E4AA3E712231E4AA0E712231D4A9DE7BC
:10BE500012231D4A9AE712231C4A97E712231C4A11
:10BE600094E712231B4A91E712231B4A8EE72346CD
:10BE70001A4A8BE712231A4A88E71223194A85E7E0
:10BE80000FB0F0BDF8FF012000CA9A3B08820020E5
:10BE90002BD10408C83F0120CC3D0120E8D0040884
:10BEA000EED00408FFD00408E2D0040820D1040832
:10BEB000B10F03000AD10408DDD00408F3D0040850
:10BEC000F9D0040804D104080FD1040814D10408DF
:10BED0001AD1040825D10408D3D00408C9D0040815
:10BEE000CED00408D8D004082DE9F0471D461746E7
:10BEF000624CB8B02368202281468A461CA80021E3
:10BF00003793409E20F0D6FC1CABC5F120002A469A
:10BF10003946184420F0F6FB06A91CA803F0D2FF0E
:10BF200024AD002E40F0948006A804F087F8014666
:10BF3000002800F088805249284620F057FE0FAABA
:10BF40009046504B03F1100716461868596808339D
:10BF500003C6BB423246F7D113AA16464A4B03F139
:10BF6000100C174618685968083303C763453A46EA
:10BF7000F7D117AA1746454B03F1100E94461868DF
:10BF800059680833ACE8030073456246F6D11B7864
:10BF90008CF80030BAF1000F5DD03D4B2CA91B6826
:10BFA0004846A3F11E02012A8CBF0022012203F0A1
:10BFB000F5FE32462CAB03CB1B88CDF84100ADF823
:10BFC0004930CDF845100DF1BA030DF1C20E94467B
:10BFD000186859680833ACE8030073456246F6D127
:10BFE0003A4618680DF1D10ECCF8000099889B797B
:10BFF000ACF804108CF806300DF1C90394461868AB
:10C0000059680833ACE8030073456246F6D11868F6
:10C01000CCF8000099889B79ACF804108CF80630B5
:10C0200000231C4ACDE904730092CDE902861A4A26
:10C0300001951A491A48FBF7FFF8379A23689A4284
:10C0400019D01EF07DFF2A4606A8FFF781FE76E78D
:10C050002A463146F8E710221249404621F0B2FC48
:10C0600010221149304621F0ADFC11220E4938460C
:10C0700021F0A8FCD4E738B0BDE8F087F8FF012034
:10C080002CC60408A8D20408B8D20408C8D20408F0
:10C09000CC3D0120A3D2040837B4040892AD0408B3
:10C0A0004CEA070892D20408D612050837B50B4CA3
:10C0B0000B4D226801922A783AB12021094807F0F5
:10C0C00099F8FBF72DF900232B70019A23689A4207
:10C0D00001D01EF035FF03B030BD00BFF8FF0120D6
:10C0E000D83D0120486A0020F0B5354F354C3B68FB
:10C0F0009DB035484FF47A711B931EF005F8206807
:10C1000048B1FFF701FE00210846FFF7A1FD00211D
:10C110000846FFF79DFD03A92C4811F07DFA2C4B32
:10C1200003AA01930DF10B0300932A490BAB2A4894
:10C1300006F034F9054658B128490920F6F74EFFB4
:10C14000FFF7B4FF1B9A3B689A4237D01EF0F8FE07
:10C150002021204807F04EF80123214E2268337237
:10C1600035709DF80B303AB303EB420323334FF0A5
:10C17000010E4FF0200C1B4D0BACF3600FCC0FC524
:10C1800094E80F0086F810E085E80F00A6F812C0CA
:10C1900086F834E0A6F836C005F1140413AE0FCECD
:10C1A0000FC496E80F0084E80F00A5F124023B219C
:10C1B0006E20F5F783F9C3E71B33D8E71DB0F0BD58
:10C1C000F8FF0120CC3D0120F0B40408E03D01203F
:10C1D00045BA0108486A00204870050837CE0408AF
:10C1E000703F0120843F012001222DE9F04F0446D9
:10C1F0005A4BBBB01B685A4839935A4B07911A7077
:10C2000011F03EF958220021574820F053FB94F8D2
:10C21000A8300BB9A4F8AA3094F8CC200AB9A4F835
:10C22000CE2094F890300BB9A4F8923094F82430D2
:10C2300003B9E38494F8D8349BB1D4F8DC344B4987
:10C24000581E88420DD94A490320F6F7C7FEFFF76A
:10C250002DFF424B399A1B689A4200F02C821EF047
:10C260006FFE44490B6094F8E0342BB1D4F8E43409
:10C27000012B01D0062B0DD13F4994F8D0040B605F
:10C28000C8B1D4F8D434B3B112B1B4F8CE201AB9CD
:10C290003A49D9E73A49D7E73A4A934201D93A4964
:10C2A000D2E73A4A1360394EB4F8CE2031688A4258
:10C2B00005D93749C8E70022344B1A60F3E794F8F0
:10C2C000483003B394F86C30EBB1B4F89270142F8B
:10C2D00004D0C7B9B8B1D4F8D434A3B1B4F84A3053
:10C2E000B4F86E0003441E2B0DDC142F04F19408E7
:10C2F0000BD00025B4F8AA30B4F8921004F1AC02C7
:10C300000095404620E023499EE7B4F8AA30002B70
:10C31000EFD14429EDD1442AEBD110221E4904F17A
:10C32000D00020F0BDF90028E3D1124B4146187827
:10C3300000F0DCFA05460028DBD0202339460090C7
:10C3400004F1F40204F1E000FFF7CEFD0021082023
:10C35000FAF708FD10BB0021042076E7F8FF012062
:10C36000E03D0120D83D0120703F0120EDFFFF7F1F
:10C370006FD10408CC3D0120C83F01209BD10408A7
:10C3800086D104080024F400C6D10408D43D01205D
:10C39000E0D10408FED10408B8D00408002D4FD124
:10C3A000D6F800A0BAF1000F4AD02E46A946B4F83C
:10C3B000CE2004F1D00308920DF1500B089A1846D4
:10C3C000A2EB0907082F28BF082706EB06125A44DC
:10C3D0003946099301361EF049FE099B032E3B4462
:10C3E000B944EBD1B54931A820F000FC53460A20EE
:10C3F0000DF1CF01B3FBF0F200FB1233303301F843
:10C4000001391346002AF5D10026CA4514BF31ABC5
:10C4100032ABCDE904360DF1720303930DF16103E4
:10C42000CDE901B3A64BA7490093A7483346A74AD5
:10C43000FAF702FF31460820FAF794FC00288AD068
:10C44000B4F84A302022002121A8B4F8AAB0B4F8E8
:10C450006E60089320F02EFA089B04F14C0A1A46ED
:10C46000C3F1200021AB1844514620F04BF90BA931
:10C4700021A803F027FD2022002121A820F01AFA8C
:10C4800004F1700921ABC6F1200018443246494638
:10C4900020F038F914A921A803F014FD31AE8C4A1C
:10C4A00014A90BA803F08EFF3246002114A8FFF751
:10C4B0004FFC2022002121A820F0FCF904F1AC0758
:10C4C00021ABCBF120005A461844394620F01AF926
:10C4D0000BA921A803F0F6FC0BA803F0AFFD0DF1AA
:10C4E000A40B0146002800F0B7807A497A4B5846E1
:10C4F000002D18BF194620F079FB0025774B7149B4
:10C50000CDE90363764B7048CDE901B3754B0595D2
:10C5100000936E4A2B46FAF78FFE29460820FAF759
:10C5200021FC00283FF417AF29466F481DF0ECFDB1
:10C5300094F82810E08CFFF76BFB94F84C108346BE
:10C54000B4F84A00FFF764FB94F870108344B4F821
:10C550006E00FFF75DFB94F894108344B4F89200EA
:10C56000FFF756FB94F8AC108344B4F8AA00FFF729
:10C570004FFB5E4D834494F8D0102868FFF748FBCA
:10C580005B4900EB0B030A688B462AB112F0800F5F
:10C5900014BF022201221344564A116881B1FF29B7
:10C5A0005FD9B1F5803F5ED3B1F1807F2CBF04200D
:10C5B0000320C9B20893FFF72BFB089B0233034407
:10C5C000372BDAB251D80121403A8DF8C4203046D9
:10C5D000FFF74CFA444864211DF096FDDBF800009B
:10C5E00008B1FFF791FBE18C04F12800FFF772FB23
:10C5F000B4F84A105046FFF76DFBB4F86E10484689
:10C60000FFF768FBB4F892104046FFF763FBB4F8FD
:10C61000AA103846FFF75EFB94F8D0102868FFF7A1
:10C6200017FBB4F8CE1004F1D000FFF71FFAB4F8EE
:10C63000CE202B6830489B1A304A1360079A02F1CB
:10C640002801483251F8044B914240F8044BF9D18B
:10C6500073B3FFF721FAFCE55A460BA8FFF778FB06
:10C660004BE70120A5E70220A3E7FF2B06D8F8231C
:10C670008DF8C5208DF8C4300221A8E7B3F5803FBE
:10C68000C3F3072108D2F9238DF8C5108DF8C43003
:10C690008DF8C62003219AE7FA201B0C8DF8C610EE
:10C6A0008DF8C4008DF8C5308DF8C72004218EE7C1
:10C6B000FFF71AFDCDE53BB0BDE8F08F12D20408BC
:10C6C00025D2040892AD04084CEA070837B40408E0
:10C6D000487005082CC6040869D1040837D204083C
:10C6E00040D2040840C30408F0B40408D43D01203B
:10C6F000C83F0120CC3D0120486A0020D03D0120E8
:10C70000F7B5264E0546336837460193244B1B7810
:10C7100073B924490120F6F761FC019A33689A4203
:10C7200001D01EF00DFC03B0BDE8F040FAF7F8BDF3
:10C730001D4C4188236899420CD91C490320F6F707
:10C740004DFC019A33689A42EBD103B0BDE8F0404A
:10C75000FFF7ACBC4BB1037803B131B914490320E6
:10C76000F6F73CFC019A3B68EDE7281DFFF77EF9E0
:10C770006A8823689B1A2360019A3BB13B689A42FE
:10C78000CFD103B0BDE8F040FFF786B93B689A42CD
:10C79000C7D103B0BDE8F040FFF7A6BCF8FF012009
:10C7A000D83D01204DD20408D03D01206AD20408B2
:10C7B00078D204082DE9F0410E46204D8CB02B684C
:10C7C0000746111D304614460B930BF0C3FBA846D9
:10C7D000D8B114230125638003AAB98C07F1260080
:10C7E0002570FFF797F9164B03AA01930DF10B0380
:10C7F000009306F1280104F11C03124805F0CEFD58
:10C8000050B111490920F6F7E9FB0B9AD8F800302E
:10C810009A420FD01EF094FB9DF80B3025761B3307
:10C8200084F85C3041232246638342216E20F4F772
:10C8300045FEEAE70CB0BDE8F08100BFF8FF01203B
:10C8400045BA01084870050837CE040830B5244DB4
:10C85000ADF5017D2A6804467F92428B412A02D1C0
:10C860004388142B0AD003201E49F6F7B7FB01209A
:10C870007F9A2B689A4230D01EF062FBB0F86010AD
:10C8800066AA6230FFF746F994F85C301A2B84BF31
:10C890001B3BDBB2012B01D90220E9E7009304F135
:10C8A0001C0266AB6EA9104806F0FEFA0028F3D110
:10C8B00002A810F0E5FD40220DF2B91102A810F017
:10C8C0000BFE66A902A810F0A7FE142269A9201D7C
:10C8D0001FF0E6FE0028CBD0DEE70DF5017D30BD70
:10C8E000F8FF01205AD10408487005082DE9F743E4
:10C8F000134B81461A680E4601929846D1B1002525
:10C90000104F2B01DC19DB5D4B4505D1142261680A
:10C9100030461FF0C5FE28B10135B5F5337FF0D1A3
:10C92000094B1C68019AD8F8003020469A4203D07F
:10C930001EF006FB0C46F5E703B0BDE8F08300BF30
:10C94000F8FF0120141D0508088200202DE9F34797
:10C9500007460C464FF00108194E3368019307F162
:10C960000109484621F056F804F1010A05465046EF
:10C9700021F050F8A84205D23B46C8F100082746EE
:10C980001C46ECE72A465146484621F071F858B952
:10C990002544687810B1D0F13A0005D104F1930133
:10C9A00007F1930020F044F8019A336800FB08F087
:10C9B0009A4201D01EF0C4FA02B0BDE8F08700BF71
:10C9C000F8FF01202DE9F0430D469446DFF888E09A
:10C9D0008FB01E46DDE91678DEF8003004AC8146E3
:10C9E0000D930FCD0FC40FCD0FC42B682360744679
:10C9F000BCF1000F09D0164A04A9604603F0E2FC1E
:10CA0000144B1B68D3F8E8301E44B9F1000F18D05E
:10CA100099F821200AB109F1220299F8E6300BB108
:10CA2000D9F8E83000217642CDE9027801910096EC
:10CA300004A804F0D5F80D9A23689A4204D01EF099
:10CA40007FFA4A464B46EDE70FB0BDE8F08300BFE2
:10CA5000487005080C820020F8FF012073B5214EB4
:10CA6000054632680C46019290F8242022B9012331
:10CA700080F824306823836295F8280019F096FD29
:10CA800050B919491948002C18BF0846019A336853
:10CA90009A4224D01EF054FA95F82C3013B9144958
:10CAA0001448F0E795F8343013B913491348EAE70E
:10CAB00095F8403013B912491248E4E795F8483028
:10CAC000A34202D010491148DDE734B1B5F84A302D
:10CAD0000F48202B08BF0020D8E72046D6E702B039
:10CAE00070BD00BFF8FF0120004F05088AB304089D
:10CAF000D54E0508CC4D0508B04E0508E24D050899
:10CB0000864E0508F24D05085E4E0508074E0508DD
:10CB10002F4E050837B51E4D04462A68019202784B
:10CB20002AB390F82A3023B390F83C341BB1B0F804
:10CB30003E34202B1FD1601C19F0D6FDE8B1002334
:10CB4000B4F860249A4206D80020019A2B689A42D1
:10CB50001BD01EF0F5F994F8681481B194F8FA141A
:10CB600079B1C03494F85C1469B10133EAE709483B
:10CB7000EBE70948E9E70948E7E70948E5E7094835
:10CB8000E3E70948E1E70948DFE703B030BD00BF4C
:10CB9000F8FF01203F520508555205086852050864
:10CBA000855205089F520508BC520508D452050855
:10CBB00013B5104C22680192027892B190F894302B
:10CBC0008BB190F8BE3083B1953019F08DFD0028FF
:10CBD000094818BF0020019A23689A4207D01EF026
:10CBE000AFF90648F7E70648F5E70648F3E702B06D
:10CBF00010BD00BFF8FF0120ED510508A351050845
:10CC0000B9510508D151050873B54F4D04462A683E
:10CC10000E4601920278002A65D090F81034002B5D
:10CC200063D090F83A34002B61D000F2114019F033
:10CC30005BFD00285DD0237A002B5CD194F829306D
:10CC4000002B5AD1B4F8EE33002B58D194F83A3077
:10CC5000002B56D094F8CC30002B54D094F8F430FC
:10CC6000002B39D094F8F630002B4ED094F80031D8
:10CC7000002B4AD094F82A31002B48D094F8BC31CC
:10CC8000002B46D094F8EE30002B44D094F8DE31DF
:10CC9000002B42D094F8E831002B40D094F8EA31D0
:10CCA000002B3ED094F8EC31002B3CD0D4F8F0307F
:10CCB000062B3AD822A1D1E9000104F5F073D3E99B
:10CCC0000023994208BF904231D3314604F201104B
:10CCD00019F00AFD00282CD00020019A2B689A42F6
:10CCE00029D01EF02DF91948F7E71948F5E719483A
:10CCF000F3E71948F1E71948EFE71948EDE7194854
:10CD0000EBE71948E9E71948E7E71948E5E7194863
:10CD1000E3E71948E1E71948DFE71948DDE7194873
:10CD2000DBE71948D9E71948D7E71948D5E7194883
:10CD3000D3E71948D1E702B070BD00BFAFF3008060
:10CD4000001A711802000000F8FF0120754F050855
:10CD5000934F0508AD4F0508CB4F0508E94F05086F
:10CD60001A5005084D5005089F520508BC52050889
:10CD7000825005089B500508B6500508D350050899
:10CD8000EC500508FF5005081D51050840510508E5
:10CD900058510508765105088E51050807B5104B06
:10CDA0001A68019202788AB190F8922082B190F8C4
:10CDB000B4207AB190F8B6200A48002A18BF0020A3
:10CDC000019A1B689A4207D01EF0BAF80648F7E7A6
:10CDD0000648F5E70648F3E703B05DF804FB00BF3B
:10CDE000F8FF01202D520508A35105080952050836
:10CDF0001C52050837B5154B04881A68019249B9C9
:10CE0000002294420AD80020019A1B689A421BD043
:10CE10001EF096F8002CF3D10D48F5E785785DB14A
:10CE200005795DB1C588202D0AD111B1C578022DD3
:10CE300008D001322630E4E70648E5E70648E3E794
:10CE40000648E1E70648DFE703B030BDF8FF012000
:10CE5000174D0508314D05084F4D0508724D050861
:10CE60009A4D050807B50C4B1A680192027862B119
:10CE7000827862B182880948202A08BF0020019A7E
:10CE80001B689A4205D01EF05BF80548F7E7054895
:10CE9000F5E703B05DF804FBF8FF0120554F0508E6
:10CEA000294F05083A4F05082DE9F04F1D463E4F22
:10CEB0008DB03B6882460B9395F83C340C46904607
:10CEC00005F13C0B6E8F43B351B938490920F6F791
:10CED00085F80B9A3B6820469A4261D01EF030F8E4
:10CEE000DFF8DC903021324806F026F92046CDE903
:10CEF0000169CDF800B0A9F13003A9F1100205F5E0
:10CF000088610BF081F8044608B92A49DEE710363B
:10CF100026F00F063036A9F1300BB5F8603498F8DA
:10CF20002810099395F83C34CDF818B0CDE9076383
:10CF3000D5E90C23CDE904236B1C0393D8F84430C6
:10CF400050460293D8E90E23CDE900230023D8F8F8
:10CF5000302019F067FC0446E8B14FF0000905F2F3
:10CF60006948B5F860344B45B3D908F1B703D3E944
:10CF700000234146CDE90023504608F1920219F002
:10CF8000C9FC08F1C008064638B90B490920F6F774
:10CF900025F834469DE7094998E709F10109E0E7DA
:10CFA0000DB0BDE8F08F00BFF8FF0120904C0508E0
:10CFB000CC3F0120BE4C0508FE4C0508D84C0508A6
:10CFC000FC3F0120F0B5234C1646236891F842201F
:10CFD00089B0074607930D46481C0023002A35D127
:10CFE0001A461946CDE904331B4BCDE902210190C5
:10CFF00000931A491A4833461A4AFAF71DF90021D4
:10D000000320F9F7AFFED8B1D7E90E23CDE9042309
:10D01000154B012102933046D5E93023CDE9002399
:10D02000124AFBF7BFF9079A23689A4201D01DF014
:10D0300087FF0021082009B0BDE8F040F9F792BE53
:10D04000079A23689A42F2D109B0F0BD4331084AE9
:10D05000C8E700BFF8FF01208C4B050892AD04081B
:10D060004CEA07084EC5040818C504089D4B05087E
:10D070007C4B050813462DE9704FD1E90E89134DFD
:10D0800093F842402A688AB0099291F828C00A6B46
:10D090005E1C496C0CB103F14304D3E930AB95330A
:10D0A000CDE90443CDE902160023CDE906ABCDE975
:10D0B0000089614619F0F0FC099A2B689A4201D068
:10D0C0001DF03EFF0AB0BDE8708F00BFF8FF0120E1
:10D0D0002DE9F04F00255A4E9A46336899B01793C0
:10D0E00001F13B030393574B8046029301F1CD03BB
:10D0F0000193554B554800930C46134654499146AD
:10D10000CDE90455534AFAF797F829460320F9F771
:10D1100029FE38B90020179A33689A4200F08D80B2
:10D120001DF00EFF04F2ED10FBF7AAFA29460320CA
:10D13000F9F718FE0028EDD004F5F071D1E90001EF
:10D1400006AAD4F8F0B002F029FF202303930123AC
:10D150000FAFCDE900B32A465B462946029706A8E1
:10D1600003F03EFD94F8E9113B4A3C4B94F8EB0187
:10D17000002908BF13463A493A4A0093002808BFDD
:10D180000A460392384A3249CDE901722F48CDE967
:10D190000455364B2F4AFAF74FF829460320F9F782
:10D1A000E1FD0028B6D094F8F430ABB9D8E90E23ED
:10D1B000CDE904232E4B04F588640293D4E90023BF
:10D1C0004846CDE9002301212A4AFBF7EBF800216C
:10D1D0000820F9F7C7FD9EE798F8281004F1080029
:10D1E000FBF77EFA29460320F9F7BCFD002891D011
:10D1F00004F20115294650461FF01AFC1E4B98B93F
:10D200001E4ACDE90400CDE90032CDE902001C4BF5
:10D21000104A0F490D48FAF70FF800210320F9F7DB
:10D22000A1FD0028C2D175E7CDE90035094A144BAC
:10D2300007490648FBF738F8EFE719B0BDE8F08F6B
:10D24000F8FF01207C4B0508CD4A05084CEA070889
:10D2500092AD04084EC50408AA4A05089A4A050872
:10D26000BC4A0508C04A0508E64A0508DB4A050825
:10D2700018C50408F54A0508224B0508194B05088E
:10D280000A4B0508F0B5244C99B0236891F8285052
:10D29000179302F58863D3E9006702F211431393F1
:10D2A00002F2BD131293CDE9146702F22B1311930E
:10D2B00002F201131093D2E93E67CDE90E6792F8AE
:10D2C000F5300C9392F8EB310B9392F8E9310A9315
:10D2D00002F5F073D3E90067CDE90867D2F8F030C2
:10D2E000069302F2ED13059302F1CD033B32049352
:10D2F00003924B6C0293D1E90E23CDE90023002366
:10D300000A6B294619F048FC179A23689A4201D003
:10D310001DF016FE19B0F0BDF8FF01202DE9F04315
:10D320000024324D99B02B68814617934B1C039310
:10D330002F4B3048029301F1930301932E4B0E467D
:10D3400000932E4913469046CDE904442C4AF9F740
:10D3500073FF21460320F9F705FD30B90020179A25
:10D360002B689A423FD01DF0EBFDD6E92E0106AAAC
:10D3700002F014FE20230FAF0393224623462146DA
:10D38000CDE90147009406A803F02AFC96F8B510F1
:10D390001C4A1D4B1748012918BF13461B4A00930E
:10D3A000CDE901721549CDE9044403944346144A7A
:10D3B000F9F742FF21460320F9F7D4FC0028CDD02D
:10D3C000002200234046CDE90423D9E90E2302942C
:10D3D000CDE9002301210E4AFAF7E4FF2146082097
:10D3E000F9F7C0FCBBE719B0BDE8F083F8FF0120F6
:10D3F0007C4B05084CEA0708D94B050892AD040898
:10D400004EC50408C64B0508B34B0508EB4B050891
:10D41000F74B0508F0B5D2E92E458BB0104E91F8C8
:10D420002870CDE906453368099392F8B530059325
:10D4300002F193030132049303924B6C0293D1E9FE
:10D440000E23CDE9002300230A6B394619F0CAFCEC
:10D45000099A33689A4201D01DF072FD0BB0F0BDFD
:10D46000F8FF01202DE9F04F1446504A0E4611688E
:10D47000A7B08046259199469246002B00F08980FE
:10D4800000254B4B4B4901934B4B4C480093CDE946
:10D490000455CDE902552346494AF9F7CDFE294600
:10D4A0000320F9F75FFC002873D10020259ADAF8F1
:10D4B00000309A4276D01DF043FD1AAB1A4698F818
:10D4C00028102846079319F0BBF815F8052C3D499C
:10D4D0003D4B3A48012A18BF0B461A46079B35496F
:10D4E000CDE9002323465A46FAF7DEFE0021032049
:10D4F000F9F738FC26350028D7D001373388BB42EE
:10D50000DBD8D6F8646286B386EAE670A0EBE670F4
:10D51000C11709AA02F042FD20230393002312AD94
:10D520000295CDE900331A46194609A803F058FBC5
:10D53000B9F1000F33D1254A254B13EA260338BF32
:10D540001346244A0026CDE900321A491B48CDE98A
:10D550000466CDE902562346194AF9F76DFE3146B5
:10D560000320F9F7FFFB0028A0D0002500220023AC
:10D570002046CDE90423D8E90E230295CDE9002306
:10D580000121154AFAF70EFF29460820F9F7EAFBB0
:10D590008CE706F108050027DFF824B0AEE70F4B53
:10D5A0000F4ACFE727B0BDE8F08F00BFF8FF01209A
:10D5B000474A050892AD0408594A05084CEA07088D
:10D5C0004EC50408E4490508D4490508F74905088B
:10D5D000364A0508084A0508F74B0508194A0508A0
:10D5E000254A05082DE9F043244C89B0236891F8B9
:10D5F00028600793D2F864321546003318BF012320
:10D6000004931388804603934B6C0293D1E90E2355
:10D61000CDE9002300230A6B314619F03FFC074691
:10D6200040B90027079A236838469A4211D109B0B9
:10D63000BDE8F0834FF0000905F108062B884B4543
:10D6400009D8D5F864120029ECD0079A23689A42C9
:10D650000DD01DF075FC324616F8051C404619F039
:10D6600059FC26360028DCD009F10109E6E74046DE
:10D6700009B0BDE8F04319F073BC00BFF8FF01200A
:10D68000F0B5204D89B02B684978164607931E4A9D
:10D690001E4B0024012918BF13461D4A1D49CDE920
:10D6A00000320746CDE904441B48CDE90244334625
:10D6B0001A4AF9F7C1FD21460320F9F753FBD0B10F
:10D6C000002200230294CDE90423D7E90E2301218F
:10D6D000CDE900233046124AFAF764FE079A2B6818
:10D6E0009A4201D01DF02CFC2146082009B0BDE86B
:10D6F000F040F9F737BB079A2B689A42F2D109B08C
:10D70000F0BD00BFF8FF01207C4A05086C4A0508FF
:10D710008E4A050892AD04084CEA07084EC5040875
:10D72000F74B050830B50E4C89B0236891F82850A6
:10D730000793931D0493537803934B6C0293D1E9A1
:10D740000E23CDE9002300230A6B294619F028FC9B
:10D75000079A23689A4201D01DF0F2FB09B030BD50
:10D76000F8FF01202DE9F0411D4C88B02368884660
:10D77000DDE90E6707931B491B4B002A14BF1A46AD
:10D780000A461A49CDE9002043461948194AFAF7D2
:10D790008BFD00210320F9F7E5FAC8B10023002230
:10D7A0000025CDE904230295134ACDE900672946F7
:10D7B0004046FAF7F7FD079A23689A4201D01DF018
:10D7C000BFFB2946032008B0BDE8F041F9F7CABA0B
:10D7D000079A23689A42F2D108B0BDE8F08100BFF1
:10D7E000F8FF01204E4B0508374B050892AD0408A1
:10D7F0004CEA07084EC50408674B05082DE9F041BF
:10D800000C461546D4E90E67DFF84C8086B0D8F890
:10D81000002091F828100592226B646CCDE9006716
:10D82000CDE9024583B1002319F0ECF8044618B99C
:10D8300008490920F5F7D2FB059AD8F800302046B0
:10D840009A4204D01DF07CFB19F0A8F8EEE706B070
:10D85000BDE8F0816A4C0508F8FF01202DE9F04F82
:10D860000F4600241C4B1D4E90461A6885B0009050
:10D870000392019306F1330906F1C50A06F5797B97
:10D8800009EB04010098A5191FF0D2F860B90AEB62
:10D89000040138461FF0CCF830B9B5F8E61351B1A1
:10D8A0000BEB040C88420ED341F6300304F581647F
:10D8B0009C42E5D10025019B039A1B6828469A42A9
:10D8C00007D01DF03DFB5CF8043F4345F3D0013029
:10D8D000E8E705B0BDE8F08FF8FF0120F052050839
:10D8E0002DE9F04F99B0724BB1F860641B6806AF38
:10D8F00091467B648046D1E90C230C46C7E904239A
:10D90000002E00F0B2806A4601F26945C021B300E2
:10D910000A33DB08A2EBC30301FB06520026C7F85B
:10D920001CD09D46B34690F828300DF1180ABB6113
:10D93000604BBA601B68FB60AAF10403BA6905F189
:10D94000920128467B60FFF789FFFA687B68904266
:10D9500043F8040F3ED16E1EBA68C0359542EDD132
:10D96000D7E9040107F1200202F018FBBBF1000F18
:10D9700035D1002E53D100220023D8E90E01CDE984
:10D98000020107F1200100914846FAF7C5FC002189
:10D990000320F9F7E7F9002837D04FF0000B04F522
:10D9A0008D65B4F860345B453CD8D7F81CD094F84A
:10D9B0003830002B6AD1404B0134009301944B4620
:10D9C0003E4A3F493F48FAF76FFC00210820F9F72B
:10D9D000C9F91DE0002808BF4FF0010BBCE7002586
:10D9E000394B37490293394B36480193384BCDE9CF
:10D9F000045500930395374B374AF9F71DFC294628
:10DA00000320F9F7AFF90028B3D1D7F81CD00020D4
:10DA1000274B7A6C1B689A4246D01DF091FAD6E9E2
:10DA20002E23AAE7AE4203D10BF1010BC035B8E7B4
:10DA30005AF82B00D5E92E2370B198F828100191DF
:10DA400007F120010091FAF707FD00210320F9F703
:10DA500089F90028E8D1D8E707F120010091681C76
:10DA600005F19301FAF74CFDEFE7D0E90E2300969C
:10DA7000CDE90223D7E904234846FAF74DFC3146A5
:10DA80000320F9F76FF9002891D1C0E7618F04F105
:10DA90003C0094F83C24FAF785FD00210320F9F7B7
:10DAA00061F9002887D1B2E74C37BD46BDE8F08F59
:10DAB000F8FF01200C820020564C050837B40408FA
:10DAC00092AD04084CEA07081B4C05082C4C0508CD
:10DAD000404C05080B4C05085CB204082DE9F04FDA
:10DAE000B7B04A4B00AF1A68012906460D46C7F881
:10DAF000D4207B6040F283804FF00009CB1D23F0DF
:10DB00000703ADEB030D0A4668460021C7F80CD0A9
:10DB10004C461EF0CFFE4FF0C00AFB68621C1B5D36
:10DB20003A60B3B909F101034C450AFB0968BB60CF
:10DB300005D0C0220AFB046140461EF0E3FD06F159
:10DB4000C00304F101090AFB0434A94513D3D7F833
:10DB500008903C68A542E0D14FF0000A09F1FF3877
:10DB6000D04526D87B68D7F8D4201B6848469A420F
:10DB700047D01DF0E5F9FB6813F80930ABB9214631
:10DB80004046FEF7E3FE80B9D4E92E014FF00103D1
:10DB9000FA6802F80930D8E92E2312EB000B43EBA8
:10DBA000010C5A466346C8E92E2309F10109C03425
:10DBB000CBE7C02404FB0AF40AF1010AD346A519F5
:10DBC000C0343444D945CBD921462846FEF7BEFEA1
:10DBD000002810DDC022294607F110001EF092FD3A
:10DBE000C022214628461EF08DFDC02207F11001FB
:10DBF00020461EF087FD0BF1010BC034E2E7894699
:10DC0000B0E7DC37BD46BDE8F08F00BFF8FF01206C
:10DC10002DE9F04105460F4C8CB01946DDE912673D
:10DC20002368DDF85080104602AA0B9302F0B6F983
:10DC300000233246CDE9007802A92846FEF7C2FE4D
:10DC40000B9A23689A4201D01DF07AF90CB0BDE816
:10DC5000F08100BFF8FF01202DE9F04F254D04466B
:10DC60009B4690F8EC002B6897B09246DDE922675E
:10DC7000DDF880809DF88490159330B394F8EE0021
:10DC800018B303AA5046594602F088F9D4E93C017A
:10DC90000CAA02F083F94A4604F2B51104F22310EB
:10DCA000FFF7DCFD94F8ED308146012B03D0022B09
:10DCB00011D0002009E000231A46CDE900670CA925
:10DCC000FEF780FE003018BF0120159A2B689A429B
:10DCD0000DD01DF035F9084A03A90CA802F072FB1B
:10DCE000CDE900670423424603A94846E8E717B098
:10DCF000BDE8F08FF8FF012048700508002213B539
:10DD00000B4C0C492368904218BF014601930A4B03
:10DD100009201A70F5F762F9019A23689A4201D036
:10DD20001DF00EF902B0BDE81040F9F7F9BA00BFD6
:10DD3000F8FF01206E6F05080845012007B50A4B62
:10DD40001A680192094A92F84E0092F84D20821A00
:10DD500050425041019A1B689A4201D01DF0F0F8E0
:10DD600003B05DF804FB00BFF8FF01205044012020
:10DD700070B50D4C8EB01E462368154604AA0D934F
:10DD800002F00CF900220723CDE900221146CDE96B
:10DD9000025604A802F024FF0D9A23689A4201D08B
:10DDA0001DF0CEF80EB070BDF8FF0120000000009D
:10DDB0002DE9F04791469A460D462B4C8EB02368CC
:10DDC00006465246002148460D931EF073FD55B994
:10DDD0005246264948461FF0F5FD0D9A23689A429F
:10DDE00039D01DF0ADF8304623F0E0FC0646284659
:10DDF0000F4623F0DBFC02460B463046394623F043
:10DE000079FE4FF0000806460F4615A3D3E900231C
:10DE10003046394623F0B6FF054688B930463946C4
:10DE200024F040F804AA02F0B9F8CDE9029ACDE94D
:10DE3000005543462A46294604A802F0D1FECCE705
:10DE40003046394600220A4B23F02AFD08F101082A
:10DE500006460F46D9E70EB0BDE8F087AFF3008065
:10DE60000000E0FFFFFFEF41F8FF0120696E0508A9
:10DE70000000244070B50D4C8EB023680D4604A9F7
:10DE800016460D9302F06EF80023CDE902561A46AD
:10DE9000CDE90033194604A802F0A2FE0D9A2368CA
:10DEA0009A4201D01DF04CF80EB070BDF8FF012071
:10DEB00070B50D4C8EB01E462368154604AA0D930E
:10DEC00002F06CF80023CDE902561A46CDE9003382
:10DED000194604A802F084FE0D9A23689A4201D0E4
:10DEE0001DF02EF80EB070BDF8FF0120F7B5124AF4
:10DEF00041F221061368014401930023884206D1B0
:10DF0000019918461368994213D01DF019F8072497
:10DF100010F8017B47FA04F54FEAD33C05F0010500
:10DF20005B0065459BB218BF734014F1FF34F1D21A
:10DF3000E4E703B0F0BD00BFF8FF012070B5174C57
:10DF40008CB0236816460B9330230D468DF80830AD
:10DF50000DF1090100F1200350F8042B984241F81B
:10DF6000042BF9D1212102A8FFF7C0FF0C4B8DF83B
:10DF700029001B68000A8DF82A0000932A463346C0
:10DF8000232102A80BF02EFB0B9A236838209A421B
:10DF900001D01CF0D5FF0CB070BD00BFF8FF012010
:10DFA0001C82002030B50546124C91B023683F22F8
:10DFB000002111480F931EF07DFC39226946284646
:10DFC000FFF7BCFF112269460B481FF0FBFC15222E
:10DFD00004A90A481FF0F6FC152209A908481FF0F9
:10DFE000F1FC0F9A236807489A4201D01CF0A8FF61
:10DFF00011B030BDF8FF01200C4401202144012064
:10E00000364401201082002070B51C4D8CB02B6866
:10E0100006460B931FF0FEFC3828014629D1184B09
:10E0200002AA1B683046009323230BF02FFBF0B1AC
:10E030009DF80840A4F1300254425441212102A825
:10E04000FFF754FF9DF82A209DF8293024B143EAB8
:10E050000224231A5C425C41232102A805F0CAF87D
:10E060000B9A2B6820469A4205D01CF069FF0446A3
:10E07000E4E70024F4E70CB070BD00BFF8FF012016
:10E080001C820020F0B50D4604463B4F8BB03B6828
:10E0900000212846099316461EF00CFC0D22002193
:10E0A00001A81EF007FC0E22002105A81EF002FCAC
:10E0B00063686BB104F11700FFF7A6FF40B92F4862
:10E0C000FFF71CFE099A3B689A4252D01CF038FFB9
:10E0D000636823B932462A4928461FF073FC6368F7
:10E0E000012B1BD1D4F80930324601A928460193EF
:10E0F0001FF068FC04F1170305AA04F11F0E9446F3
:10E10000186859680833ACE8030073456246F6D1D5
:10E110001868CCF800001B798CF804306368022B77
:10E1200013D1224652F8090F01AB516803C390681E
:10E1300001A91860324628461FF044FC234653F8D4
:10E14000170F1B7905908DF818306368013B012B80
:10E15000B8D832460B4928461FF00AFC324605A9BA
:10E1600028461FF005FC3246074928461FF000FCF0
:10E17000A8E70BB0F0BD00BFF8FF01203E6E050818
:10E18000536E0508666E0508476F0508F0B5154D16
:10E190008DB02B6807460C460B93FFF735FF0646FC
:10E1A000B8B1114B02AA1B683821009338462323CB
:10E1B0000BF06CFA21460DF109030DF1290253F819
:10E1C000040B934241F8040BF9D1232102A805F076
:10E1D00011F80B9A2B6830469A4201D01CF0B0FE21
:10E1E0000DB0F0BDF8FF01201C82002073B5104C6B
:10E1F000054623680E4601220E490F480193F3F7A6
:10E20000CBFF30B90020019A23689A420ED01CF04F
:10E2100097FE002332462946074809F041FB0028B3
:10E22000F0D0054809F028FE0348ECE702B070BDC5
:10E23000F8FF0120366E0508686A0020F0B5174E19
:10E24000174D33689DB0A96A044628461B93FFF713
:10E25000CDFF074603A905F150000BAD0DF0D8FC2A
:10E26000009507F1490307F12802202103A808F0CF
:10E2700065F923462A461BAD144603CCAC42186010
:10E280005960224603F10803F6D11B9A33689A427B
:10E2900001D01CF055FE1DB0F0BD00BFF8FF0120FD
:10E2A0005044012007B5084B0A46196801910199AD
:10E2B0001B68994201D01CF043FE0146034803B09D
:10E2C0005DF804EB0DF0B8BBF8FF0120A04401207D
:10E2D00013B50D4C04212368019303BA1A0E8DF86F
:10E2E000032002A81A0C8DF8022000F8083D1A0A33
:10E2F0008DF80120FFF7D6FF019A23689A4201D0DA
:10E300001CF01EFE02B010BDF8FF0120F0B505465E
:10E310001A4E1B4C336893B00020119304F1200770
:10E32000FFF7D6FF2A1D234603CBBB421060516086
:10E330001C4602F10802F6D120232C466B800123F3
:10E3400001A804F8283BFFF779FF11AF01AB1A468B
:10E3500003CABA4220606160134604F10804F6D192
:10E360004023EB840123119A85F8243033689A42C4
:10E3700001D01CF0E5FD13B0F0BD00BFF8FF012097
:10E380007C44012007B5094B1A680192019A1B6869
:10E3900048B19A4201D01CF0D3FD012003B05DF8D2
:10E3A00004EBFFF795BF9A42F8D0F4E7F8FF01209D
:10E3B0001FB5134C00BA236809BA0393030E8DF8F6
:10E3C0000B30030C8DF80A30030A8DF809300B0E60
:10E3D0008DF808008DF8073004A80B0C8DF8063076
:10E3E00000F80C1D0B0A08218DF80530FFF75AFFC5
:10E3F000039A23689A4201D01CF0A2FD04B010BD1C
:10E40000F8FF012073B50C4606460F4D08462B68F1
:10E410000193FFF75DFF21463046FFF743FF0023DE
:10E4200014F003048DF8003006D001216846013451
:10E43000FFF738FF042CF8D1019A2B689A4201D0DB
:10E440001CF07EFD02B070BDF8FF012037B50A4C0C
:10E450000546236800200193FFF73AFF019A2368DD
:10E460009A4201D01CF06CFD2021284603B0BDE883
:10E470003040FFF717BF00BFF8FF01202DE9F04340
:10E480005F4F604D3B688BB004460021B8222846A0
:10E4900009931EF00FFA01225B4B05F1500004F1C5
:10E4A0002D081A700DF0DAF84FF4806140461FF025
:10E4B00029FB01AA014640460DF07AFC4FF000739B
:10E4C0000AAE46F8283DD4F8E034202101A885F8AA
:10E4D0004D30FFF7E7FE30460421261DFFF7E2FE30
:10E4E00021883046FFF782FE002866D000F14903FC
:10E4F0009E4605F12C0900F16902CC46186859685E
:10E500000833ACE803009342E146F6D12388AB62BE
:10E5100033463C4E03F1280C3246186859680833DC
:10E5200003C263451646F7D17046FFF78FFFD4F854
:10E530006804FFF7CDFE04F58E63D3E90001FFF711
:10E5400037FFD4F87C3413B9D4F8840470B10120B7
:10E55000FFF7BEFE0020FFF7BBFED4F87C04FFF7F8
:10E56000B7FE0020FFF7B4FED4F88404FFF7B0FE36
:10E57000D4F88C04FFF7ACFED4F88C34013B032BA9
:10E580000DD8DFE803F00220272704F291461C2172
:10E5900030461FF0B7FA01463046FFF733FFD4F894
:10E5A000E004FFF795FE4FF48062414617481FF0E4
:10E5B0005FFAB0B9012385F84C30099A3B689A425A
:10E5C0001AD01CF0BDFC04F59663D3E90001FFF7F7
:10E5D000EFFEE4E7B4F8BA1404F2BC40FFF762FEC1
:10E5E000DDE74FF48062414609481FF041FA08B95F
:10E5F0000223E0E70323DEE70BB0BDE8F08300BFB2
:10E60000F8FF012050440120084501207C6F0508D7
:10E61000AB6F050830B50446224D8FB02B684068BB
:10E620000D93FFF755FE636873B105A904F1170058
:10E63000FFF7ACFD40B91C48FFF760FB0D9A2B6853
:10E640009A422CD01CF07CFC6368012B11D1002372
:10E65000052204F1090101A801938DF808301FF08B
:10E66000B1F904210DEB0100FFF71CFE05A8FFF72F
:10E67000EDFE6368022BE1D10D22002101A81EF0FE
:10E6800019F90D2204F1090101A81FF09BF901A855
:10E690000C21FFF707FE05A8FFF7D8FECEE70FB065
:10E6A00030BD00BFF8FF01203E6E05082DE9F04F98
:10E6B000A3B0724C98469DF8C030834601932368FE
:10E6C0008A46DDE92D0191462C9F2F9E2193FFF76D
:10E6D0008DFDCDE90240002800F0C3800024684A87
:10E6E000684912AD1160CDE9074409941CF0B8FBEC
:10E6F0001BF098FE3922214628461EF0DBF8039BCA
:10E700003922294603F14900FFF718FC95E8070074
:10E7100007AB03C31A80120C8DF826202146202255
:10E720000AA81EF0C7F8202257490AA81FF04AF984
:10E73000202207A90AA81FF01BF901212346084639
:10E740000AAA1BF031FF08238022214620461CF034
:10E75000EBF8BBF1000F05D023465A460A210120F1
:10E760001BF022FFBAF1000F05D0002352461321FF
:10E7700001201BF019FFB9F1000F05D000234A4614
:10E780001C2101201BF010FFB8F1000F05D0002361
:10E790004246252101201BF007FF2FB100233A46F6
:10E7A0002E2101201BF000FF0023384A38210120D0
:10E7B0001BF0FAFE152100201CF058FD0023344AFE
:10E7C000382103301BF0F0FE152100201CF04EFD17
:10E7D000002104462E481BF0B1FE22183F230232CE
:10E7E000372100201CF0A0F826B100223146382045
:10E7F0001BF02EFF019B0822002B39D0254905A8CC
:10E800001FF0E0F8062100201CF030FD0023224A12
:10E810003821C0F17F001BF0C7FE002105A81BF0C6
:10E820008DFE0621044600201CF020FDC4F17D046D
:10E83000002305AA201A38211BF0B6FE002105A8E6
:10E840001BF07CFE0621044600201CF00FFDC4F1E5
:10E850007C043F237F223721201A1CF065F81BF02F
:10E86000F9FD029B219A1B689A4203D01CF068FBB9
:10E870000A49C4E723B0BDE8F08F00BFF8FF0120CC
:10E88000F081002039720108796E05081207050829
:10E8900092AD0408876E0508EBF504084EC5040820
:10E8A0002DE9F04F1C4D8DB09A4607AE2B681B4CDE
:10E8B0000746884691460021102230460B93DDF82A
:10E8C00058B01DF0F7FF94F84C30022B04D1102201
:10E8D000134930461FF076F894F84C30032B04D1DE
:10E8E0001022104930461FF06DF80023CDE9036374
:10E8F000A36A4A46CDE90143CDF800B053464146EC
:10E900003846FFF7D3FE0B9A2B689A4201D01CF0D1
:10E9100017FB0DB0BDE8F08FF8FF01205044012037
:10E920008C6E0508936E050830B5194D0A462968A6
:10E930008DB00B9148B9FFF7CBFC01240B9A2B68E3
:10E9400020469A4221D01CF0FBFA03A91046FFF79B
:10E950001DFC04460028F1D003A8FFF723FB8368C1
:10E9600000210093D0E900230A48FFF799FF002116
:10E970000720F8F7F7F9044618B90748FFF7BEF97A
:10E98000DCE703A8FFF762FDD8E70DB030BD00BF9C
:10E99000F8FF0120156E0508286E0508F0B52E4F0A
:10E9A0009DB03A6805461B922C4A147844B1411C2C
:10E9B0000078FFF7B9FF044648B92948FFF79EF9E8
:10E9C0001B9A3B6820469A4244D01CF0B9FA0020BA
:10E9D000FFF77EFC03A905F13B00FFF7D7FB0446D8
:10E9E00008B92048EAE703A8FFF7DCFA0646D5E9AC
:10E9F0001E0120230BAC13AAFFF7BAF920221A49F3
:10EA000020461EF0DFFF202213A920461EF0B0FF93
:10EA10002022164920461EF0ABFF0094D6E90123C0
:10EA200031681348FFF73CFF00210720F8F79AF9F7
:10EA3000044608B90F48C1E703A8FFF707FDD5E969
:10EA40001E01FFF7B5FC0C4A92F84E30013382F8F4
:10EA50004E30B5E71DB0F0BDF8FF0120084501209C
:10EA6000D06B0508E56B0508016C0508076C050807
:10EA70000C6C0508286E050850440120F0B5384F8D
:10EA8000ADB03A6805462B92364A147844B1411C21
:10EA90000078FFF749FF044648B93348FFF72EF9DD
:10EAA0002B9A3B6820469A4258D01CF049FA012024
:10EAB000FFF70EFC03A905F13B00FFF767FB0446D7
:10EAC00008B92A48EAE703A8FFF76CFA04462022AF
:10EAD00027490BA81EF076FF216820220BA81EF004
:10EAE00047FF05F178062022002113A81DF0E2FE61
:10EAF000202213A93046FFF7C5FAD5E934012023B7
:10EB000023AAFFF735F920221A491BA81EF05AFF45
:10EB1000202223A91BA81EF02BFFA3680BAA009399
:10EB2000636813A91BA8FFF7BBFE00210720F8F7B5
:10EB300019F9044608B91048B0E703A8FFF786FCA6
:10EB40003046FFF767FDD5E93401FFF731FC0B4A8A
:10EB500092F84E30013382F84E30A1E72DB0F0BD6F
:10EB6000F8FF012008450120D06B0508E56B05087A
:10EB7000F66C0508B86C0508286E0508504401209D
:10EB80002DE9F041594BC4B01B6804464393584BE0
:10EB90001D7845B1411C0078FFF7C6FE054658B9FF
:10EBA0005448FFF7ABF8514B439A1B6828469A42EA
:10EBB00000F099801CF0C4F90220FFF789FB03A93B
:10EBC00004F19900FFF7E2FA054608B94A48E8E778
:10EBD00003A8FFF7E7F90546202248490BA81EF0D5
:10EBE000F1FE04F13C08202229680BA81EF0C0FEAB
:10EBF00004F1D407202213A94046FFF743FA04F595
:10EC0000947620221BA93846FFF73CFAD6E900018A
:10EC100020232BAAFFF7ACF82022394923A81EF0A5
:10EC2000D1FE20222BA923A81EF0A2FEAB681BA9AF
:10EC3000009323A86B680BAAFFF732FE0021072080
:10EC4000F8F790F820B92F48FFF758F80025AAE701
:10EC50002023D4E924013BAAFFF78AF820222A497D
:10EC600033A81EF0AFFE20223BA933A81EF080FE81
:10EC7000264B0022009313A9254B33A8FFF710FE63
:10EC800000210720F8F76EF805460028DBD0404643
:10EC9000FFF7C0FCD4E92401FFF78AFB03A8FFF7C4
:10ECA000D5FB3846FFF7B6FCD6E90001FFF780FB3D
:10ECB000B4F83001FFF70CFB50270020B4F83031D6
:10ECC000461CC0B2984206D3124A92F84E30013325
:10ECD00082F84E3067E707FB004000F59A70FFF7B7
:10ECE00099FC3046EAE744B0BDE8F081F8FF012026
:10ECF00008450120D06B0508E56B0508F66C050892
:10ED0000B36C0508286E0508BD6C0508E36C0508A2
:10ED1000C86C0508504401202DE9F043504EB9B0AD
:10ED20003368044637934F4B1D7845B1411C00783A
:10ED3000FFF7FAFD054650B94B48FEF7DFFF379A5B
:10ED4000336828469A4200F087801CF0F9F80320C7
:10ED500004F58477FFF7BCFAD7E9000150EA010314
:10ED600049D12022414907A81EF02CFE04F13C099C
:10ED700020221FA94846FFF785F9D4E93A0120234C
:10ED800017AAFEF7F5FF202239490FA81EF01AFE38
:10ED90002FAD202217A90FA804F190081EF0E8FD5E
:10EDA000294620224046FFF76DF9112302AAD4F824
:10EDB000FC10D4F8F400FEF7FBFF20222D4927A811
:10EDC0001EF000FE202202A927A81EF0D1FD20225D
:10EDD000294927A81EF0CCFD009527AB1FAA0FA933
:10EDE00007A8FFF75DFD00210720F7F7BBFF0546E9
:10EDF000A8B92248A1E72FAA1423FFF759F8D4E9AC
:10EE00003A2313430CBF1E491E49202207A81EF0B7
:10EE1000D9FD20222FA907A81EF0AAFDA6E7484683
:10EE2000FFF7F8FB4046FFF7F5FBD4E93A01FFF79F
:10EE3000BFFAD4F8F400FFF74BFAD4F8FC00FFF760
:10EE400047FAD7E90001FFF7B3FA0F4A92F84E30BC
:10EE5000013382F84E3072E739B0BDE8F08300BF6D
:10EE6000F8FF012008450120D06B0508876C0508D4
:10EE7000A36C0508A96C0508AE6C0508286E05088A
:10EE8000916C05089A6C0508504401202DE9F04169
:10EE9000424EB8B0336804463793414B1D7845B1B4
:10EEA000411C0078FFF740FD054648B93D48FEF794
:10EEB00025FF379A336828469A426CD01CF040F8F8
:10EEC0000420FFF705FAD4E93A2313430CBF36496F
:10EED0003649202207A804F13C081EF073FD2022C9
:1
Download .txt
gitextract_gvywdpmy/

├── .github/
│   └── workflows/
│       └── python_package.yml
├── .gitignore
├── LICENSE
├── README.md
├── examples/
│   ├── CortexM_AES/
│   │   └── cortexm_aes.py
│   ├── HW_analysis/
│   │   ├── pin_compare.py
│   │   ├── pin_fault.py
│   │   ├── trezor.elf
│   │   └── trezor.hex
│   ├── OAES/
│   │   └── OAES_x86.py
│   ├── SecAESSTM32/
│   │   ├── firmware.elf
│   │   └── go.py
│   ├── hacklu2009/
│   │   └── go.py
│   └── pimp_my_xor/
│       ├── pimp_my_xor
│       └── x64_pimpmyxor.py
├── pyproject.toml
├── rainbow/
│   ├── __init__.py
│   ├── devices/
│   │   ├── __init__.py
│   │   ├── stm32.py
│   │   ├── stm32f215.pickle
│   │   └── stm32l4x1.pickle
│   ├── fault_models.py
│   ├── generics/
│   │   ├── __init__.py
│   │   ├── aarch64.py
│   │   ├── arm.py
│   │   ├── cortexm.py
│   │   ├── m68k.py
│   │   ├── x64.py
│   │   └── x86.py
│   ├── leakage_models.py
│   ├── loaders/
│   │   ├── __init__.py
│   │   ├── cleloader.py
│   │   └── hexloader.py
│   ├── rainbow.py
│   └── utils/
│       ├── __init__.py
│       ├── color_functions.py
│       ├── parse_svd.py
│       └── plot/
│           ├── __init__.py
│           └── interface.py
└── tests/
    ├── ledger_ctf2/
    │   └── ctf2
    ├── test_devices.py
    ├── test_fault_models.py
    ├── test_generics.py
    ├── test_hook.py
    ├── test_leakage_models.py
    ├── test_loaders.py
    └── test_mapping.py
Download .txt
SYMBOL INDEX (143 symbols across 31 files)

FILE: examples/CortexM_AES/cortexm_aes.py
  function aes_encrypt (line 17) | def aes_encrypt(key, plaintext):
  class CortexMAesContainer (line 48) | class CortexMAesContainer(lascar.AbstractContainer):
    method generate_trace (line 50) | def generate_trace(self, idx):

FILE: examples/HW_analysis/pin_compare.py
  function containsPin (line 10) | def containsPin(e, pin_attempt, stored_pin):
  function show_nicv (line 26) | def show_nicv(values, traces, nr_digits):

FILE: examples/HW_analysis/pin_fault.py
  function setup_emulator (line 19) | def setup_emulator(trace_config=TraceConfig()) -> rainbow_stm32:
  function result (line 33) | def result(u):

FILE: examples/OAES/OAES_x86.py
  function generate_targetf (line 11) | def generate_targetf():
  function get_traces (line 37) | def get_traces(targetf, nb, nb_samples):

FILE: examples/SecAESSTM32/go.py
  function f_aes (line 16) | def f_aes(e, key, input_):

FILE: examples/hacklu2009/go.py
  function encrypt (line 16) | def encrypt(plain):
  class CrackMeContainer (line 34) | class CrackMeContainer(lascar.AbstractContainer):
    method generate_trace (line 36) | def generate_trace(self, idx):

FILE: rainbow/devices/stm32.py
  class rainbow_stm32 (line 29) | class rainbow_stm32(rainbow_cortexm):
    method __init__ (line 37) | def __init__(self, *args, **kwargs):
    method _rng_sr_read (line 55) | def _rng_sr_read(self, _uci, _access, address, _size, _value, _user_da...
    method _rng_dr_read (line 59) | def _rng_dr_read(self, _uci, _access, address, _size, _value, _user_da...
    method _load_other_regs (line 66) | def _load_other_regs(self, filename):
  class rainbow_stm32f215 (line 75) | class rainbow_stm32f215(rainbow_stm32):
    method __init__ (line 83) | def __init__(self, *args, **kwargs):
  class rainbow_stm32l431 (line 98) | class rainbow_stm32l431(rainbow_stm32):
    method __init__ (line 99) | def __init__(self, *args, **kwargs):

FILE: rainbow/fault_models.py
  function fault_skip (line 32) | def fault_skip(emu: Rainbow):
  function fault_stuck_at (line 58) | def fault_stuck_at(value: int = 0):

FILE: rainbow/generics/aarch64.py
  class rainbow_aarch64 (line 25) | class rainbow_aarch64(Rainbow):
    method reset_stack (line 41) | def reset_stack(self):
    method return_force (line 44) | def return_force(self):

FILE: rainbow/generics/arm.py
  class rainbow_arm (line 25) | class rainbow_arm(Rainbow):
    method thumb_bit (line 42) | def thumb_bit(self) -> int:
    method start (line 46) | def start(self, begin, *args, **kwargs):
    method reset_stack (line 49) | def reset_stack(self):
    method return_force (line 52) | def return_force(self):
    method disassemble_single (line 55) | def disassemble_single(self, addr: int, size: int):
    method disassemble_single_detailed (line 60) | def disassemble_single_detailed(self, addr: int, size: int) -> cs.CsInsn:

FILE: rainbow/generics/cortexm.py
  class rainbow_cortexm (line 27) | class rainbow_cortexm(Rainbow):
    method __init__ (line 44) | def __init__(self, *args, **kwargs):
    method reset_stack (line 60) | def reset_stack(self):
    method intr_hook (line 63) | def intr_hook(self, uci, intno, data):
    method start (line 85) | def start(self, begin, *args, **kwargs):
    method return_force (line 88) | def return_force(self):
    method endmem_hook (line 91) | def endmem_hook(self, _uci, address, _size, _user_data):

FILE: rainbow/generics/m68k.py
  class rainbow_m68k (line 25) | class rainbow_m68k(Rainbow):
    method reset_stack (line 41) | def reset_stack(self):
    method return_force (line 44) | def return_force(self):

FILE: rainbow/generics/x64.py
  class rainbow_x64 (line 25) | class rainbow_x64(Rainbow):
    method reset_stack (line 44) | def reset_stack(self):
    method return_force (line 48) | def return_force(self):

FILE: rainbow/generics/x86.py
  class rainbow_x86 (line 25) | class rainbow_x86(Rainbow):
    method reset_stack (line 41) | def reset_stack(self):
    method return_force (line 45) | def return_force(self):

FILE: rainbow/leakage_models.py
  function hw (line 28) | def hw(i):
  function hw (line 31) | def hw(i):
  class LeakageModel (line 35) | class LeakageModel(abc.ABC):
    method __call__ (line 42) | def __call__(self, *args, **kwargs) -> int:
  class Identity (line 46) | class Identity(LeakageModel):
    method __call__ (line 52) | def __call__(self, *args, **kwargs) -> int:
  class Bit (line 56) | class Bit(LeakageModel):
    method __init__ (line 62) | def __init__(self, which: int):
    method __call__ (line 68) | def __call__(self, *args, **kwargs) -> Literal[0, 1]:
  class Slice (line 72) | class Slice(LeakageModel):
    method __init__ (line 78) | def __init__(self, begin: int, end: int):
    method __call__ (line 87) | def __call__(self, *args, **kwargs) -> int:
  class HammingWeight (line 91) | class HammingWeight(LeakageModel):
    method __call__ (line 97) | def __call__(self, *args, **kwargs) -> int:
  class HammingDistance (line 101) | class HammingDistance(LeakageModel):
    method __call__ (line 108) | def __call__(self, *args, **kwargs) -> int:

FILE: rainbow/loaders/__init__.py
  function load_selector (line 28) | def load_selector(filename, rainbow_instance, typ=None, *args, **kwargs)...

FILE: rainbow/loaders/cleloader.py
  function cleloader (line 22) | def cleloader(path: str, emu, ld_path=(), verbose=False, except_missing_...

FILE: rainbow/loaders/hexloader.py
  function hexloader (line 22) | def hexloader(hex_file, emu, verbose=False) -> None:

FILE: rainbow/rainbow.py
  class Print (line 35) | class Print(Flag):
  class TraceConfig (line 44) | class TraceConfig:
    method __init__ (line 47) | def __init__(
  class Rainbow (line 65) | class Rainbow(abc.ABC):
    method __init__ (line 97) | def __init__(
    method PAGE_SIZE (line 135) | def PAGE_SIZE(self) -> int:  # noqa
    method PAGE_SHIFT (line 139) | def PAGE_SHIFT(self) -> int:  # noqa
    method map_space (line 142) | def map_space(self, start: int, end: int, perms: str = "rwx", verbose:...
    method __setitem__ (line 218) | def __setitem__(self, inp, val):
    method __getitem__ (line 264) | def __getitem__(self, s):
    method load (line 281) | def load(self, filename, *args, **kwargs) -> Optional[int]:
    method start (line 285) | def start(self, begin, end, timeout=0, count=0) -> None:
    method start_and_fault (line 295) | def start_and_fault(self, fault_model, fault_index: int, begin: int, e...
    method _setup_hooks (line 335) | def _setup_hooks(self):
    method remove_bkpt (line 386) | def remove_bkpt(self, address):
    method add_bkpt (line 391) | def add_bkpt(self, address):
    method reset_stack (line 397) | def reset_stack(self):
    method reset_regs (line 401) | def reset_regs(self):
    method reset_trace (line 406) | def reset_trace(self):
    method return_force (line 415) | def return_force(self):
    method reset (line 419) | def reset(self):
    method _disassemble_cache (line 429) | def _disassemble_cache(call: Callable, instruction: bytes, addr: int):
    method disassemble_single (line 432) | def disassemble_single(self, addr: int, size: int) -> Tuple[int, int, ...
    method disassemble_single_detailed (line 444) | def disassemble_single_detailed(self, addr: int, size: int) -> cs.CsInsn:
    method _get_addrs (line 449) | def _get_addrs(self, name_or_addr):
    method _stub_hook (line 461) | def _stub_hook(self, _uci, address, _size, userdata):
    method hook_prolog (line 481) | def hook_prolog(self, name, fn, trigger_after_exec=0, trigger_count=0):
    method hook_bypass (line 501) | def hook_bypass(self, name, fn=None, trigger_after_exec=0, trigger_cou...
    method remove_hook (line 521) | def remove_hook(self, name):
    method remove_hooks (line 528) | def remove_hooks(self):
    method _print_function_hook (line 535) | def _print_function_hook(_uci, address: int, _size, name: str):
    method _mem_hook (line 539) | def _mem_hook(self, uci, access, address, size, value, _):
    method _code_hook (line 572) | def _code_hook(self, uci, address, size, _):

FILE: rainbow/utils/__init__.py
  function region_intersects (line 22) | def region_intersects(ra: Tuple[int, int], rb: Tuple[int, int]) -> bool:
  class HookWeakMethod (line 36) | class HookWeakMethod:
    method __init__ (line 49) | def __init__(self, method):
    method __call__ (line 52) | def __call__(self, *args, **kwargs):

FILE: rainbow/utils/color_functions.py
  function color (line 43) | def color(color_name: str, x: str) -> str:
  function highlight_asmline (line 50) | def highlight_asmline(addr: int, ins: str, op_str: str):

FILE: rainbow/utils/parse_svd.py
  function parse_svd (line 22) | def parse_svd(svdfile):

FILE: rainbow/utils/plot/__init__.py
  function viewer (line 24) | def viewer(instructions: List[str], *args, **kwargs) -> int:

FILE: rainbow/utils/plot/interface.py
  class Interface (line 27) | class Interface(qt.QMainWindow):
    method __init__ (line 28) | def __init__(self, instructions: List[str], *args, **kwargs):
    method instr_list_set_font_style (line 51) | def instr_list_set_font_style(self, row, bg_color=None, *args, **kwargs):
    method on_instr_list_row_change (line 61) | def on_instr_list_row_change(self, _event):
    method focus_change (line 67) | def focus_change(self, x: int):
    method place_widgets (line 75) | def place_widgets(self):
    method on_mouse_double_click (line 90) | def on_mouse_double_click(self, event):
  function setup_qt (line 97) | def setup_qt() -> qt.QApplication:

FILE: tests/test_devices.py
  function test_init_del (line 17) | def test_init_del(rainbow_class):
  function test_reset (line 24) | def test_reset(rainbow_class):
  function test_init_start_del (line 31) | def test_init_start_del(rainbow_class):
  function test_stm32_rng (line 39) | def test_stm32_rng():

FILE: tests/test_fault_models.py
  function test_fault_skip (line 5) | def test_fault_skip():
  function test_fault_stuck_at_zeros (line 24) | def test_fault_stuck_at_zeros():
  function test_fault_stuck_at_ones (line 43) | def test_fault_stuck_at_ones():

FILE: tests/test_generics.py
  function test_init_del (line 23) | def test_init_del(rainbow_class):
  function test_reset (line 30) | def test_reset(rainbow_class):
  function test_init_start_del (line 37) | def test_init_start_del(rainbow_class):

FILE: tests/test_hook.py
  function test_hook_bypass_ctf2 (line 5) | def test_hook_bypass_ctf2():
  function test_hook_bypass_ctf2_empty (line 18) | def test_hook_bypass_ctf2_empty():
  function test_hook_bypass_missing_name (line 28) | def test_hook_bypass_missing_name():
  function test_hook_prolog_missing_name (line 35) | def test_hook_prolog_missing_name():
  function test_remove_hooks (line 47) | def test_remove_hooks():

FILE: tests/test_leakage_models.py
  function test_regs_tracer (line 14) | def test_regs_tracer(leakage_model, option, instr):
  function test_regs_tracer_discard (line 37) | def test_regs_tracer_discard(leakage_model, instr):

FILE: tests/test_loaders.py
  function test_elfloader_cortexm_aes (line 4) | def test_elfloader_cortexm_aes():
  function test_elfloader_trezor (line 13) | def test_elfloader_trezor():
  function test_elfloader_trezor (line 19) | def test_elfloader_trezor():
  function test_hexloader_trezor (line 25) | def test_hexloader_trezor():
  function test_elfloader_hexloader_equal (line 31) | def test_elfloader_hexloader_equal():
  function test_peloader_hacklu2009 (line 50) | def test_peloader_hacklu2009():

FILE: tests/test_mapping.py
  function test_map_space (line 78) | def test_map_space(rainbow_class, mapping):
  function test_map_space_invalid (line 84) | def test_map_space_invalid():
Condensed preview — 47 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (1,476K chars).
[
  {
    "path": ".github/workflows/python_package.yml",
    "chars": 679,
    "preview": "name: Python package\n\non:\n  push:\n    branches: [ master ]\n  pull_request:\n    branches: [ master ]\n\njobs:\n  build:\n    "
  },
  {
    "path": ".gitignore",
    "chars": 3077,
    "preview": "# Byte-compiled / optimized / DLL files\n__pycache__/\n*.py[cod]\n*$py.class\n\n# C extensions\n*.so\n\n# Distribution / packagi"
  },
  {
    "path": "LICENSE",
    "chars": 7652,
    "preview": "                   GNU LESSER GENERAL PUBLIC LICENSE\n                       Version 3, 29 June 2007\n\n Copyright (C) 2007"
  },
  {
    "path": "README.md",
    "chars": 8099,
    "preview": "[![Join the chat at https://gitter.im/Ledger-Donjon/rainbow](https://badges.gitter.im/Ledger-Donjon/rainbow.svg)](https:"
  },
  {
    "path": "examples/CortexM_AES/cortexm_aes.py",
    "chars": 2003,
    "preview": "#!/usr/bin/env python3\n# aes128 from https://github.com/Ko-/aes-armcortexm\n\nfrom binascii import hexlify\n\nimport lascar\n"
  },
  {
    "path": "examples/HW_analysis/pin_compare.py",
    "chars": 2492,
    "preview": "#!/usr/bin/env python3\nimport random\nfrom rainbow.devices.stm32 import rainbow_stm32f215 as rainbow_stm32\nfrom rainbow i"
  },
  {
    "path": "examples/HW_analysis/pin_fault.py",
    "chars": 2939,
    "preview": "#!/usr/bin/env python3\n\nimport numpy as np\n\nfrom rainbow import HammingWeight, TraceConfig\nfrom rainbow.devices.stm32 im"
  },
  {
    "path": "examples/HW_analysis/trezor.hex",
    "chars": 1298761,
    "preview": ":020000040801F1\r\n:10000000F8FF0120EB9C030859AF030891AF0308E8\r\n:10001000A9AF030855BF030855BF0308000000003F\r\n:100020000000"
  },
  {
    "path": "examples/OAES/OAES_x86.py",
    "chars": 2338,
    "preview": "#!/usr/bin/env python3\n\nfrom binascii import unhexlify\nimport random\nimport numpy as np\nfrom rainbow.generics import rai"
  },
  {
    "path": "examples/SecAESSTM32/go.py",
    "chars": 2012,
    "preview": "#!/usr/bin/env python3\n\n# UINT aes(UCHAR Mode, STRUCT_AES* struct_aes, const UCHARp key, const UCHARp input, UCHARp outp"
  },
  {
    "path": "examples/hacklu2009/go.py",
    "chars": 1605,
    "preview": "#!/usr/bin/env python3\n# Hack.lu ctf 2009\n\nfrom binascii import hexlify\n\nimport lascar\nimport numpy as np\nfrom lascar.to"
  },
  {
    "path": "examples/pimp_my_xor/x64_pimpmyxor.py",
    "chars": 759,
    "preview": "#!/usr/bin/env python3\n\n# This example is 'Pimp my xor' from GreHack 2018\n# Just as a debug trace example\n# Download the"
  },
  {
    "path": "pyproject.toml",
    "chars": 1145,
    "preview": "[project]\nname = \"donjon-rainbow\"\nversion = \"2.0\"\nauthors = [\n    {name = \"Victor Servant\", email = \"yhql.gh@gmail.com\"}"
  },
  {
    "path": "rainbow/__init__.py",
    "chars": 836,
    "preview": "# This file is part of rainbow \n#\n# rainbow is free software: you can redistribute it and/or modify\n# it under the terms"
  },
  {
    "path": "rainbow/devices/__init__.py",
    "chars": 884,
    "preview": "# This file is part of rainbow\n#\n# rainbow is free software: you can redistribute it and/or modify\n# it under the terms "
  },
  {
    "path": "rainbow/devices/stm32.py",
    "chars": 3402,
    "preview": "# This file is part of rainbow\n#\n# rainbow is free software: you can redistribute it and/or modify\n# it under the terms "
  },
  {
    "path": "rainbow/fault_models.py",
    "chars": 3188,
    "preview": "# This file is part of rainbow\n#\n# rainbow is free software: you can redistribute it and/or modify\n# it under the terms "
  },
  {
    "path": "rainbow/generics/__init__.py",
    "chars": 1051,
    "preview": "# This file is part of rainbow\n#\n# rainbow is free software: you can redistribute it and/or modify\n# it under the terms "
  },
  {
    "path": "rainbow/generics/aarch64.py",
    "chars": 1557,
    "preview": "# This file is part of rainbow\n#\n# rainbow is free software: you can redistribute it and/or modify\n# it under the terms "
  },
  {
    "path": "rainbow/generics/arm.py",
    "chars": 2351,
    "preview": "# This file is part of rainbow\n#\n# rainbow is free software: you can redistribute it and/or modify\n# it under the terms "
  },
  {
    "path": "rainbow/generics/cortexm.py",
    "chars": 3766,
    "preview": "# This file is part of rainbow\n#\n# rainbow is free software: you can redistribute it and/or modify\n# it under the terms "
  },
  {
    "path": "rainbow/generics/m68k.py",
    "chars": 1676,
    "preview": "# This file is part of rainbow\n#\n# rainbow is free software: you can redistribute it and/or modify\n# it under the terms "
  },
  {
    "path": "rainbow/generics/x64.py",
    "chars": 1891,
    "preview": "# This file is part of rainbow\n#\n# rainbow is free software: you can redistribute it and/or modify\n# it under the terms "
  },
  {
    "path": "rainbow/generics/x86.py",
    "chars": 1731,
    "preview": "# This file is part of rainbow\n#\n# rainbow is free software: you can redistribute it and/or modify\n# it under the terms "
  },
  {
    "path": "rainbow/leakage_models.py",
    "chars": 2892,
    "preview": "# This file is part of rainbow\n#\n# rainbow is free software: you can redistribute it and/or modify\n# it under the terms "
  },
  {
    "path": "rainbow/loaders/__init__.py",
    "chars": 1315,
    "preview": "# This file is part of rainbow\n#\n# rainbow is free software: you can redistribute it and/or modify\n# it under the terms "
  },
  {
    "path": "rainbow/loaders/cleloader.py",
    "chars": 1891,
    "preview": "# This file is part of rainbow\n#\n# rainbow is free software: you can redistribute it and/or modify\n# it under the terms "
  },
  {
    "path": "rainbow/loaders/hexloader.py",
    "chars": 1192,
    "preview": "# This file is part of rainbow\n#\n# rainbow is free software: you can redistribute it and/or modify\n# it under the terms "
  },
  {
    "path": "rainbow/rainbow.py",
    "chars": 24985,
    "preview": "# This file is part of rainbow\n#\n# rainbow is free software: you can redistribute it and/or modify\n# it under the terms "
  },
  {
    "path": "rainbow/utils/__init__.py",
    "chars": 1824,
    "preview": "# This file is part of rainbow\n#\n# rainbow is free software: you can redistribute it and/or modify\n# it under the terms "
  },
  {
    "path": "rainbow/utils/color_functions.py",
    "chars": 1920,
    "preview": "# This file is part of rainbow\n#\n# rainbow is free software: you can redistribute it and/or modify\n# it under the terms "
  },
  {
    "path": "rainbow/utils/parse_svd.py",
    "chars": 1551,
    "preview": "# This file is part of rainbow \n#\n# rainbow is free software: you can redistribute it and/or modify\n# it under the terms"
  },
  {
    "path": "rainbow/utils/plot/__init__.py",
    "chars": 1188,
    "preview": "# This file is part of rainbow\n#\n# rainbow is free software: you can redistribute it and/or modify\n# it under the terms "
  },
  {
    "path": "rainbow/utils/plot/interface.py",
    "chars": 4261,
    "preview": "# This file is part of rainbow\n#\n# rainbow is free software: you can redistribute it and/or modify\n# it under the terms "
  },
  {
    "path": "tests/test_devices.py",
    "chars": 1755,
    "preview": "import pytest\nimport random\nfrom rainbow.devices import (\n    rainbow_stm32,\n    rainbow_stm32f215,\n    rainbow_stm32l43"
  },
  {
    "path": "tests/test_fault_models.py",
    "chars": 1985,
    "preview": "from rainbow.devices.stm32 import rainbow_stm32f215\nfrom rainbow.fault_models import fault_skip, fault_stuck_at\n\n\ndef te"
  },
  {
    "path": "tests/test_generics.py",
    "chars": 1229,
    "preview": "import pytest\nimport unicorn\nfrom rainbow.generics import (\n    rainbow_aarch64,\n    rainbow_arm,\n    rainbow_cortexm,\n "
  },
  {
    "path": "tests/test_hook.py",
    "chars": 1473,
    "preview": "import pytest\nfrom rainbow.generics import rainbow_x64\n\n\ndef test_hook_bypass_ctf2():\n    emu = rainbow_x64()\n    emu.lo"
  },
  {
    "path": "tests/test_leakage_models.py",
    "chars": 2035,
    "preview": "import pytest\nfrom rainbow.generics import rainbow_arm\nfrom rainbow.leakage_models import HammingWeight, HammingDistance"
  },
  {
    "path": "tests/test_loaders.py",
    "chars": 2088,
    "preview": "from rainbow.generics import rainbow_arm, rainbow_x86\n\n\ndef test_elfloader_cortexm_aes():\n    \"\"\"Test loading CortexM_AE"
  },
  {
    "path": "tests/test_mapping.py",
    "chars": 1871,
    "preview": "import pytest\nfrom rainbow.generics import rainbow_arm, rainbow_x86\n\nall_mappings = [\n    [\n        (0x1000, 0x2000),\n  "
  }
]

// ... and 6 more files (download for full content)

About this extraction

This page contains the full source code of the Ledger-Donjon/rainbow GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 47 files (12.4 MB), approximately 701.9k tokens, and a symbol index with 143 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!